如何将Kafka主题加载到HDFS?

8

我正在使用Hortonworks Sandbox。
创建主题:

./kafka-topics.sh --create --zookeeper 10.25.3.207:2181 --replication-factor 1 --partitions 1 --topic lognew  

追踪Apache访问日志目录:

tail -f  /var/log/httpd/access_log |./kafka-console-producer.sh --broker-list 10.25.3.207:6667 --topic lognew  

在另一个kafka bin终端上启动消费者:
./kafka-console-consumer.sh --zookeeper 10.25.3.207:2181 --topic lognew --from-beginning  

Apache访问日志被发送到kafka主题 "lognew"。

我需要将它们存储到HDFS。
有关如何执行此操作的任何想法或建议。

提前致谢。
Deepthy

2个回答

6
我们使用了Camus
Camus是LinkedIn开发的一个简单的MapReduce作业,用于将数据从Kafka加载到HDFS中。它能够将数据从Kafka增量地复制到HDFS中,以便每次运行MapReduce作业都可以在上一次停止的地方继续进行。在LinkedIn,Camus用于从Kafka每天加载数十亿条消息到HDFS中。
但看起来它已被Gobblin所取代。
Gobblin是用于从各种数据源(例如数据库、REST API、FTP/SFTP服务器、文件等)提取、转换和加载大量数据到Hadoop中的通用数据摄取框架。 Gobblin处理所有数据摄取ETL所需的常见例行任务,包括作业/任务调度、任务分区、错误处理、状态管理、数据质量检查、数据发布等。 Gobblin在同一执行框架中从不同的数据源摄取数据,并在一个地方管理不同源的元数据。这与其他功能(如自动可扩展性、容错性、数据质量保证、可扩展性以及处理数据模型演变的能力)相结合,使Gobblin成为易于使用、自助服务和高效的数据摄取框架。

谢谢你的回复... 我尝试运行camus,但是出现了以下错误: com.linkedin.camus.coders.MessageDecoderException: java.lang.InstantiationException: com.linkedin.camus.example.schemaregistry.DummySchemaRegistry - Deepthy
我猜你需要正确设置项目:http://etl.svbtle.com/setting-up-camus-linkedins-kafka-to-hdfs-pipeline - Anatoly Deyneka
除了使用Camus和Gobblin之外,还有其他方法将Kafka主题加载到HDFS吗? - Deepthy
我们选择使用Camus是因为它在领英上被成功地应用。我想你可以找到其他方法,但目前Camus和Goblin是最受欢迎的。 - Anatoly Deyneka

2
您还有其他几个选项:
  • 使用Apache Flume从Kafka读取消息并将其写入您的HDFS。有几个示例可以帮助您设置,但是来自Cloudera的一篇文章涵盖了这个主题。他们甚至给解决方案起名为Flafka ;)
  • 使用Kafka HDFS Connector,它非常容易设置。但是,它需要Confluent Kafka(仍然是开源的)。
我们对两者都进行了成功测试。

1
如果可能,请将以下与编程相关的内容从英文翻译成中文。仅返回翻译后的文本:如果可能,请在你的答案中添加链接的内容。这样,即使链接失效,你的答案仍然有用。请提供待翻译的英文文本。 - mnwsmit
1
它们是相当大的文章,但我会尝试解释一些概念。 - wjp
你如何编译kafka hdfs连接器?它说它需要common和schema repository master,我已经下载了它们,但是我无法使用https://github.com/confluentinc/common上的说明进行构建。已提交错误:https://github.com/confluentinc/common/issues/37 - Adrian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接