Как параллельно загружать файлы с клиента в кластер Hadoop - PullRequest
0 голосов
/ 02 мая 2018

С помощью команды hadoop fs -put данные последовательно поступают в кластер.

Но как выгрузить данные параллельно со стороны клиента в кластер HDFS?

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

Да, hadoop fs - put работает последовательно. Используйте команду distcp (распределенная копия).

hadoop distcp file:///home/user/path /user/path

distcp реализован как задание MapReduce, где копирование выполняется картами, которые работают параллельно в кластере. Там нет редукторов. Каждый файл копируется одной картой, и distcp пытается дать каждой карте примерно одинаковый объем данных, объединяя файлы в примерно равные распределения. По умолчанию используется до 20 карт, но это можно изменить, указав аргумент -m в distcp.

См. Руководство здесь . Также смотрите это сообщение в блоге .

Также вы можете запускать команды оболочки параллельно, используя амперсанд ('&') в конце:

hadoop fs - put src_file tgt_file &
hadoop fs - put src_file2 tgt_file2 &
0 голосов
/ 02 мая 2018

Поскольку команда hadoop является клиентом Hadoop, необходимо, чтобы некоторые из них работали параллельно. Но вам придется реализовать своего рода стратегию разделения и обработки ошибок, чтобы все файлы загружались.

Он не будет устранять другие узкие места, такие как дисковый ввод-вывод, операции ввода-вывода, использование сети и т. Д.

Вы найдете некоторую справочную информацию о Загрузка данных в HDFS - Часть 1 - Параллельная загрузка .

...