hadoop多个put命令速度变慢

de90aj5v  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(960)

我正试图将大量数据(几千个文件加起来高达19tb)复制到我的hadoop集群中。我在文件的子集上运行bash循环,我运行的循环越多,复制的速度就越慢

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

当我在集群上移动数据时,同样的问题也会发生,所以我不认为是通过网络复制造成了问题。
问:hadoop能同时处理多个任务吗 put 命令?我看到的是预期的吗?
编辑:群集规格:9台服务器,每台服务器4个磁盘,每个节点上可用24tb。大约有六个人发出命令。

cuxqih21

cuxqih211#

hdfs的写入速度取决于几个因素
1) 网络速度
2) 磁盘i/o速度
3) 数据节点数
4) 复制因子
5) 文件类型-无论是大量的小文件还是大文件
6) namenode和datanode java堆大小。
7) namenode和datanode服务器的性能。
hdfs可以处理多个读写请求。写入大量小文件将向namenode发送每个文件的写入请求。只有在复制到n个节点(其中n是复制因子)之后,写入操作才会完成,因此复制因子越高,写入所需的时间就越长。
如果网络、磁盘等都很完善,比较增加namenode和datanode堆大小后的性能。

相关问题