2016-12-07 3 views
0

Я пытаюсь скопировать большой объем данных (несколько тысяч файлов, добавляющих до 19 ТБ) в мой кластер Hadoop. Я бегу цикл Баш над подмножествами файлов и более петель я бегу, тем медленнее все, копирует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 диска на сервер, 24 ТБ, доступных на каждом узле. Около полудюжины команд ввода.

+0

Сколько серверов и дисков в кластере Hadoop у вас есть? Сколько параллельных команд 'put' вы запускаете? – gudok

+0

9 серверов, 4 диска на сервер, 24 Тб доступно на каждом узле. Около полудюжины команд 'put'. – Sal

ответ

1

Скорость записи HDFS зависит от нескольких факторов

1) Скорость сети

2) Диск I/O Скорость

3) Количество узлов данных

4) Коэффициент репликации

5) Тип файлов - большое количество небольших файлов или больших файлов

6) Размер кучи ячеек Namenode и Datanode.

7) Производительность серверов наменода и данных.

HDFS может обрабатывать несколько прочитанных & написать запрос. Написание большого количества небольших файлов отправит запросы на запись в namenode для каждого файла. Операция записи будет завершена только после репликации на n число узлов, где n - коэффициент репликации, поэтому более высокий коэффициент репликации, запись займет больше времени.

Если сеть, диск и т. Д. Идеальны, сравните производительность после увеличения размера кучи namenode и datanode.

Смежные вопросы