configuration - cdh4 hadoop-hbase PriviledgedActionException como: hdfs(auth: SIMPLE) causa: java.io.FileNotFoundException
mapreduce cloudera (2)
Incluso yo puse en fase el mismo problema en 2.0.0-cdh4.1.3 mientras ejecutaba trabajos de MR. Después de agregar la propiedad en mapred.site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
Para ejecutar el trabajo de Hive
export HIVE_USER=yarn
He instalado cloudera cdh4 release Y estoy intentando ejecutar el trabajo mapreduce en eso. Estoy recibiendo un error de seguimiento ->
2012-07-09 15:41:16 ZooKeeperSaslClient [INFO] Client will not SASL-authenticate because the default JAAS configuration section ''Client'' could not be found. If you are not using SASL, you may ignore this. On the other hand, if you expected SASL to work, please fix your JAAS configuration.
2012-07-09 15:41:16 ClientCnxn [INFO] Socket connection established to Cloudera/192.168.0.102:2181, initiating session
2012-07-09 15:41:16 RecoverableZooKeeper [WARN] Possibly transient ZooKeeper exception: org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/master
2012-07-09 15:41:16 RetryCounter [INFO] The 1 times to retry after sleeping 2000 ms
2012-07-09 15:41:16 ClientCnxn [INFO] Session establishment complete on server Cloudera/192.168.0.102:2181, sessionid = 0x1386b0b44da000b, negotiated timeout = 60000
2012-07-09 15:41:18 TableOutputFormat [INFO] Created table instance for exact_custodian
2012-07-09 15:41:18 NativeCodeLoader [WARN] Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2012-07-09 15:41:18 JobSubmitter [WARN] Use GenericOptionsParser for parsing the arguments. Applications should implement Tool for the same.
2012-07-09 15:41:18 JobSubmitter [INFO] Cleaning up the staging area file:/tmp/hadoop-hdfs/mapred/staging/hdfs48876562/.staging/job_local_0001
2012-07-09 15:41:18 UserGroupInformation [ERROR] PriviledgedActionException as:hdfs (auth:SIMPLE) cause:java.io.FileNotFoundException: File does not exist: /home/cloudera/yogesh/lib/hbase.jar
Exception in thread "main" java.io.FileNotFoundException: File does not exist: /home/cloudera/yogesh/lib/hbase.jar
at org.apache.hadoop.hdfs.DistributedFileSystem.getFileStatus(DistributedFileSystem.java:736)
at org.apache.hadoop.mapreduce.filecache.ClientDistributedCacheManager.getFileStatus(ClientDistributedCacheManager.java:208)
at org.apache.hadoop.mapreduce.filecache.ClientDistributedCacheManager.determineTimestamps(ClientDistributedCacheManager.java:71)
at org.apache.hadoop.mapreduce.JobSubmitter.copyAndConfigureFiles(JobSubmitter.java:246)
at org.apache.hadoop.mapreduce.JobSubmitter.copyAndConfigureFiles(JobSubmitter.java:284)
at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:355)
at org.apache.hadoop.mapreduce.Job$11.run(Job.java:1226)
at org.apache.hadoop.mapreduce.Job$11.run(Job.java:1223)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1232)
at org.apache.hadoop.mapreduce.Job.submit(Job.java:1223)
at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1244)
at
Puedo ejecutar programas de ejemplo en hadoop-mapreduce-examples-2.0.0-cdh4.0.0.jar. Pero recibo este error cuando mi trabajo se envía correctamente a jobtracker. Parece que está intentando acceder al sistema de archivos local de nuevo (aunque he configurado todas las bibliotecas necesarias para la ejecución del trabajo en caché distribuida, todavía está tratando de acceder al directorio local). ¿Esto está relacionado con los privilegios del usuario?
I) Cloudera:~ # hadoop fs -ls hdfs://<MyClusterIP>:8020/
shows -
Found 8 items
drwxr-xr-x - hbase hbase 0 2012-07-04 17:58 hdfs://<MyClusterIP>:8020/hbase<br/>
drwxr-xr-x - hdfs supergroup 0 2012-07-05 16:21 hdfs://<MyClusterIP>:8020/input<br/>
drwxr-xr-x - hdfs supergroup 0 2012-07-05 16:21 hdfs://<MyClusterIP>:8020/output<br/>
drwxr-xr-x - hdfs supergroup 0 2012-07-06 16:03 hdfs:/<MyClusterIP>:8020/tools-lib<br/>
drwxr-xr-x - hdfs supergroup 0 2012-06-26 14:02 hdfs://<MyClusterIP>:8020/test<br/>
drwxrwxrwt - hdfs supergroup 0 2012-06-12 16:13 hdfs://<MyClusterIP>:8020/tmp<br/>
drwxr-xr-x - hdfs supergroup 0 2012-07-06 15:58 hdfs://<MyClusterIP>:8020/user<br/>
II) --- Ningún resultado para seguir ----
hdfs@Cloudera:/etc/hadoop/conf> find . -name ''**'' | xargs grep "default.name"<br/>
hdfs@Cloudera:/etc/hbase/conf> find . -name ''**'' | xargs grep "default.name"<br/>
En cambio, creo que con el nuevo APIS estamos usando ->
fs.defaultFS -> hdfs: // Cloudera: 8020 que he configurado correctamente
Aunque para "fs.default.name" obtuve entradas para hadoop cluster 0.20.2 (cluster no cloudera)
cass-hadoop@Pratapgad:~/hadoop/conf> find . -name ''**'' | xargs grep "default.name"<br/>
./core-default.xml: <name>fs.default.name</name><br/>
./core-site.xml: <name>fs.default.name</name><br/>
Creo que la configuración predeterminada de cdh4 debería agregar esta entrada en el directorio respectivo. (Si es su error).
El comando que estoy usando para ejecutar mi programa
hdfs@Cloudera:/home/cloudera/yogesh/lib> java -classpath hbase-tools.jar:hbase.jar:slf4j-log4j12-1.6.1.jar:slf4j-api-1.6.1.jar:protobuf-java-2.4.0a.jar:hadoop-common-2.0.0-cdh4.0.0.jar:hadoop-hdfs-2.0.0-cdh4.0.0.jar:hadoop-mapreduce-client-common-2.0.0-cdh4.0.0.jar:hadoop-mapreduce-client-core-2.0.0-cdh4.0.0.jar:log4j-1.2.16.jar:commons-logging-1.0.4.jar:commons-lang-2.5.jar:commons-lang3-3.1.jar:commons-cli-1.2.jar:commons-configuration-1.6.jar:guava-11.0.2.jar:google-collect-1.0-rc2.jar:google-collect-1.0-rc1.jar:hadoop-auth-2.0.0-cdh4.0.0.jar:hadoop-auth.jar:jackson.jar:avro-1.5.4.jar:hadoop-yarn-common-2.0.0-cdh4.0.0.jar:hadoop-yarn-api-2.0.0-cdh4.0.0.jar:hadoop-yarn-server-common-2.0.0-cdh4.0.0.jar:commons-httpclient-3.0.1.jar:commons-io-1.4.jar:zookeeper-3.3.2.jar:jdom.jar:joda-time-1.5.2.jar com.hbase.xyz.MyClassName
Procedimiento de depuración : intente ejecutar comandos de shell Hadoop simples.
hadoop fs -ls /
Si esto muestra los archivos HDFS, entonces su configuración es correcta. Si no, entonces la configuración falta. Cuando esto sucede, el comando hadoop shell como -ls
se referirá al sistema de archivos local y no al sistema de archivos Hadoop. Esto sucede si Hadoop comienza a usar CMS (administrador de Cloudera). No almacena explícitamente la configuración en el directorio conf
.
Compruebe si el sistema de archivos hadoop se muestra siguiendo el comando (cambiar puerto):
hadoop fs -ls hdfs: // host: 8020 /
Si muestra el sistema de archivos local cuando envía la ruta como /
entonces, debe establecer los archivos de configuración hdfs-site.xml
y mapred-site.xml
en el directorio de configuración. También hdfs-site.xml
debería tener la entrada para fs.default.name
apuntando a hdfs://host:port/
. En mi caso, el directorio es /etc/hadoop/conf
.
Ver: http://hadoop.apache.org/common/docs/r0.20.2/core-default.html
Mira, si esto resuelve tu problema.