我正在使用 hdfs -put 将一个 20GB 的大文件加载到 hdfs 中。目前该过程运行@ 4 分钟。我正在尝试缩短将数据加载到 hdfs 的写入时间。我尝试利用不同的块大小来提高写入速度,但得到以下结果:
512M blocksize = 4mins;
256M blocksize = 4mins;
128M blocksize = 4mins;
64M blocksize = 4mins;
有谁知道瓶颈可能是什么以及我可以探索的其他选项来提高 -put cmd 的性能?
20GB / 4 分钟大约为 85MB/秒。考虑到 HDFS 协议和网络的所有开销,单个驱动器的吞吐量是相当合理的。我敢打赌这就是你的瓶颈。如果不改变您的摄取流程,您将无法神奇地加快速度。
核心问题是 20GB 是相当大的数据量,并且这些数据作为单个流推送到 HDFS 中。你受到磁盘 I/O 的限制,考虑到 Hadoop 集群中有大量磁盘,这是相当蹩脚的。你需要一段时间才能使 10GigE 网络(也可能是 1GigE)饱和。
正如您所看到的,更改块大小不应改变此行为。从磁盘到 HDFS 的数据量仍然相同。
我建议你将文件分割成1GB文件并将它们分布在多个磁盘上,然后使用-put
在平行下。如果网络成为瓶颈,您甚至可能需要考虑将这些文件拆分到多个节点上。您能否改变接收数据的方式以加快速度?显然,分割文件并移动它也需要时间。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)