资料及文档下载位置:链接: https://pan.baidu.com/s/15pMV7YDncv6NmGjDvvrv_w 提取码: ru7v
OCDP5.0安装部署文档—补充版.docx1-OCDP5.0安装部署文档.pdf

1. 安装前环境准备

1.1. 操作系统检查

1.1.1. 操作系统版本检查

OCDP5.0支持的操作系统为redhat7.2/centos7.2及以上。
检查命令:(cat /etc/redhat-release)

1.1.2. 操作系统默认语言检查

检查命令:(echo $LANG)
默认语言由中文切换为英文:(echo ‘export LANG=en_US.UTF-8’ >> ~/.bashrc)
重新登录(logout)

1.1.3. 操作系统时区设置

操作系统时区统一设置为 (Asia /Shanghai) , 时间采用NTP 同步。让namenode其中一台机器充当时间服务器的角色,其他所有的机器和它进行同步,保证集群时间的一致性。
设置命令:(cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime)

1.1.4. 操作系统时钟设置

检查是否安装NTP服务:(rpm –qa|grep ntp)
安装NTP服务:(yum install ntp)
集群中所有节点主机的时间必须设置同步才能访问Ambari的Web UI界面。

1.1.4.1. 检测时间同步是否开机自启

集群内所有节点都要检查是否设置时钟同步开机自启。
systemctl is-enabled ntpd(是否开机自启)
systemctl enable ntpd(设置开机自启)

1.1.4.2. 开启时间同步

配置ntp server:
(vi /etc/ntp.conf)
*
# Hosts on local network are less restricted.
restrict 10.20.52.0 mask 255.255.255.0 nomodify notrap # 允许内网其他机器同步时间
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#server 0.centos.pool.ntp.org iburst #注释掉原时钟服务器()
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
修改完后如下图所示:
ocdp5.0安装部署文档 - 图8ocdp5.0安装部署文档 - 图9ocdp5.0安装部署文档 - 图10ocdp5.0安装部署文档 - 图11
重启ntp服务,并设置开机自启动
systemctl restart ntpd.service

1.1.4.3. 配置ntp client

(vi /etc/ntp.conf)注释原时钟服务器,增加2行
#Hosts on local network are less restricted
Restrict 10.20.52.247 nomodify notrap noquery
server 10.20.52.247 #ntp server inner net
#server 1.centos.pool.ntp.org
#server 2.centos.pool.ntp.org
如下图所示:
ocdp5.0安装部署文档 - 图12ocdp5.0安装部署文档 - 图13ocdp5.0安装部署文档 - 图14ocdp5.0安装部署文档 - 图15
重启ntp服务
systemctl restart ntpd.service
systemctl enable ntpd(设置开机自启)

1.1.4.4. 验证ntp时钟同步

5分钟后验证,client执行指令如下:
(ntpstat)
synchronised to NTP server (172.16.1.19) at stratum 7
time correct to within 34 ms
polling server every 1024 s
NTP server状态正常。

1.2. 文件系统检查

主机名称 Mount Point 大小(GB) 文件系统类型 分区 要求及说明
所有主机 / 120 ext4 sda 使用raid-1磁盘
/swap 8 swap 使用raid-1磁盘,
/opt 30 ext4 使用raid-1磁盘
/usr 20 ext4 使用raid-1磁盘
/var 100 ext4 使用raid-1磁盘
/home 600 ext4 使用raid-1磁盘
/tmp 100 ext4 使用raid-1磁盘
/data all ext4 使用raid-1磁盘,剩余容量
/hdfs/data01 3000 ext4 sdb 数据盘文件系统格式为ext4
/hdfs/data02 3000 ext4 sdc
/hdfs/data03 3000 ext4 sdd
/hdfs/data04 3000 ext4 sde
/hdfs/data05 3000 ext4 sdf
/hdfs/data06 3000 ext4 sdg
/hdfs/data07 3000 ext4 sdh
/hdfs/data08 3000 ext4 sdi
/hdfs/data09 3000 ext4 sdj
/hdfs/data10 3000 ext4 sdk

建议/usr目录大于15G;/var目录大于30G。

1.3. 系统安装包检查

每台机器都要安装yum -y groupinstall “Development tools” ,以避免在安装过程中缺少系统包。
SCP命令安装:yum install openssh-clients

1.4. 创建普通用户

创建普通用户,用于安装ambari-server及日常维护(root用户)
1) (groupadd ocdp)
2) (useradd -g ocdp -d /home/ocdp ocdp) //ocdp分别对应用户目录、创建的用户
3) (echo “ocdp@123” | passwd —stdin ocdp) //修改ocdp密码
4) 授sudo权限
cp /etc/sudoers /etc/sudoers_bak
echo “ocdp ALL=(ALL) NOPASSWD:ALL” >> /etc/sudoers

1.5. 设置正反向域名解析

集群所有主机都必须配置完整域名解析,才能实现Server对Agent的顺利访问.
建议由系统管理员统一配置,配置方法如下:

1.5.1. 设置主机名

编辑网络配置文件(vi /etc/sysconfig/network)
设置文件内容为:
NETWORKING=yes
HOSTNAME=nn1.asiainfo
设置命令:(hostnamectl set-hostname {主机名})

1.5.2. 配置/etc/hosts

为集群中每一台主机添加一行包含主机IP地址与完整主机名的信息,例如:
ocdp5.0安装部署文档 - 图16
同步/etc/hosts 到集群中所有节点上
(scp /etc/hosts root@{target_host}:/etc/hosts)
重启网络服务:(systemctl restart network)
将上面两个文件修改完后,并不能立刻生效。如果要立刻生效的话,可以用 hostname your-hostname 作临时修改,它只是临时地修改主机名,系统重启后会恢复原样的。但修改上面两个文件是永久的,重启系统会得到新的主机名

1.5.3. 验证

hostname -i 正确返回主机ip
hostname -f 正确返回主机名称

1.6. 关闭防火墙

Ambari部署Hadoop集群时需要保证Ambari Server能够连接到Ambari Agent进行安装任务,集群所有主机都必须关闭防火墙,命令如下:
systemctl disable firewalld
systemctl stop firewalld

1.7. 关闭SELinux和配置limits参数

1.7.1. 关闭SELinux

Ambari必须在SELinux关闭下才能运行,执行下面命令。
(setenforce 0)
要永久禁止SELinux自动启动,编辑/etc/selinux/config文件,
(vi /etc/selinux/config)
设置SELINUX=disabled
ocdp5.0安装部署文档 - 图17

1.7.2. 设置packagekit

所有集群REHL/CenOS主机如果安装了packagekit,则做如下更改。
(pkill -9 packagekitd)
(vi /etc/yum/pluginconf.d/refresh-packagekit.conf)
设置:
enabled=0

1.7.3. 设置umask

集群所有主机设置umask,设置用户创建目录默认权限。
(umask 0022)
(echo umask 0022 >> /etc/profile)

1.7.4. ulimit和nproc

Hadoop会在同一时间使用很多的文件句柄.大多数linux系统使用的默认值1024是不能满足的,
(vi /etc/pam.d/login)
在其中加入如下内容:

32位系统 64位系统
session required /lib/security/pam_limits.so session required /lib64/security/pam_limits.so

(vi /etc/security/limits.conf)
在文件中添加下面的内容
**
ocdp soft nofile 65535
ocdp hard nofile 65535
ocdp soft nproc 65535
ocdp hard nproc 65535
*

1.8. 禁用透明大页(THP)

首先检查THP的启用状态:
[root@localhost ~]#(cat /sys/kernel/mm/transparent_hugepage/defrag)
[always] madvise never
[root@localhost ~]# (cat /sys/kernel/mm/transparent_hugepage/enabled)
[always] madvise never
这个状态就说明都是启用的。我们这个时候当然可以逐个修改上述两文件,来禁用THP,但要想一劳永逸的令其永久生效,还是参考下列的步骤。
编辑rc.local文件:
(vi /etc/rc.d/rc.local )
增加下列内容:
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
保存退出,然后赋予rc.local文件执行权限:
(chmod +x /etc/rc.d/rc.local )

最后重启系统,以后再检查THP应该就是被禁用了
[root@localhost ~]# (cat /sys/kernel/mm/transparent_hugepage/enabled)
always madvise [never]
[root@localhost ~]# (cat /sys/kernel/mm/transparent_hugepage/defrag)
always madvise [never]

1.9. 禁用交换分区

群内所有主机
(sysctl vm.swappiness=0)
(echo vm.swappiness=0 >> /etc/sysctl.conf)

1.10. 设置节点互信

Ambari Server与Ambari Agent服务器之间需要配置 ssh无密互访,Ambari Server通过SSH公钥授权远程登录其他主机。配置步骤如下:

1.10.1. 方法一

1.10.1.1. 产生ssh密钥

集群每台主机,切换到ocdp用户,执行如下命令,产生SSH认证密钥对。
(ssh-keygen -t rsa -P ‘’ -f ~/.ssh/id_rsa)

1.10.1.2. 配置ssh无密登录

将Ambari Server生成的公钥文件id_rsa.pub拷贝至集群其他Ambari Agent主机,并加入Ambari Agent的授权列表。
Ambari server主机执行下面命令:
(cd ~/.ssh/)
(ssh-copy-id -i ~/.ssh/id_rsa.pub ocdp@{target_host})
//{target_host} 包括hadoop集群的所有主机,可以是主机名或IP地址
//该命令完成后会在{target.host}的~/.ssh/目录下生成文件authorized_keys。

1.10.1.3. 所有主机设置文件目录权限

(chmod 700 ~/.ssh)
(chmod 600 ~/.ssh/authorized_keys)

1.10.2. 方法二

1.10.2.1. 产生ssh密钥

集群每台主机产生ssh登录认证密钥对id_rsa , id_rsa.pub秘钥文件。
(ssh-keygen -t rsa -P ‘’ -f ~/.ssh/id_rsa)

1.10.2.2. 配置ssh无密登录

Ambari server主机执行如下指令:
(cd ~/.ssh)
(cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys)
将Ambari Server生成的公钥文件id_rsa.pub拷贝至集群其他Ambari Agent主机(target_hosts):
(scp ~/.ssh/id_rsa.pub ocdp@{target_hosts}:~/)
Agent主机分别执行下面命令:
(cat ~/id_rsa.pub >> ~/.ssh/authorized_keys)

1.10.2.3. 所有主机设置文件目录权限:

(chmod 700 ~/.ssh)
(chmod 600 ~/.ssh/authorized_keys)
Ambari Server主机分别执行ssh ocdp@{target.host}, 进行免密码登录检查。

1.11. 安装JDK

集群内所有主机,如果需要开启kerberos,还需jce安装包。

1.11.1. Tar包安装

尽量选择jdk1.8以上版本,如jdk-8u91-linux-x64.tar.gz
解压及修改权限
cd /home/ocdp
tar –zxvf jdk-8u91-linux-x64.tar.gz
chown -R root:root jdk1.8.0_91/
chmod –R 755 jdk1.8.0_91/
移动到/usr/local目录下
sudo mv jdk1.8.0_91/ /usr/local/
vi /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_91

1.11.2. RPM包安装

检查是否安装:(rmp -qa|grep jdk)
安装JDK:(rpm -i jdk-8u111-linux-x64.rpm)
(vi /etc/profile)
(export JAVA_HOME=/usr/java/jdk1.8.0_111)

1.12. 配置yum源

1.12.1. 配置OS yum源

1.12.1.1. 选取yum源镜像主机:

  1. 选取一台主机作为yum源镜像主机,在镜像源主机上配置本地yum源用于更新系统软件。
    2.镜像主机中创建yum源目录/var/www/html/centos。
    终端执行命令:(mkdir -p /var/www/html/centos)

    1.12.1.2. 解压相应安装包

    将centos系统镜像拷贝至/usr/local/cenots目录,并挂载到/mnt/cdrom目录,并将/usr/local/cenots目录下所有内容拷贝至/var/www/html/centos:
    (mkdir -p /usr/local/centos)
    (mount -o loop /usr/local/centos/Centos*.iso /var/www/html/centos)

    1.12.1.3. 镜像主机配置本地更新源:

    (cd /etc/yum.repos.d)
    (mkdir -p /etc/yum.repos.d/bak)
    (mv *.repo bak) //备份原有repo文件
    编辑rhel-source.repo文件如下:
    (vi /etc/yum.repos.d/centos.repo)
    [Centos]
    name=Centos7
    baseurl= file:///var/www/html/centos
    gpgkey= file:///var/www/html/centos/RPM-GPG-KEY-CentOS-7
    gpgcheck=1
    enabled=1

    1.12.1.4. 安装HTTP服务和其它组件

    (rpm -qa|grep http)检查是否已经安装
    (yum install yum-utils createrepo yum-plugin-priorities)
    (yum install httpd wget)

    1.12.1.5. 修改HTTP默认配置

    (vi /etc/httpd/conf/httpd.conf)
    1)修改 DocumentRoot为”/var/www/html”
    2)修改 节:添加Options Indexes FollowSymLinks
    3)修改“#ServerName www.example.com:80”去掉“#,改为ServerName localhost
    4)删除默认页面:
    (rm -f /etc/httpd/conf.d/welcome.conf /var/www/error/noindex.html)

    1.12.1.6. 设置HTTP开机自动重启

    systemctl enable httpd
    systemctl restart httpd

    1.12.2. 配置OCDP yum源

    1.12.2.1. 创建yum源

    建立ambari,hdp,hdp-utils目录

    (mkdir -p /var/www/html/ambari /var/www/html/hdp /var/www/html/hdp-utils /var/www/html/hdp-gpl)
    解压ambari,hdp,hdp-utils安装包
    (tar -zxvf ambari-2.7.0.0-centos7.tar.gz -C /var/www/html/ambari)
    (tar -zxvf HDP-3.1.0.0-centos7-rpm.tar.gz -C /var/www/html/hdp)
    (tar -zxvf HDP-UTILS-1.1.0.22-centos7.tar.gz -C /var/www/html/hdp-utils)
    (tar -zxvf HDP-GPL-3.1.0.0-centos7.tar.gz -C /var/www/html/hdp-gpl)
    (chmod -R 755 /var/www/html/)

    1.12.2.2. 配置http yum 源

    (vi /etc/yum.repos.d/centos.repo)如下:
    [Centos]
    name=Centos7
    baseurl=http:// 132.90.116.140/centos
    gpgkey=http:// 132.90.116.140/centos/ RPM-GPG-KEY-CentOS-7
    gpgcheck=1
    enabled=1
    (vi /etc/yum.repos.d/ambari.repo)如下:
    [ambari-2.7.0.0-139]
    name=ambari-2.7.0.0-139
    baseurl=http://132.90.116.140/ambari/centos7/2.7.3.0-139/
    path=/
    gpgcheck=0
    gpgkey=http://132.90.116.140/ambari/centos7/2.7.3.0-139/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
    enabled=1
    priority=1
    (vi /etc/yum.repos.d/hdp.repo)如下:
    [HDP-3.1]
    name=HDP-3.1
    baseurl=http://132.90.116.140/hdp/centos7/3.1.0.0-78/
    path=/
    enabled=1
    gpgcheck=0

    [HDP-UTILS-1.1.0.22]
    name=HDP-UTILS-1.1.0.22
    baseurl=http://132.90.116.140/hdp-utils/centos7/1.1.0.22/
    path=/
    enabled=1
    gpgcheck=0

    [HDP-3.1-GPL]
    name=HDP-3.1-GPL
    baseurl=http://132.90.116.140/hdp-gpl/centos7/3.1.0.0-78/
    path=/
    enabled=1
    gpgcheck=0

    1.12.2.3. 同步repo文件

    拷贝镜像主机/etc/yum.repo.d/下的ambari.repo文件,拷贝至Agent主机的/etc/yum.repo.d/目录下。镜像主机下进行拷贝操作。
    (sudo scp ambari.repo root@{target_host}:/etc/yum.repos.d
    清空repo缓存
    (yum clean all)

    2. Ambari服务安装

    2.1. Mysql数据库安装

    考虑到mysql数据库升级,建议使用rpm的方式安装

    2.1.1. 卸载旧版本

    查看MySQL
    (rpm -qa|grep mysql)
    (rpm -qa|grep mariadb)
    ocdp5.0安装部署文档 - 图18
    卸载MySQL
    (rpm -e —nodeps mysql-5.1.73-7.el6.x86_64)
    (rpm -e —nodeps mysql-connector-odbc-5.1.5r1144-7.el6.x86_64)
    (rpm -e —nodeps mysql-libs-5.1.73-7.el6.x86_64)
    (rpm –e —nodeps *)
    (rpm -qa|grep mysql)

    2.1.2. 删除数据目录

    (ll /var/lib|grep mysql)
    (rm -rf /var/lib/mysql)
    数据目录可以备份移走。mysqld服务在初始化时会检查数据目录是否存在:如果数据目录不存在,mysqld则会创建它;如果数据目录存在,且不是空目录(即包含有文件或子目录),mysqld会显示一条错误信息并中止:
    [ERROR] —initialize specified but the data directory exists. Aborting.

    2.1.3. 安装MySQL

    2.1.3.1. 解压并安装

    解压下载好的安装包
    (tar –xvf mysql-5.7.18-1.el7.x86_64.rpm-bundle.tar)
    (安装环境是CentOS7应该选用el7安装包。)
    按照依赖关系依次安装rpm包
    依赖关系依次为common→libs→client→server
    (rpm -ivh mysql-community-common-5.7..el7.x86_64.rpm)
    (rpm -ivh mysql-community-libs-5.7.
    .el7.x86_64.rpm)
    (rpm -ivh mysql-community-client-5.7. -1.el7.x86_64.rpm)
    (rpm -ivh mysql-community-server-5.7.
    -1.el7.x86_64.rpm)
    ocdp5.0安装部署文档 - 图19

    2.1.3.2. 初始化MySQL5.7

    1)启动mysqld服务
    (systemctl start mysqld)
    2)检查mysqld运行状态
    (systemctl status mysqld)
    ocdp5.0安装部署文档 - 图20
    无需手动初始化,启动时间较长,耐心等待一下
    至此可以判断MySQL基本安装成功了
    3)找到临时登录密码
    (grep password /var/log/mysqld.log)
    ocdp5.0安装部署文档 - 图21
    4)登录
    (mysql -uroot –p)
    ocdp5.0安装部署文档 - 图22
    set global validate_password_policy=0;
    set global validate_password_length=1;

    ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘AsiaInfo@139’;

    2.1.3.3. 配置MySQL远程访问

    1)修改root密码
    (mysql>alter user ‘root’@’localhost’ identified by ‘root@1234’;)
    在5.6后,mysql内置密码增强机制,低强度密码会报错:
    ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
    降低密码安全度要求:
    (mysql>set global validate_password_policy=0;)
    (mysql>set global validate_password_length=1;)
    2)增加root远程登录
    (mysql> CREATE USER ‘root’@’%’ IDENTIFIED BY ‘ root@1234’;)
    (mysql>GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ WITH GRANT OPTION;)
    (mysql> CREATE USER ‘root’@’nn1.asiainfo’ IDENTIFIED BY ‘ root@1234’;)
    (mysql>GRANT ALL PRIVILEGES ON . TO ‘root’@’nn1.asiainfo’ WITH GRANT OPTION;)
    (mysql>FLUSH PRIVILEGES;)

    2.1.3.4. 创建ambari数据库并配置权限

    (mysql>create database ambari;)
    (mysql> use ambari;)
    (mysql>CREATE USER ‘ambari’@’%’ IDENTIFIED BY ‘ambari123’; )
    (mysql>GRANT ALL PRIVILEGES ON . TO ‘ambari’@’%’; )
    (mysql>CREATE USER ‘ambari’@’localhost’ IDENTIFIED BY ‘ambari123’; )
    (mysql>GRANT ALL PRIVILEGES ON . TO ‘ambari’@’localhost’; )
    (mysql>CREATE USER ‘ambari’@’nn1.asiainfo’ IDENTIFIED BY ‘ambari123’; )
    (mysql>GRANT ALL PRIVILEGES ON . TO ‘ambari’@’nn1.asiainfo’; )
    (mysql>FLUSH PRIVILEGES; )

    2.2. Ambari 安装配置

    使用ocdp用户执行以下操作

    2.2.1. 安装Ambari

    弹出提示进行自动下载安装。
    (sudo yum install ambari-server)

    2.2.2. 初始化Ambari数据库连接配置

    (sudo ambari-server setup —jdbc-db=mysql —jdbc-driver=/usr/share/java/mysql-connector-java.jar)
    初始化成功(下载的connector-java*.jar,要改名为mysql-connector-java.jar,放到/usr/share/java/目录)

    2.2.3. Ambari-server 安装配置

    (sudo ambari-server setup)
    接下来按照提示进行安装设置。
    ambari-server setup
    Using python /usr/bin/python
    Setup ambari-server
    Checking SELinux…
    SELinux status is ‘disabled’
    Customize user account for ambari-server daemon [y/n] (n)?y
    Adjusting ambari-server permissions and ownership…
    Checking firewall status…
    Checking JDK…
    [1] Oracle JDK 1.8 + Java Cryptography Extension (JCE) Policy Files 8
    [2] Custom JDK
    ==============================================================================
    Enter choice (1): 2
    JAVA_HOME:/usr/java/jdk1.8.0_111
    Checking GPL software agreement…
    GPL License for LZO: https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html
    Enable Ambari Server to download and install GPL Licensed LZO packages [y/n] (n)? y
    Completing setup…
    Configuring database…
    Enter advanced database configuration [y/n] (n)? y
    Configuring database…
    ==============================================================================
    Choose one of the following options:
    [1] - PostgreSQL (Embedded)
    [2] - Oracle
    [3] - MySQL / MariaDB
    [4] - PostgreSQL
    [5] - Microsoft SQL Server (Tech Preview)
    [6] - SQL Anywhere
    [7] - BDB
    ==============================================================================
    Enter choice (1): 3
    Hostname (localhost): 10.1.236.51
    Port (3306):
    Database name (ambari):
    Username (ambari): root
    Enter Database Password (bigdata):
    Re-enter password:
    Configuring ambari database…
    Should ambari use existing default jdbc /usr/share/java/mysql-connector-java.jar [y/n] (y)? y
    Configuring remote database connection properties…
    WARNING: Before starting Ambari Server, you must run the following DDL against the database to create the schema: /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql
    Proceed with configuring remote database connection properties [y/n] (y)? y
    Extracting system views…
    ambari-admin-2.7.0.0.897.jar
    ….
    Ambari repo file doesn’t contain latest json url, skipping repoinfos modification
    Adjusting ambari-server permissions and ownership…
    Ambari Server ‘setup’ completed successfully.

    2.2.4. 初始化ambari数据库

    注意,此刻需要切换到mysql中执行相应脚本操作,登录到mysql数据库,执行以下脚本Ambari-DDL-MySQL-CREATE.sql
    (sudo mysql -uroot –p)
    (mysql> use ambari;)
    (mysql> source /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql)
    验证脚本是否初始化成功,出现以下table列表。
    mysql> show tables;
    +———————————————-+
    | Tables_in_ambari |
    +———————————————-+
    | ClusterHostMapping |
    | QRTZ_BLOB_TRIGGERS |
    | QRTZ_CALENDARS |
    | QRTZ_CRON_TRIGGERS |
    | QRTZ_FIRED_TRIGGERS |
    | QRTZ_JOB_DETAILS |
    | QRTZ_LOCKS |
    至此,Ambari安装完成。

    2.2.5. Ambari-server 服务启动

    注:ambari-server 与ambari-agent启动要使用sudo,否则安装其他组件会出错。
    在Server主机可以运行下面命令
    启动AmbariServer
    (sudo ambari-server start)
    查看Ambari Server的状态
    (sudo ambari-server status)
    停止Ambari Server
    (sudo ambari-server stop)

    3. 使用Ambari部署Hadoop集群

    利用Ambari的安装部署向导,可以完成如下操作:• Log In to Apache Ambari
    • Name Your Cluster
    • Select Stack
    • Install Options
    • Confirm Hosts
    • Choose Services
    • Assign Masters
    • Assign Slaves and Clients
    • Customize Services
    • Review
    • Install, Start and Test
    • Complete

    3.1. 登录Ambari界面

    启动ambari-server后,通过客户端浏览器登录Ambari的界面(firefox)。浏览器网址http://:8080。默认登录用户名/密码为:admin/admin。
    ocdp5.0安装部署文档 - 图23

    3.2. 启动Ambari部署向导

    ocdp5.0安装部署文档 - 图24

    3.3. 命名集群名字

    点击“Launch Install Wizard”搭建集群,输入集群的名字,不能使用空格和其他特殊字符。输入“bjcuccluster”, 点击“下一步”:
    ocdp5.0安装部署文档 - 图25

    3.4. 选择Stack

    ocdp5.0安装部署文档 - 图26
    选择系统版本,并将HDP和HDP UTILS的yum源分别修改为:
    HDP3.1:http://132.90.116.140/hdp/centos7/3.1.0.0-78/
    HDP-UTILS-1.1.0.22:http://132.90.116.140/hdp-util/centos7/1.1.0.22/
    HDP-GPL-3.1.0.0:http://132.90.116.140/hdp-gpl/centos7/3.1.0.0-78/

    3.5. 安装选项

    ocdp5.0安装部署文档 - 图27

    3.6. 确认主机

    确认主机,安装ambari-agent,并检测主机,保证检查结果没问题,点击“下一步”
    ocdp5.0安装部署文档 - 图28
    ocdp5.0安装部署文档 - 图29

    3.7. 部署基础服务

    选择服务,点击“下一步”:( 先安装HDFS、ZOOKEEPER、Ambari Metrics)
    ocdp5.0安装部署文档 - 图30ocdp5.0安装部署文档 - 图31ocdp5.0安装部署文档 - 图32
    需要注意:
    1. Datanode directories 只能配置数据盘对应的目录,配置系统盘目录容易将系统盘写满,导致服务挂起。
    2. NameNode directories 配置的目录数量控制在2-3个,可以配置为系统盘较大的目录。
    ocdp5.0安装部署文档 - 图33ocdp5.0安装部署文档 - 图34ocdp5.0安装部署文档 - 图35ocdp5.0安装部署文档 - 图36ocdp5.0安装部署文档 - 图37ocdp5.0安装部署文档 - 图38ocdp5.0安装部署文档 - 图39

    删除smartsense
    ocdp5.0安装部署文档 - 图40ocdp5.0安装部署文档 - 图41ocdp5.0安装部署文档 - 图42ocdp5.0安装部署文档 - 图43
    根据需要增加其他服务。

    3.8. 启用NameNode HA

    ocdp5.0安装部署文档 - 图44
    ocdp5.0安装部署文档 - 图45
    ocdp5.0安装部署文档 - 图46
    ocdp5.0安装部署文档 - 图47
    ocdp5.0安装部署文档 - 图48
    ocdp5.0安装部署文档 - 图49
    ocdp5.0安装部署文档 - 图50
    ocdp5.0安装部署文档 - 图51
    ocdp5.0安装部署文档 - 图52
    ocdp5.0安装部署文档 - 图53
    ocdp5.0安装部署文档 - 图54
    ocdp5.0安装部署文档 - 图55
    ocdp5.0安装部署文档 - 图56
    ocdp5.0安装部署文档 - 图57

    3.9. 安装YARN

    ocdp5.0安装部署文档 - 图58
    ocdp5.0安装部署文档 - 图59
    ocdp5.0安装部署文档 - 图60
    ocdp5.0安装部署文档 - 图61
    ocdp5.0安装部署文档 - 图62
    ocdp5.0安装部署文档 - 图63
    ocdp5.0安装部署文档 - 图64

    3.10. 启用Resourcemanager HA

    ocdp5.0安装部署文档 - 图65
    ocdp5.0安装部署文档 - 图66
    ocdp5.0安装部署文档 - 图67
    ocdp5.0安装部署文档 - 图68

    3.11. 安装Hbase

    ocdp5.0安装部署文档 - 图69
    ocdp5.0安装部署文档 - 图70
    ocdp5.0安装部署文档 - 图71

    ocdp5.0安装部署文档 - 图72

    3.12. 安装Hive

    ocdp5.0安装部署文档 - 图73
    ocdp5.0安装部署文档 - 图74
    ocdp5.0安装部署文档 - 图75


    ocdp5.0安装部署文档 - 图76
    ocdp5.0安装部署文档 - 图77

    ocdp5.0安装部署文档 - 图78

    3.13. 安装Ranger

    ocdp5.0安装部署文档 - 图79
    ocdp5.0安装部署文档 - 图80
    ocdp5.0安装部署文档 - 图81
    ocdp5.0安装部署文档 - 图82
    这里配置使用数据库管理员创建ranger数据库
    CREATE USER ‘root’@’%’ IDENTIFIED BY ‘asiainfo!!!’;
    GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ WITH GRANT OPTION;
    FLUSH PRIVILEGES;

    ocdp5.0安装部署文档 - 图83
    ocdp5.0安装部署文档 - 图84
    ocdp5.0安装部署文档 - 图85
    注意:这里要设置几个password,在5.0版本中对其长度及复杂度有校验,设置太简单会导致无法进行下一步。
    ocdp5.0安装部署文档 - 图86
    ocdp5.0安装部署文档 - 图87

    3.14. 启用Hiveserver2 HA

    增加hiveserver2即可。
    非kerberos环境访问方式如下:
    beeline -u ‘jdbc:hive2://10.1.236.58:9501,10.1.236.59:9501,10.1.236.72:9501/yinkp;serviceDiscoveryMode=zooKeeper;?mapreduce.job.queuename=root.yinkp” -n yinkp -p yinkp
    kerberos环境访问方式如下:
    beeline -u ‘jdbc:hive2://d8pnode15:2181,d8pnode10:2181,d8pnode08:2181/default;principal=hive/_HOST@BJ.CUC;serviceDiscoveryMode=zooKeeper;user=ocdp;zooKeeperNamespace=hiveserver2’
    或者
    beeline -u ‘jdbc:hive2://d8pnode08:10000/default;principal=hive/_HOST@BJ.CUC’
    beeline -u ‘jdbc:hive2://d8pnode07:10000/default;principal=hive/_HOST@BJ.CUC’

    3.15. Ldap 部署

    yum -y install openldap-servers openldap-clients nss-pam-ldapd
    cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
    chown ldap:ldap /var/lib/ldap/DB_CONFIG
    systemctl start slapd
    systemctl enable slapd

    slappasswd -h {md5} -s “ldap@#123”
    {MD5}0YrHskgC54n3QqNNf7uBxg== //固定密码加密串
    (需修改密码) slappasswd
    # ldapadd -Y EXTERNAL -H ldapi:/// -f /home/ocdc/diff/set_rootpw.ldif
    SASL/EXTERNAL authentication started
    SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
    SASL SSF: 0
    modifying entry “olcDatabase={0}config,cn=config”

    # ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
    SASL/EXTERNAL authentication started
    SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
    SASL SSF: 0
    adding new entry “cn=cosine,cn=schema,cn=config”

    # ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
    SASL/EXTERNAL authentication started
    SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
    SASL SSF: 0
    adding new entry “cn=nis,cn=schema,cn=config”

    # ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
    SASL/EXTERNAL authentication started
    SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
    SASL SSF: 0
    adding new entry “cn=inetorgperson,cn=schema,cn=config”

    SET domain on ladp db
    改**set_domain.ldif **文件中密码,跟上面密码一致
    # ldapmodify -Y EXTERNAL -H ldapi:/// -f /home/ocdc/diff/set_domain.ldif
    SASL/EXTERNAL authentication started
    SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
    SASL SSF: 0
    modifying entry “olcDatabase={1}monitor,cn=config”
    modifying entry “olcDatabase={2}hdb,cn=config”
    modifying entry “olcDatabase={2}hdb,cn=config”
    modifying entry “olcDatabase={2}hdb,cn=config”
    modifying entry “olcDatabase={2}hdb,cn=config”

    # ldapadd -x -D cn=admin,dc=asiainfo,dc=com -w ldap@#123 -f /home/ocdc/diff/create_basedomain.ldif
    adding new entry “dc=asiainfo,dc=com”
    adding new entry “cn=admin,dc=asiainfo,dc=com”
    adding new entry “ou=People,dc=asiainfo,dc=com”
    adding new entry “ou=Group,dc=asiainfo,dc=com”

    测试能否连接到ldap server:
    ldapsearch -x -b ‘ou=People,dc=asiainfo,dc=com’
    ldapsearch -LLL -W -x -D “cn=admin,dc=asiainfo,dc=com” -b “dc=asiainfo,dc=com”

    主从复制:
    主节点上执行
    # ldapadd -Y EXTERNAL -H ldapi:/// -f /home/ocdc/diff/sync_provider_addMode.ldif
    SASL/EXTERNAL authentication started
    SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
    SASL SSF: 0
    adding new entry “cn=module,cn=config”

    # ldapadd -Y EXTERNAL -H ldapi:/// -f /home/ocdc/diff/sync_provider.ldif
    SASL/EXTERNAL authentication started
    SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
    SASL SSF: 0
    adding new entry “olcOverlay=syncprov,olcDatabase={2}hdb,cn=config”

    从节点上执行 (修改对应provider 配置)
    # ldapadd -Y EXTERNAL -H ldapi:/// -f /home/ocdc/diff/sync_consumer.ldif
    SASL/EXTERNAL authentication started
    SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
    SASL SSF: 0
    modifying entry “olcDatabase={2}hdb,cn=config”

    authconfig —ldapserver=HBBDC-JK-NN-01,HBBDC-JK-NN-02 —update
    客户端安装配置调试
    yum -y install openldap-clients nss-pam-ldapd
    authconfig —enableldap —enableldapauth —ldapserver=HBBDC-JK-NN-01:389,HBBDC-JK-NN-02:389 —ldapbasedn=”dc=asiainfo,dc=com” —enablemkhomedir —update

    LDAP 增加,修改,查询用户
    根据条件查询用户
    (1) 查询所有的用户: # ldapsearch -x -b ‘ou=People,dc=asiainfo,dc=com’
    (2)查询所有的组: # ldapsearch -x -b ‘ou=Group,dc=asiainfo,dc=com’
    (3)查询单用户
    ldapsearch -x -b “usertest” #根据上面的用户列表,找到用户的DN
    ldapsearch -x -b “uid=usertest,ou=People,dc=asiainfo,dc=com”

    ldapsearch -LLL -W -x -D “cn=admin,dc=asiainfo,dc=com” -b “dc=asiainfo,dc=com” -H “ldap://127.0.0.1”

    增加,修改,删除用户
    ldapadd -x -D cn=admin,dc=asiainfo,dc=com -W -f ldapuser.ldif

    ldapsearch -x -b ‘ou=People,dc=asiainfo,dc=com’
    ldapsearch -LLL -W -x -D “cn=admin,dc=asiainfo,dc=com” -b “dc=asiainfo,dc=com”

    ldapdelete -x -W -D ‘cn=admin,dc=asiainfo,dc=com’ “uid=redhat,ou=People,dc=asiainfo,dc=com”
    ldapdelete -x -W -D ‘cn=admin,dc=asiainfo,dc=com’ “cn=redhat,ou=Group,dc=asiainfo,dc=com”

    更改LDAP用户密码
    ldappasswd -x -D “cn=manager,dc=asiainfo,dc=com” -w ldap123 “uid=asiainfo,ou=People,dc=asiainfo,dc=com” -s Asia%2017

    3.16. hive集成ldap

    通过ambari界面修改配置。
    ocdp5.0安装部署文档 - 图88
    ocdp5.0安装部署文档 - 图89
    需要增加
    hive.server2.authentication.ldap.baseDN=ou=People,dc=asiainfo,dc=com
    然后重启hive即可。
    测试:
    beeline -u jdbc:hive2://10.1.241.55:10000 -n test
    ocdp5.0安装部署文档 - 图90
    如果有如下验证说明OK。

    3.17. Ranger集成ldap

    Ranger用来获取用户和组的模块叫做User group sync,可以配置获取Unix,LDAP或者AD的用户和组。
    (1) Ranger User Info配置
    打开Ambari Ranger配置页面里的Ranger User Info选项。
    a. Enable User Sync 置为 Yes
    b. Sync Source 选择 LDAP/AD
    ocdp5.0安装部署文档 - 图91
    打开Cmmon Configs
    a. LDAP/AD URL,输入LDAP URL。例如:ldap://{LDAP Server IP}:389
    b. Bind Anonymous 置为 No
    c. Bind User,输入LDAP的管理员用户。例如:cn=admin,dc=asiainfo,dc=com
    d. Bind User Password,输入上面LDAP的管理员密码123456。
    ocdp5.0安装部署文档 - 图92
    打开User Configs
    a. Username Attribute,输入cn
    b. User Object Class,这个根据LDAP配置决定,一般可以配为person,user,或者posixAccount。
    c. User Search Base,输入ou=People,dc=asiainfo,dc=com
    d. User Search Filter,输入cn=
    e. User Search Scope,输入sub
    f. User Group Name Attribute,输入memberof。这个根据LDAP配置决定,一般需要LDAP支持memberof属性。
    g. Group User Map Sync,置为yes。
    ocdp5.0安装部署文档 - 图93
    打开Group Configs
    a. Enable Group Sync,置为Yes。
    b. Group Member Attribute,输入 memberUid。
    c. Group Name Attribute,输入 cn。
    d. Group Object Class,输入posixGroup。这个根据LDAP配置决定,需要查看LDAP的group object class。一般为group或者posixGroup。
    e. Group Search Base,输入ou=Groups,dc=asiainfo,dc=com
    f. Group Search Filter,输入cn=

    ocdp5.0安装部署文档 - 图94
    (2) Advanced配置
    Ranger Settings
    a. Authentication method,选择LDAP
    LDAP Settings
    a. ranger.ldap.base.dn,设为LDAP的dn,例如:dc=asiainfo,dc=com
    b. ranger.ldap.group.roleattribute,设为cn
    c. ranger.ldap.user.dnpattern,设为uid={0},ou=People,dc=asiainfo,dc=com,其中ou=People,dc=asiainfo,dc=com为LDAP 的用户类别。
    (3) LDAP用户同步验证
    根据上述配置好后,使用Ambari重启Ranger,打开Ranger界面。在Settings下的的Users/Groups可以查看到已经同步到的LDAP用户和用户组。
    如果用户和用户组没有同步到,应该是配置的有问题,可以通过Ranger提供的LDAP检查工具进行检查。
    a. 进入工具目录,/usr/hdp/current/ranger-usersync/ldaptool
    b. 配置conf/input.properties,其中的参数根据Ambari上配置的Ranger LDAP配置。
    c. 执行./run.sh -r groups -i conf/input.properties 获取用户组信息,-r users返回用户信息,-r all 返回用户和用户组信息。返回的结果在output/ ldapConfigCheck.log中。
    重启ranger服务,登陆ranger admin界面查看用户是否同步完成。

    4. Hadoop集群资源权限控制

    4.1. 配置YARN队列权限由Ranger管理

    对YARN的队列容量成功配置后,还需要对该队列的访问权限进行配置,这样就能限制其他租户使用该队列。在OCDP集群中,YARN的队列访问控制由Ranger组件完成。
    具体的配置方法为:
    a. 在Ambari中打开Ranger配置界面(Ranger->Configs->Advanced->YARN Ranger Plugin),打开YARN Ranger Plugin。保存配置并重启受影响的组件。
    ocdp5.0安装部署文档 - 图95
    图2-6 配置Ranger YARN Plugin
    b. 在Ambari中打开YARN配置界面(YARN->Configs->Advanced->Custom ranger-yarn-security),配置属性ranger.add-yarn-authorization为false,如下图所示。这样配置的目的是禁用YARN本身的ACL权限控制,YARN队列的权限控制由Ranger统一管理。
    ocdp5.0安装部署文档 - 图96
    图2-7 禁用YARN自身ACL权限控制
    c. 打开Ranger界面,在Access Manager->Resource Based Policies下,选择YARN->HDP_yarn,创建新策略(Add New Policy)。配置策略名,需要设定访问控制的队列,在用户和用户组权限中选择用户,或者组,并赋予相应的权限,如下图所示。
    ocdp5.0安装部署文档 - 图97
    图2-8 Ranger新增YARN权限控制

    按照上述的配置完成后,即实现了Hadoop集群中多租户资源分配和调度,即:不同的租户根据各自配置的队列获取集群资源;并且对各队列的资源具有访问控制,未被授权的租户不能获取该队列的资源。

    4.2. 配置HDFS权限由Ranger管理

    Hadoop集群的数据大部分保存在分布式文件存储系统HDFS中,要保证多租户的数据访问安全就需要对HDFS文件夹、文件的访问权限进行控制。例如,HDFS文件夹/user1下的内容需要对用户1并且只能对用户1开放,这种情况下一般可以使用HDFS自身的权限管理“hdfs dfs -chmod”进行权限即可。在OCDP中,由于引入了Ranger作为集中式安全管理,可以通过配置Ranger对HDFS的访问权限进行管理。
    Ranger对于HDFS权限管理有两个层次:
    · 首先由Ranger对文件夹、文件的访问权限进行权限验证,如果验证通过,如果则可以访问
    · 如果Ranger验证失败,则继续验证HDFS本身的文件访问权限(rwx)。
    如果HDFS配置xasecure.add-hadoop-authorization为false,则只由Ranger进行鉴权,不会由HDFS本身的鉴权机制进行rwx的权限验证。

    多租户数据访问控制的配置方法为:
    a. 在Ambari中打开Ranger配置界面(Ranger->Configs->Advanced->HDFS Ranger Plugin),打开HDSF Ranger Plugin。保存配置并重启受影响的组件。
    ocdp5.0安装部署文档 - 图98
    图3-1 配置HDFS Ranger Plugin

    b. 打开Ranger界面,在Access Manager->Resource Based Policies下,选择HDFS->OCDP_hadoop,创建新策略(Add New Policy)。配置策略名,输入需要设定访问控制的文件或文件夹,在用户和用户组权限中选择用户,或者组,并赋予相应的权限,如下图所示。
    ocdp5.0安装部署文档 - 图99
    图3-2 Ranger新增HDFS访问权限策略
    c. 设置HDFS文件夹权限,建议将由Ranger管理的文件访问权限在HDFS中配为000,即由Ranger负责访问权限鉴权,如果鉴权失败,HDFS本身的鉴权由于权限是000,也会失败。这样就集中的管理了HDFS的访问权限。例如本例的HDFS文件夹/apps/hive,设置该文件夹访问权限为000,如下图所示。
    ocdp5.0安装部署文档 - 图100
    图3-3 配置HDFS访问权限为000

    d. 本步骤为可选。如果需要只由Ranger负责访问权限控制,即如果Ranger鉴权失败即返回没有权限,还可以配置xasecure.add-hadoop-authorization为false。配置方法为:在Ambari中打开HDFS配置界面(HDFS->Configs->Advanced->Advanced ranger-hdfs-security),配置属性xasecure.add-hadoop-authorization为false。如下图所示:
    ocdp5.0安装部署文档 - 图101
    图3-4 禁用HDFS自身文件访问控制

    按照上述配置完成后,即由Ranger实现了多租户对HDFS的访问控制。

    4.3. 配置Hive权限由Ranger管理

    Hive是Hadoop集群最常用的组件之一,可以实现基于Hadoop的数据仓库。OCDP对于Hive的多租户支持除了需要配置YARN和HDFS多租户之外,还支持对Hive表,列的细粒度权限访问控制。Hive的多租户方案的结构如下图所示:
    ocdp5.0安装部署文档 - 图102
    图4-1 Hive多租户架构

    多个租户包括Hive用户和其它应用的用户向Hadoop集群提交作业时:
    · 由YARN调度器对多租户进行资源分配。如上图4-1所示,Hive用户1和其他用户通过配置各自的队列,保证了资源的有效分配。队列的访问控制由Ranger实现。
    · 多租户对HDFS数据的访问控制由Ranger实现
    多租户对Hive数据库、表、列的访问控制由Ranger实现。因此,对于Hive的数据访问有两层,即对HDFS存储数据的访问控制和对Hive逻辑表的访问控制。
    配置多租户资源和安全访问控制如下:
    a. 在Ranger中配置HDFS中Hive数据存放的文件(/apps/hive) 访问权限。配置方法参考上节HDFS多租户中的配置。
    b. 在Ambari YARN队列管理视图中增加一个队列用于对Hive应用的资源分配。增加和配置队列方法参考上节中配置YARN多租户的方法。
    c. 在Ambari中打开Ranger配置界面(Ranger->Configs->Advanced-> Hive Ranger Plugin),打开Hive Ranger Plugin。保存配置并重启受影响的组件。
    ocdp5.0安装部署文档 - 图103
    图4-4 配置Hive Ranger Plugin
    d. 打开Ranger界面,在Access Manager->Resource Based Policies下,选择HIVE->OCDP_hive,创建新策略(Add New Policy)。配置策略名,输入需要设定访问控制的表、列等,在用户和用户组权限中选择用户,或者组,并赋予相应的权限,如下图所示。
    ocdp5.0安装部署文档 - 图104
    列访问设置
    ocdp5.0安装部署文档 - 图105
    行过滤
    图4-5 Ranger配置Hive访问权限
    如果没有绑定用户和YARN队列,那么在连接命令中需要指定此Hive应用需要执行在哪个队列中(mapreduce.job.queuename)。如果不指定队列,默认会将Hive应用提交到default队列。

    4.4. 配置HBase权限由Ranger管理

    OCDP对HBase实现多租户的方案与Hive类似,即:
    · 由YARN多个队列实现多租户资源的分配
    · 由Ranger实现对多租户HDFS数据访问控制
    · 由Ranger实现对多租户HBase表、列族、列的访问控制。
    (1) 配置多租户资源和安全访问控制
    a. 在Ranger中配置HDFS中HBase数据存放的文件夹(/apps/hbase) 访问权限。配置方法参考上节HDFS多租户中的配置。
    b. 在Ambari YARN队列管理视图中增加一个队列用于对HBase应用的资源分配。增加和配置队列方法参考上节中配置YARN多租户的方法。
    c. 在Ambari中打开Ranger配置界面(Ranger->Configs->Advanced->Ranger Plugin),打开HBase Ranger Plugin。保存配置并重启受影响的组件。
    ocdp5.0安装部署文档 - 图106
    图5-1 配置HBase Ranger plugin
    d. 打开Ranger界面,在Access Manager->Resource Based Policies下,选择HBASE->OCDP_hbase,创建新策略(Add New Policy)。配置策略名,输入需要设定访问控制的表、列等,在用户和用户组权限中选择用户,或者组,并赋予相应的权限,如下图所示。
    ocdp5.0安装部署文档 - 图107
    图5-1 Ranger配置HBase访问权限
    (2) 验证HBase多租户
    ImportTsv是HBase自带的常用的将HDFS数据导入到HBase中的工具。其本质是MapReduce作业。在按上述配置完成HBase多租户配置后,使用ImportTsv工具可以看到用户是否能够有相应的权限将作业提交到相应的队列中,以及是否能够创建HBase的表。
    导入数据成功后,使用LDAP用户登录 HBase Shell查看是否能够对导入的表进行查询、修改等操作。如果用户没有权限,会在shell中报错,如下图所示。
    ocdp5.0安装部署文档 - 图108
    图5-2 HBase多租户权限验证

    5. Hadoop集群启用Kerberos

    5.1. 通过ambari界面开启集群kerberos

    ocdp5.0安装部署文档 - 图109
    ocdp5.0安装部署文档 - 图110
    ocdp5.0安装部署文档 - 图111
    ocdp5.0安装部署文档 - 图112
    ocdp5.0安装部署文档 - 图113
    ocdp5.0安装部署文档 - 图114
    ocdp5.0安装部署文档 - 图115
    ocdp5.0安装部署文档 - 图116
    ocdp5.0安装部署文档 - 图117
    ocdp5.0安装部署文档 - 图118

    如果看到上面界面,说明kerberos开启成功,接下来测试一下各个服务是否能正常访问,对异常的服务针对进行修复。

    5.2. 开启kerberos后各个组件的访问

    1. 默认集群管理员用户(ocdp)拥有访问集群的权限。
    2. kinit test/host@ocdp这种初始化方式是需要输入密码的,仅限于集群管理员使用。
    3.集群租户使用如下方式初始化(不需要密码):
    kinit -k -t test.keytab test/host@ocdp
    keytab 文件如下方式生成:
    kadmin.local -q “addprinc -randkey test/host@ocdp “
    kadmin.local -q “xst -k test-unmerged.keytab test/host@ocdp”
    ktutil
    rkt test-unmerged.keytab
    wkt test.keytab
    exit
    hdfs使用
    执行相关命令前需要使用kinit初始化keytab
    hive使用:
    beeline -u “jdbc:hive2://ochadoop10:10000/default;principal=hive/ochadoop10@ocdp” -n test/host@ocdp -p test
    beeline -u “jdbc:hive2://ochadoop10:10000/default;principal=hive/ochadoop10@ocdp” -n yinkp/ochadoop09@ocdp -p yinkp
    keytab形式需要先进行kinit keytab,再进行beeline连接。
    beeline -u “jdbc:hive2://host-10-1-236-51:10000/default;principal=hive/host-10-1-236-51@ocdp”
    ocdp5.0安装部署文档 - 图119
    我这边的kinit 的test2用户,由于test2用户没有库权限,所以报没有权限。但是访问kerberos OK。
    Hbase使用:
    进入Hbase shell 前需要执行相关命令前需要使用kinit初始化keytab
    Phoenix使用:
    进入Hbase shell 前需要执行相关命令前需要使用kinit初始化keytab
    ./sqlline.py 10.1.236.51:2181:/hbase-secure
    集成kerberos后,kafka访问方式:(必须使用主机名,如果是ip会报错)
    keytab初始化:
    kinit -kt ocdp.keytab ocdp@ocdp

    创建topic:
    /usr/hdp/current/kafka-broker/bin/kafka-topics.sh —zookeeper host-10-1-236-52:2181 —create —topic yinkp2 —replication-factor 1 —partitions 1

    查看topic:
    /usr/hdp/current/kafka-broker/bin/kafka-topics.sh —list —zookeeper host-10-1-236-52:2181

    创建生产者:
    /usr/hdp/current/kafka-broker/bin/kafka-console-producer.sh —broker-list dc-hadoop-dn-7:6667 —topic test —producer.config producer.properties

    创建消费者:
    /usr/hdp/current/kafka-broker/bin/kafka-console-consumer.sh —topic test —bootstrap-server dc-hadoop-dn-7:6667 —from-beginning —consumer.config consumer.properties

    必须使用主机名,如果是ip会报错
    ERROR An error: (java.security.PrivilegedActionException: javax.security.sasl.SaslException: GSS initiate failed

    6. 安装中可能遇到的问题

    6.1. datanode启动报错

    Error invalid HADOOP_YARN_HOME /Error invalid HADOOP_MRP_HOME 删除安装包重装

    6.2. kadmin配置只能是主机名,使用IP会报错

    ocdp5.0安装部署文档 - 图120

    6.3. ambari自动生成的repo文件url为空

    ocdp5.0安装部署文档 - 图121
    原因是界面配置的repo地址没有能够写入数据库中repo_definition表,导致在集群部署的step9组件安装报错。
    操作办法:
    在ambari数据库中执行(先修改url为实际的yum源地址):
    update repo_definition set base_url=”http://132.90.116.140/hdp/centos7/3.1.0.0-78/“ where repo_name=”HDP”;
    update repo_definition set base_url=”http://132.90.116.140/hdp-utils/centos7/1.1.0.22/“ where repo_name=”HDP-UTILS”;
    update repo_definition set base_url=”http://132.90.116.140/hdp-gpl/centos7/3.1.0.0-78/“ where repo_name= “HDP-GPL”;
    然后重启服务,不需要重新注册,页面会自动跳转到step9.
    有些情况HDP-GPL为官网地址,还需要再此更新为实际地址,再此重启ambari-server。

    6.4. ranger admin在mysql ha情况下因外键检查导致的patch执行失败

    ocdp5.0安装部署文档 - 图122
    解决办法:
    show global variables like “%check%”;
    set global foreign_key_checks=0;

    6.5. mysql driver 版本太新导致的rangerusersync用户未初始化成功

    rangerusersync用户未导入到ranger库
    这个问题直观的反映就是用户同步进程起来就报错,无法正常同步用户
    ocdp5.0安装部署文档 - 图123
    原因是mysql5用的驱动url是com.mysql.jdbc.Driver,mysql6以后用的是com.mysql.cj.jdbc.Driver,使用的driver包版本需要注意。
    ocdp5.0安装部署文档 - 图124

    6.6. hive thrift server 连接接失败


    ambari界面中显示的连接地址中namespace不对应该是hive,示例
    beeline -u ‘jdbc:hive2://d8pnode15:2181,d8pnode10:2181,d8pnode08:2181/default;principal=hive/_HOST@BJ.CUC;serviceDiscoveryMode=zooKeeper;user=ocdp;zooKeeperNamespace=hiveserver2’

    6.7. 启用kerberos后 namenode ui和rm ui访问认证失败

    如果必须采用客户端认证,请参考OCDP5.0-开启kerberos后访问web页面配置;
    如果不需要客户端认证,具体操作如下
    去掉web UI的kerberos认证:
    hadoop.http.authentication.simple.anonymous.allowed=true
    hadoop.http.authentication.type=simple
    然后重启受影响的服务,第二个参数在重新生成keytab后会恢复。

    6.8. Spark2 thrift server 链接失败

    [ocdp@d8pnode06]$ beeline -u “jdbc:hive2://d8pnode07:10016/default;principal=hive/_HOST@BJ.CUC”
    SLF4J: Class path contains multiple SLF4J bindings.
    SLF4J: Found binding in [jar:file:/usr/hdp/3.1.0.0-78/hive/lib/log4j-slf4j-impl-2.10.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: Found binding in [jar:file:/usr/hdp/3.1.0.0-78/hadoop/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
    SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
    Connecting to jdbc:hive2://d8pnode07:10016/default;principal=hive/_HOST@BJ.CUC
    19/01/27 12:30:50 [main]: WARN jdbc.HiveConnection: Failed to connect to d8pnode07:10016
    Unknown HS2 problem when communicating with Thrift server.
    Error: Could not open client transport with JDBC Uri: jdbc:hive2://d8pnode07:10016/default;principal=hive/_HOST@BJ.CUC: Peer indicated failure: GSS initiate failed (state=08S01,code=0)
    Beeline version 3.1.0.3.1.0.0-78 by Apache Hive
    目前还未解决。
    6.9. Spark2 thrift server 启动失败
    ocdp5.0安装部署文档 - 图125
    驱动版本问题。
    将驱动版本改为 5.1.39,重启解决。
    6.10.开启 kerberos 遇到的问题
    集群规模在 550 台左右,开启 kerberos 耗时长,最终失败
    ocdp5.0安装部署文档 - 图126
    解决办法:缩容至 50 台后,开启 kerberos,然后扩容
    需要注意的问题:在集群安装完毕后/在开启 Kerberos 前,最好将元数据导出备
    份。