[HADOOP] YARN 응용 프로그램 마스터가 리소스 관리자에 연결할 수 없습니다.
HADOOPYARN 응용 프로그램 마스터가 리소스 관리자에 연결할 수 없습니다.
4 노드 클러스터 (1 네임 노드 / 리소스 관리자 3 datanodes / 노드 관리자)
간단한 tez 예제를 실행하려고합니다. ordersWordCount
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에서이 로그를 봅니다.
구성 가능한 시간 초과 후 작업이 실패 함
이 문제를 조사한 결과 항상 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>
해결법
-
==============================
1.작업자 노드 (예 : NodeManager)가 IPv4를 사용하여 ResourceManager에 연결하는 동안 ResourceManager가 IPv6 포트에서 수신 대기 중일 수 있습니다
작업자 노드 (예 : NodeManager)가 IPv4를 사용하여 ResourceManager에 연결하는 동안 ResourceManager가 IPv6 포트에서 수신 대기 중일 수 있습니다
이 경우 신속하게 확인하려면
netstat -aln | grep 8030
::: 8030과 유사한 것을 얻으면 ResourceManager는 실제로 IPv6 포트에서 수신 대기합니다. IPv4 포트 인 경우 0.0.0.0:8030과 비슷한 것을보아야합니다.
이 문제를 해결하려면 모든 컴퓨터에서 IPv6을 사용하지 않도록 설정하고 다시 시도하십시오.
-
==============================
2.yarn.resourcemanager.scheduler.address를 설정하면 Hadoop2 코드에 문제가 있습니다 (예 :
yarn.resourcemanager.scheduler.address를 설정하면 Hadoop2 코드에 문제가 있습니다 (예 :
<property> <name>yarn.resourcemanager.scheduler.address</name> <value>qadoop-nn001.apsalar.com:8030</value> </property>
현재 'conf'구성에 제대로 배치되지 않았습니다. hadoop-yarn-project / hadoop-yarn / common / src / main / java / org / apache / hadoop / yarn / client / RMProxy.java
문제를 증명하기 위해 우리는 해당 파일을 패치하여 스케줄러 주소를 직접 주입했습니다. 아래의 패치는 해킹입니다. 근본 원인은 'conf'객체를로드해야하는 것입니다. property "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); } }
편집 : 우리는 CLASSPATH에 yarn-site.xml을 추가하여이 문제를 해결했습니다. RMProxy.java를 수정할 필요가 없습니다.
-
==============================
3.자원 관리자에게 도달 할 수 없기 때문입니다. 다른 노드에서 자원 관리자에게 ping을 시도하고 작동하는지 확인하십시오. 클러스터 전체에서 이러한 구성을 일관되게 유지하십시오.
자원 관리자에게 도달 할 수 없기 때문입니다. 다른 노드에서 자원 관리자에게 ping을 시도하고 작동하는지 확인하십시오. 클러스터 전체에서 이러한 구성을 일관되게 유지하십시오.
from https://stackoverflow.com/questions/25771286/yarn-application-master-unable-to-connect-to-resource-manager by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] hadoop에서 로깅 기능 제어 (0) | 2019.06.20 |
---|---|
[HADOOP] 드라이버에서 MapReduce로 객체 전달하기 (0) | 2019.06.20 |
[HADOOP] HBase가 얼마나 많은 regions 서버를 분할합니까? (0) | 2019.06.20 |
[HADOOP] 쿼리 결과를 변수에 저장 (0) | 2019.06.20 |
[HADOOP] Spark 쉘에서 직접 ORC 파일 읽기 (0) | 2019.06.20 |