2016-03-22 11 views
0

私は、kerberized HDFSファイルの場所から読み込むためにspark環境を設定する際に問題があります。Kerberosによって保護されたHDFSファイルを取得するためにSparkを使用する

def ugiDoAs[T](ugi: Option[UserGroupInformation])(code: => T) = ugi match { 
case None => code 
case Some(u) => u.doAs(new PrivilegedExceptionAction[T] { 
    override def run(): T = code 
}) 
} 
val sparkConf = defaultSparkConf.setAppName("file-test").setMaster("yarn-client") 

val sc = ugiDoAs(ugi) {new SparkContext(conf)} 

val file = sc.textFile("path") 

それは次のエラーで、スパークコンテキストを作成する時点で失敗:

Exception in thread "main" org.apache.hadoop.security.AccessControlException: SIMPLE authentication is not enabled. Available:[TOKEN, KERBEROS] 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:422) 
at org.apache.hadoop.yarn.ipc.RPCUtil.instantiateException(RPCUtil.java:53) 
at org.apache.hadoop.yarn.ipc.RPCUtil.unwrapAndThrowException(RPCUtil.java:104) 
at org.apache.hadoop.yarn.api.impl.pb.client.ApplicationClientProtocolPBClientImpl.getClusterMetrics(ApplicationClientProtocolPBClientImpl.java:155) 
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:497) 
at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:187) 

は、誰もが簡単なを持っている私は、次の操作を実行しようとした瞬間に

どのようにkerberized HDFSの場所に接続するスパークを許可する方法の例?

スパークは、動作させるには糸モードにする必要がありますが、ログイン方法はこの点では機能していないようです。私は同じオブジェクトとHBaseでZKに接続するのに使ったので、User Group Information(ugi)オブジェクトが有効であることは知っていますが。

答えて

0

確認のconf/spark-env.shが構成されるか、またはされています

export HADOOP_CONF_DIR=/etc/hadoop/conf

これは、クラスタのクライアントのconfigsを指している必要があります。

0

このエラーは、クライアントが認証されていないHDFSと通信しようとしていて、拒否されていることを意味します。それを記録することによってUGIが本当に安全であることを確認し、スパークする前に基本的なhadoopファイルシステムコードを実行してください。それは追跡しやすくするはずです

関連する問題