[HADOOP] 네임 노드 HA (UnknownHostException : nameservice1)
HADOOP네임 노드 HA (UnknownHostException : nameservice1)
Cloudera Manager를 통해 네임 노드 고 가용성을
Cloudera Manager >> HDFS >> Action> 고 가용성 활성화 >> 네임 노드 및 저널 노드로 선택된 스탠드 그런 다음 이름 서비스 1
전체 프로세스가 완료되면 Deployed Client Configuration.
HDFS 디렉토리 (hadoop fs -ls /)를 나열한 다음 대기 namenode로 수동 장애 복구하고 HDFS 디렉토리 (hadoop fs -ls /)를 다시 나열하여 Client Machine에서 테스트되었습니다. 이 테스트는 완벽하게 작동했습니다.
하지만 다음 명령을 사용하여 hadoop sleep 작업을 실행했을 때 실패했습니다.
$ hadoop jar /opt/cloudera/parcels/CDH-4.6.0-1.cdh4.6.0.p0.26/lib/hadoop-0.20-mapreduce/hadoop-examples.jar sleep -m 1 -r 0
java.lang.IllegalArgumentException: java.net.UnknownHostException: nameservice1
at org.apache.hadoop.security.SecurityUtil.buildTokenService(SecurityUtil.java:414)
at org.apache.hadoop.hdfs.NameNodeProxies.createNonHAProxy(NameNodeProxies.java:164)
at org.apache.hadoop.hdfs.NameNodeProxies.createProxy(NameNodeProxies.java:129)
at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:448)
at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:410)
at org.apache.hadoop.hdfs.DistributedFileSystem.initialize(DistributedFileSystem.java:128)
at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2308)
at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:87)
at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2342)
at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2324)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:351)
at org.apache.hadoop.fs.Path.getFileSystem(Path.java:194)
at org.apache.hadoop.mapreduce.JobSubmissionFiles.getStagingDir(JobSubmissionFiles.java:103)
at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:980)
at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:974)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:416)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1438)
at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:974)
at org.apache.hadoop.mapred.JobClient.submitJob(JobClient.java:948)
at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:1410)
at org.apache.hadoop.examples.SleepJob.run(SleepJob.java:174)
at org.apache.hadoop.examples.SleepJob.run(SleepJob.java:237)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at org.apache.hadoop.examples.SleepJob.main(SleepJob.java:165)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:622)
at org.apache.hadoop.util.ProgramDriver$ProgramDescription.invoke(ProgramDriver.java:72)
at org.apache.hadoop.util.ProgramDriver.driver(ProgramDriver.java:144)
at org.apache.hadoop.examples.ExampleDriver.main(ExampleDriver.java:64)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:622)
at org.apache.hadoop.util.RunJar.main(RunJar.java:208)
Caused by: java.net.UnknownHostException: nameservice1
... 37 more
왜 클라이언트 구성을 배포 한 후에도 이름 서비스 1을 해결할 수없는 이유는 모르겠습니다.
Google에서이 문제를 해결할 때 한 가지 해결책을 찾았습니다.
구성 항목에 아래 항목을 추가하여 문제 해결 dfs.nameservices = nameservice1 dfs.ha.namenodes.nameservice1 = namenode1, namenode2 dfs.namenode.rpc-address.nameservice1.namenode1 = ip-10-118-137-215.ec2.internal : 8020 dfs.namenode.rpc-address.nameservice1.namenode2 = ip-10-12-122-210.ec2.internal : 8020 dfs.client.failover.proxy.provider.nameservice1 = org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
내 인상은 Cloudera Manager가 신경 쓰는 것이 었습니다. 이 구성 및 구성에 대한 클라이언트를 확인했습니다 (/var/run/cloudera-scm-agent/process/1998-deploy-client-config/hadoop-conf/hdfs-site.xml).
또한 설정 파일에 대한 더 자세한 내용은 다음과 같습니다.
[11:22:37 root@datasci01.dev:~]# ls -l /etc/hadoop/conf.cloudera.*
/etc/hadoop/conf.cloudera.hdfs:
total 16
-rw-r--r-- 1 root root 943 Jul 31 09:33 core-site.xml
-rw-r--r-- 1 root root 2546 Jul 31 09:33 hadoop-env.sh
-rw-r--r-- 1 root root 1577 Jul 31 09:33 hdfs-site.xml
-rw-r--r-- 1 root root 314 Jul 31 09:33 log4j.properties
/etc/hadoop/conf.cloudera.hdfs1:
total 20
-rwxr-xr-x 1 root root 233 Sep 5 2013 container-executor.cfg
-rw-r--r-- 1 root root 1890 May 21 15:48 core-site.xml
-rw-r--r-- 1 root root 2546 May 21 15:48 hadoop-env.sh
-rw-r--r-- 1 root root 1577 May 21 15:48 hdfs-site.xml
-rw-r--r-- 1 root root 314 May 21 15:48 log4j.properties
/etc/hadoop/conf.cloudera.mapreduce:
total 20
-rw-r--r-- 1 root root 1032 Jul 31 09:33 core-site.xml
-rw-r--r-- 1 root root 2775 Jul 31 09:33 hadoop-env.sh
-rw-r--r-- 1 root root 1450 Jul 31 09:33 hdfs-site.xml
-rw-r--r-- 1 root root 314 Jul 31 09:33 log4j.properties
-rw-r--r-- 1 root root 2446 Jul 31 09:33 mapred-site.xml
/etc/hadoop/conf.cloudera.mapreduce1:
total 24
-rwxr-xr-x 1 root root 233 Sep 5 2013 container-executor.cfg
-rw-r--r-- 1 root root 1979 May 16 12:20 core-site.xml
-rw-r--r-- 1 root root 2775 May 16 12:20 hadoop-env.sh
-rw-r--r-- 1 root root 1450 May 16 12:20 hdfs-site.xml
-rw-r--r-- 1 root root 314 May 16 12:20 log4j.properties
-rw-r--r-- 1 root root 2446 May 16 12:20 mapred-site.xml
[11:23:12 root@datasci01.dev:~]#
/etc/hadoop/conf.cloudera.hdfs1 및 /etc/hadoop/conf.cloudera.mapreduce1에있는 이전 구성에 대한 문제는 의심 스럽지만 확실하지 않습니다.
/ etc / hadoop / conf / * 업데이트 된 적이없는 것처럼 보입니다.
# ls -l /etc/hadoop/conf/
total 24
-rwxr-xr-x 1 root root 233 Sep 5 2013 container-executor.cfg
-rw-r--r-- 1 root root 1979 May 16 12:20 core-site.xml
-rw-r--r-- 1 root root 2775 May 16 12:20 hadoop-env.sh
-rw-r--r-- 1 root root 1450 May 16 12:20 hdfs-site.xml
-rw-r--r-- 1 root root 314 May 16 12:20 log4j.properties
-rw-r--r-- 1 root root 2446 May 16 12:20 mapred-site.xml
누구든지이 문제에 대해 어떤 생각을 가지고 있습니까?
해결법
-
==============================
1./ etc / hadoop / conf 디렉토리에서 잘못된 클라이언트 구성을 사용하고있는 것 같습니다. 경우에 따라 Cloudera Manager (CM) 클라이언트 구성 옵션을 배포하는 옵션이 작동하지 않을 수 있습니다.
/ etc / hadoop / conf 디렉토리에서 잘못된 클라이언트 구성을 사용하고있는 것 같습니다. 경우에 따라 Cloudera Manager (CM) 클라이언트 구성 옵션을 배포하는 옵션이 작동하지 않을 수 있습니다.
NN HA를 활성화 했으므로 hadoop 클라이언트 구성 디렉토리에 유효한 core-site.xml 및 hdfs-site.xml 파일이 있어야합니다. 유효한 사이트 파일을 얻으려면 CM에서 HDFS 서비스로 이동 작업 버튼에서 클라이언트 구성 다운로드 옵션을 선택하십시오. zip 형식의 구성 파일을 얻고 zip 파일의 압축을 푼 다음 /etc/hadoop/conf/core-site.xml 및 /etc/hadoop/conf/hdfs-site.xml 파일을 추출 된 core-site.xml로 바꿉니다. hdfs-site.xml 파일.
-
==============================
2.해결 됐어. 잘못된 설정은 "/ etc / hadoop / conf /"-> "/ etc / alternatives / hadoop-conf /"-> "/etc/hadoop/conf.cloudera.mapreduce1"
해결 됐어. 잘못된 설정은 "/ etc / hadoop / conf /"-> "/ etc / alternatives / hadoop-conf /"-> "/etc/hadoop/conf.cloudera.mapreduce1"
"/ etc / hadoop / conf /"-> "/ etc / alternatives / hadoop-conf /"-> "/etc/hadoop/conf.cloudera.mapreduce"
-
==============================
3.호스트와 포트를 지정하여 내 코드의 below 문을 해결했습니다.
호스트와 포트를 지정하여 내 코드의 below 문을 해결했습니다.
val dfs = sqlContext.read.json("hdfs://localhost:9000//user/arvindd/input/employee.json")
-
==============================
4.나는이 문제를 해결하여 RDD를 만들기위한 완전한 라인을 만들었다.
나는이 문제를 해결하여 RDD를 만들기위한 완전한 라인을 만들었다.
myfirstrdd = sc.textFile ( "hdfs : //192.168.35.132 : 8020 / BUPA.txt")
그런 다음 다른 RDD 변환을 할 수있었습니다 .. 파일에 w / r / x가 있는지 확인하거나 chmod 777을 수행 할 수 있습니다
from https://stackoverflow.com/questions/25062788/namenode-ha-unknownhostexception-nameservice1 by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] YARN에서 독점적 인 FIFO 응용 프로그램 대기열을 구성하는 방법은 무엇입니까? (0) | 2019.06.23 |
---|---|
[HADOOP] Hbase managed zookeeper가 갑자기 zookeeper quorum 대신 localhost에 연결하려고했습니다. (0) | 2019.06.22 |
[HADOOP] 클러스터에서 Mapper 입력으로 로컬 파일 시스템 디렉토리 실행 (0) | 2019.06.22 |
[HADOOP] 다음 필드는 무엇입니까? 'totalSize'및 'rawDataSize'는 하이브의 DESCRIBE EXTENDED 쿼리 출력에서의 의미입니까? (0) | 2019.06.22 |
[HADOOP] Presto에서 JSON 배열을 교차 제거하는 방법 (0) | 2019.06.22 |