CDH6.2.0+Kerberos+Sentry安装过程详细记录

一、准备工作

下载链接:https://pan.baidu.com/s/1NxdxXim0NyZdEjUVyPfyEQ
提 取 码:v20s

1、本文环境

名称CentOSJDKMySQLCMCDH
版本7.91.85.76.2.06.2.0

2、集群规划

IP主机名角色安装服务内存处理器
192.168.198.11dtb-tc-app11Mastercloudera-scm-server
cloudera-scm-agent
6G4
192.168.198.12dtb-tc-app12Slave1cloudera-scm-agent3G2
192.168.198.13dtb-tc-app13Slave2cloudera-scm-agent3G2

注意:内存和处理器建议分配大一点,由于笔者本地安装,电脑内存和处理器资源有限所以只能分配这么点

3、修改主机映射

3.1、Linux:修改三台服务器的/etc/hosts文件

[root@dtb-tc-app11 ~]# vim /etc/hosts

在这里插入图片描述

3.2、Windows:修改hosts文件,所在目录:C:\Windows\System32\drivers\etc

方便在Windows中直接使用 主机名 访问服务器节点

在这里插入图片描述

4、免密登录(方便后面做集群分发)

4.1、生成公钥和私钥

[root@dtb-tc-app11 ~]# ssh-keygen -t rsa

在这里插入图片描述

4.2、将公钥拷贝到需要进行免密登录的目标服务器上

[root@dtb-tc-app11 ~]# ssh-copy-id dtb-tc-app11
[root@dtb-tc-app11 ~]# ssh-copy-id dtb-tc-app12
[root@dtb-tc-app11 ~]# ssh-copy-id dtb-tc-app13

在这里插入图片描述

4.3、分别在dtb-tc-app12dtb-tc-app13两台服务器上重复==4.1==和==4.2==的操作,使所有服务器之间可以免密登录

4.4、验证免密登录

[root@dtb-tc-app11 ~]# ssh dtb-tc-app11
Last login: Wed Jun  9 23:28:04 2021 from 192.168.198.1
[root@dtb-tc-app11 ~]# exit
logout
Connection to dtb-tc-app11 closed.
[root@dtb-tc-app11 ~]# ssh dtb-tc-app12
Last login: Wed Jun  9 23:13:34 2021 from 192.168.198.1
[root@dtb-tc-app12 ~]# exit
logout
Connection to dtb-tc-app12 closed.
[root@dtb-tc-app11 ~]# ssh dtb-tc-app13
Last login: Wed Jun  9 23:13:44 2021 from 192.168.198.1
[root@dtb-tc-app13 ~]# exit
logout
Connection to dtb-tc-app13 closed.
[root@dtb-tc-app11 ~]#

在这里插入图片描述

5、编写集群同步脚本

5.1、在/root目录下创建bin目录,并在bin目录下创建 xsync 文件

[root@dtb-tc-app11 ~]# mkdir bin
[root@dtb-tc-app11 ~]# cd bin/
[root@dtb-tc-app11 bin]# vim xsync

5.2、在 xsync 文件中加入如下内容:

#!/bin/bash
 
#1. 判断参数个数 
if [ $# -lt 1 ]
then
    echo Not Enough Arguement!
    exit;
fi

#2. 遍历集群所有机器
for host in dtb-tc-app11 dtb-tc-app12 dtb-tc-app13
do
    echo ====================  $host  ====================
    #3. 遍历所有目录,逐个发送
    for file in $@
    do
        #4. 判断文件是否存在
        if [ -e $file ]
            then
                #5. 获取父目录
                pdir=$(cd -P $(dirname $file); pwd)
                #6. 获取当前文件的名称
                fname=$(basename $file)
                ssh $host "mkdir -p $pdir"
                rsync -av $pdir/$fname $host:$pdir
            else
                echo $file does not exists!
        fi
    done
done

5.3、赋予 xsync 可执行权限

[root@dtb-tc-app11 bin]# chmod +x xsync

5.4、将bin分发至所有节点上,使在任何节点都可以使用xsync脚本进行文件分发

[root@dtb-tc-app11 ~]# xsync /root/bin/

在这里插入图片描述

6、关闭防火墙

# 关闭防火墙
[root@dtb-tc-app11 ~]# systemctl stop firewalld
# 查看防火墙状态
[root@dtb-tc-app11 ~]# systemctl status firewalld
# 设置开机不启动防火墙
[root@dtb-tc-app11 ~]# systemctl disable firewalld

在这里插入图片描述

7、关闭SELinux

7.1、修改/etc/selinux/config配置文件,将==SELINUX=enforcing==修改为==SELINUX=disabled==

[root@dtb-tc-app11 ~]# vim /etc/selinux/config

在这里插入图片描述

7.2、同步/etc/selinux/config配置文件

[root@dtb-tc-app11 ~]# xsync /etc/selinux/config

在这里插入图片描述

7.3、分别重启dtb-tc-app11、dtb-tc-app12、dtb-tc-app13三台服务器

[root@dtb-tc-app11 ~]# reboot
[root@dtb-tc-app12 ~]# reboot
[root@dtb-tc-app13 ~]# reboot

8、配置 NTP 时钟同步

注意:所有服务器节点均联网的情况下可跳过此步骤

集群时间同步可以参考这篇文章《集群时间同步配置》

二、CM 安装部署

1、安装 JDK(dtb-tc-app11、dtb-tc-app12、dtb-tc-app13全部安装)

1.1、在/root目录下创建software目录,用于存放软件安装包

在这里插入图片描述

1.2、使用 ftp 工具将 jdk 的安装包上传至/root/software目录下

在这里插入图片描述

1.3、创建/usr/java目录,将jdk安装在此目录下

[root@dtb-tc-app11 ~]# mkdir /usr/java

1.4、将jdk-8u291-linux-x64.tar.gz解压至/usr/java目录下

[root@dtb-tc-app11 software]# tar -zxvf jdk-8u291-linux-x64.tar.gz -C /usr/java/

1.5、查看是否解压成功

[root@dtb-tc-app11 software]# ll /usr/java/

在这里插入图片描述

1.6、配置JAVA_HOME环境变量

1.6.1、在/etc/profile.d/目录下创建 java_env.sh文件,并添加如下内容
[root@dtb-tc-app11 software]# vim /etc/profile.d/java_env.sh
1.6.2、注意JAVA_HOME后面为jdk的安装路径,为了避免手写错误,建议进入jdk安装目录使用pwd命令查看并复制

在这里插入图片描述

# JAVA_HOME
export JAVA_HOME=/usr/java/jdk1.8.0_291
export PATH=$PATH:$JAVA_HOME/bin

在这里插入图片描述

1.6.3、刷新profile文件使其环境变量生效
[root@dtb-tc-app11 ~]# source /etc/profile
1.6.4、测试 JDK 是否安装成功
[root@dtb-tc-app11 ~]# java -version

在这里插入图片描述

1.6.5、将dtb-tc-app11中的 JDK 和 环境变量 分发至dtb-tc-app12和dtb-tc-app13
[root@dtb-tc-app11 ~]# xsync /usr/java/
[root@dtb-tc-app11 ~]# xsync /etc/profile.d/java_env.sh
1.6.6、分别在dtb-tc-app12和dtb-tc-app13上刷新环境变量,并检测 JDK 是否安装成功
[root@dtb-tc-app12 ~]# source /etc/profile
[root@dtb-tc-app12 ~]# java -version

在这里插入图片描述

2、所有节点安装第三方依赖(dtb-tc-app11、dtb-tc-app12、dtb-tc-app13

yum install -y bind-utils libxslt cyrus-sasl-plain cyrus-sasl-gssapi portmap fuse- libs /lib/lsb/init-functions httpd mod_ssl openssl-devel python-psycopg2 MySQL-python fuse-libs fuse

3、安装 MySQL(本文选择安装在dtb-tc-app13节点上)

3.1、卸载mariadb(CentOS 7自带)

[root@dtb-tc-app13 ~]# rpm -qa | grep mariadb | xargs rpm -e --nodeps

3.2、MySQL安装

MySQL5.7安装可以参考这篇文章[《CentOS7 yum方式安装MySQL5.7》](

3.3、在/root目录下创建software目录,用于存放软件安装包

[root@dtb-tc-app13 ~]# mkdir software

3.4、上传MySQL驱动至/root/software目录中

在这里插入图片描述

3.5、添加 MySQL 驱动

  • /usr/share/目录下创建java目录
[root@dtb-tc-app13 software]# mkdir /usr/share/java
  • mysql-connector-java-5.1.34.jar拷贝至/usr/share/java目录下,并重命名为mysql-connector-java.jar
[root@dtb-tc-app13 software]# cp mysql-connector-java-5.1.34.jar /usr/share/java/mysql-connector-java.jar
  • mysql-connector-java.jar驱动包分发至其他节点上
[root@dtb-tc-app13 ~]# xsync /usr/share/java/mysql-connector-java.jar

在这里插入图片描述

4、初始化管理节点数据库

4.1、将MySQL驱动包mysql-connector-java-5.1.34.jar拷贝至/opt/cloudera/cm/lib/目录

[root@dtb-tc-app13 ~]# cp /root/software/mysql-connector-java-5.1.34.jar /opt/cloudera/cm/lib/

4.2、将MySQL驱动包分发至其他节点

[root@dtb-tc-app13 ~]# xsync /opt/cloudera/cm/lib/mysql-connector-java-5.1.34.jar

4.3、登录MySQL

[root@dtb-tc-app13 ~]# mysql -uroot -p123456

4.4、创建scm用户及数据库

CREATE USER 'scm'@'%' IDENTIFIED BY 'scm@2021';
GRANT ALL ON *.* TO 'scm'@'%';
CREATE DATABASE scm;
flush privileges;

在这里插入图片描述

4.5、创建hive用户及数据库

CREATE USER 'hive'@'%' IDENTIFIED BY 'hive@2021';
GRANT ALL ON *.* TO 'hive'@'%';
CREATE DATABASE hive;
flush privileges;

在这里插入图片描述

4.6、创建reports数据库

CREATE DATABASE reports;

在这里插入图片描述

5、CM安装

5.1、在dtb-tc-app11上的/root/software目录下创建cm目录,用于存放cloudera相关的rpm包

[root@dtb-tc-app11 ~]# mkdir /root/software/cm

5.2、将cloudera相关的rpm包上传至/root/software/cm目录中

在这里插入图片描述

5.2、将agentdaemons分发至dtb-tc-app12和dtb-tc-app13

[root@dtb-tc-app11 cm]# xsync cloudera-manager-agent-6.2.0-968826.el7.x86_64.rpm
[root@dtb-tc-app11 cm]# xsync cloudera-manager-daemons-6.2.0-968826.el7.x86_64.rpm

5.3、在主节点dtb-tc-app11上安装daemons、server和agent

[root@dtb-tc-app11 cm]# rpm -ivh cloudera-manager-daemons-6.2.0-968826.el7.x86_64.rpm
[root@dtb-tc-app11 cm]# rpm -ivh cloudera-manager-server-6.2.0-968826.el7.x86_64.rpm
[root@dtb-tc-app11 cm]# rpm -ivh cloudera-manager-agent-6.2.0-968826.el7.x86_64.rpm

5.4、分别在从节点dtb-tc-app12和dtb-tc-app13上安装daemons和agent

[root@dtb-tc-app12 cm]# rpm -ivh cloudera-manager-daemons-6.2.0-968826.el7.x86_64.rpm
[root@dtb-tc-app12 cm]# rpm -ivh cloudera-manager-agent-6.2.0-968826.el7.x86_64.rpm

5.5、修改从节点dtb-tc-app12和dtb-tc-app13agent配置,使其指向server(dtb-tc-app11)

[root@dtb-tc-app12 ~]# vim /etc/cloudera-scm-agent/config.ini

在这里插入图片描述

5.6、初始化scm数据库(在安装server的节点<dtb-tc-app11>上操作)

[root@dtb-tc-app11 ~]# /opt/cloudera/cm/schema/scm_prepare_database.sh mysql -h 192.168.198.13  scm scm 'scm@2021';

在这里插入图片描述

6、上传 CDH 相关文件(主节点dtb-tc-app11

6.1、在/root/software目录下创建cdh目录,用于存放CDH相关文件
[root@dtb-tc-app11 ~]# mkdir /root/software/cdh
6.2、上传CDH相关文件至/root/software/cdh目录下

在这里插入图片描述

6.3、将CDH的这些文件移动到/opt/cloudera/parcel-repo/
[root@dtb-tc-app11 ~]# mv /root/software/cdh/* /opt/cloudera/parcel-repo/

7、启动 CM

7.1、在dtb-tc-app11节点上启动server和agent服务,并设置开机自启

# 启动server
[root@dtb-tc-app11 ~]# systemctl start cloudera-scm-server
# 查看server状态
[root@dtb-tc-app11 ~]# systemctl status cloudera-scm-server
# 设置开机自启
[root@dtb-tc-app11 ~]# systemctl enable cloudera-scm-server

在这里插入图片描述

# 启动agent
[root@dtb-tc-app11 ~]# systemctl start cloudera-scm-agent
# 查看agent状态
[root@dtb-tc-app11 ~]# systemctl status cloudera-scm-agent
# 设置开机自启
[root@dtb-tc-app11 ~]# systemctl enable cloudera-scm-agent

在这里插入图片描述

7.2、分别在dtb-tc-app12和dtb-tc-app13节点上启动agent服务,并设置开机自启

[root@dtb-tc-app12 ~]# systemctl start cloudera-scm-agent
[root@dtb-tc-app12 ~]# systemctl status cloudera-scm-agent
[root@dtb-tc-app12 ~]# systemctl enable cloudera-scm-agent

在这里插入图片描述

[root@dtb-tc-app13 ~]# systemctl start cloudera-scm-agent
[root@dtb-tc-app13 ~]# systemctl status cloudera-scm-agent
[root@dtb-tc-app13 ~]# systemctl enable cloudera-scm-agent

在这里插入图片描述

7.3、在浏览器输入server节点的主机名/ip:7180,即可访问到CM的WEB操作界面

在这里插入图片描述

三、CDH 安装

1、登录CM,默认用户名和密码都为admin

在这里插入图片描述

2、点击继续,勾选接收许可条款和条件后点击继续,选择试用版后点击继续

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、集群安装

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意:若安装的时候,创建hive metastore数据库表失败,报加载不到驱动,则需要将MySQL驱动包拷贝至/opt/cloudera/parcels/CDH/lib/hive/lib/目录中。

安装完成
在这里插入图片描述

4、配置 Hive 支持 Zookeper 连接

4.1、点击 Hive ,进入Hive后点击配置,在配置里搜索hive-site.xml 的 HiveServer2 高级配置代码段(安全阀)

在这里插入图片描述
在这里插入图片描述

4.2、在配置中添加如下内容,添加完成后点击保存修改

hive.server2.support.dynamic.service.discovery
true

hive.server2.zookeeper.namespace
hiveserver2

hive.zookeeper.quorum
dtb-tc-app7:2181,dtb-tc-app8:2181,dtb-tc-app9:2181

hive.zookeeper.client.port
2181

在这里插入图片描述

4.3、若报如下错误,则需要修改一下 CM 元数据库字符集编码

报错信息:==cloudera manager修改配置数值时报错Incorrect string value:'\xE5\x87\xBA\xE7\B0...'for column 'MESSAGE' at row1==
在这里插入图片描述

报错原因:CM元数据库 字符集不兼容 字段 VALUE MESSAGE 无法写入对应的值。

解决办法:修改元数据库

4.4、修改CM元数据库字符集编码

4.4.1、登录数据库
[root@dtb-tc-app13 ~]# mysql -uroot -p123456
4.4.2、选择scm数据库
use scm;

在这里插入图片描述

4.4.3、更改字符集编码
alter table CONFIGS modify `VALUE` longtext character set utf8 collate utf8_general_ci;

alter table CONFIGS_AUD modify `VALUE` longtext character set utf8 collate utf8_general_ci;

alter table GLOBAL_SETTINGS modify `VALUE` longtext character set utf8 collate utf8_general_ci;

alter table USER_SETTINGS modify `VALUE` longtext character set utf8 collate utf8_general_ci;

alter table AUDITS modify `MESSAGE` longtext character set utf8 collate utf8_general_ci;

alter table REVISIONS modify `MESSAGE` longtext character set utf8 collate utf8_general_ci;

在这里插入图片描述

4.5、修改字符集编码后,再次到WEB管理端保存更改,即可看到配置更改已成功保存的提示

在这里插入图片描述

4.6、修改完配置后重启一下Hive

在这里插入图片描述
在这里插入图片描述

5、解决hive中文乱码问题

注意:Hive安装完成之后,Hive会出现中文乱码问题

登录MySQL选择 hive 数据库后修改字符集编码即可,SQL语句如下:

use hive;

alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;

alter table TABLE_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;

alter table PARTITION_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;

alter table PARTITION_KEYS modify column PKEY_COMMENT varchar(4000) character set utf8;

alter table INDEX_PARAMS modify column PARAM_VALUE  varchar(4000) character set utf8;

alter table DBS modify column `DESC` varchar(4000) character set utf8;

在这里插入图片描述

6、CDH的目录结构

[root@dtb-tc-app11 ~]# cd /opt/cloudera/parcels/CDH

在这里插入图片描述

  • bin目录存放的是 CDH 上所安装的组件的脚本文件
    在这里插入图片描述

  • lib目录存放的是 CDH 上所安装的组件所依赖的 Jar 包(分好类的)
    在这里插入图片描述

四、测试MapReduce程序

1、在/目录下创建data目录,用来存放测试文件

[root@dtb-tc-app11 ~]# mkdir /data

2、在/data/目录下创建一个word.txt文件,并加入如下内容

[root@dtb-tc-app11 ~]# vim /data/word.txt
hello hadoop yarn hdfs hbase hive
hello hadoop yarn hdfs hbase
hello hadoop yarn hdfs
hello hadoop yarn
hello hadoop
hello

3、在 HDFS 上创建/wordcount/input目录,并上面的word.txt文件上传至其中

注意:

  • 使用CDH安装组件时,会创建对应的用户(例如:安装HDFS会创建hdfs用户、安装Hive会创建hive用户)
  • 在启动这些组件时,都是使用对应的用户去启动的
  • 所以要对这些组件进行操作时,要指定组件对应的用户(例如:sudo -u hdfs hadoop fs -ls /)
# 创建/wordcount/input目录
[root@dtb-tc-app11 ~]# sudo -u hdfs hadoop fs -mkdir -p /wordcount/input
# 查看是否创建成功
[root@dtb-tc-app11 ~]# sudo -u hdfs hadoop fs -ls -r /wordcount

在这里插入图片描述

# 上传文件至HDFS的/wordcount/input目录中
[root@dtb-tc-app11 ~]# sudo -u hdfs hadoop fs -put /data/word.txt /wordcount/input
# 查看是否上传成功
[root@dtb-tc-app11 ~]# sudo -u hdfs hadoop fs -ls /wordcount/input

在这里插入图片描述

4、执行wordcount程序

[root@dtb-tc-app11 ~]# sudo -u hdfs hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar wordcount /wordcount/input/ /wordcount/output

在这里插入图片描述

5、查看wordcount程序的执行结果

# 查看生成的文件
[root@dtb-tc-app11 ~]# sudo -u hdfs hadoop fs -ls /wordcount/output

在这里插入图片描述

# 查看统计的结果
[root@dtb-tc-app11 ~]# sudo -u hdfs hadoop fs -cat /wordcount/output/part-r-00000
[root@dtb-tc-app11 ~]# sudo -u hdfs hadoop fs -cat /wordcount/output/part-r-00001
[root@dtb-tc-app11 ~]# sudo -u hdfs hadoop fs -cat /wordcount/output/part-r-00002	
[root@dtb-tc-app11 ~]# sudo -u hdfs hadoop fs -cat /wordcount/output/part-r-00003

在这里插入图片描述

五、启用Sentry

1、在MySQL中创建Sentry用户及数据库

CREATE USER 'sentry'@'%' IDENTIFIED BY 'sentry@2021';
GRANT ALL ON *.* TO 'sentry'@'%';
CREATE DATABASE sentry;
flush privileges;

在这里插入图片描述

2、在CM上添加Sentry服务

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意:若报找不到MySQL驱动的错误,则需将MySQL的驱动包拷贝到/opt/cloudera/parcels/CDH/lib/sentry/lib/目录下

3、Sentry与Hive的集成配置

3.1、修改sentry-site.xml配置文件,添加如下内容

sentry.hive.testing.mode
true

在这里插入图片描述

3.2、启用Sentry服务

在这里插入图片描述

3.3、关闭Hive的用户模拟功能

搜索Hive Impersonation,然后取消勾选
在这里插入图片描述

3.4、重启重新部署客户端配置

在这里插入图片描述

六、Kerberos安装

1、server节点(dtb-tc-app11)安装Kerberos相关软件

# 安装
[root@dtb-tc-app11 ~]# yum install -y krb5-server krb5-workstation krb5-libs
# 查看安装结果
[root@dtb-tc-app11 ~]# rpm -qa | grep krb5

在这里插入图片描述

2、client节点(dtb-tc-app12和dtb-tc-app13)安装Kerberos

# 安装
[root@dtb-tc-app12 ~]# yum install -y krb5-workstation krb5-libs
# 查看安装结果
[root@dtb-tc-app12 ~]# rpm -qa | grep krb5

在这里插入图片描述

3、修改配置文件(dtb-tc-app11

3.1、kdc 文件配置

[root@dtb-tc-app11 ~]# vim /var/kerberos/krb5kdc/kdc.conf

修改前:
在这里插入图片描述
修改后:
在这里插入图片描述

3.2、kadm5 配置文件(给admin实例的所有主体授权)

[root@dtb-tc-app11 ~]# vim /var/kerberos/krb5kdc/kadm5.acl

在这里插入图片描述
说明:

  • 前面的*:全部主体
  • admin:admin实例
  • DTB.COM:领域
  • 后面的*:全部权限

3.3、krb5 文件配置

[root@dtb-tc-app11 ~]# vim /etc/krb5.conf

在这里插入图片描述

# 分发/etc/krb5.conf配置文件
[root@dtb-tc-app11 ~]# xsync /etc/krb5.conf

在这里插入图片描述

4、创建 Kerberos 数据库

# 输入密码、确认密码
[root@dtb-tc-app11 ~]# kdb5_util create -r DTB.COM -s

在这里插入图片描述

5、创建管理员账号

[root@dtb-tc-app11 ~]# kadmin.local
kadmin.local:  addprinc admin/admin@DTB.COM
kadmin.local:  exit

在这里插入图片描述

6、启动krb5kdckadmin服务,并设置开机自启

[root@dtb-tc-app11 ~]# systemctl start krb5kdc
[root@dtb-tc-app11 ~]# systemctl start kadmin
[root@dtb-tc-app11 ~]# systemctl enable krb5kdc
[root@dtb-tc-app11 ~]# systemctl enable kadmin

在这里插入图片描述

7、CDH集群启用Kerberos

7.1、添加管理员账号

[root@dtb-tc-app11 ~]# kadmin.local

kadmin.local:  addprinc cloudera-scm/admin@DTB.COM
kadmin.local:  exit

在这里插入图片描述

7.2、CM节点启用Kerberos

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
等待启用Kerberos
在这里插入图片描述

7.3、查看主体

[root@dtb-tc-app11 ~]# kadmin.local -q "list_principals"

在这里插入图片描述

8、修改Sentry的配置

8.1、在允许的连接用户中添加admin

在这里插入图片描述

8.2、在管理员组中添加admin

在这里插入图片描述

8.3、修改sentry-site.xml的配置文件

搜索sentry-site.xml 的 Sentry 服务高级配置,点击以XML格式查看添加如下内容

<property><name>sentry.service.processor.factories</name><value>org.apache.sentry.provider.db.service.thrift.SentryPolicyStoreProcessorFactory,org.apache.sentry.hdfs.SentryHDFSServiceProcessorFactory</value></property><property><name>sentry.policy.store.plugins</name><value>org.apache.sentry.hdfs.SentryPlugin</value></property><property><name>sentry.hdfs.integeration.path.prefixes</name><value>/user/hive/warehouse</value></property>

在这里插入图片描述

9、修改HDFS的配置

9.1、开启安全身份验证

在这里插入图片描述

9.2、开启安全授权

在这里插入图片描述

9.3、修改Hadoop用户组映射实现

在这里插入图片描述

9.4、启用访问控制列表

在这里插入图片描述

9.5、启用Sentry同步

在这里插入图片描述

10、修改Yarn配置

10.1、检查允许的系统用户是否有hive用户

在这里插入图片描述

10.2、修改最小用户ID

在这里插入图片描述

10.2、检查是否已启用RM ACL

在这里插入图片描述

11、修改Hive配置

11.1、检查是否已启用Sentry服务

在这里插入图片描述

11.2、检查HiveServer2模拟是否已经关闭

在这里插入图片描述

11.3、检查Hive 仓库子目录继承权限启用

在这里插入图片描述

11.4、设置sentry.hive.testing.mode为false

在这里插入图片描述

12、修改Kafka的配置

12.1、设置Kafka安全身份验证

搜索kerberos.auth.enable,然后勾选
在这里插入图片描述

12.2、设置Kafka认证方式

搜索security.inter.broker.protocol,然后选择SASL_PLAINTEXT
在这里插入图片描述

12.3、配置kafka.properties

搜索kafka.properties 的 Kafka Broker 高级配置代码段(安全阀),然后添加如下内容

authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
super.users=User:kafka;User:admin;

在这里插入图片描述

12.4、配置 Kafka 支持命令行的kinit操作

12.4.1、创建jaas文件,并添加如下内容
[root@dtb-tc-app11 ~]# vim /etc/kafka/kafka_client_jaas.conf
KafkaClient {
  com.sun.security.auth.module.Krb5LoginModule required
  useTicketCache=true;
};

Client {
  com.sun.security.auth.module.Krb5LoginModule required
  useTicketCache=true;
};
# 分发/etc/kafka/kafka_client_jaas.conf文件
[root@dtb-tc-app11 ~]# xsync /etc/kafka/kafka_client_jaas.conf
12.4.2、修改kafka-run-class.sh文件
[root@dtb-tc-app11 ~]# vim /opt/cloudera/parcels/CDH/lib/kafka/bin/kafka-run-class.sh

# JVM performance options配置项的KAFKA_JVM_PERFORMANCE_OPTS参数中加入如下内容

-Djava.security.auth.login.config=/etc/kafka/kafka_client_jaas.conf

在这里插入图片描述

# 分发kafka-run-class.sh文件
[root@dtb-tc-app11 ~]# xsync /opt/cloudera/parcels/CDH/lib/kafka/bin/kafka-run-class.sh
12.4.3、创建producer.properties文件,并添加如下内容
[root@dtb-tc-app11 ~]# vim /etc/kafka/conf/producer.properties
security.protocol=SASL_PLAINTEXT
sasl.mechanism=GSSAPI
sasl.kerberos.service.name=kafka

在这里插入图片描述

# 分发producer.properties文件
[root@dtb-tc-app11 ~]# xsync /etc/kafka/conf/producer.properties
12.4.3、创建consumer.properties文件,并添加如下内容
[root@dtb-tc-app11 ~]# vim /etc/kafka/conf/consumer.properties
security.protocol=SASL_PLAINTEXT
sasl.mechanism=GSSAPI
sasl.kerberos.service.name=kafka
# 分发consumer.properties文件
[root@dtb-tc-app11 ~]# xsync /etc/kafka/conf/consumer.properties

12.5、设置 ZooKeeper Root 为/kafka

在这里插入图片描述

12.6、取消Sentry服务

修改好配置之后,保存更改并重启Kafka
在这里插入图片描述
以上为CDH6.2.0集群搭建,并开启Kerberos与Sentry详细教程!

Q.E.D.


Keep going, believe in yourself, and never give up.