Hadoop 通过将文件划分为日期,从kafka写入hdfs最有效的方法是什么
我正在做一个项目,该项目应该通过卡夫卡(kafka)写入hdfs。 假设有一个在线服务器将消息写入卡夫卡。每条消息都包含时间戳。 我想创建一个作业,根据消息中的时间戳,该作业的输出将是一个文件。 例如,如果卡夫卡中的数据是Hadoop 通过将文件划分为日期,从kafka写入hdfs最有效的方法是什么,hadoop,hdfs,apache-kafka,Hadoop,Hdfs,Apache Kafka,我正在做一个项目,该项目应该通过卡夫卡(kafka)写入hdfs。 假设有一个在线服务器将消息写入卡夫卡。每条消息都包含时间戳。 我想创建一个作业,根据消息中的时间戳,该作业的输出将是一个文件。 例如,如果卡夫卡中的数据是 {"ts":"01-07-2013 15:25:35.994", "data": ...} ... {"ts":"01-07-2013 16:25:35.994", "data": ...} ... {"ts":"01-07-2013 17:25:35.9
{"ts":"01-07-2013 15:25:35.994", "data": ...}
...
{"ts":"01-07-2013 16:25:35.994", "data": ...}
...
{"ts":"01-07-2013 17:25:35.994", "data": ...}
我想得到3个文件作为输出
kafka_file_2013-07-01_15.json
kafka_file_2013-07-01_16.json
kafka_file_2013-07-01_17.json
当然,如果我再次运行此作业,并且队列中有一条新消息,如
{"ts":"01-07-2013 17:25:35.994", "data": ...}
它应该创建一个文件
kafka_file_2013-07-01_17_2.json // second chunk of hour 17
我看过一些开放源码,但大多数都是从卡夫卡读到hdfs文件夹。
这个问题的最佳解决方案/设计/开源是什么
这将以Avro格式写入数据,但。。。其他的RecordWriter是可插拔的。您一定要从linkedIn中查看
Camus API
实现。加缪是LinkedIn的卡夫卡->HDFS管道。这是一个mapreduce作业,用于从Kafka中加载分布式数据。看看我为一个简单的例子写的这个例子,它从twitter流获取数据,并根据tweet时间戳写入HDFS
项目可在github获得,网址为-
Camus需要两个主要组件来读取和解码来自Kafka的数据,并将数据写入HDFS-
解读卡夫卡传来的信息
加缪有一套解码器,帮助解码来自卡夫卡的消息,解码器基本上扩展了com.linkedin.Camus.coders.MessageDecoder
,它实现了基于时间戳划分数据的逻辑。此目录中有一组预定义的解码器,您可以根据这些解码器编写自己的解码器camus/camus-kafka编码者/src/main/java/com/linkedin/camus/etl/kafka/coders/
将消息写入HDFS
加缪需要一组RecordWriterProvider类,这些类扩展了com.linkedin.Camus.etl.RecordWriterProvider
,它将告诉加缪应该写入HDFS的有效负载是什么。此目录中存在一组预定义的RecordWriterProvider,您可以根据这些内容编写自己的
camus-etl-kafka/src/main/java/com/linkedin/camus/etl/kafka/common
如果你正在寻找一种更实时的方法,你应该去看看。它也是一个Apache许可的用于ingest的开源工具 HDFS目标可配置为根据指定的模板写入基于时间的目录。它已经包含了一种方法,可以在传入消息中指定一个字段,用于确定写入消息的时间。该配置称为“时间基础”,您可以指定类似于
${record:value(“/ts”)}
的内容
*完全公开我是一名工程师,正在研究这个工具 检查卡夫卡到HDFS的连续摄入情况。因为它依赖于,所以它有Apex提供的保证
如果您使用的是Apache Kafka 0.9或更高版本,则可以使用Kafka Connect API 退房
这是一个卡夫卡连接器,用于在卡夫卡和HDFS之间复制数据。linkedin和gobblin已停用了Camus。地精文档:地精来源:这里是一个关于地精的例子。我们鼓励链接到外部资源,但请在链接周围添加上下文,以便您的其他用户了解它是什么以及为什么存在。始终引用重要链接的最相关部分,以防无法访问目标站点或永久脱机。此connect HDFS writer尚不支持写入json文件