搭建环境
多台 linux 主机搭建集群 +CDH 6.3.2 (Parcel) 版本 +Apache DolphinScheduler1.3.2 版本,本流程在 CDH 已搭建实现并可失常应用后,开启 kerberos 性能,Apache DolphinScheduler 用于大数据工作治理与执行,是很不错的任务调度平台,是否提前部署均可!
开启 kerberos 目标: 用于用户权限治理与平安认证,在开启 kerberos 之前的平安防护次要采取开启防火墙的形式,当初进行替换!
本流程开启 kerberos 后可失常运行的服务包含:
- CDH 集群失常启用
- linux 用户创立 kerberos 权限
- hive、hbase、hdfs 等服务在主机可失常执行
- DolphinScheduler 装置失常,工作失常执行,定时工作失常执行
- dolphinscheduler 的租户权限失常,可进行大数据服务运行和应用
部署 kerberos
抉择一台主机装置 Kerberos 服务,执行用户为 root
#server 端 lz1.cmp14722.app
sudo yum install krb5-server krb5-libs krb5-auth-dialog krb5-workstation -y
同步执行集群主机装置 client
#client lz1.cmp14722.app02 – lz5.cmp14722.app02
for item incat /etc/hosts | grep lz |awk '{print2}'
; do sshitem “hostname; yum install krb5-devel krb5-workstation -y” ; done
如果没有设置 ssh 免密登录其余主机,须要手动输出每个主机登录明码,倡议设置,前面也会用到,设置办法网上很多,暂略。(与一台台主机本人装置一样)
插播一句,如果 ssh 免密登录设置后还是不能登录,可查看所有登录主机用户目录下的.ssh 文件夹权限(700)以及文件夹内 authorized_keys(600)文件权限
配置文件
配置文件批改 2 个
- /etc/krb5.conf 文件中 default_realm 对应的值轻易起一个即可,realms 局部抉择服务主机,这里我抉择装置主机对应 hostname
sudo vi /etc/krb5.conf
\# Configuration snippets may be placed in this directory as well
includedir /etc/krb5.conf.d/
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
dns\_lookup\_realm = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
rdns = false
pkinit_anchors = FILE:/etc/pki/tls/certs/ca-bundle.crt
_default_realm =_BIGDATA.COM
dns\_lookup\_kdc = false
#default\_ccache\_name = KEYRING:persistent:%{uid}
[realms]
BIGDATA.COM_= {_
kdc = lz1.cmp14722.app
admin_server = lz1.cmp14722.app
}
[domain_realm]
_.cmp14722.app =_BIGDATA.COM
_cmp14722.app =_BIGDATA.COM
- /var/kerberos/krb5kdc/kdc.conf 文件我这里放弃不变
sudo vi /var/kerberos/krb5kdc/kdc.conf
[kdcdefaults]
kdc_ports = 88
kdc\_tcp\_ports = 88
[realms]
EXAMPLE.COM_= {_
#master\_key\_type = aes256-cts
acl_file = /var/kerberos/krb5kdc/kadm5.acl
dict_file = /usr/share/dict/words
admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab
supported_enctypes = aes256-cts:normal aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal camellia256-cts:normal camellia128-cts:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal
}
- 将 krb5.conf 散发到其余主机客户端
for item in
cat /etc/hosts | grep lz | grep -v 1 |awk '{print2}'
; do scp /etc/krb5.confitem:/etc/ ; done
启动 kerberos
- 创立 kerberos 数据库
sudo kdb5_util create -rBIGDATA.COM-s
# 输出明码
# 实现
- 启动 kerberos
service krb5kdc start
service kadmin start
# 查看服务状态
service krb5kdc status
service kadmin status
用户认证流程
- 创立 kerberos 认证用户
# 进入 kerberos 服务
kadmin.local
# 查看已有认证用户
listprincs
# 新增 root 用户认证
addprinc root/admin@BIGDATA.COM
# 输出明码
# 确认明码
# 实现
# 创立 root 用户的 keytab 文件认证
ktadd -k /opt/keytab/root.keytab -norandkey root/admin@BIGDATA.COM
# 创立集群认证用户 cloudera-scm,用于前面 cdh 开启 kerberos 应用
addprinc cloudera-scm/admin@BIGDATA.COM
# 查看认证用户
listprincs
# 退出
quit
- root 用户认证
#keytab 认证
kinit -kt /opt/keytab/root.keytab root/admin@BIGDATA.COM
# 查看以后失效 token
klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: root/__admin@BIGDATA.COM
Valid starting Expires Service principal
_01/30/2023 11:13:08 01/31/2023 11:13:08_krbtgt/BIGDATA.COM@BIGDATA.COM
散发 root 的 keytab 到其余主机,实现 root 用户主机间的网络认证
for item in
cat /etc/hosts | grep lz | grep -v 1 |awk '{print2}'
; do sshitem “mkdir /opt/keytab”; scp /opt/keytab/root.keytab $item:/opt/keytab/ ; done
CDH 启用 kerberos
进入 CM 界面,关上治理 -》平安
点击启用 kerberos
全副勾选是
填写配置信息,server 与下面 krb5.conf 中配置内容统一
下一步,这里能够不勾选
填写下面创立的账号与明码 cloudera-scm/admin@BIGDATA.COM
前面间接点持续,实现后,进行初始化,直至最终实现开启
重启集群,查看集群服务状态
主机上验证集群服务
通过 root 用户执行 hive、hbase、hdfs 命令
#hive 命令
hiveshow databases;
create database bigdata;
#hbase 命令
hbase shell
list
#hdfs 命令
hdfs dfs -ls /
如遇到某些命令没有权限或者无奈通过 TOKEN 认证等问题,能够在 kerberos 服务主机上,创立对应的服务用户,进行 keytab 认证(参见下面用户认证流程),通过对应的服务认证,实现操作命令。认证不须要切换用户,如在 root 用户下可执行命令 kinit -kt /opt/keytab/hbase.keytab hbase/admin@BIGDATA.COM,进行 hbase 的用户认证。
hbase 服务也可进行用户权限受权,须要通过 hbase 用户的 kerberos 认证,作为管理员进行操作
# 进入 hbase
hbase shell
# 查看现有用户权限user_permission
# 对 root 用户赋权,R 写、W 读、X 执行、C 创立、A 管理员
grant ‘root’, ‘RWXCA’
禁用 kerberos:如何禁用 CDH 集群 Kerberos- 腾讯云开发者社区 - 腾讯云
DolphinScheduler 启用 kerberos
配置文件
在进行 Apache DolphinScheduler 装置时,次要在 install_config.conf 的配置,参见官网的配置流程即可,如果曾经装置实现,能够批改 common.properties 的配置文件,这里次要说 kerberos 的配置局部,其余局部这里不赘述
在 Apache DolphinScheduler 所在 Master 主机上进行配置文件批改即可
vi /opt/dolphinscheduler/conf/common.properties
\# resource.storage.type=HDFS
resource.storage.type=HDFS
\# whether kerberos starts
hadoop.security.authentication.startup.state=__true
\# java.security.krb5.conf.path=/opt/dolphinscheduler/conf/krb5.conf
java.security.krb5.conf.path=/etc/krb5.conf
\# login user from keytab username
login.user.keytab.username=__hdfs/admin@BIGDATA.COM
\# loginUserFromKeytab path
login.user.keytab.path=__/opt/keytab/hdfs.keytab
这里次要波及 keytab 认证抉择的用户,用户须要对集群有操作权限,这里抉择 hdfs 用户,确保已创立 kdfs 用户对应 keytab;资源存储抉择的 HDFS 形式(这里其余配置参考官网)
重启 DolphinScheduler 零碎
sh stop-all.sh
sh start-all.sh
admin 登录 DolphinScheduler 验证
可失常创立租户等其余操作
用租户 bidata 执行大数据工作
因为须要用 linux 的 bidata 用户执行工作,因而须要创立 bidata 用户的 kerberos 认证,办法同上,因为 kerberos 认证有有效期,保障工作和定时工作不失败,须要通过 crontab 创立定时认证
#创立定时工作
crontab -e
58 23 * kinit -kt /opt/keytab/bidata.keytab bidata/admin@BIGDATA.COM
定时工作在所有 worker 主机上均须要设置,因为 dolphinscheduler 的工作执行默认是随机调配的
遇到的问题
集群重启后 hbase 服务异样
hbase 服务无奈实现 init 过程,我通过删除 zk 中的 hbase,实现了启动。
#进入 zk,/bin/zookeeper-client 或 zk 目录下执行 sh zkCli.sh
zookeeper-client
[zk: localhost:2181(CONNECTED) 3] ls /
[dolphinscheduler, hive\_zookeeper\_namespace_hive, zookeeper, hbase]
[zk: localhost:2181(CONNECTED) 3] deleteall /hbase或一一删除 /hbase 下的内容
重启后胜利
用户无法访问集群服务
Caused by: java.io.IOException: org.apache.hadoop.security.AccessControlException: Client cannot authenticate via:[TOKEN, KERBEROS]
下面的谬误是 kerberos 认证问题,以后用户没有进行 kerberos 认证或者自身对服务没有权限,须要具体服务具体受权,针对具体服务切换 kerberos 认证用户
用户实际案例
奇富科技 蜀海供应链 联通数科拈花云科
蔚来汽车 长城汽车集度长安汽车
思科网讯生鲜电商联通医疗联想
新网银行生产金融 腾讯音乐自若
有赞伊利当贝大数据
联想传智教育 Bigo
通信行业 作业帮
迁徙实际
Azkaban Ooize
Airflow(有赞案例)Air2phin(迁徙工具)
Airflow 迁徙实际
Apache DolphinScheduler 3.0.0 降级到 3.1.8 教程
新手入门
抉择 Apache DolphinScheduler 的 10 个理由
Apache DolphinScheduler 3.1.8 保姆级教程【装置、介绍、我的项目使用、邮箱预警设置】轻松拿捏!
Apache DolphinScheduler 如何实现自动化打包 + 单机 / 集群部署?
Apache DolphinScheduler-3.1.3 版本装置部署具体教程
Apache DolphinScheduler 在大数据环境中的利用与调优
参加 Apache DolphinScheduler 社区有十分多的参加奉献的形式,包含:
奉献第一个 PR(文档、代码) 咱们也心愿是简略的,第一个 PR 用于相熟提交的流程和社区合作以及感触社区的友好度。
社区汇总了以下适宜老手的问题列表 :https://github.com/apache/dolphinscheduler/issues/5689
非老手问题列表 :https://github.com/apache/dolphinscheduler/issues?
q=is%3Aopen+is%3Aissue+label%3A%22volunteer+wanted%22
如何参加奉献链接 :https://dolphinscheduler.apache.org/zh-cn/community/developme…
来吧,DolphinScheduler 开源社区须要您的参加,为中国开源崛起添砖加瓦吧,哪怕只是小小的一块瓦,汇聚起来的力量也是微小的。
本文由 白鲸开源科技 提供公布反对!