全站最帅😎
发布于 2020-06-17 / 2063 阅读
0
0

CDH安装指南

一、准备工作

  1. 安装jdk

  2. 修改host文件并且主机之间配置SSH连接

  3. 所有节点创建 /data01 目录

  4. 主节点 /data01 放入以下4个文件

    cloudera-manager-centos7-cm5.7.2_x86_64.tar
    CDH-5.7.2-1.cdh5.7.2.p0.18-el7.parcel.sha
    CDH-5.7.2-1.cdh5.7.2.p0.18-el7.parcel
    manifest.json

  5. 所有从节点 /data01 放入 cloudera-manager-centos7-cm5.7.2_x86_64.tar 文件

二、关闭防火墙

所有节点 关闭防火墙

systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl status firewalld.service
setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=disabled/g'   /etc/selinux/config
sed -i 's/^SELINUX=.*/SELINUX=disabled/g'   /etc/sysconfig/selinux
cat  /etc/selinux/config|grep SELINUX=

如果cat /etc/selinux/config|grep SELINUX=最下面行显示为:SELINUX=disabled 说明Selinux禁用成功

三、设置时区与集群时间同步

timedatectl set-timezone "Asia/Shanghai"

所有节点 安装ntp服务

yum -y install ntp

所有节点 备份原始配置文件

cp /etc/ntp.conf /etc/ntp.conf.bak

修改 主节点 配置文件

vim  /etc/ntp.conf

​ 将其他server都注释掉,加入以下语句

​ server 127.127.1.1

主节点 上启动ntp服务

systemctl restart ntpd
systemctl enable ntpd

其他节点 上和主节点同步时间,并开启ntp服务

ntpdate kinhood00
systemctl start ntpd

修改 其他节点 上的配置文件

vim /etc/ntp.conf 

​ 加入以下语句,让其他节点与主节点同步时间

​ server 10.110.200.155

更改完毕之后重启 其他节点 ntp服务

systemctl restart ntpd
systemctl enable ntpd

四、排除CDH集群性能影响因素

以下操作针对于 所有节点

  1. 关闭THP

    echo never > /sys/kernel/mm/transparent_hugepage/enabled
    echo never > /sys/kernel/mm/transparent_hugepage/defrag
    
  2. 修改swappiness

    echo "vm.swappiness=0" >> /etc/sysctl.conf 
    sysctl -p    #让配置生效
    cat /proc/sys/vm/swappiness
    

五、安装MariaDB

主节点 上安装MariaDB,执行以下命令。(凡是涉及数据库的操作,未经说明都是在 主节点 上进行)

yum -y install  mariadb-server   mariadb
systemctl start mariadb.service
systemctl enable mariadb.service

进入数据库设置root用户的登录权限 mysql -uroot -p (第一次登录没有密码)

use mysql;
update user  set  password=password( '123456' ) where user= 'root' ;
grant all privileges on *.* to root@'%' identified by '123456';
grant all privileges on *.* to root@'kinhood00' identified by '123456';
grant all privileges on *.* to root@'localhost' identified by '123456';
FLUSH PRIVILEGES;

修改 mariadb 数据目录

##先停掉进程(服务)
systemctl stop mariadb.service

##复制原来的配置到硬盘(挂载在/data01)
cp -r /var/lib/mysql/ /data01/ 

##备份原来的配置
mv /var/lib/mysql/ /var/lib/mysql.bak/ 

##修改硬盘中配置文件夹的权限
chown -R mysql:mysql /data01/mysql

##创建软链接
ln -s /data01/mysql/ /var/lib/mysql 

##重启mariadb
systemctl restart mariadb 

设置数据库编码

# 备份配置文件
cp /etc/my.cnf /etc/my.cnf.bak
# 修改配置文件
vim  /etc/my.cnf

在 [mysqld] 下加入

character_set_server = utf8 

重启数据库

systemctl restart mariadb 

重新登录数据库,查看编码是否设置成功

SHOW VARIABLES LIKE 'character%';
SHOW VARIABLES LIKE 'collation_%';

所有节点 安装同一版本的mysql-connector驱动

yum -y install mysql-connector-java

所有节点 安装其他依赖

yum -y install psmisc
yum -y install perl
yum -y install  nfs-utils  portmap
systemctl start rpcbind
systemctl enable rpcbind

登录mariadb创建 **hive **和 oozie 的数据库,执行以下sql

create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database monitor DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
CREATE USER 'hive'@'localhost' IDENTIFIED BY 'hive'; 
GRANT ALL PRIVILEGES ON hive.* TO 'hive'@'localhost'; 
CREATE USER 'hive'@'%' IDENTIFIED BY 'hive'; 
GRANT ALL PRIVILEGES ON hive.* TO 'hive'@'%'; 
CREATE USER 'hive'@'kinhood00'IDENTIFIED BY 'hive';  
GRANT ALL PRIVILEGES ON hive.* TO 'hive'@'kinhood00';

CREATE USER 'oozie'@'localhost' IDENTIFIED BY 'oozie'; 
GRANT ALL PRIVILEGES ON oozie.* TO 'oozie'@'localhost';  
CREATE USER 'oozie'@'%' IDENTIFIED BY 'oozie'; 
GRANT ALL PRIVILEGES ON oozie.* TO 'oozie'@'%'; 
CREATE USER 'oozie'@'kinhood00'IDENTIFIED BY 'oozie';  
GRANT ALL PRIVILEGES ON oozie.* TO 'oozie'@'kinhood00'; 

CREATE USER 'monitor'@'localhost' IDENTIFIED BY 'monitor'; 
GRANT ALL PRIVILEGES ON monitor.* TO 'monitor'@'localhost';  
CREATE USER 'monitor'@'%' IDENTIFIED BY 'monitor'; 
GRANT ALL PRIVILEGES ON monitor.* TO 'monitor'@'%'; 
CREATE USER 'monitor'@'kinhood00'IDENTIFIED BY 'monitor';  
GRANT ALL PRIVILEGES ON monitor.* TO 'monitor'@'kinhood00'; 
FLUSH PRIVILEGES;  

六、安装CM

所有节点 进入 /data01 目录,并解压 cdh 安装包

cd /data01
tar -zxvf cloudera-manager-centos7-cm5.7.2_x86_64.tar.gz -C /opt/

所有节点 创建cloudera-scm用户授予sudo权限

useradd --system --home=/opt/cloudera-manager/cm-5.7.2/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm

usermod -aG wheel cloudera-scm

所有节点 设置agent向server发送心跳

sed -i "s/^server_host=.*/server_host=kinhood00/g" /opt/cm-5.7.2/etc/cloudera-scm-agent/config.ini

然后确认是否修改成功,如果为server_port = kinhood00 则修改成功

cat  /opt/cm-5.7.2/etc/cloudera-scm-agent/config.ini|grep  server_host

主节点 设置数据库驱动

ln -s  /usr/share/java/mysql-connector-java.jar /opt/cm-5.7.2/share/cmf/lib/mysql-connector-java.jar

主节点 创建文件夹

mkdir /var/cloudera-scm-server
chown -R cloudera-scm:cloudera-scm /var/cloudera-scm-server
chown -R cloudera-scm:cloudera-scm /opt/cloudera*

所有节点 创建文件夹

mkdir -p /opt/cloudera/parcels
chown cloudera-scm:cloudera-scm /opt/*

主节点 从 /data01 下复制所有安装文件

cp /data01/CDH-5.7.2-1.cdh5.7.2.p0.18-el7.parcel   /opt/cloudera/parcel-repo/

cp /data01/CDH-5.7.2-1.cdh5.7.2.p0.18-el7.parcel.sha   /opt/cloudera/parcel-repo/CDH-5.7.2-1.cdh5.7.2.p0.18-el7.parcel.sha

cp /data01/manifest.json   /opt/cloudera/parcel-repo/

chown -R cloudera-scm:cloudera-scm /opt/cloudera*

ll /opt/cloudera/parcel-repo

所有节点 修改 CDH 在线安装过程中的报错脚本

vim /opt/cm-5.7.2/lib64/cmf/agent/build/env/lib/python2.7/site-packages/cmf-5.7.2-py2.7.egg/cmf/client_configs.py
# 442行开始(每台主机都修改):
    for line in output.splitlines():
      if line.startswith("/"):
        if len(line.rstrip().split(" "))<=4:
          path, _, _, priority_str = line.rstrip().split(" ")

          # Ignore the alternative if it's not managed by CM.
          if CM_MAGIC_PREFIX not in os.path.basename(path):
            continue

          try:
            priority = int(priority_str)
          except ValueError:
            THROTTLED_LOG.info("Failed to parse %s: %s", name, line)

          key = ClientConfigKey(name, path)
          value = ClientConfigValue(priority, self._read_generation(path))
          ret[key] = value
        else:
          pass
    return ret

主节点 初始化数据库

/opt/cm-5.7.2/share/cmf/schema/scm_prepare_database.sh mysql -hkinhood00 -uroot -pSkycaster357 --scm-host kinhood00 scmdbn scmdbu scmdbp

如果出现 All done,your SCM database is configured correctly!表明以上步骤全部正确

主节点 上启动 CM server

/opt/cm-5.7.2/etc/init.d/cloudera-scm-server start
/opt/cm-5.7.2/etc/init.d/cloudera-scm-server status

所有节点 启动 cloudera-scm-agent

/opt/cm-5.7.2/etc/init.d/cloudera-scm-agent start
/opt/cm-5.7.2/etc/init.d/cloudera-scm-agent status

停止CM的命令,直接在 所有节点 上执行以下命令

/opt/cm-5.7.2/etc/init.d/cloudera-scm-agent stop
/opt/cm-5.7.2/etc/init.d/cloudera-scm-server stop

七、安装CDH和相关服务

  1. 通过kinhood00:7180 进入CDH在线安装界面,默认用户名和密码为 admin, admin

  2. 选择对应免费版本,如下图

    uFIygH.png

  3. 为CDH集群安装指定主机,这里选择全部的主机。

    uFoEa6.png

  4. 选择本地Parcel进行安装。

    uFo3Zt.png

  5. 然后等待主机分发 parcel 包并解压激活完成。

    uFoNRg.png

  6. 等待检查主机正确性,如有警告则按照说明去解决即可。

  7. 安装服务,这里我们选择自定义服务,包含HBase、HDFS、Yarn、Zookeeper,然后点击下一步。

  8. 分配集群角色,分配规则是

    • HMaster分配在内存多的两台主节点上,HBase其他服务分配到其他节点上。RegoinServer和DataNode保持一致。

    • NameNode分配在主节点上,SecondaryNameNode分配置其他节点,然后HDFS其他服务在其他节点分配,DataNode在所有主机上都分配。且DataNode起码得保证有三个节点。

    • Zookeeper在所有主机上都分配,且最好保持单数。

  9. 分配好角色之后点击下一步,配置DataNode和NameNode的数据目录。

    DN为:/data01/dfs/dn,/data02/dfs/dn。

    NN为:/data01/dfs/nn,/data02/dfs/nn。

    uFTv3F.png

  10. 配置完成后,CDH会自动开始安装服务,包括初始化的工作都是自动完成。如图表示安装成功:

    uF7o8O.png

  11. 大功告成。


评论