搭建环境

多台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 in cat /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命令
hive

show 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开源社区须要您的参加,为中国开源崛起添砖加瓦吧,哪怕只是小小的一块瓦,汇聚起来的力量也是微小的。

本文由 白鲸开源科技 提供公布反对!