Pig продолжает пытаться подключиться к серверу истории заданий (и терпит неудачу)



Я запускаю задание Pig, которое не может подключиться к серверу истории заданий Hadoop.



Задача (обычно любая задача с GROUP BY) выполняется некоторое время, а затем начинается с сообщения типа:



2015-04-21 19:05:22,825 [main] INFO  org.apache.hadoop.mapred.ClientServiceDelegate - Application state is completed. FinalApplicationStatus=SUCCEEDED. Redirecting to job history server
2015-04-21 19:05:26,721 [main] INFO org.apache.hadoop.ipc.Client - Retrying connect to server: 0.0.0.0/0.0.0.0:10020. Already tried 0 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS)
2015-04-21 19:05:29,721 [main] INFO org.apache.hadoop.ipc.Client - Retrying connect to server: 0.0.0.0/0.0.0.0:10020. Already tried 1 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS)


Затем он продолжает некоторое время повторять попытку соединения. Иногда она предшествует дальнейшей работе. В других случаях он выбрасывает это исключение:



2015-04-21 19:05:55,822 [main] WARN  org.apache.pig.tools.pigstats.mapreduce.MRJobStats - Unable to get job counters
java.io.IOException: java.io.IOException: java.net.NoRouteToHostException: No Route to Host from cluster-01/10.10.10.11 to 0.0.0.0:10020 failed on socket timeout exception: java.net.NoRouteToHostException: No route to host; For more details see: http://wiki.apache.org/hadoop/NoRouteToHost
at org.apache.pig.backend.hadoop.executionengine.shims.HadoopShims.getCounters(HadoopShims.java:132)
at org.apache.pig.tools.pigstats.mapreduce.MRJobStats.addCounters(MRJobStats.java:284)
at org.apache.pig.tools.pigstats.mapreduce.MRPigStatsUtil.addSuccessJobStats(MRPigStatsUtil.java:235)
at org.apache.pig.tools.pigstats.mapreduce.MRPigStatsUtil.accumulateStats(MRPigStatsUtil.java:165)
at org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher.launchPig(MapReduceLauncher.java:360)
at org.apache.pig.backend.hadoop.executionengine.HExecutionEngine.launchPig(HExecutionEngine.java:280)


Я нашел этот вопрос здесь , но в моем случае запускается сервер истории заданий. Если я запускаю netstat, я найти:



tcp        0      0 0.0.0.0:10020           0.0.0.0:*               LISTEN      12073/java       off (0.00/0/0)


Где 12073 ...



12073 pts/4    Sl     0:07 /usr/lib/jvm/java-7-openjdk-amd64/bin/java -Dproc_historyserver -Xmx1000m -Djava.library.path=/data/hadoop/hadoop/lib -Djava.net.preferIPv4Stack=true -Dhadoop.log.dir=/data/hadoop/hadoop-2.3.0/logs -Dhadoop.log.file=hadoop.log -Dhadoop.home.dir=/data/hadoop/hadoop-2.3.0 -Dhadoop.id.str=hadoop -Dhadoop.root.logger=INFO,console -Dhadoop.policy.file=hadoop-policy.xml -Djava.net.preferIPv4Stack=true -Dhadoop.log.dir=/data/hadoop/hadoop/logs -Dhadoop.log.file=mapred-hadoop-historyserver-cluster-01.log -Dhadoop.root.logger=INFO,RFA -Dmapred.jobsummary.logger=INFO,JSA -Dhadoop.security.logger=INFO,NullAppender org.apache.hadoop.mapreduce.v2.hs.JobHistoryServer


Я попытался открыть порт 10200 в случае, если это была проблема брандмауэра:



ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:10020


... но не повезло.



Через несколько минут некоторые задачи просто произвольно переходят к следующей части.

Я с помощью Hadoop 2.3 и свинья 0.14.



Мой вопрос:



1) Каковы возможные причины, почему свинья не может подключиться к серверу истории работа (jhs, выполните следующие команды) учитывая, что jhs, выполните следующие команды работает на том же порту, что свинья ищет это?



... или потерпеть неудачу ...



2) есть ли какой-нибудь способ просто сказать свинье, чтобы она прекратила попытки подключиться к JHS и продолжила выполнение задачи?
612   2  

2 ответов:

Похоже, что большинство руководств по установке и настройке Hadoop не упоминают о настройке сервера истории заданий. Похоже, что свинья, в частности, полагается на этот сервер. Кроме того, похоже, что настройки по умолчанию (локальные) для JHS не будут работать в многоузловом кластере.

Решение состояло в том, чтобы добавить имя хоста сервера в конфигурацию в mapred-site.xml, чтобы убедиться, что это может быть доступ с других машин. (В моей версии файла строки должны были быть добавлены как "новые"... предыдущих настроек не было.)

<property>
  <name>mapreduce.jobhistory.address</name>
  <value>cm:10020</value>
  <description>Host and port for Job History Server (default 0.0.0.0:10020)</description>
</property>

Затем перезагрузите сервер журнала заданий:

mr-jobhistory-daemon.sh stop historyserver
mr-jobhistory-daemon.sh start historyserver

Если вы получаете исключение привязки (используемый порт), это означает, что stop не работал. Либо

  1. Используйте ps ax | grep -e JobHistory, чтобы получить процесс и убить его вручную с помощью kill -9 [pid]. Затем снова вызовите команду start выше. Или

  2. Используйте другой порт в конфигурации

Pig должен автоматически подобрать новые настройки. Запустить сценарий свиньи и надеяться на лучшее. лучший.

Запустите сервер истории в Hadoop bin, используя следующую команду

bin$ ./mr-jobhistory-daemon.sh start historyserver

Запустите pig, используя следующую команду

$pig

Comments

    Ничего не найдено.