版本信息:
Cloudera Manager版本:cdh5.16.2
CDH版本:cm5.16.2
Linux系统版本:SentOS7.4
Mariadb版本:mariadb5.5+

1、前置准备

1.1、IP、hostname、hosts配置

  1. 本机虚拟机需要配置静态ip(所有)

作为服务器需要固定IP地址,配置静态IP主要是为了固定IP
centos7:nmcli conn modify ens192 ipaddr 192.168.0.200
nmcli conn show

  1. vi /etc/sysconfig/network-scripts/ifcfg-ens**(根据本机网卡名来,table补全)
  2. 以下共参考,配置DEFROUTE以及本机对应ip网关等
  3. BOOTPROTO="static"
  4. DEFROUTE="yes"
  5. IPV4_FAILURE_FATAL="no"
  6. NAME="ens33"
  7. UUID="084b4e1b-2b19-465d-bd25-4de35cd407e6"
  8. DEVICE="ens33"
  9. ONBOOT="yes"
  10. IPADDR="192.168.92.130"
  11. PREFIX="24"
  12. GATEWAY="192.168.92.2"
  13. DNS1="192.168.92.2"
  14. IPV6_PEERDNS="yes"
  15. IPV6_PEERROUTES="yes"
  16. IPV6_PRIVACY="no"

image.png

  1. 修改主机名(所有)
  1. # 方法1:
  2. hostnamectl set-hostname 主机名
  3. # 方法2:
  4. echo 主机名 > /etc/hostname
  5. # 方法3:
  6. vi /etc/hostname

image.png

  1. 配置IP映射(所有)

在每台节点/etc/hosts文件后追加如下内容,配置ip与hostname之间的映射

  1. vi /etc/hosts
  2. ip地址 主机名
  3. 192.168.0.200 cdh1.macro.com
  4. 192.168.0.221 cdh2.macro.com
  5. 192.168.0.222 cdh3.macro.com

image.png

2.1、关闭防火墙(所有)

  1. systemctl stop firewalld
  2. systemctl disable firewalld
  3. systemctl status firewalld

image.png

3.1、禁用SELinux

  1. 所有节点关闭SELinux

    1. 临时关闭SELinux
    2. setenforce 0

    image.png

  2. 集群所有节点修改/etc/selinux/config文件如下(重启才能生效,所以需要配置上面的临时关闭): ```shell vi /etc/selinux/config 配置如下信息,限制开机自启

SELINUX=disabled SELINUXTYPE=targeted

  1. ![image.png](https://cdn.nlark.com/yuque/0/2020/png/2680099/1606024909512-c061ccf6-d7da-41aa-9ed4-b0d222d8758a.png#align=left&display=inline&height=202&margin=%5Bobject%20Object%5D&name=image.png&originHeight=202&originWidth=1349&size=26167&status=done&style=none&width=1349)
  2. 3. 检查所有机器是否已修改成功:
  3. ```shell
  4. cat /etc/selinux/config

image.png

4.1、设置swappiness

  1. 注意:swappiness是Linux的一个内核参数,控制系统在进行swap时,内存使用的相对权重,范围在0到100之间。数值越低,就会让Linux系统尽量少用swap分区,多用内存;参数值越高相反
  2. 所有节点设置swappiness值

    1. sysctl vm.swappiness=1
    2. echo 1 > /proc/sys/vm/swappiness
    3. cat /proc/sys/vm/swappiness

    image.png

    5.1、关闭透明大页面

  3. 注意:在RAC环境下,透明巨页(THP)会导致异常节点重启和性能问题;在单机环境中,透明巨页(THP)也会导致一些异常的性能问题;

  4. 所有节点执行关闭透明大页面

    1. echo never > /sys/kernel/mm/transparent_hugepage/defrag
    2. cat /sys/kernel/mm/transparent_hugepage/defrag
    3. echo never > /sys/kernel/mm/transparent_hugepage/enabled
    4. cat /sys/kernel/mm/transparent_hugepage/enabled

    image.png

  5. 所哟节点设置开机自关闭,将如下配置信息添加到 vi /etc/rc.d/rc.local文件末尾

    1. if test -f /sys/kernel/mm/transparent_hugepage/enabled; then echo never > /sys/kernel/mm/transparent_hugepage/enabled
    2. fi
    3. if test -f /sys/kernel/mm/transparent_hugepage/defrag; then echo never > /sys/kernel/mm/transparent_hugepage/defrag
    4. fi

    image.png

  6. 赋权限

    1. cat /etc/rc.d/rc.local
    2. chmod +x /etc/rc.d/rc.local
    3. ls -l /etc/rc.d | grep rc.local

    image.png

    6.1、获取相关包

  7. 下载地址

SentOS下载地址:https://www.centos.org/download/
cm下载地址:http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/
cdh下载地址:http://archive.cloudera.com/cdh5/parcels/
mysql-connetor下载地址:https://dev.mysql.com/downloads/connector/j/

  1. 下载相关包通过MobaXterm上传至Linux系统

image.png

  1. 相关包赋予755权限

    1. chmod 755 /包名/*

    2、依赖应用安装配置

    2.1、yum源配置

    2.1.1、httpd服务安装

  2. 下载httpd服务

    1. yum -y install httpd

    image.png

  3. 启动httpd服务

    1. systemctl start httpd
    2. systemctl status httpd
    3. systemctl enable httpd

    image.png

    2.1.2、部分yum无法下载,需配置repo本地源地址。

  4. 如果/etc/yum.repos.d/下有内容,将其CentOS-*开头的所有文件删除或移动

    1. mkdir /etc/yum.repos.d/allrepo/
    2. mv /etc/yum.repos.d/CentOS-* /etc/yum.repos.d/allrepo/
    3. yum repolist
  5. 挂载iso镜像至本地

    1. 创建本地挂载路径
    2. mkdir /DVD1
    3. mount -o loop /镜像路径 /DVD1
  6. 配置yum源文件

    1. vi /etc/yum.repos.d/local_os.repo
    2. 复制以下内容按i开始粘贴:
    3. [local_os_repo]
    4. name=local_os_repo
    5. baseurl=file:///DVD1
    6. enabled=true
    7. gpgcheck=false
  7. 保存退出后执行:

    1. yum repolist
  8. 注意:执行完毕local_os_repo是有状态的,若状态为0,请检查路径

    2.1.3、配置OS的repo源

  9. 直接挂载iso镜像文件到htpd的跟访问路径/var/www/html/iso

    1. mkdir /var/www/html/iso
    2. mount -o loop /home/SentOS-******* /var/www/html/iso/

    image.png

  10. 移动上传至本地的cm、cdh等离线包到/var/www/html/(这里我上传的是/home目录)

    1. mv /home/cm5.16.2 /var/www/html/
    2. mv /home/cdh5.16.2 /var/www/html/

    image.png

  11. 查看以上步骤是否成功

访问 http://192.168.0.200:80/iso (可以通过 netstat -ntpl 查看本地端口 没有netstat命令用 yun -y install net-tools下载 )
image.png

  1. 配置os源

    1. vi /etc/yum.repos.d/os.repo
    2. [osrepo]
    3. name=os_repo
    4. baseurl=http://192.168.92.200:80/iso
    5. enabled=true
    6. gpgcheck=false

    image.png

    2.1.4、配置CM的repo源

  2. 在cm5.16.2目录下执行createrepo . 创建cm5.16.2的yum源

    1. cd /var/www/html/cm5.16.2/
    2. createrepo .
    3. ll

    image.png

  3. 以上步骤报错找不到createrepo命令需要先下载再执行

    1. yum -y install createrepo
    2. cd /var/www/html/cm5.16.2/
    3. createrepo .
  4. 配置cm的repo源文件

    1. vi /etc/yum.repos.d/cm.repo
    2. 复制一下内容按 i 开始粘贴
    3. [cmrepo]
    4. name=cm_repo
    5. baseurl=http://192.168.0.200/cm5.16.2/
    6. enabled=true
    7. gpgcheck=false

    image.png

    2.1.5、分发yum源

  5. 分发yum源至所有从节点

    1. scp -r /etc/yum.repos.d root@cdh2.macro.com:/etc/
    2. scp -r /etc/yum.repos.d root@cdh3.macro.com:/etc/
  6. 所有机器执行清空所有yum repo ,列出所有的yum repo。

    1. yum clean all
    2. yum repolist

    image.png

  7. 注意注意执行完cm_repo的状态是不为零的,如果状态为0,请检查os源位置或者端口是否正确

    2.2、安装MariaDB

  8. 主节点上下载mariadb及服务

    1. yum -y install mariadb mariadb-server

    image.png

  9. 启动并配置MariaDB ```shell systemctl start mariadb systemctl status mariadb systemctl enable mariadb /usr/bin/mysql_secure_installation

首先是设置密码,会提示先输入密码 Enter current password for root (enter for none):<–初次运行直接回车 设置密码 Set root password? [Y/n] <– 是否设置root用户密码,输入y并回车或直接回车 New password: <– 设置root用户的密码 Re-enter new password: <– 再输入一次你设置的密码 其他配置 Remove anonymous users? [Y/n] <– 是否删除匿名用户,回车 Disallow root login remotely? [Y/n] <–是否禁止root远程登录,回车, Remove test database and access to it? [Y/n] <– 是否删除test数据库,回车 Reload privilege tables now? [Y/n] <– 是否重新加载权限表,回车 初始化MariaDB完成,接下来测试登录 mysql -uroot -p 完成。

mysql -uroot -p123456

  1. ![image.png](https://cdn.nlark.com/yuque/0/2020/png/2680099/1606031261666-09937888-1de3-4cc5-89ef-4de978ddb154.png#align=left&display=inline&height=474&margin=%5Bobject%20Object%5D&name=image.png&originHeight=474&originWidth=964&size=80352&status=done&style=none&width=964)
  2. 3. 建立CMHive等需要的表
  3. ```shell
  4. create database metastore default character set utf8;
  5. CREATE USER 'hive'@'%' IDENTIFIED BY 'password';
  6. GRANT ALL PRIVILEGES ON metastore. * TO 'hive'@'%';
  7. FLUSH PRIVILEGES;
  8. create database cm default character set utf8;
  9. CREATE USER 'cm'@'%' IDENTIFIED BY 'password';
  10. GRANT ALL PRIVILEGES ON cm. * TO 'cm'@'%';
  11. FLUSH PRIVILEGES;
  12. create database am default character set utf8;
  13. CREATE USER 'am'@'%' IDENTIFIED BY 'password';
  14. GRANT ALL PRIVILEGES ON am. * TO 'am'@'%';
  15. FLUSH PRIVILEGES;
  16. create database rm default character set utf8;
  17. CREATE USER 'rm'@'%' IDENTIFIED BY 'password';
  18. GRANT ALL PRIVILEGES ON rm. * TO 'rm'@'%';
  19. FLUSH PRIVILEGES;
  20. create database hue default character set utf8;
  21. CREATE USER 'hue'@'%' IDENTIFIED BY 'password';
  22. GRANT ALL PRIVILEGES ON hue. * TO 'hue'@'%';
  23. FLUSH PRIVILEGES;
  24. create database oozie default character set utf8;
  25. CREATE USER 'oozie'@'%' IDENTIFIED BY 'password';
  26. GRANT ALL PRIVILEGES ON oozie. * TO 'oozie'@'%';
  27. FLUSH PRIVILEGES;
  28. create database sentry default character set utf8;
  29. CREATE USER 'sentry'@'%' IDENTIFIED BY 'password';
  30. GRANT ALL PRIVILEGES ON sentry. * TO 'sentry'@'%';
  31. FLUSH PRIVILEGES;
  32. create database nav_ms default character set utf8;
  33. CREATE USER 'nav_ms'@'%' IDENTIFIED BY 'password';
  34. GRANT ALL PRIVILEGES ON nav_ms. * TO 'nav_ms'@'%';
  35. FLUSH PRIVILEGES;
  36. create database nav_as default character set utf8;
  37. CREATE USER 'nav_as'@'%' IDENTIFIED BY 'password';
  38. GRANT ALL PRIVILEGES ON nav_as. * TO 'nav_as'@'%';
  39. FLUSH PRIVILEGES;
  40. show databases;
  41. exit;

image.png

2.3、时间同步

  1. 所有机器卸载本地时钟服务chrony

    1. yum -y remove chrony

    image.png

  2. 所有机器安装ntp时钟服务

    1. yum -y install ntp

    image.png

  3. 主节点配置时钟与自己同步

    1. vi /etc/ntp.conf
    2. #server 0.rhel.pool.ntp.org iburst
    3. #server 1.rhel.pool.ntp.org iburst
    4. #server 2.rhel.pool.ntp.org iburst
    5. #server 3.rhel.pool.ntp.org iburst
    6. server 127.127.1.0
    7. fudge 127.127.1.0 stratum 10

    image.png

  4. 集群从节点,配置找主节点机器同步

    1. #server 0.rhel.pool.ntp.org iburst
    2. #server 1.rhel.pool.ntp.org iburst
    3. #server 2.rhel.pool.ntp.org iburst
    4. #server 3.rhel.pool.ntp.org iburst
    5. server 192.168.139.101 #第一台id

image.png

  1. 重启所有机器的ntp服务
  1. systemctl start ntpd
  2. systemctl status ntpd
  3. systemctl enable ntpd

image.png

  1. 使用命令查看
  1. ntpq -p
  2. date
  3. #查看时间是否一致(主机显示*LOCAL 从机显示主机地址)

image.png

2.4、安装jdbc驱动

  1. 创建目录并移动连接驱动至该目录(我的con文件在。homt目录下)

    1. mkdir -p /usr/share/java/
    2. mv /home/mysql-connector-java-5.1.34.jar /usr/share/java/.

    image.png

  2. 进入con的目录给con文件赋权限并添加软连接

    1. cd /usr/share/java
    2. chmod 755 mysql-connector-java-5.1.34.jar
    3. ln -s mysql-connector-java-5.1.34.jar mysql-connector-java.jar
    4. ll

    image.png

    3、Cloudera Manager软件包安装

  3. 验证安装JDK

    1. cd /var/www/html/cm5.16.2/
    2. yum -y install oracle-j2sdk1.7-1.7.0+update67-1

    image.png

  4. 在主节点安装Cloudera Manager Server

    1. yum -y install cloudera-manager-server

    image.png

  5. 初始化数据库

    1. /usr/share/cmf/schema/scm_prepare_database.sh mysql cm cm password

    image.png

  6. 启动Cloudera Manager Server

    1. systemctl start cloudera-scm-server
    2. systemctl status cloudera-scm-server

    image.png

  7. 检查端口是否监听

    1. netstat -lnpt | grep 7180

    image.png

  • 等待几分钟,启动服务器有点慢(可以通过日志查看是否启动完毕,查看是否有7180端口)
  1. 出现找不到netstat命令,使用以下命令

    1. yum -y install net-tools
  2. 查看日志

    1. tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log

    image.png

  3. 通过访问 http://192.168.0.200:7180 进行验证

    3、Cloudera Manager可视化配置

    3.1、安装类型选择

  4. 登录密码账号都是admin

image.png

  1. 接受条款,点击继续

image.png

  1. 点击试用60天,然后继续

image.png
image.png

3.2、配置安装

  1. 搜索主机,选择所有主机,点击继续

image.png

  1. 定义Parcel,选择更多选项

image.png

  1. 删除多余Parcel地址,自定义Parcel地址,保存更改

image.png

  1. 自定义CM存储地址,点击继续

image.png

  1. 安装 JDK 以及加密政策

image.png

  1. 选择多用户,默认多用户,直接点继续

image.png

  1. 输入SSH密码,选择root用户,输入密码,继续执行。

image.png

  1. 等待集群安装成功,继续执行

image.png

  1. 等待集群安装完毕点击下一步

image.png

  1. 等待检查主机正确性,检测完毕点击完成。
  • 注意,这里不能跳过,很多问题在这里可以检查到

image.png

3.3、集群设置

  1. 选择含Impala的内核,点击继续。

image.png

  1. 选择集群配置
  • DataNode满足最小副本数

image.png

  • Zookeeper满足单数节点(投标机制,双数有几率平票)

image.png

  1. 数据库设置

输入数据库名,用户名和密码,点击连接测试,测试通过点击继续。
image.png

  1. 集群审核更改

配置HDFS存储块大小,路径。Hive等的路径地址,点击继续。
image.png

  1. 等待集群首次运行成功,点击继续。

image.png

  1. 完成安装

image.png
image.png

4、安装kudu

  1. CDH 从 5.13 开始,直接打包 Kudu,不再需要下载额外的 Parcel 和csd文件。
  2. 添加kudu服务

image.png

  1. 勾选kudu服务,点击继续。

image.png

  1. 自定义集群角色分配,点击继续。

image.png

  1. 配置kudu的文件目录(fs_data_dir目录可能有多个,提高并发读写,从而提高 Kudu性能),点击继续。

image.png

  1. 等待系统启动kudu成功,点击继续。

image.png

  1. 完成安装

image.png

5、配置 Impala

  1. 点击impala进入配置。

image.png

  1. 选择配置,搜索【kudu】,勾选kudu服务,保存更改。

image.png

  1. 由于配置更新,服务需要重启才能生效。点击重启。

image.png

  1. 选择重启过时服务。

image.png

  1. 选择重启,等待重启任务执行完毕,点击完成。

image.png
image.png

6、组件验证

6.1、HDFS验证

6.1.1、检测能否上传文件等

  1. 创建本地文件,添加内容如下

    1. vi /test.txt1

    image.png

  2. 上传文件至hdfs

    1. sudo -u hdfs hdfs dfs -put /test.txt1 /test
    2. sudo -u hdfs hdfs dfs -cat /test/test.txt1

    image.png

    6.2、Hive验证

  3. 进入hive

    1. hive

    image.png

  4. 使用 hive cli,进行创建 hive 测试表,指定路径为上传的 HDFS 文件路径,并对该表进行查看

image.png

6.3、mapreduce 验证

image.png
image.png

6.4、impala验证

image.png

7、错误问题解决

7.1、主机运行状况不良

  1. 在做CM和CDH的安装遇到了在安装的过程当中出现了主机运行状态不良的情况。
  2. 出现这个首先想到的是因为我装了好多次,考虑集群环境被污染了。然后在网上找到说删除一个文件即可,删除问题文件 /var/lib/cloudera-scm-agent/cm_guid。
  3. 停止agent服务

    1. systemctl stop cloudera-scm-agent
  4. 删除该文件

    1. rm -rf /var/lib/cloudera-scm-agent/cm_guid
  5. 删除自己的路径,具体可以用find / -name cm_guid命令查询

  6. 重启cloudera-scm-agent服务

    1. systemctl start cloudera-scm-agent

    7.2. 部分文件无法安装

  7. 安装过程出现部分软件包无法安装,截图如下:

image.png

  1. 找到挂载镜像的地址下面的Packages目录,进入该目录找到缺失的包强制安装缺失的包

    1. rpm -ivh 包名 --nodeps
  2. 重试失败的主机

image.png

7.3. 检查主机正确性出现swappiness警告

  1. 设置 /etc/sysctl.conf 和 /proc/sys/vm/swappiness文件

    1. sysctl vm.swappiness=1
    2. echo 1 > /proc/sys/vm/swappiness
  2. /etc/sysctl.conf文件末尾添加 vm.swappiness=10,/proc/sys/vm/swappiness 如下。

image.png

  1. 点击重新检测

image.png