размещение удаленного файла в hadoop без копирования его на локальный диск

размещение удаленного файла в hadoop без копирования его на локальный диск

30.06.2012 04:33:44 Просмотров 28 Источник

Я пишу сценарий оболочки, чтобы поместить данные в hadoop, как только они будут сгенерированы. Я могу подключиться по ssh к своему главному узлу, скопировать файлы в папку и затем поместить их в hadoop. Я ищу команду оболочки, чтобы избавиться от копирования файла на локальный диск на главном узле. чтобы лучше объяснить, что мне нужно, здесь ниже вы можете найти то, что у меня есть до сих пор:

1) скопируйте файл на локальный диск главного узла.:

scp test.txt username@masternode:/folderName/

Я уже настроил SSH-соединение с помощью ключей. Поэтому для этого не требуется пароль.

2) я могу использовать ssh для удаленного выполнения команды Hadoop put:

ssh username@masternode "hadoop dfs -put /folderName/test.txt hadoopFolderName/"

я ищу способ объединить эти два шага в один и пропустить локальную копию файла на локальном диске masterNode.

спасибо

Другими словами, Я хочу передать несколько команд таким образом, чтобы я мог

У вопроса есть решение - Посмотреть?

https://stackoverflow.com/questions/11270509/putting-a-remote-file-into-hadoop-without-copying-it-to-local-disk#comment14864201_11270509
Проблема трубопроводов решена. Однако производительность конвейера значительно ниже, чем при копировании файлов сначала на локальный диск главного узла, а затем на Hadoop. Есть идеи?

Ответы - размещение удаленного файла в hadoop без копирования его на локальный диск / putting a remote file into hadoop without copying it to local disk

Является ответом!
sarnold

30.06.2012 04:40:16

Попробуйте это (непроверено):

cat test.txt | ssh username@masternode "hadoop dfs -put - hadoopFoldername/test.txt"

Я использовал подобные приемы для копирования каталогов вокруг:

tar cf - . | ssh remote "(cd /destination && tar xvf -)"

Этот вывод местных-tar на вход дистанционного-tar.

https://stackoverflow.com/questions/11270509/putting-a-remote-file-into-hadoop-without-copying-it-to-local-disk/11270559#comment14819360_11270559
нет, это не работает. по двум причинам: 1) hadoop dfs-put /dev/stdin не существует 2) Мои файлы имеют двоичный формат. на самом деле это испытание.бункер, а не тест.формат txt
https://stackoverflow.com/questions/11270509/putting-a-remote-file-into-hadoop-without-copying-it-to-local-disk/11270559#comment14819372_11270559
Двоичный файл не имеет значения-sshне искажает 8-битное содержимое. Попробуйте-вместо /dev/stdin?
https://stackoverflow.com/questions/11270509/putting-a-remote-file-into-hadoop-without-copying-it-to-local-disk/11270559#comment14819382_11270559
так что в этом случае единственная проблема заключается в том, что hadoop dfs-put /dev/stdin не работает. На самом деле, я просто попытался, и это не удалось:(
https://stackoverflow.com/questions/11270509/putting-a-remote-file-into-hadoop-without-copying-it-to-local-disk/11270559#comment14819390_11270559
он говорит: put: / dev / stdin ( нет такого устройства или адреса)
https://stackoverflow.com/questions/11270509/putting-a-remote-file-into-hadoop-without-copying-it-to-local-disk/11270559#comment14819397_11270559
Как насчет-вместо /dev/stdin?
https://stackoverflow.com/questions/11270509/putting-a-remote-file-into-hadoop-without-copying-it-to-local-disk/11270559#comment14819401_11270559
(и какая ужасная система не имеет /dev/stdin?)
https://stackoverflow.com/questions/11270509/putting-a-remote-file-into-hadoop-without-copying-it-to-local-disk/11270559#comment14862422_11270559
О, здорово. использование - вместо /dev / stdin решило проблему. Поэтому я использую следующий код, и он отлично работает: cat test.txt / ssh username@masternode " hadoop dfs-put-hadoopFolderName / test.формат txt"
https://stackoverflow.com/questions/11270509/putting-a-remote-file-into-hadoop-without-copying-it-to-local-disk/11270559#comment14866532_11270559
Проблема трубопроводов решена. Однако производительность конвейера значительно ниже, чем при копировании файлов сначала на локальный диск главного узла, а затем на Hadoop. Есть идеи?
https://stackoverflow.com/questions/11270509/putting-a-remote-file-into-hadoop-without-copying-it-to-local-disk/11270559#comment14870501_11270559
Что медленнее? Всю операцию или конкретно put?
https://stackoverflow.com/questions/11270509/putting-a-remote-file-into-hadoop-without-copying-it-to-local-disk/11270559#comment14871863_11270559
специфика поставлена. копирование одного файла на локальный диск главного узла и последующее размещение его в hadoop с помощью ssh remote выполняется быстрее, чем передача Cat | ssh remote.
https://stackoverflow.com/questions/11270509/putting-a-remote-file-into-hadoop-without-copying-it-to-local-disk/11270559#comment58836490_11270559
Здесь есть хорошее решение: [ one-line-it.blogspot.dk/2013/05/…
https://stackoverflow.com/questions/11270509/putting-a-remote-file-into-hadoop-without-copying-it-to-local-disk/11270559#comment99170768_11270559
существует ли ограничение по размеру для передачи файлов с использованием этого подхода?
https://stackoverflow.com/questions/11270509/putting-a-remote-file-into-hadoop-without-copying-it-to-local-disk/11270559#comment99176406_11270559
@amithmurakonda, я не знаю, есть ли у hadoop ограничение на вход таким образом. ssh, конечно, не делает этого, но чем дольше ssh-соединение остается открытым, тем более вероятно, что соединение может быть сброшено из-за ошибок. Многие из нас имеют ssh-соединения или irc-соединения, открытые в течение нескольких месяцев, но в какой-то момент нарушение статусного брандмауэра может привести к сбою всей системы. rsyncбудет знать, как возобновить такую вещь, если и источник, и назначение являются файлами или деревьями каталогов. Вы можете получить лучшие результаты, задавая новый вопрос, хотя и с подробностями вашей проблемы. Спасибо.
https://stackoverflow.com/questions/11270509/putting-a-remote-file-into-hadoop-without-copying-it-to-local-disk/11270559#comment106204508_11270559
Это решение работало с небольшими изменениями, просто добавьте имя файла в hdfs path: cat test.txt / ssh username@masternode " hdfs dfs-put-hadoopFoldername / test.формат txt"
Praveen Sripati

30.06.2012 05:27:10

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

https://stackoverflow.com/questions/11270509/putting-a-remote-file-into-hadoop-without-copying-it-to-local-disk/11270750#comment63781781_11270750
это должно сработать: hadoop.apache.org/docs/r1.0.4/…
Chris White

30.06.2012 04:44:39

Узел, на котором вы сгенерировали данные, способен достичь каждого из узлов кластера (узел имени и все коды данных).

Если у вас есть подключение к данным, то вы можете просто выполнить команду hadoop fs-put с компьютера, на котором генерируются данные (при условии, что у вас там также установлены двоичные файлы hadoop):

#> hadoop fs -fs masternode:8020 -put test.bin hadoopFolderName/
https://stackoverflow.com/questions/11270509/putting-a-remote-file-into-hadoop-without-copying-it-to-local-disk/11274172#comment14862477_11274172
к сожалению, узел, на котором я создаю данные, не имеет прямого доступа к кластеру обруча.
https://stackoverflow.com/questions/11270509/putting-a-remote-file-into-hadoop-without-copying-it-to-local-disk/11274172#comment32262679_11274172
Вы знаете, какая минимальная установка hadoop требуется?
serup

23.02.2016 01:14:21

(непроверенный)

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

Закрыть X