在Kerberos认证的Hadoop 3.0集群部署Spark 2.3并启用安全配置
看起来你已经完成了Spark部署的基础配置,接下来我帮你补全Kerberos认证相关的关键配置,让Spark能完美适配你的安全Hadoop集群:
一、完善spark-env.sh的Kerberos环境配置
你已经设置了YARN_CONF_DIR指向Hadoop配置目录,现在需要添加Kerberos相关的环境变量:
- 指定Kerberos配置文件路径(根据你的实际部署路径调整):
export KRB5_CONFIG=/etc/krb5.conf - 配置Spark服务的Kerberos主体和密钥表:
这里export SPARK_KERBEROS_PRINCIPAL=spark/_HOST@YOUR_KERBEROS_REALM export SPARK_KERBEROS_KEYTAB=/opt/spark/conf/spark.keytab_HOST会自动替换为节点的主机名,YOUR_KERBEROS_REALM替换成你的Kerberos域名,密钥表路径要对应你为Spark生成的有效keytab文件。
二、补全spark-defaults.conf的安全核心配置
你已经配置了spark.master=yarn和spark.submit.deployMode=cluster,现在补充Kerberos认证的关键参数:
- 启用Spark自身的认证机制:
spark.authenticate=true spark.yarn.access.hadoopFileSystems=hdfs://your-namenode-host:8020 - 配置YARN模式下的Kerberos认证信息:
spark.yarn.principal=spark/_HOST@YOUR_KERBEROS_REALM spark.yarn.keytab=/opt/spark/conf/spark.keytab spark.yarn.security.credentials.hdfs.enabled=true - 确保Spark访问HDFS的安全适配:
spark.hadoop.hadoop.security.authentication=kerberos spark.hadoop.hadoop.security.authorization=true - 如果你的业务需要访问其他安全组件(比如HBase、Hive),还需要添加对应组件的Kerberos配置,例如HBase的配置:
spark.hadoop.hbase.security.authentication=kerberos spark.hadoop.hbase.master.kerberos.principal=hbase/_HOST@YOUR_KERBEROS_REALM
三、Kerberos权限与票据准备
- 确保Spark密钥表的权限正确,避免非授权访问:
这里的chmod 400 /opt/spark/conf/spark.keytab chown spark:spark /opt/spark/conf/spark.keytabspark:spark替换为你的Spark运行用户和用户组。 - 如果是使用用户身份提交任务,提交前需要先获取Kerberos票据:
kinit -kt /path/to/your-user.keytab your-user-principal@YOUR_KERBEROS_REALM
四、验证配置有效性
提交一个简单的Spark Pi任务来测试整个流程:
spark-submit --class org.apache.spark.examples.SparkPi \ --master yarn \ --deploy-mode cluster \ $SPARK_HOME/examples/jars/spark-examples_2.11-2.3.0.jar \ 10
提交后查看YARN的Application日志,如果没有出现Authentication failed或Kerberos相关的错误,任务正常输出计算结果,就说明配置成功了。
额外注意事项
- 确保集群所有节点的Spark配置(spark-env.sh、spark-defaults.conf)完全一致
- 确认Kerberos KDC服务运行正常,所有节点的
krb5.conf配置统一 - 确保你下载的Spark 2.3二进制包是针对Hadoop 3.x版本编译的,避免兼容性问题
内容的提问来源于stack exchange,提问作者god_kane
相关产品推荐
相关产品推荐

