о передаче файловой системы hadoopFromLocalFile - PullRequest
1 голос
/ 28 января 2012

Я пишу код для параллельной передачи файлов в hadoop hdfs. Поэтому у меня есть много потоков, вызывающих filesystem.copyFromLocalFile.

Я думаю, что стоимость открытия файловой системы не маленькая, поэтому в моем проекте открыта только одна файловая система. Так что я думаю, что может быть проблема, когда так много потоков вызывают его одновременно. Но пока все работает без проблем.

Может ли кто-нибудь дать мне информацию об этом методе копирования? Большое спасибо и хороших выходных.

Ответы [ 2 ]

1 голос
/ 29 января 2012

Я вижу следующие конструктивные особенности, которые необходимо учитывать:
a) Где будет узкое место процесса?Я думаю, что в 2-3 параллельных операций копирования узким местом станет локальный диск или 1 Гб Ethernet.Вы можете сделать это в виде многопоточного приложения или запустить несколько процессов.В любом случае я не думаю, что вам нужен высокий уровень параллелизма.б) Обработка ошибок.Отказ одного потока не должен останавливать весь процесс, и, в то же время, файл не должен быть потерян.В таких случаях я обычно согласен с тем, что в худшем случае файл можно скопировать дважды.Если все в порядке - система может работать в простом сценарии «копировать, затем удалить».c) Если вы копируете с одного из узлов кластера - HDFS станет несбалансированной, поскольку одна реплика будет храниться на хосте, с которого вы копируете.Вам нужно будет постоянно балансировать.

0 голосов
/ 28 января 2012

Можете ли вы сказать мне, какую дополнительную информацию вы хотите получить о copyFromLocalFile ()?

Я не уверен, но, думаю, в вашем случае потоки совместно используют один и тот же ресурс.Поскольку у вас есть только один экземпляр FileSystem, каждая команда, вероятно, будет совместно использовать этот объект между собой.

...