我正在尝试将大量数据(几千个文件加到19 to )复制到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个磁盘,每个节点可用24 on。大约有六条命令。
发布于 2016-12-08 05:28:28
HDFS的写入速度取决于以下几个因素
1)网络速度
2)磁盘I/O速度
3)数据节点数
4)复制因子
5)文件类型-无论是大量小文件还是大文件
6) Namenode和Datanode Java堆大小。
7) namenode和datanode服务器的性能。
HDFS可以处理多个读写请求。编写大量的小文件会为每个文件向namenode发送写请求。写入操作只有在复制到n个节点数之后才能完成,其中n是复制因子,因此复制因子越高,写入时间就越长。
如果网络、磁盘等是完美的,那么在增加namenode和datanode的堆大小之后,比较它们的性能。
https://stackoverflow.com/questions/41027188
复制相似问题