Centos7 离线安装 CDH7.1.7

1. 安装CDH的准备工作(所有节点都要执行)

1.1 准备环境

|----------------|-----------------|
| 角色 | IP |
| k8s-master | 192.168.181.129 |
| k8s-node1 | 192.168.181.130 |
| k8s-node2 | 192.168.181.131 |

1.2 安装JDK

# https://www.oracle.com/java/technologies/downloads/#java11
wget 
rpm -ivh jdk-11.0.21_linux-x64_bin.rpm

$. vi /etc/profile
JAVA_HOME=/usr/java/jdk-11/
CLASSPATH=.:$JAVA_HOME/lib/jrt-fs.jar
PATH=$JAVA_HOME/bin:$HOME/bin:$HOME/.local/bin:$PATH

1.3 更改主机名和hosts

# 更改3台主机hostname,每个主机上按ip递增的顺序,分别执行下面一条命令:
 
# echo "bigdata01.dpcg.com" > /etc/hostname
# echo "bigdata02.dpcg.com" > /etc/hostname
# echo "bigdata03.dpcg.com" > /etc/hostname

# ===================================================== # 
# 在3台机器中分别执行如下命令:
# echo "10.101.15.229    bigdata01.dpcg.com    bigdata01" >> /etc/hosts
# echo "10.101.15.230    bigdata02.dpcg.com    bigdata02" >> /etc/hosts
# echo "10.101.15.231    bigdata03.dpcg.com    bigdata03" >> /etc/hosts

# use 
cat >> /etc/hosts << EOF
192.168.31.52 cdh-master-52 cdh-master-52.com
192.168.31.53 cdh-node1-53 cdh-node1-53.com
192.168.31.54 cdh-node2-54 cdh-node2-54.com
192.168.31.55 cdh-node3-55 cdh-node3-55.com
EOF

1.4 关闭防火墙

并重启服务器使hostname和selinux的配置生效

$. systemctl stop firewalld
$. systemctl disable firewalld
$. systemctl status firewalld
$. sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config

$. getenforce
$. sestatus -v

1.5 安装NTP服务

#在所有节点
$. yum -y install ntp
 
# 在master节点,注释掉原有的server指向把时间服务器的域名地址指向一个靠谱可连的时间服务器,
# 我选择的是ntp.api.bz.
$. vi /etc/ntp.conf
    ......
    # 添加修改上层时间服务器,如果能联通外网,则不需要修改
    server 0.centos.pool.ntp.org iburst
    server 1.centos.pool.ntp.org iburst
    server 2.centos.pool.ntp.org iburst
    server 3.centos.pool.ntp.org iburst
    # server ntp.api.gz iburst
......
 
# 在其余的节点上,把时间服务器的server指向master namenode节点
$. vi /etc/ntp.conf
     ......
    #server 0.centos.pool.ntp.org iburst
    #server 1.centos.pool.ntp.org iburst
    #server 2.centos.pool.ntp.org iburst
    #server 3.centos.pool.ntp.org iburst
    server 172.17.28.1 iburst
......
 
# 在所有节点
systemctl enable ntpd --now
systemctl status ntpd
systemctl start ntpd
systemctl restart ntpd

#查询上级服务时间
[root@localhost etc]# ntpq -p

#查看时间同步状态 
[root@localhost etc]# ntpstat

1.6 关闭透明大页

echo "echo never > /sys/kernel/mm/transparent_hugepage/enabled" >> /etc/rc.local
echo "echo never > /sys/kernel/mm/transparent_hugepage/defrag" >> /etc/rc.local

1.7 磁盘写进fstab

lsblk -f | egrep '\/[a-z]+' | awk '{print "UUID="$(NF-1)"\t"$NF"\t"$(NF-2)"\t""defaults,noatime""\t""0 0"}'| sort -k2 >> /etc/fstab 

1.8 其它调优

1. 设置最大可大开文件数
    * soft nofile 10240
    * hard nofile 10240
    * soft nproc 65565
    * hard nproc 65565

2. TCP连接优化
    # 查看连接数(一般默认1024)
    netstat -an|wc -l
    
    # 查看连接数范围
    cat /proc/sys/net/ipv4/ip_local_port_range
    
    # 打开 vi /etc/sysctl.conf 文件后在文件末尾加上如下配置:  
    $. vi /etc/sysctl.conf
    net.ipv4.tcp_syncookies = 1
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_tw_recycle = 1
    net.ipv4.tcp_fin_timeout = 30
    
    # 端口范围
    net.ipv4.ip_local_port_range = 1024 65000
    或者执行:
    echo net.ipv4.ip_local_port_range = 1024 65000 >> /etc/sysctl.conf
                
    echo "net.ipv4.ip_forward=1" >>/etc/sysctl.conf
    # 验证, 输入命令: 
    sysctl net.ipv4.ip_forward, 返回为1即可
    
    # 通过命令行设置: 
    sysctl -w net.ipv4.ip_forward=1
    net.ipv4.ip_forward = 1
    # 执行生效即可        
    sysctl -p

# ============================================================ # 
# 永久关闭Swap步骤: 
1. swapoff -a # 临时关闭
2. 永久关闭
    编辑/etc/fstab文件, 使用文本编辑器打开该文件: 
    vi /etc/fstab
    在文件中找到含有swap的行, 并在行首添加#注释符, 以将其注释掉。例如: 
    # /dev/mapper/centos-swap swap               swap    defaults        0 0
    或者是

    # UUID=<swap分区的UUID>       none     swap    sw          0 0
    保存并关闭文件。

    重新启动系统。
    reboot

3. 执行以下命令来验证Swap是否已经被禁用: 
    free -h
    现在, Swap已经被永久关闭了。

2. CDH版本选择

old:
CDH版本选择:建议5.4.8和5.8.0版本,如需要版本较高可以选择5.12版本,目前6.x版本还没有使用过,请注意,千万不要选择5.11.0版本。
这里选择最新版本6.3.2。
在CDH5版本中,JDK一般安装为JDK8,还需要安装python环境,可以选择python2.6.X或者python2.7.x都可以。

now:

最新版本为:Index of cm6/6.3.1/redhat7/yum/RPMS/x86_64/

https://www.cloudera.com/downloads.html

3. CDH的安装方式选择

方式一: rpm包安装:

  • 先离线下载rpm文件,再进行安装,安装过程中会下载相应的依赖,比较稳定,但安装要求较高。
  • 此安装方式开始配置时较麻烦,但之后安装很方便,建议使用,具体安装方式请参考上述相关文章链接中的第五章CDH的安装和部署。

方式二: bin文件安装:

方式三: tar包安装

不是很了解tar包的安装方式,但使用tar包安装会有依赖未安装而造成安装失败的异常,不建议使用。

4. CDH的下载

4.1. cm的tar包下载

cm6.3.1下载地址:https://archive.cloudera.com/cm6/6.3.1/repo-as-tarball/

下载allkeys.asc文件:

4.2. parcels包下载

cdh6.3.2下载地址:https://archive.cloudera.com/cdh6/6.3.2/parcels/

请选择对应的版本,el7,并将后缀.sha1更改为.sha。

5. 配置CDH的离线安装

目的:将上述下载的4个文件上传到centos7服务器中,并配置好离线服务,安装时即可以从该离线服务中下载,不需要再从官网中去下载,防止网络错误。

5.1 在master节点上安装httpd

# 查看该centos7是否存在httpd服务
rpm -qa|grep httpd
 
# 如果不存在该服务就安装
yum install -y httpd
 
# 启动该服务
systemctl start httpd.service #启动
systemctl stop httpd.service #停止
systemctl restart httpd.service #重启
 
# 设置该服务是否开机启动
systemctl enable httpd.service #开机启动
systemctl disable httpd.service #开机不启动
 
# 查看该服务的状态
systemctl status httpd.service

当访问该服务器的80端口出现如下画面即为安装和启动成功

5.2 创建 parcels文件

# 在/var/www/html下创建一个parcels文件夹,并将上述下载的3个文件上传到该目录下
cd /var/www/html/
mkdir cdh6.3.2/parcels -p
# 上传如下3个文件
CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel
CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha
manifest.json
 
# 校验文件下载未损坏
/usr/bin/sha1sum CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel
cat CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha

如果2个验证码一样,证明该文件未损坏,可以使用:

在浏览器中能打开如下网址,证明配置成功:

http://10.101.15.229/cdh6.3.2/parcels/

5.3 创建cm文件

# 在/var/www/html创建cm5/redhat/7/x86_64/文件夹(和官网一样的路径)
cd /var/www/html/
mkdir -p cm6/redhat/7/x86_64/cm 
 
# 上传cm6.3.1-redhat7.tar.gz包到/var/www/html目录下,并解压
tar -xf cm6.3.1-redhat7.tar.gz
mv cm6.3.1 6.3.1
 
# 将解压好的文件夹移动到上述创建的文件夹下
mv 6.3.1 /var/www/html/cm6/redhat/7/x86_64/cm
 
!上传allkeys.asc文件到/var/www/html/cm6/redhat/7/x86_64/cm/6.3.1 文件夹下
 
# 配置本地的yum源,cdh集群在安装时会就从本地down包,不会从官网了,
# 注意: 所有节点都要执行!!!
vim /etc/yum.repos.d/cloudera-manager.repo
 
#在该文件下插入如下数据
[cloudera-manager]
name=Cloudera Manager
baseurl= http://10.101.15.229/cm6/redhat/7/x86_64/cm/6.3.1/
gpgkey = http://10.101.15.229/cm6/redhat/7/x86_64/cm/6.3.1/RPM-GPG-KEY-cloudera    
gpgcheck = 1

在浏览器中出现如下界面:

http://10.101.15.229/cm6/redhat/7/x86_64/cm/6.3.1/

5.4 安装CM的server+agent

# 进入上述创建的CM的文件目录下
# cd /var/www/html/cm5/redhat/7/x86_64/cm/5.7.0/RPMS/x86_64/
cd /var/www/html/cm6/redhat/7/x86_64/cm/6.3.1/RPMS/x86_64/
 
# 安装cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm
yum install cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm
 
# 安装cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm,
# 请注意,不用安装db版本的,那是使用默认数据库的,在生产环境中一般不使用,
# 生产环境中是使用MySQL数据库的
yum -y install cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm

5.5 配置Postgresql数据库

在master节点上安装postgre数据库,安装过程参考: centos7系统下postgresql11离线安装,卸载

数据库安装完成后,创建名称为cdh的数据库实例。

修改 /etc/cloudera-scm-server/db.properties 内容如下:

com.cloudera.cmf.db.type=postgresql
com.cloudera.cmf.db.host=10.101.15.229:5432
com.cloudera.cmf.db.name=cdh
com.cloudera.cmf.db.user=postgres
com.cloudera.cmf.db.password=123456
#com.cloudera.cmf.db.setupType=EXTERNAL 
 
#注意:最后一行要注释掉,否则会报INVALID value is specified for db.setupType的异常

5.6 启动cloudera-scm-server服务并查看日志

#启动
service cloudera-scm-server start
service cloudera-scm-server status
 
service cloudera-scm-server restart
 
# 在启动时有可能碰到The server time zone value 'EDT' is unrecognized异常,
# 这是mysql的时区和系统的时区不匹配,可以参考如下网站解决
https://blog.csdn.net/u010003835/article/details/88974898
 
#查看日志
cd /var/log/cloudera-scm-server/
tail -f cloudera-scm-server.log
# 出现如下7180即证明启动成功
WebServerImpl:org.mortbay.log: Started SelectChannelConnector@0.0.0.0:7180

成功图片如下所示:

此时查看Postgre数据库,会发现cmf数据库下回自动创建表:

5.7 在浏览器的web页面上安装CM

当service cloudera-scm-server start启动成功后,即可以在浏览器上服务7180端口(需开放防火墙)。

登录CM的web界面

在浏览器中输入http://10.101.15.229:7180/cmf/login ,登录CM的web界面,账号和密码均为admin:

点击同意许可:

点击继续:

选择CM的版本:

欢迎页面,点击继续:

设置集群名称:

使用搜索模式,搜索需要安装CDH的主机:

5.8 在浏览器的web页面上安装CDH集群

选择存储库

点击更多选项,将其他远程Parcel删除,并输入先前配置好的Parcel:

http://10.101.15.229/cm6/redhat/7/x86_64/cm/6.3.1/

http://10.101.15.229/cdh6.3.2/parcels/

是否需要安装JDK

默认不进行安装,直接下一步:

提供 SSH 登录凭据

提供 SSH 登录凭据,可以自由选择,这里直接使用root用户:

点击继续

安装选定Parcel

先前配置的Parcel就作用于此处,如果不进行此配置会去官网进行下载,对网络要求很高,并网络中断后会重新下载,较麻烦,使用此配置可以直接下载成功,并速度很快:

完成安装

5.8 集群设置

5.8.1 选择服务

5.8.2 自定义角色分配

自定义角色分配,一般将主色分配到master节点,所以该节点内存要大,zookeeper需要安装奇数台,这里是只安装了一台,不合理,请安装3台以上的奇数台:

5.8.3 数据库设置

进行数据库设置,这里使用Postgre数据库:

5.8.4 审核更改

此步骤中不管是开发测试还是生产环境,均不需要更改,直接点击继续,进行下一步:

5.8.5 审核更改

首次运行,会自动运行,运行之后点击继续按钮即可:

6. 安装成功:

此状态为主机配置较低,运行不良,对集群无影响,可以正常工作。

7. 安装kerberos(选装)

(一般人不需要安这个玩意儿,到此cdh安装就结束了)

# 安装kerberos,注意要安装1.15.1-50.el7版本左右的,不能太低,不然CDH开启kerberos报错
# kerberos 1.15.1-50.el7版本在CentOS-7-x86_64-DVD-2009.iso镜像的yum源里就有
# 选择一个节点安装kerberos服务端
yum -y install krb5-server openldap-clients
 
# 所有节点安装客户端及相关库
yum install -y krb5-workstation krb5-libs
 
# 所有节点修改krb5.conf
sudo vi /etc/krb5.conf
 
# 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 = kunlun.test
# default_ccache_name = KEYRING:persistent:%{uid}
[realms]
 kunlun.test = {
  kdc = bjzj1-vbig-tmp02
  admin_server = bjzj1-vbig-tmp02
 }
 
[domain_realm]
 .bjzj1-vbig-tmp02 = kunlun.test
 bjzj1-vbig-tmp02 = kunlun.test
 
 
# kerberos服务节点修改kdc.conf
sudo vi /var/kerberos/krb5kdc/kdc.conf
 
# kdc.conf示例内容如下:
[kdcdefaults]
 kdc_ports = 88
 kdc_tcp_ports = 88
[realms]
 kunlun.test = {
  #master_key_type = aes256-cts
  max_renewable_life = 7d 0h 0m 0s
  default_principal_flags = +renewable
  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
 }
  max_life = 24h
 
# kerberos服务节点修改kadm5.acl
sudo vi /var/kerberos/krb5kdc/kadm5.acl
 
# kadm5.acl示例内容如下:
*/admin@kunlun.test     *
 
#创建数据库
kdb5_util create -r kunlun.test -s
 
# 开启kdc、kadmin服务
sudo systemctl start krb5kdc
sudo systemctl start kadmin
systemctl enable krb5kdc 
systemctl enable kadmin
 
# 创建管理员账户,用于CDH开启kerberos时自动创建principal
kadmin.local:
              addprinc admin/admin
# 记得创建完后测试下该用户