使用kafka将数据导入hadoop

bprjcwpo  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(482)

首先,我在想用什么把事件放到hadoop中,在那里它们会被存储起来,并定期对它们进行分析(可能使用ooozie来安排定期分析)kafka或flume,并决定kafka可能是一个更好的解决方案,因为我们还有一个组件来处理事件,所以这样,批处理和事件处理组件都以相同的方式获取数据。
但我要知道,我正在寻找一些具体的建议,如何将代理中的数据传输到hadoop。
我发现Flume可以和Kafka结合使用
Flume-包含Kafka源(消费者)和Flume(生产者)
在同一页和Kafka文献中也发现了一种叫做加缪的东西
加缪-linkedin的Kafka=>hdfs管道。这个用于linkedin的所有数据,效果很好。
我很感兴趣的是什么是更好的(更简单,更好的文档化解决方案)来做到这一点?还有,有什么例子或教程如何做到这一点?
我应该在什么时候使用这种变体而不是更简单、更高级的消费者?
如果有比这两个更好的解决方案,我愿意接受建议。
谢谢

34gzjxbg

34gzjxbg1#

您可以使用flume将数据从kafka转储到hdfs。Flume有Kafka源汇。这是一个属性文件更改的问题。下面给出了一个例子。
步骤:
创建Kafka主题

kafka-topics --create --zookeeper localhost:2181 --replication-factor 1 --     partitions 1 --topic testkafka

使用kafka console producer编写上述创建的主题

kafka-console-producer --broker-list localhost:9092 --topic testkafka

使用以下属性配置flume代理

flume1.sources  = kafka-source-1
flume1.channels = hdfs-channel-1
flume1.sinks    = hdfs-sink-1
flume1.sources.kafka-source-1.type = org.apache.flume.source.kafka.KafkaSource
flume1.sources.kafka-source-1.zookeeperConnect = localhost:2181
flume1.sources.kafka-source-1.topic =testkafka
flume1.sources.kafka-source-1.batchSize = 100
flume1.sources.kafka-source-1.channels = hdfs-channel-1

flume1.channels.hdfs-channel-1.type   = memory
flume1.sinks.hdfs-sink-1.channel = hdfs-channel-1
flume1.sinks.hdfs-sink-1.type = hdfs
flume1.sinks.hdfs-sink-1.hdfs.writeFormat = Text
flume1.sinks.hdfs-sink-1.hdfs.fileType = DataStream
flume1.sinks.hdfs-sink-1.hdfs.filePrefix = test-events
flume1.sinks.hdfs-sink-1.hdfs.useLocalTimeStamp = true
flume1.sinks.hdfs-sink-1.hdfs.path = /tmp/kafka/%{topic}/%y-%m-%d
flume1.sinks.hdfs-sink-1.hdfs.rollCount=100
flume1.sinks.hdfs-sink-1.hdfs.rollSize=0
flume1.channels.hdfs-channel-1.capacity = 10000
flume1.channels.hdfs-channel-1.transactionCapacity = 1000

将上述配置文件另存为example.conf
运行flume代理

flume-ng agent -n flume1 -c conf -f example.conf -    Dflume.root.logger=INFO,console

数据现在将转储到以下路径下的hdfs位置

/tmp/kafka/%{topic}/%y-%m-%d
eqqqjvef

eqqqjvef2#

大多数时候,我看到人们用加缪和阿兹卡班
您可以在mate1的github repo上看到它们的camus实现。这不是一个教程,但我认为它可以帮助你
https://github.com/mate1/camus

相关问题