弹性 MapReduce Kafka 数据通过 Flume 存储到 HBase

这篇说明如何将腾讯云CKafka的数据通过Flume收集并存储到HBase,包括环境准备、配置Flume和测试验证。 配置Flume:创建hbase_kafka.properties文件,配置KafkaSource、HBase2Sink和MemoryChannel。 创建HBase表:使用hbase shell创建foo_table和cf列族。 运行测试:启动Flume和Kafka生产者,输入数据后检查HBase表。

相关产品
弹性 MapReduce 产品页,含版本规格、价格与购买入口。

一、场景说明

将 Kafka 中的数据通过 Flume 收集并存储到 Hbase。

二、开发准备

·因为任务中需要访问腾讯云消息队列 CKafka,所以需要先创建一个 CKafka 实例,具体见 消息队列 CKafka。

·确认你已开通腾讯云,且已创建一个 EMR 集群。创建 EMR 集群时,需要在软件配置界面选择 Flume 组件。

三、在 EMR 集群使用 Kafka 工具包

首先需要查看 CKafka 的内网 IP 和端口号。登录消息队列 CKafka 的控制台,选择你要使用的 CKafka 实例,在基本消息中查看其内网 IP 为 $kafkaIP,而端口号一般默认为9092。在 topic 管理界面新建一个 topic 为 kafka_test。

四、配置 flume

1. 创建 flume 的配置文件 hbase_kafka.properties

vim hbase_kafka.propertiesagent.sources = kafka_sourceagent.channels = mem_channelagent.sinks = hbase_sink# 以下配置 sourceagent.sources.kafka_source.type = org.apache.flume.source.kafka.KafkaSourceagent.sources.kafka_source.channels = mem_channelagent.sources.kafka_source.batchSize = 5000agent.sources.kafka_source.kafka.bootstrap.servers = $kafkaIP:9092agent.sources.kafka_source.kafka.topics = kafka_test# 以下配置 sinkagent.sinks.hbase_sink.type = hbase2agent.sinks.hbase_sink.channel = mem_channelagent.sinks.hbase_sink.table = foo_tableagent.sinks.hbase_sink.columnFamily = cfagent.sinks.hbase_sink.serializer = org.apache.flume.sink.hbase.RegexHBase2EventSerializer# 以下配置 channelagent.channels.mem_channel.type = memoryagent.channels.mem_channel.capacity = 100000agent.channels.mem_channel.transactionCapacity = 10000

2. 创建 hbase 表

hbase shellcreate 'foo_table','cf'

3. 运行 flume

./bin/flume-ng agent –conf ./conf/ -f hbase_kafka.properties -n agent -Dflume.root.logger=INFO,console

4. 运行 kafka producer

[hadoop@172 kafka]$ ./bin/kafka-console-producer.sh –broker-list $kafkaIP:9092 –topic kafka_testhellohbase_test

五、测试

·在 kafka 生产者客户端输入信息并回车。

·观察 hbase 表中是否有相应数据。

六、参考文档

hbase-sink 配置说明

赞 (0)
上一篇 4天前
下一篇 4天前