[HADOOP] 원사 (MRv2) 또는지도 (MRv1)가 아닌 사용자가 제출 한 Hadoop 작업이 실패합니다.
HADOOP원사 (MRv2) 또는지도 (MRv1)가 아닌 사용자가 제출 한 Hadoop 작업이 실패합니다.
MRv1 (CDH5)을 실행하는 테스트 클러스터를 LocalFileSystem과 짝을 짓고 있으며 작업을 실행할 수있는 유일한 사용자는 맵핑되어 있습니다 (mapred는 jobtracker / tasktracker 데몬을 시작하는 사용자 임). 다른 사용자로 작업을 제출할 때 jobtracker / tasktracker가 .staging 디렉토리 아래에서 job.jar을 찾을 수 없기 때문에 작업이 실패합니다.
로컬 파일 시스템과 짝을 이룰 때 Yarn (MRv2)과 동일한 문제가 발생합니다. 즉, 'yarn'이외의 사용자가 작업을 제출할 때 응용 프로그램 마스터는 .staging 디렉토리 아래에서 job.jar을 찾을 수 없습니다.
작업을 제출하는 사용자의 .staging 디렉토리를 검사하면 job.jar이 .staging // 디렉토리 아래에 있지만, .staging 디렉토리의 사용 권한은 700 (drwx ------)으로 설정되고 따라서 응용 프로그램 master / tasktracker는 job.jar 및 지원 파일에 액세스 할 수 없습니다.
프로덕션 설정에서 OCFS와 쌍을 이루는 Hadoop 프로젝트의 MapReduce 부분 만 사용하기 때문에 LocalFileSystem으로 테스트 클러스터를 실행합니다.
이와 관련하여 도움이 될 것입니다.
해결법
-
==============================
1.클러스터의 각 사용자에 대한 스테이징 디렉토리를 설정해야합니다. 이것은 들리는만큼 복잡하지 않습니다.
클러스터의 각 사용자에 대한 스테이징 디렉토리를 설정해야합니다. 이것은 들리는만큼 복잡하지 않습니다.
다음 속성을 확인하십시오.
<property> <name>hadoop.tmp.dir</name> <value>/tmp/hadoop-${user.name}</value> <source>core-default.xml</source> </property>
이것은 기본적으로 각 사용자에 대한 tmp 디렉토리를 설정합니다.
이것을 스테이징 디렉토리에 연결하십시오.
<property> <name>mapreduce.jobtracker.staging.root.dir</name> <value>${hadoop.tmp.dir}/mapred/staging</value> <source>mapred-default.xml</source> </property>
이 방법이 작동하는지 또는 이미이 방법으로 설정되었는지 알려주십시오.
이러한 속성은 yarn-site.xml에 있어야합니다. 올바르게 기억한다면.
-
==============================
2.이것은 나를 위해 일했습니다. MR v1에서이 속성을 설정했습니다.
이것은 나를 위해 일했습니다. MR v1에서이 속성을 설정했습니다.
<property> <name>hadoop.security.authorization</name> <value>simple</value> </property>
이것을 통해 가십시오 :
액세스 제어 목록 $ {HADOOP_CONF_DIR} /hadoop-policy.xml은 각 Hadoop 서비스에 대한 액세스 제어 목록을 정의합니다. 모든 액세스 제어 목록에는 간단한 형식이 있습니다.
사용자 및 그룹 목록은 쉼표로 구분 된 이름 목록입니다. 두 목록은 공백으로 구분됩니다.
예 : user1, user2 group1, group2.
그룹 목록 만 제공하면 줄의 시작 부분에 공백을 추가합니다. 공백 뒤에 공백으로 구분 된 사용자 목록이나 공백이 없거나 지정된 사용자 집합 만 포함됩니다.
특별한 * 값은 모든 사용자가 서비스에 액세스 할 수 있음을 의미합니다.
서비스 레벨 권한 부여 구성 새로 고침 Hadoop 마스터 데몬 중 하나를 다시 시작하지 않고도 NameNode 및 JobTracker에 대한 서비스 수준 인증 구성을 변경할 수 있습니다. 클러스터 관리자는 마스터 노드에서 $ {HADOOP_CONF_DIR} /hadoop-policy.xml을 변경하고 각각의 구성을 -refreshServiceAcl 스위치를 통해 각각 dfsadmin 및 mradmin 명령으로 다시로드하도록 NameNode 및 JobTracker에 지시 할 수 있습니다.
NameNode에 대한 서비스 레벨 권한 구성을 새로 고치십시오.
$ bin / hadoop dfsadmin -refreshServiceAcl
JobTracker에 대한 서비스 수준 인증 구성을 새로 고칩니다.
$ bin / hadoop mradmin -refreshServiceAcl
물론 $ {HADOOP_CONF_DIR} /hadoop-policy.xml의 security.refresh.policy.protocol.acl 속성을 사용하여 서비스 수준 권한 구성을 특정 사용자 / 그룹으로 새로 고치는 기능에 대한 액세스를 제한 할 수 있습니다.
예제들 mapreduce 그룹의 alice, bob 및 users 사용자 만 MapReduce 클러스터에 작업을 제출할 수 있습니다.
<property> <name>security.job.submission.protocol.acl</name> <value>alice,bob mapreduce</value> </property>
그룹 데이터 노드에 속한 사용자로 실행중인 DataNode 만 NameNode와 통신하도록 허용합니다.
<property> <name>security.datanode.protocol.acl</name> <value>datanodes</value> </property> Allow any user to talk to the HDFS cluster as a DFSClient: <property> <name>security.client.protocol.acl</name> <value>*</value> </property>
from https://stackoverflow.com/questions/24390227/hadoop-jobs-fail-when-submitted-by-users-other-than-yarn-mrv2-or-mapred-mrv1 by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] Flume NG 및 HDFS (0) | 2019.06.23 |
---|---|
[HADOOP] Hadoop의 이상적인 리듀서 수는 무엇입니까? (0) | 2019.06.23 |
[HADOOP] start-dfs.sh를 사용하여 데몬을 시작할 수 없습니다. (0) | 2019.06.23 |
[HADOOP] 처음으로 Hadoop을 사용하면 MapReduce 작업이 단계 축소되지 않음 (0) | 2019.06.23 |
[HADOOP] Sqoop : mysql 드라이버 예외를로드 할 수 없습니다. (0) | 2019.06.23 |