2012-05-30 2 views
3

Я использую Amazon EMR, и я могу создавать и запускать последовательности задач с помощью инструмента CLI. Работа работает нормально. Однако при попытке загрузить данные в HDFS кластера EMR из SFS и локальной файловой системы узла имени я столкнулся с проблемой.Amazon EMR: Инициализация кластера с данными

Я хотел бы заполнить HDFS с S3. Я пытаюсь использовать инструмент S3DistCp. Я выполняю эту команду:

elastic-mapreduce --jobflow $JOBFLOWID --jar s3://us-east-1.elasticmapreduce/libs/s3distcp/1.0.1/s3distcp.jar --arg --src --arg 's3n://my-bucket/src' --arg --dest --arg 'hdfs:///my-emr-hdfs/dest/' 

Я получаю две ошибки, вероятно, связанные с журналами. В выходных данных MapReduce заданий работа завершается до 100%, но не в конце:

INFO org.apache.hadoop.mapred.JobClient (main):  Map output records=184 
ERROR com.amazon.elasticmapreduce.s3distcp.S3DistCp (main): 21 files failed to copy 

В логах демона имя узла Я получаю это исключение:

INFO org.apache.hadoop.ipc.Server (IPC Server handler 13 on 9000): IPC Server handler 13 on 9000, call addBlock(/mnt/var/lib/hadoop/tmp/mapred/system/jobtracker.info, DFSClient_-1580223521, null) from xx.xx.xx.xx:xxxxx: error: java.io.IOException: File /mnt/var/lib/hadoop/tmp/mapred/system/jobtracker.info could only be replicated to 0 nodes, instead of 1 
java.io.IOException: File /mnt/var/lib/hadoop/tmp/mapred/system/jobtracker.info could only be replicated to 0 nodes, instead of 1 at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1531) 
at org.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:685) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:563) 
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1388) 
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1384) 
at java.security.AccessController.doPrivileged(Native Method) 
at javax.security.auth.Subject.doAs(Subject.java:396) 
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1059) 
at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1382) 

Я набор ДХ. replication = 1 при создании потока задач. Мои узлы - c1.mediums, а данные, которые я пытаюсь вдавить в HDFS, составляют менее 3 ГБ. Поэтому это не должно быть проблемой вне диска. Но, может быть, я что-то упустил.

Два вопроса: 1) Любое понимание того, почему S3DistCp не работает? 2) Второй вопрос несколько не связан. Возможно ли создать рабочий процесс, когда первое задание является заданием S3DistCp для инициализации кластера данными?

Любое понимание оценено. Благодарю.

Обновление: мой тест ниже в комментариях, похоже, не работает. Вот еще информация из журналов.

WARN org.apache.hadoop.hdfs.DFSClient (Thread-15): Error Recovery for block null bad datanode[0] nodes == null 
WARN org.apache.hadoop.hdfs.DFSClient (Thread-15): Could not get block locations. Source file "/mnt/tmp/mapred/system/jobtracker.info" - Aborting... 
WARN org.apache.hadoop.mapred.JobTracker (main): Writing to file hdfs://xx.xx.xx.xx:xxxx/mnt/tmp/mapred/system/jobtracker.info failed! 
WARN org.apache.hadoop.mapred.JobTracker (main): FileSystem is not ready yet! 
WARN org.apache.hadoop.mapred.JobTracker (main): Failed to initialize recovery manager. 
+0

EMR загружается с устаревшим файлом hadoop-site.xml, и похоже, что он может использовать это и конфигурацию hadoop.tmp.dir, определенную в нем, что указывает на/tmp./tmp намного меньше. Я попытаюсь переопределить этот конфиг. Возможно, он не работает. https://forums.aws.amazon.com/thread.jspa?threadID=32108 –

+1

Журналы демона имени узла на EMR почти всегда запускаются с этими ошибками в журналах. Я утверждаю, что это красные сельди. Вы можете делать все, что хотите, на шаге EMR, если у вас есть основной метод в банке для вызова Hadoop. Но что не так с использованием s3n: // (родной файловой системы s3) для картографических входов напрямую? –

+0

Спасибо за это понимание @JudgeMental. Кажется, что все мои файлы данных попадают в EMR HDFS в порядке. Но задача s3distcp каждый раз переходит в состояние FAILED, поэтому он не видит этого. –

ответ

3

Для первого запроса "Jobtracker.info может быть воспроизведен только 0 узлов, вместо 1" надеюсь, что это помогает: http://wiki.apache.org/hadoop/FAQ#What_does_.22file_could_only_be_replicated_to_0_nodes.2C_instead_of_1.22_mean.3F Копирование из приведенной выше ссылке:

3.13. Что означает, что «файл может быть реплицирован только на 0 узлов, а не на 1»?

У NameNode нет доступных DataNodes. Это может быть вызвано по широкому кругу причин. Проверьте журналы DataNode, то NameNode журналы, подключение к сети, ... Пожалуйста, обратитесь к странице: CouldOnlyBeReplicatedTo

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

Смежные вопросы