如果我有6个数据节点,将复制转换为6会更快,因此所有数据都会在我的所有节点上复制,因此群集可以拆分查询(例如在hive中)而无需移动数据吗?我相信如果你有一个3的复制,你把一个300GB的文件放入HDFS,它只是在3个数据节点之间拆分,然后当6个节点需要用于查询时,它必须将数据移动到数据不存在的其他3个节点,导致响应更慢..这是准确的吗?
答案 0 :(得分:0)
我理解你的意思,你在谈论数据本地。一般来说,数据局部性可以减少运行时间,因为它可以节省阻止网络传输的时间。但实际上,如果你没有打开“HDFS Short-Circuit Local Reads”(默认它是关闭的,请访问here),MapTask也将通过TCP协议读取块,它意味着通过网络,即使block和MapTask都在同一个节点上。
最近,我优化了hadoop和HDFS,我们使用SSD代替硬盘磁盘,但我们发现效果不好而且时间不短。因为磁盘不是瓶颈而且网络负载不重。根据结果,我们得出结论,cpu非常沉重。如果您希望清楚地了解hadoop集群情况,我建议您使用ganglia监控集群,它可以帮助您分析集群瓶颈。请参阅here。
最后,hadoop是一个非常庞大而复杂的系统,磁盘性能,CPU性能,网络带宽,参数值以及还有很多因素需要考虑。如果你想节省时间,你需要做很多工作,而不仅仅是复制因素。