目录

Spark-Kerberos项目测试

概述

测试不同用户写入 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 是读不到的。

  1. host 配置
  2. krb5.conf 配置
  3. hconf 的配置文件
  4. kinit 的脚本
警告
本文最后更新于 2017年2月1日,文中内容可能已过时,请谨慎参考。