hadoop - 使用Spark检索受Kerberos保护的HDFS文件

标签 hadoop apache-spark kerberos yarn

我在设置我的Spark环境以从以kerberized HDFS文件位置读取时遇到问题。

目前,我尝试执行以下操作:

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")

它在创建Spark上下文时失败,并显示以下错误:
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)

有没有人得到一个简单的示例,说明如何允许 Spark 连接到以kerberized格式存储的HDFS?

我知道spark需要处于Yarn模式才能使其工作,但是登录方法在这方面似乎不起作用。尽管我知道用户组信息(ugi)对象是有效的,因为我已使用它在同一对象和HBase中将其连接到ZK。

最佳答案

确认配置了conf / spark-env.sh或:
export HADOOP_CONF_DIR=/etc/hadoop/conf
这必须指向集群的客户端配置。

关于hadoop - 使用Spark检索受Kerberos保护的HDFS文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36166527/

相关文章:

hadoop - 为什么 HDFS 不适合需要低延迟的应用程序?

c# - 我如何处理 .NET 中的协商?

java - 来自 Java 的 kerberos - 为当前经过身份验证的用户获取主题

hadoop - 无法保留HIVE表

hadoop - 粉碎 HDFS 中的小文件

python - SparkContext 错误 - 找不到文件/tmp/spark-events 不存在

apache-spark - 如何在 Amazon EMR 上查找 Spark 主 URL

Java - JNDI/Active Directory/Kerberos/WebLogic Server - 密码配置

hadoop - 要将数据存储在hcatalog表中,该表必须为空。那么增量加载呢?

python - 带图约简的算法图