如何用CDH+Apache DolphinScheduler开启Kerberos

搭建环境

多台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)文件权限

file

file

配置文件

配置文件修改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界面,打开管理-》安全

file

点击启用kerberos

file

全部勾选是

file

填写配置信息,server与上面krb5.conf中配置内容一致

file

下一步,这里可以不勾选

file

填写上面创建的账号与密码 cloudera-scm/admin@BIGDATA.COM

file

后面直接点继续,完成后,进行初始化,直至最终完成开启

file

重启集群,查看集群服务状态

file

主机上验证集群服务

通过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验证

可正常创建租户等其他操作

file

用租户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/development/contribute.html

来吧,DolphinScheduler开源社区需要您的参与,为中国开源崛起添砖加瓦吧,哪怕只是小小的一块瓦,汇聚起来的力量也是巨大的。

本文由 白鲸开源科技 提供发布支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/497212.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

部署bpmn项目实现activiti流程图的在线绘制

本教程基于centos7.6环境中完成 github开源项目: https://github.com/Yiuman/bpmn-vue-activiti软件:git、docker 1. 下载源代码 git clone https://github.com/Yiuman/bpmn-vue-activiti.git2. 修改Dockerfile文件 声明基础镜像,将项目打包&#xff…

循环结构:for循环,while循环,do-while,死循环

文章目录 for循环for案例:累加for循环在开发中的常见应用场景 whilewhile循环案例: for和while的区别:do-while三种循环的区别小结死循环 快捷键 ctrlaltt for循环 看循环执行多少次,就看有效数字有几个 快捷键 fori 示例代码&am…

Mybatis plus核心功能-条件构造器

目录 1 前言 2 使用方法 2.1 where条件部分 2.1.1 基于QueryWrapper 2.1.2 基于LambdaQueryWrapper(推荐,优雅) 2.2 set语句比较特殊的部分 2.2.1 基于UpdateWrapper 2.2.2 基于LambdaUpdateWrapper(推荐,优雅) 3 结尾语 1 前言 Mybatis plus…

Scala Intellij编译错误:idea报错xxxx“is already defined as”

今天写scala代码时,Idea报了这样的错误,如下图所示: 一般情况下原因分两种: 第一是我们定义的类或对象重复多次出现,编译器无法确定使用哪个定义。 这通常是由于以下几个原因导致的: 重复定义:在同一个文件…

docker (十二)-私有仓库

docker registry 我们可以使用docker push将自己的image推送到docker hub中进行共享,但是在实际工作中,很多公司的代码不能上传到公开的仓库中,因此我们可以创建自己的镜像仓库。 docker 官网提供了一个docker registry的私有仓库项目&#…

Linux高级编程:进程(一)

1、进程 1.1什么是进程&#xff1a;进行中的程序&#xff08;正在运行中的程序&#xff09;-process过程 程序的一次执行过程 - 进程 hello.c -- 程序源代码 a.out -- 可执行程序 1.2程序和进程的关系&#xff1a; 程序<------>进程 1.3进程怎么来的&#xff1a; 程…

【大数据架构(3)】Lambda vs. Kappa Architecture-选择你需要的架构

文章目录 一. Data Processing Architectures1. Lambda Architecture1.1. 架构说明a. Data Ingestion Layerb. Batch Layer (Batch processing)c. Speed Layer (Real-Time Data Processing)d. Serving Layer 1.2. Lambda Architecture的优缺点1.3. 使用案例 2. Kappa Architect…

【论文阅读-PRIVGUARD】Day4:3节

3 PRIVANALYZER&#xff1a;强制执行隐私政策的静态分析 本节介绍PRIVANALYZER&#xff0c;这是一个用于强制执行由PRIVGUARD追踪的隐私政策的静态分析器**。我们首先回顾LEGALEASE政策语言&#xff0c;我们使用它来正式编码政策&#xff0c;然后描述如何静态地强制执行它们**…

论文设计任务书学习文档|基于Web的个性化简历职位推荐系统的设计与实现

文章目录 论文(设计)题目:基于Web的个性化简历职位推荐系统的设计与实现1、论文(设计)的主要任务及目标2、论文(设计)的主要内容3、论文(设计)的基本要求4、进度安排论文(设计)题目:基于Web的个性化简历职位推荐系统的设计与实现 1、论文(设计)的主要任务及目标…

163邮箱SMTP端口号及服务器地址详细设置?

163邮箱SMTP端口号是什么&#xff1f;163邮件SMTP设置教程&#xff1f; 除了基本的邮箱账号和密码外&#xff0c;还需要了解SMTP服务器地址和端口号&#xff0c;以及相应的设置。这些设置对于确保邮件能够顺利发送至关重要。下面&#xff0c;蜂邮EDM将详细介绍163邮箱SMTP端口…

JavaScript 进阶03

编程思想 面向过程 面向过程就是分析出解决问题所需要的步骤&#xff0c;然后用函数把这些步骤一步一步实现&#xff0c;使用的时候再一个一个的依次调用 面向对象 面向对象是把事务分解成为一个个对象&#xff0c;然后由对象之间分工与合作。 在面向对象程序开发思想中&a…

[DEBUG] spring boot-如何处理链接中的空格等特殊字符

问题&#xff1a; get或者post中提交的内容可能有空格、#等特殊字符&#xff0c;不做处理的话可能解析错误。 解决&#xff1a; html中&#xff1a; <a th:href"{/listSgrna(id${item.getGeneId()},geneName${item.getGeneName()},genome${genome},sgrnaNum${sgrnaN…