[HADOOP] YARN 클러스터의 특정 노드에서 자체 응용 프로그램 마스터를 실행하십시오.
HADOOPYARN 클러스터의 특정 노드에서 자체 응용 프로그램 마스터를 실행하십시오.
우선, Hadoop-2.6.0을 사용하고 있습니다. 미리 지정된 IP 주소와 포트에서 서버를 열기 위해 YARN 클러스터의 특정 노드에서 자체 앱 마스터를 시작하고 싶습니다. 이를 위해 ResourceRequest 객체를 만들고 setResourceName 메서드를 호출하여 호스트 이름을 설정하고 setAMContainerResourceRequest 메서드를 호출하여 ApplicationSubmissionContext 객체에 연결하는 드라이버 프로그램을 작성했습니다.
여러 번 시도했지만 특정 노드에서 앱 마스터를 시작할 수 없습니다. 코드를 검색 한 후 RMAppAttemptImpl이 다음과 같이 ResourceRequest에서 설정 한 내용을 무효화 함을 발견했습니다.
// Currently, following fields are all hard code,
// TODO: change these fields when we want to support
// priority/resource-name/relax-locality specification for AM containers
// allocation.
appAttempt.amReq.setNumContainers(1);
appAttempt.amReq.setPriority(AM_CONTAINER_PRIORITY);
appAttempt.amReq.setResourceName(ResourceRequest.ANY);
appAttempt.amReq.setRelaxLocality(true);
Hadoop-2.6.0의 특정 노드에서 응용 프로그램 마스터의 컨테이너를 시작하는 다른 방법이 있습니까?
해결법
-
==============================
1.ApplicationSubmissionContext는 ResourceRequest 객체를 전달할 수있는 setAMContainerResourceRequest 함수를 제공합니다. ResourceRequest 객체에서 RelaxLocality 플래그를 "false"로 설정할 수 있습니다. RelaxLocality 플래그는 응용 프로그램이 로컬 성을 느슨하게하고 싶은지 (즉, 폴 스루를 랙 또는 기타로 허용) 엄격함 (즉, 리소스 할당에 대한 엄격한 제약 조건을 지정) 그런 다음 setResourceName을 사용하여 호스트 이름을 설정하십시오. 도움이 되길 바랍니다!
ApplicationSubmissionContext는 ResourceRequest 객체를 전달할 수있는 setAMContainerResourceRequest 함수를 제공합니다. ResourceRequest 객체에서 RelaxLocality 플래그를 "false"로 설정할 수 있습니다. RelaxLocality 플래그는 응용 프로그램이 로컬 성을 느슨하게하고 싶은지 (즉, 폴 스루를 랙 또는 기타로 허용) 엄격함 (즉, 리소스 할당에 대한 엄격한 제약 조건을 지정) 그런 다음 setResourceName을 사용하여 호스트 이름을 설정하십시오. 도움이 되길 바랍니다!
from https://stackoverflow.com/questions/29302659/run-my-own-application-master-on-a-specific-node-in-a-yarn-cluster by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 하둡 : 큰 직렬화 된 객체 처리 (0) | 2019.08.16 |
---|---|
[HADOOP] ffmpeg를 HDFS로 직접 출력 (0) | 2019.08.16 |
[HADOOP] Windows의 Nutch : 오류 크롤링 인젝터 (0) | 2019.08.16 |
[HADOOP] 하이브 날짜 / 타임 스탬프 열 (0) | 2019.08.16 |
[HADOOP] Hdfs에서 CSV 파일을 읽는 방법은 무엇입니까? (0) | 2019.08.16 |