2016-12-26 7 views
-1

У меня есть данные о CDH hdfs, и я хочу переместить его в ковш Amazon S3, поэтому я могу запустить код на AWS EMR вместо CDH. Как я могу переместить его надежно и быстро?Перемещение данных из Cloudera в ковш Amazon S3

Могу ли я сделать это с помощью команды s3a или любого другого эффективного способа сделать это?

+0

Вы можете использовать 'AWS s3 cp' скопировать любой файл в ведро S3. –

+0

Я пробовал использовать aws S3 cp, но после того, как когда-то копирование остановилось. –

+0

Если передача по какой-то причине была прервана, вы всегда можете использовать 'aws s3 sync'. –

ответ

0

Я использую hdfs distcp для копирования данных из S3 в hdfs. Он также поддерживает наоборот, поэтому должен работать и в вашем случае. Так как он использует карту уменьшить внутри и делает параллельную обработку довольно быстро. Я создал сценарий для запуска этой команды для массива дат, а затем запустил ее, используя nohup в фоновом режиме. Синтаксис команды:

hadoop distcp -Dfs.s3n.awsAccessKeyId=$S3NKEYID -  Dfs.s3n.awsSecretAccessKey=$S3NKEY s3n://$COPYFROMENV/$TABLE_PATH/$TABLE/$PARTITION_PATH hdfs://$COPYTOENV/$TABLE_PATH/$TABLE/ 
+0

Я уже пробовал эту команду, это дает мне. Ошибка tools.distcp.Distcp: Неверный отказ java.net.connectException: Соединение отклонено. Любое обходное решение это? –

+0

Обычно это происходит, когда datanode, на котором вы выполняете команду, не может получить доступ к S3. Вы должны убедиться, что s3 доступен из узла, на котором выполняется эта команда. – Pushkin