实时数据导入hdfs,怎么样缓解写入压力?

我现在的需求是用flume进行数据源监控和传输,kafka作为中间件作为写入压力缓冲,最后导入hdfs,为后面的大数据分析。刚才问了一个大神,他说kafka和hdfs之间用stream,想问问各位大神怎么设计缓解hdfs写入压力。

flume可以直接接hdfs的,为什么要额外用kafka呢。参考下:
https://www.cnblogs.com/cssdongl/p/6077311.html
http://www.cnblogs.com/cnmenglang/p/6543927.html

参考:
通过Kafka将数据从关系型数据库实时数据流导入到HDFS的Hive表中
http://www.aboutyun.com/thread-19653-1-1.html
https://blog.csdn.net/clerk0324/article/details/60580706

各位我想知道我用kafka作为中间件缓解写入压力对不对啊

缓解压力的情况我能想到3种:
1. 本身是非实时的写,写的时候IO峰值太高,要削峰,这样肯定是改成实时,或者延长写的时间,缩短不写的间隔;
2. 本身是实时的写,整个时间比较平均,但是持续的占用IO可能也造成设备不稳定,或者有一些业务需要偶尔足够的IO空间无法满足。
那就要考虑改成非实时;这样实际IO峰值更高,好处是给了设备一个缓冲的相对空闲的时间。
3. 实时写的IO太高,想降低实时的IO。

你如果现在用flume->hdfs,应该是实时的,你确定你是要改成非实时呢,还是其实是要降低实时的IO。要实时不变,只是想降低IO,要么中间做压缩,要么得加设备。

单纯加kafka,其实是增加了数据的传输路径,增多了整个IO。

1、flume-kafka-hdfs ,增加kafka 削峰没错,但是架构上面,进入到hdfs,是非实时处理了,建议区分冷热数据,进入Kafka
的数据是实时的热数据处理。 2、文件的存储格式可以压缩,另外就是可以用struct streaming或者spark streaming等进行批
写入到hdfs