Hadoop 通过将文件划分为日期,从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

我正在做一个项目,该项目应该通过卡夫卡(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.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文件