2016-12-07 33 views
0

我试图将大量数据(几千个文件总计高达19TB)复制到我的Hadoop集群。我运行一个bash循环遍历文件的子集和多个圈我跑得较慢的一切副本Hadoop多输入命令放慢

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

当我走动集群上的数据会发生同样的问题,所以我不认为它正在复制导致问题的网络。

问题:Hadoop可以同时处理多个put命令吗?我期待的是什么?

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

+0

你有多少个Hadoop集群中的服务器和磁盘?你运行了多少个并行'put'命令? – gudok

+0

9个服务器,每个服务器4个磁盘,每个节点上可用24TB。大约六打“放”命令。 – Sal

回答

1

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

1)网络速度

2)磁盘I/O速度

3)数据的节点数

4)复制因子

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

6)Namenode和Datanode Java堆大小。

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

HDFS可以处理多个读取&写入请求。编写大量小文件将向每个文件的namenode发送写请求。只有在复制到n个节点(其中n是复制因子)后写入操作才会完成,因此复制因子越高,写入所需的时间也越长。

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