[HADOOP] Windows에서 관리자 권한이없는 Hadoop MR 작업 실행
HADOOPWindows에서 관리자 권한이없는 Hadoop MR 작업 실행
Windows에서 Hadoop 2.3.0을 설치했으며 MR 작업을 성공적으로 실행할 수 있습니다. 그러나 일반 권한 (관리 권한이없는)으로 MR 작업을 실행하려고하면 예외가 발생하면 작업이 실패합니다. 여기 돼지 스크립트 샘플을 사용해 보았습니다.
2014-10-15 12:02:32,822 WARN [main] org.apache.hadoop.security.UserGroupInformation: PriviledgedActionException as:kaveen (auth:SIMPLE) cause:java.io.IOException: Split class org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigSplit not found
2014-10-15 12:02:32,823 WARN [main] org.apache.hadoop.mapred.YarnChild: Exception running child : java.io.IOException: Split class org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigSplit not found
at org.apache.hadoop.mapred.MapTask.getSplitDetails(MapTask.java:362)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:403)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:342)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:168)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1548)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:163)
Caused by: java.lang.ClassNotFoundException: Class org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigSplit not found
at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:1794)
at org.apache.hadoop.mapred.MapTask.getSplitDetails(MapTask.java:360)
... 7 more
2014-10-15 12:02:32,827 INFO [main] org.apache.hadoop.mapred.Task: Runnning cleanup for the task
2014-10-15 12:02:32,827 WARN [main] org.apache.hadoop.mapreduce.lib.output.FileOutputCommitter: Output Path is null in abortTask()
최신 정보:
나는 문제를 드릴 다운 할 수 있었고 "MapTask.getSplitDetails (MapTask.java:363)"메서드에서 다음 줄에 예외가 발생하는 것을 발견했다.
private <T> T getSplitDetails(Path file, long offset)
throws IOException {
FileSystem fs = file.getFileSystem(conf);
FSDataInputStream inFile = fs.open(file);
inFile.seek(offset);
String className = StringInterner.weakIntern(Text.readString(inFile));
Class<T> cls;
try {
cls = (Class<T>) conf.getClassByName(className);
} catch (ClassNotFoundException ce) {
IOException wrap = new IOException("Split class " + className +
" not found");
wrap.initCause(ce);
throw wrap;
}
하지만 관리자 권한으로 NodeManager를 시작하면 위의 예외가 발생하지 않습니다. 정상적인 권한으로 "NodeManager"를 시작하면 왜 MR 작업이 작동하지 않는지 알 수 없습니다.
누구든지 위의 문제에 대한 이유와 해결책을 알고 있다면. 가능한 한 빨리 안내해주십시오.
해결법
-
==============================
1.아래 속성을 사용하여 hadoop에 대한 tmp 디렉토리 위치를 변경할 수 있습니다
아래 속성을 사용하여 hadoop에 대한 tmp 디렉토리 위치를 변경할 수 있습니다
<property> <name>hadoop.tmp.dir</name> <value>/other/tmp</value> </property>
기본 tmp 위치는 c : \ tmp이며 액세스하려면 관리자 특권이 필요합니다. 위치를 하위 디렉토리로 변경하고 관리자 권한없이 MR 작업을 시도하십시오.
희망이 도움이됩니다.
from https://stackoverflow.com/questions/26291912/running-hadoop-mr-jobs-without-admin-privilege-on-windows by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 하이브를 통해 Hbase에 액세스 할 수 있도록 HBase, hadoop, 하이브를 설정하는 올바른 방법은 무엇입니까? (0) | 2019.07.30 |
---|---|
[HADOOP] 네임 노드 UI - 파일 시스템이 가상 분산 모드에서 작동하지 않음 (0) | 2019.07.30 |
[HADOOP] MapReduce, Python 및 NetworkX (0) | 2019.07.30 |
[HADOOP] 하둡 하이퍼 큐브 (0) | 2019.07.30 |
[HADOOP] 우분투 마스터와 윈도우 슬레이브를 이용한 Hadoop 클러스터 설정 (0) | 2019.07.30 |