hadoop - componentes - quick start cloudera
Namenode HA(UnknownHostException: nameservice1) (4)
Activamos la alta disponibilidad de Namenode a través de Cloudera Manager, usando
Cloudera Manager >> HDFS >> Acción> Habilitar alta disponibilidad >> Seleccionado Stand By Namenode & Journal Nodes Then nameservice1
Una vez que todo el proceso se completó, se implementó la configuración del cliente.
Probado desde la Máquina del Cliente al listar los directorios de HDFS (hadoop fs -ls /) y luego conmutar por error manualmente al namenode standby y de nuevo listar los directorios de HDFS (hadoop fs -ls /). Esta prueba funcionó perfectamente.
Pero cuando ejecuté el trabajo sleep de hadoop usando el siguiente comando, falló
$ 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
No sé por qué no puede resolver nameservice1 incluso después de implementar la configuración del cliente.
Cuando busqué en Google este problema, encontré solo una solución a este problema
Agregue la entrada siguiente en la entrada de configuración para solucionar el problema 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
Mi impresión es que Cloudera Manager se preocupa por eso. Revisé al cliente para ver si esta configuración y configuración estaban allí (/var/run/cloudera-scm-agent/process/1998-deploy-client-config/hadoop-conf/hdfs-site.xml).
También algunos detalles más de los archivos de configuración:
[11:22:37 [email protected]:~]# 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 [email protected]:~]#
Dudo su problema con la configuración anterior en /etc/hadoop/conf.cloudera.hdfs1 y /etc/hadoop/conf.cloudera.mapreduce1, pero no estoy seguro.
parece que / etc / hadoop / conf / * nunca se actualizó
# 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
¿Alguien tiene alguna idea sobre este problema?
Gracias
Entendido. configuración incorrecta estaba vinculada a "/ etc / hadoop / conf /" -> "/ etc / alternatives / hadoop-conf /" -> "/etc/hadoop/conf.cloudera.mapreduce1"
Tiene que ser "/ etc / hadoop / conf /" -> "/ etc / alternatives / hadoop-conf /" -> "/etc/hadoop/conf.cloudera.mapreduce"
Parece que está utilizando una configuración de cliente incorrecta en el directorio / etc / hadoop / conf. A veces, la opción de implementación de configuraciones de cliente de Cloudera Manager (CM) puede no funcionar.
Como ha habilitado NN HA, debe tener los archivos core-site.xml y hdfs-site.xml válidos en su directorio de configuración de cliente hadoop. Para obtener los archivos de sitio válidos, vaya al servicio HDFS desde CM Elija la opción Descargar configuración de cliente desde el botón Acciones . obtendrá los archivos de configuración en formato zip, extraiga los archivos zip y reemplace /etc/hadoop/conf/core-site.xml y /etc/hadoop/conf/hdfs-site.xml archivos con el core-site.xml extraído, Archivos hdfs-site.xml.
Resolví este problema al poner la línea completa para crear RDD
myfirstrdd = sc.textFile ("hdfs: //192.168.35.132: 8020 / BUPA.txt")
y luego pude hacer otra transformación de RDD ... Asegúrate de tener el w / r / x en el archivo o puedes hacer chmod 777
a continuación declaración en mi problema de código resuelto especificando el host y el puerto
val dfs = sqlContext.read.json("hdfs://localhost:9000//user/arvindd/input/employee.json")