Hadoop多输入命令减慢速度

时间:2016-12-07 20:54:25

标签: hadoop hdfs

我正在尝试将大量数据(几千个文件,总计19TB)复制到我的Hadoop集群。我在文件的子集上运行bash循环,运行的循环越多,所有副本的速度就越慢

for filename in /path/to/my/data/*.csv; 
    do cat $filename | ssh user@hadoop "hadoop fs -put - /path/to/new/data/$filename"; 
done

当我在群集上移动数据时会发生同样的问题,因此我认为它不会复制导致问题的网络。

问题:Hadoop可以同时处理多个put命令吗?我所看到的是预期的吗?

编辑:群集规格:9个服务器,每个服务器4个磁盘,每个节点可用24TB。大约有六打命令。

1 个答案:

答案 0 :(得分:1)

HDFS写入速度取决于几个因素

1)网络速度

2)磁盘I / O速度

3)数据节点数

4)复制因子

5)文件类型 - 是否有大量小文件或大文件

6)Namenode和Datanode Java堆大小。

7)namenode和datanode服务器的性能。

HDFS可以处理多个读取和放大写请求。写入大量小文件会将写入请求发送到每个文件的namenode。写操作只有在复制到n个节点后才能完成,其中n是复制因子,因此复制因子越高,写入将花费更长的时间。

如果网络,磁盘等完美,请在增加namenode和datanode的堆大小后比较性能。