问题背景:
目前kafka中每天有10T数据左右,需要每天将这些数据写入hdfs中。每秒数据量量为10000/s条,每条数据10kB左右。
以做尝试:
1.使用logstash直接消费kafka中的数据,在output中写入hdfs中。结果:处理效率500/s。
2.使用logstash将数据写入本地磁盘,每个小时使用hadoop fs -put语句定时上传。每小时大概400G数据,勉强可以处理完,但后续若数据量继续变大,必然出现数据积压。
考虑将数据压缩后上传:
1.每小时上传数据前将数据压缩,测试lz4压缩效率为3g/min,gzip压缩效率为1g/min。明显压缩所花的时间足以上传所有数据了。
2.使用logstash在输出数据时使用流式压缩为gzip格式,logstash处理数据能力大幅降低为1000/s条。
请问各位大佬指点一下其他处理大数据量从kafka到hdfs的思路,不限以上提到的组件。本人大数据新手,感谢你的回答。
解决方案:
首先你要确定是上游kafka的数据输出太多还是下游hdfs写入能力太差造成的
可以用flume作为kafka的消费者,再用flume来sink到hdfs,各种需求可以通过配置flume的配置文件来完成
可以使用hudi技术,将数据从Kafka经过hudi写入hdfs,这里可以使用Structured Streaming写从Kafka经过hudi到hdfs的代码,流式处理效率挺好