概述
测试不同用户写入 HDFS 的情况
1
2
3
4
5
6
7
8
9
10
11
12
|
[root@master /data/runzhliu/hadoop/bin]# ./hdfs dfs -ls hdfs://sh-spark.hdfs.cr.hdfs.db:9000/
Found 10 items
drwxr-xr-x - hadoop supergroup 0 2018-12-03 12:15 hdfs://sh-spark.hdfs.cr.hdfs.db:9000/runzhliu
drwxrwxrwx - hadoop supergroup 0 2018-08-13 11:34 hdfs://sh-spark.hdfs.cr.hdfs.db:9000/dslogs
drwxrwxrwx - hadoop supergroup 0 2017-10-16 21:42 hdfs://sh-spark.hdfs.cr.hdfs.db:9000/fightingdu
drwxrwxrwx - hadoop supergroup 0 2018-08-15 17:18 hdfs://sh-spark.hdfs.cr.hdfs.db:9000/junjiantang
drwxrwxrwx - hadoop supergroup 0 2017-09-04 20:00 hdfs://sh-spark.hdfs.cr.hdfs.db:9000/shared
drwxrwxrwx - hadoop supergroup 0 2017-10-25 11:33 hdfs://sh-spark.hdfs.cr.hdfs.db:9000/tdw-transfer-data
drwxrwxrwx - hadoop supergroup 0 2019-06-27 18:45 hdfs://sh-spark.hdfs.cr.hdfs.db:9000/tmp
drwxrwxrwx - hadoop supergroup 0 2018-08-22 17:55 hdfs://sh-spark.hdfs.cr.hdfs.db:9000/user
drwxrwxrwx - hadoop supergroup 0 2019-03-18 19:51 hdfs://sh-spark.hdfs.cr.hdfs.db:9000/water
drwxrwxrwx - hadoop supergroup 0 2019-01-22 18:07 hdfs://sh-spark.hdfs.cr.hdfs.db:9000/yongyu
|
目前都是路径都是 hadoop 用户。
1
|
[root@master /data/runzhliu/hadoop/bin]# HADOOP_USER_NAME=hadoop ./hdfs dfs -cp hdfs://sh-spark.hdfs.cr.hdfs.db:9000/runzhliu/demo/R.txt hdfs://sh-spark.hdfs.cr.hdfs.db:9000/runzhliu/demo/R.txt-copy
|
需要改用户是很容易的。
1
2
3
|
spark.kubernetes.kerberos.keytab=/var/spark-data/spark-files/hdfs.keytab
spark.kubernetes.kerberos.principal=hdfs@IEGBACKUP.COM
spark.kubernetes.kerberos.enabled=true
|
新的 Kerberized HDFS 的地址
hdfs://sh-test.kerberos.hdfs.db:9000/test/test3
test
以下 From chenbo
sh-cr-kerberos HDFS集群: sh-kerberos.hdfs.cr.ied.com:8020
DC 是 DC 数据中心的业务,主要是 edwlin 的业务需求,主要 HDFS 的 ACL 权限
测试业务: DC
DC业务路径: /sh-cr/DC-test/
业务路径权限: DC-sh-cr-kerberso:DC-sh-cr-kerberso : drwxr-xr-x
这里是指 KDC 的账号和密码以及 Keytab
用户: DC-sh-cr-kerberso
密码: xfdsAL*A8
keytab文件获取方式:
1
|
curl -o DC-sh-cr-kerberso.keytab -u hdfs-keytab:elastic http://sh.keytab.kerberos.db:8080/DC-sh-cr-kerberso.keytab
|
kinit 的方式。
需要 Principal。
1
2
|
[root@master /data/runzhliu/hadoop-kerberos]# kinit -kt ../DC-sh-cr-kerberso.keytab
kinit: Cannot determine realm for host (principal host/master@)
|
重构镜像
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
/opt/spark/bin/spark-submit \
--deploy-mode cluster \
--class org.apache.spark.examples.HdfsTest \
--master=k8s://https://kubernetes.default.svc \
--conf spark.executor.instances=1 \
--conf spark.app.name=spark-hdfs \
--conf spark.kubernetes.namespace=runzhliu \
--conf spark.driver.extraClassPath=/opt/spark/hconf/core-site.xml:/opt/spark/hconf/hdfs-site.xml:/opt/spark/hconf/yarn-site.xml:/etc/krb5.conf \
--conf spark.kubernetes.driver.docker.image=hub.oa.com/runzhliu/spark-driver-runzhliu:0.0.8 \
--conf spark.kubernetes.executor.docker.image=hub.oa.com/runzhliu/spark-executor-runzhliu:0.0.8 \
--conf spark.kubernetes.initcontainer.docker.image=hub.oa.com/runzhliu/spark-init-runzhliu:0.0.8 \
--conf spark.kubernetes.kerberos.enabled=true \
--conf spark.kubernetes.kerberos.keytab=/etc/keytab/hdfs.keytab \
--conf spark.kubernetes.kerberos.principal=hdfs/cdh1@IEGBACKUP.COM \
--conf=spark.driver.cores=2 \
--conf=spark.driver.memory=4096M \
--conf=spark.executor.cores=2 \
--conf=spark.executor.memory=4096M \
--conf=spark.eventLog.dir=hdfs://sh-spark.hdfs.cr.hdfs.db:9000/yongyu/history \
local:///opt/spark/examples/examples-1.0-SNAPSHOT.jar \
hdfs://sh-test.kerberos.hdfs.db:9000/
|
首先 driver 和 executor 必须都读到 krb.conf 之类的文件。现在是 submit,但是 Driver 的 Pod 是读不到的。
- host 配置
- krb5.conf 配置
- hconf 的配置文件
- kinit 的脚本
警告
本文最后更新于 2017年2月1日,文中内容可能已过时,请谨慎参考。