
Ситуация: Мне нужно перенести около 100 ТБ из старого кластера Hadoop в новый кластер Hadoop. Два кластера имеют прямое соединение 1GbE от namenode на каждом кластере. Datanode не подключены.
Что я пробовал:
- Distcp: Это не работает, поскольку старый и новый узлы данных не подключены, при каждом задании mapreduce будет сообщаться об истечении времени ожидания соединения.
- hdfs dfs -cp: Пока что это работает довольно хорошо, но имеет тенденцию замедляться и в конечном итоге прекращать передачу через несколько часов. Это также не поддерживает сжатие или хорошую перезапускаемость.
Что меня интересует:
- Поскольку мое соединение между кластером 1 и кластером 2 является узким местом, мне интересно найти инструмент, который позволит мне сжимать данные в кластере 1, отправлять их по сети с минимальными накладными расходами (может быть, netcat?) и распаковывать их в кластере 2. Rsync был бы идеальным вариантом, но я не уверен, как использовать его между двумя кластерами Hadoop.
- Другие рекомендации, с которыми я не знаком.
Мой вопрос:
- Какие инструменты или скрипты я могу использовать для эффективной передачи данных между кластером 1 и кластером 2, учитывая перечисленные ограничения?