2016-12-07 34 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的堆大小後的性能。