Irv*_*rvo 11 hadoop large-files hdfs
我正在使用hdfs -put将大型20GB文件加载到hdfs中.目前该流程运行@ 4分钟.我正在尝试改善将数据加载到hdfs的写入时间.我尝试使用不同的块大小来提高写入速度,但得到了以下结果:
512M blocksize = 4mins;
256M blocksize = 4mins;
128M blocksize = 4mins;
64M blocksize = 4mins;
Run Code Online (Sandbox Code Playgroud)
有谁知道瓶颈可能是什么以及我可以探索的其他选项来提高-put cmd的性能?
Don*_*ner 14
20GB/4分钟达到约85MB /秒.对于具有HDFS协议和网络所有开销的单个驱动器而言,这是非常合理的吞吐量.我敢打赌这是你的瓶颈.在不改变摄取过程的情况下,你无法让神奇的速度变得更快.
核心问题是20GB是一个相当数量的数据,并且数据作为单个流被推入HDFS.您受到磁盘I/O的限制,因为您在Hadoop集群中拥有大量磁盘,这是非常蹩脚的.您需要一段时间才能使10GigE网络饱和(也可能是1GigE).
正如您所见,更改块大小不应更改此行为.它仍然是从磁盘到HDFS的相同数据量.
我建议你将文件分成1GB文件并将它们分散到多个磁盘上,然后将它们-put并行启动.如果网络成为瓶颈,您甚至可能希望考虑在多个节点上拆分这些文件.您是否可以更改接收数据的方式以加快速度?明显拆分文件并移动它也需要时间.
Axe*_*son 10
这在很大程度上取决于您的设置细节.首先,知道2分钟内20GB是80MBps.
瓶颈很可能是本地机器的硬件或以太网连接.我怀疑玩块大小会提高你的吞吐量.
如果您的本地计算机具有典型的7200rpm硬盘驱动器,其磁盘到缓冲区的传输速率大约为128MBps,这意味着它可以在大约2:35将该20BG文件加载到内存中,假设您有20GB的备用空间.但是,您不只是将其复制到内存中,而是将其从内存流式传输到网络数据包,因此您可以理解为处理这些任务会产生额外的开销.
另请参阅有关线速的维基百科条目,它将快速以太网设置为100Mbit/s(~12MB/s).请注意,在这种情况下,快速以太网是特定的以太网标准组的术语.你显然比这更快.线速度是一个很好的衡量标准,因为它可以解决本地计算机上的所有因素.
因此,让我们分解本地计算机上流式处理的不同步骤:
如果不了解有关本地计算机的更多信息,则很难指定哪些组件是瓶颈.但是,这些是开始调查比特率的地方.
| 归档时间: |
|
| 查看次数: |
12747 次 |
| 最近记录: |