Hadoop'da oldukça yeniyim. Ancak, sunucularımdaki küme modunda, Java 7 ile Java 7'yi başarıyla ayarlayabildim. Her şey tamamen iyi çalışıyor. Hadoop işçiler üzerinde kullanıcı adımı kullanarak giriş mümkün olmayacaktır olur gibiHadoop IOException oturum açma yetkisiz
Exception in thread "main" java.io.IOException: failure to login
at org.apache.hadoop.security.UserGroupInformation.loginUserFromSubject(UserGroupInformation.java:824)
at org.apache.hadoop.security.UserGroupInformation.getLoginUser(UserGroupInformation.java:761)
at org.apache.hadoop.security.UserGroupInformation.getCurrentUser(UserGroupInformation.java:634)
at org.apache.hadoop.hdfs.tools.GetConf.run(GetConf.java:315)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84)
at org.apache.hadoop.hdfs.tools.GetConf.main(GetConf.java:332)
Caused by: javax.security.auth.login.LoginException: java.lang.NullPointerException: invalid null input: name
at com.sun.security.auth.UnixPrincipal.<init>(UnixPrincipal.java:71)
at com.sun.security.auth.module.UnixLoginModule.login(UnixLoginModule.java:133)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at javax.security.auth.login.LoginContext.invoke(LoginContext.java:755)
at javax.security.auth.login.LoginContext.access$000(LoginContext.java:195)
at javax.security.auth.login.LoginContext$4.run(LoginContext.java:682)
at javax.security.auth.login.LoginContext$4.run(LoginContext.java:680)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:680)
at javax.security.auth.login.LoginContext.login(LoginContext.java:587)
at org.apache.hadoop.security.UserGroupInformation.loginUserFromSubject(UserGroupInformation.java:799)
at org.apache.hadoop.security.UserGroupInformation.getLoginUser(UserGroupInformation.java:761)
at org.apache.hadoop.security.UserGroupInformation.getCurrentUser(UserGroupInformation.java:634)
at org.apache.hadoop.hdfs.tools.GetConf.run(GetConf.java:315)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84)
at org.apache.hadoop.hdfs.tools.GetConf.main(GetConf.java:332)
at javax.security.auth.login.LoginContext.invoke(LoginContext.java:856)
at javax.security.auth.login.LoginContext.access$000(LoginContext.java:195)
at javax.security.auth.login.LoginContext$4.run(LoginContext.java:682)
at javax.security.auth.login.LoginContext$4.run(LoginContext.java:680)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:680)
at javax.security.auth.login.LoginContext.login(LoginContext.java:587)
at org.apache.hadoop.security.UserGroupInformation.loginUserFromSubject(UserGroupInformation.java:799)
... 6 more
görünüyor: Ben Java 8 geçmek ve DFS başlatmaya çalıştığınızda
Ama sonra, bir hata var. Diğer kaynaklardan bakmaya çalışıyorum ve çevre değişkenini HADOOP_USER_NAME
ekleyerek, tüm datanode ve isimlerin tümünü silip silerek vb. Gibi rehberlerini takip ediyorum. Ancak, hiçbiri bu durumda benim için işe yaramıyor.
Bu sorunla ilgili garip olan şey, Java 7'ye geri dönmeyi denediğimde. Hadoop, benim için daha önce olduğu gibi iyi çalışıyor. Ancak, Hadoop'un her ikisi de belgelerine dayanarak uyumlu olduğundan, Java sürümleri arasındaki fark nedeniyle bir sorun olması gerektiğini düşünmüyorum. Ayrıca, güvenilir ssh zaten kümenin içinde ayarlanır. Anlaşılan sınıf com.sun.security kaynaklanır Java 8 ile bir liman işçisi kabından bir Hbase istemcisi çalıştırırken ben aynı sorunu yaşamıştır ettik
export JAVA_HOME="/scratch/dsat_server/jdk1.8.0_121"
export HADOOP_PREFIX="/scratch/dsat_server/hadoop-2.7.3"
export HADOOP_COMMON_LIB_NATIVE_DIR="$HADOOP_PREFIX/lib/native"
export HADOOP_CONF_DIR="$HADOOP_PREFIX/conf"
export HADOOP_OPTS="-Djava.net.preferIPv4Stack=truei-Djava.library.path=$HADOOP_PREFIX/lib"
Hangi işletim sistemini kullanıyorsunuz ve hangi sürüme sahipsiniz? Dürüst olmak gerekirse, yerel Java güvenlik lib'lerinde bazı problemler gibi Hadoop hatası gibi görünmüyor. – Serhiy
@Serhiy Hadoop 2.7.3 ile CentOS 6.8 kullanıyorum. Java güvenlik lib'leri hakkında da bir düşüncem vardı, fakat kütüphanenin Java 8 ile uyumlu olduğuna inanıyorum. Bu nedenle, problemi nasıl çözeceğime dair hiçbir fikrim yok – Tim
Sınıf yolunda '-DHADOOP_JAAS_DEBUG' değişkenini' true' olarak ayarlamayı deneyin (Hadoop başlatırken), kaynak kodundan, problemle ilgili bazı ek detaylar görebileceğiniz anlaşılıyor. Buna ek olarak, ne deneyebilirsiniz 'UserGroupInformation' başarısız olan bir yöntem yapar,' LoginContext 'oluşturmak ve' giriş 'oluşturmak için basit bir uygulama oluşturmak, kendi parçanızda sorun üzerinde daha fazla kontrol sahibi olabilirsiniz kodu. – Serhiy