2014-09-10 3 views
7

У меня есть 4 узла кластер (1 NameNode/Resource Manager 3 DataNodes/менеджеров узлов)ПРЯЖА Master Application не удалось подключиться к диспетчеру ресурсов

Я пытаюсь запустить простой пример Tez orderedWordCount

hadoop jar C:\HDP\tez-0.4.0.2.1.1.0-1621\tez-mapreduce-examples-0.4.0.2.1.1.0-1621.jar orderedwordcount sample/test.txt /sample/out 

работа получает принято, мастер приложений и контейнер получает установку, но на nodemanager я вижу эти журналы

2014-09-10 17: 53: 31982 INFO [ServiceThread: org.apache.tez.da g.app.rm.TaskSchedulerEventHandler] org.apache.hadoop.yarn.client.RMProxy: Подключение к ResourceManager на /0.0.0.0:8030

2014-09-10 17: 53: 34060 ИНФО [ServiceThread : org.apache.tez.dag.app.rm.TaskSchedulerEventHandler] org.apache.hadoop.ipc.Client: Повторная попытка подключения к серверу: 0.0.0.0/0.0.0.0:8030. Уже пробовал 0 раз (а); повторите политики RetryUpToMaximumCountWithFixedSleep (maxRetries = 10, = 1000 отхода ко сну миллисекунды)

После настраиваемым таймаута задание не

я искал для этой проблемы, и это всегда указывает на yarn.resourcemanager.scheduler.address конфигурацию. Во всех моих узлов и узлов менеджеров менеджера ресурсов я эта конфигурация определена правильно, но по какой-то причине его не получить взял

<property> 
<name>yarn.resourcemanager.hostname</name> 
<value>10.234.225.69</value> 
</property> 
<property> 
<name>yarn.resourcemanager.address</name> 
<value>${yarn.resourcemanager.hostname}:8032</value> 
</property> 
<property> 
<name>yarn.resourcemanager.webapp.address</name> 
<value>${yarn.resourcemanager.hostname}:8088</value> 
</property> 
<property> 
<name>yarn.resourcemanager.scheduler.address</name> 
<value>${yarn.resourcemanager.hostname}:8030</value> 
</property> 
<property> 
<name>yarn.resourcemanager.resource-tracker.address</name> 
<value>${yarn.resourcemanager.hostname}:8031</value> 
</property> 
<property> 
<name>yarn.resourcemanager.admin.address</name> 
<value>${yarn.resourcemanager.hostname}:8033</value> 
</property> 

ответ

0

Это потому, что ваш менеджер ресурсов не достижим. Попробуйте выполнить ping-менеджер ресурсов из других узлов и посмотреть, работает ли он. Поддерживайте эти конфигурации в разных кластерах.

6

Это может быть возможно, что ваш ResourceManager слушает на порту IPv6 в то время как ваши рабочие узлы (т.е. NodeManagers) могут использовать IPv4 для подключения к ResourceManager

Чтобы быстро проверить, если это так, то сделать

netstat -aln | grep 8030 

Если вы получаете что-то похожее на :::8030, то ваш ResourceManager действительно прослушивает порт IPv6. Если это порт IPv4, вы должны увидеть что-то похожее на 0.0.0.0:8030

Чтобы исправить это, вам может потребоваться отключить IPv6 на всех ваших компьютерах и попробовать еще раз.

0

Существует проблема в коде Hadoop2 с настройкой yarn.resourcemanager.scheduler.address, например:

<property> 
    <name>yarn.resourcemanager.scheduler.address</name> 
    <value>qadoop-nn001.apsalar.com:8030</value> 
</property> 

В настоящее время не должным образом размещены в конфигурации «конф» в Hadoop-2.7.0 /src/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/client/RMProxy.java

Для подтверждения проблемы мы исправили, что файл для непосредственного ввода нашего адреса планировщика. Патч ниже - это взломать. Коренной причиной является объект «conf», которому необходимо загрузить свойство «yarn.resourcemanager.scheduler.address».

@Private 
protected static <T> T createRMProxy(final Configuration configuration, final Class<T> protocol, RMProxy instance) throws IOException { 
    YarnConfiguration conf = (configuration instanceof YarnConfiguration) 
     ? (YarnConfiguration) configuration 
     : new YarnConfiguration(configuration); 
    LOG.info("LEE: changing the conf to include yarn.resourcemanager.scheduler.address at 10.1.26.1"); 
    conf.set("yarn.resourcemanager.scheduler.address", "10.1.26.1"); 
    RetryPolicy retryPolicy = createRetryPolicy(conf); 
    if (HAUtil.isHAEnabled(conf)) { 
     RMFailoverProxyProvider<T> provider = 
      instance.createRMFailoverProxyProvider(conf, protocol); 
     return (T) RetryProxy.create(protocol, provider, retryPolicy); 
    } else { 
     InetSocketAddress rmAddress = instance.getRMAddress(conf, protocol); 
     LOG.info("LEE: Connecting to ResourceManager at " + rmAddress); 
     T proxy = RMProxy.<T>getProxy(conf, protocol, rmAddress); 
     return (T) RetryProxy.create(protocol, proxy, retryPolicy); 
    } 
} 

EDIT: мы решили эту проблему путем добавления пряжи site.xml в CLASSPATH. нет необходимости изменять RMProxy.java