一、文档编写目的

CDP DC是Cloudera与Hortonworks合并后,第一个融合CDH和HDP所有组件的on-premise版本,CDP Data Center主要由Cloudera Runtime构成,Cloudera Runtime由超过35个开源项目组成,当然CDP Data Center还包括其它功能如管理功能Cloudera Manager,Key Management,专业支持等,如下图所示:
image.png
本文档主要描述如何在Redhat7.6安装CDP DC7.1.4。CDP DC7与CDH5/6的安装步骤一致,主要包括以下四部分:
1.安全前置准备,包括安装操作系统、关闭防火墙、同步服务器时钟等;
2.外部数据库如MySQL安装
3.安装Cloudera Manager;
4.安装CDP集群;

  • 测试环境

1.CM和CDH版本为7.1.4
2.Redhat7.6
3.OpenJDK1.8
4.MariaDB-5.5.64
5.root用户安装

二、基础环境搭建(三台机器均需配置)

2.1.机器准备

ip 主机名称
192.168.0.155 cdp1.macro.com
192.168.0.164 cdp2.macro.com
192.168.0.165 cdp3.macro.com

2.2.修改虚拟机的主机名

命令格式: hostnamectl set-hostname 主机名:

  1. hostnamectl set-hostname cdp1.macro.com

image.png

2.3.编写虚拟机的/etc/hosts文件添加主机ip映射

  1. vim /etc/hosts

image.png

2.4.关闭三台虚拟机防火墙

  1. systemctl status firewalld #查看防火墙状态
  2. systemctl stop firewalld #关闭防火墙
  3. systemctl disable firewalld #禁止防火墙开机自启

image.png

2.5. 修改网络IP,并设置为静态

  1. vim /etc/sysconfig/network-scripts/ifcfg-ens192

image.png

2.6. 配置操作系统repo(前提已经挂载镜像和安装http服务)

  • 进入/etc/yum.repose.d文件夹,创建os.repo文件: ```shell mkdir /var/www/html/iso scp -r /mnt/* /var/www/html/iso/ vim /etc/yum.repos.d/os.repo

[osrepo] name=os_repo baseurl=http://10.168.1.19/iso/ enabled=true gpgcheck=false

  1. ![image.png](https://cdn.nlark.com/yuque/0/2021/png/2812139/1613823344945-04eb7870-34a8-4e45-9904-5dffeed8f013.png#crop=0&crop=0&crop=1&crop=1&height=122&id=FJRfM&margin=%5Bobject%20Object%5D&name=image.png&originHeight=122&originWidth=746&originalType=binary&ratio=1&rotation=0&showTitle=false&size=8072&status=done&style=none&title=&width=746)
  2. - 然后执行命令 yum repolist,看见有状态表示成功。
  3. ```shell
  4. yum repolist

image.png

2.7. 禁用SELinux

  • SELinux就是Security-Enhanced Linux的简称,安全加强的linux。传统的linux权限是对文件和目录的

owner, group和other的rwx进行控制,而SELinux采用的是委任式访问控制,也就是控制一个进程对具
体文件系统上面的文件和目录的访问,SELinux规定了很多的规则,来决定哪个进程可以访问哪些文件
和目录。虽然SELinux很好用,但是在多数情况我们还是将其关闭,因为在不了解其机制的情况下使用
SELinux会导致软件安装或者应用部署失败。

  1. setenforce 0

2.8. 集群所有节点修改/etc/selinux/config文件如下(重启才能生效,所有需要配置上面的临时关闭):

  1. vim /etc/selinux/config
  2. SELINUX=disabled
  3. SELINUXTYPE=targeted

image.png

2.9. 关闭透明大页面

  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

  • 设置开机自关闭
  • 将如下配置信息添加到/etc/rc.d/rc.local文件中 ```shell vim /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

  1. ![image.png](https://cdn.nlark.com/yuque/0/2021/png/2812139/1613823875703-240a1170-03b8-49c7-b867-e0dceb80c1c4.png#crop=0&crop=0&crop=1&crop=1&height=384&id=vP8gd&margin=%5Bobject%20Object%5D&name=image.png&originHeight=384&originWidth=872&originalType=binary&ratio=1&rotation=0&showTitle=false&size=39349&status=done&style=none&title=&width=872)
  2. - 同步到所有节点
  3. ```shell
  4. cat /etc/rc.d/rc.local
  5. chmod +x /etc/rc.d/rc.local
  6. ls -l /etc/rc.d | grep rc.local

image.png

2.10. 设置swappiness

  • swappiness是Linux的一个内核参数,控制系统在进行swap时,内存使用的相对权重。 ```shell sysctl vm.swappiness=1 echo 1 > /proc/sys/vm/swappiness

cat /proc/sys/vm/swappiness

  1. ![image.png](https://cdn.nlark.com/yuque/0/2021/png/2812139/1613823986207-76f7c4e0-6620-44b0-a6e7-e8044c33ff10.png#crop=0&crop=0&crop=1&crop=1&height=130&id=buBWa&margin=%5Bobject%20Object%5D&name=image.png&originHeight=130&originWidth=852&originalType=binary&ratio=1&rotation=0&showTitle=false&size=11746&status=done&style=none&title=&width=852)
  2. <a name="2sh4y"></a>
  3. ### 2.11. 安装ntp时间同步
  4. - NTP时间同步是一种时间同步网络技术。
  5. - 有多种时间同步技术,每一种技术都各有特点,不同技术的时间同步精度也存在较大的差异。
  6. ```shell
  7. yum -y install ntp

image.png

  • Master 节点修改 /etc/ntp.conf 文件:

注释部分内容
添加以下内容:
server 127.127.1.0
fudge 127.127.1.0 stratum 10
image.png

  • 集群其他节点修改/etc/ntp.conf 文件如下:

image.png

  • 启动 ntpd 服务:

    1. systemctl start ntpd #启动ntp服务
    2. systemctl enable ntpd #开机启动ntp服务
    3. systemctl status ntpd #查看ntp服务状态
    4. ntpq -p #查看时间同步状态

    image.png

    2.12. 安装httpd服务

    1. yum -y install httpd

    image.png

  • 启动httpd服务

    1. systemctl start httpd #启动http服务
    2. systemctl status httpd #查看http服务状态
    3. systemctl enable httpd #开机启动http服务

    image.png

    三、 (主节点程序安装)

    3.1. 安装MariaDB

    1. yum -y install mariadb mariadb-server

    image.png ```shell systemctl start mariadb

systemctl enable mariadb

systemctl status mariadb

  1. ![image.png](https://cdn.nlark.com/yuque/0/2021/png/2812139/1613824631059-c181b672-8690-491e-8950-95a33e115da5.png#crop=0&crop=0&crop=1&crop=1&height=435&id=LV1te&margin=%5Bobject%20Object%5D&name=image.png&originHeight=435&originWidth=878&originalType=binary&ratio=1&rotation=0&showTitle=false&size=75793&status=done&style=none&title=&width=878)
  2. - 配置 mariadb,设置密码为 password
  3. ```shell
  4. /usr/bin/mysql_secure_installation
  5. #回车 一直y 设置密码:password
  • 创建集群所需要的数据库 ```shell mysql -u root -p

    输入密码

    执行以下语句建立CM,Hive等需要的表

create database metastore default character set utf8; CREATE USER ‘hive’@’%’ IDENTIFIED BY ‘password’; GRANT ALL PRIVILEGES ON metastore. TO ‘hive’@’%’; FLUSH PRIVILEGES; create database cm default character set utf8; CREATE USER ‘cm’@’%’ IDENTIFIED BY ‘password’; GRANT ALL PRIVILEGES ON cm. TO ‘cm’@’%’; FLUSH PRIVILEGES; create database rman default character set utf8; CREATE USER ‘rman’@’%’ IDENTIFIED BY ‘password’; GRANT ALL PRIVILEGES ON rmam. TO ‘rman’@’%’; FLUSH PRIVILEGES; create database hue default character set utf8; CREATE USER ‘hue’@’%’ IDENTIFIED BY ‘password’; GRANT ALL PRIVILEGES ON hue. TO ‘hue’@’%’; FLUSH PRIVILEGES; create database SM default character set utf8; CREATE USER ‘SMM’@’%’ IDENTIFIED BY ‘password’; GRANT ALL PRIVILEGES ON ranger. * TO ‘SMM’@’%’; FLUSH PRIVILEGES;

  1. ![image.png](https://cdn.nlark.com/yuque/0/2021/png/2812139/1613826199638-3ec84332-7d32-425c-bf62-29a364753a7b.png#crop=0&crop=0&crop=1&crop=1&height=547&id=RCPFf&margin=%5Bobject%20Object%5D&name=image.png&originHeight=547&originWidth=881&originalType=binary&ratio=1&rotation=0&showTitle=false&size=61021&status=done&style=none&title=&width=881)
  2. <a name="9jsMj"></a>
  3. ### 3.2. 配置 Cloudera Manager 的 repo 源
  4. - Cloudera Manager 的所有 rpm 包放到 /var/www/html/目录的目录 cm7.1.4下:
  5. ![image.png](https://cdn.nlark.com/yuque/0/2021/png/2812139/1613824891128-2f7afb6f-38b1-4603-8cfe-faea3c482291.png#crop=0&crop=0&crop=1&crop=1&height=259&id=vQMO6&margin=%5Bobject%20Object%5D&name=image.png&originHeight=259&originWidth=868&originalType=binary&ratio=1&rotation=0&showTitle=false&size=35498&status=done&style=none&title=&width=868)
  6. - 下载 createrepo
  7. ```shell
  8. yum -y install createrepo
  • 在/var/www/html/cm5.16.1 目录下执行命令:createrepo . 生成 rpm元数据:

    1. createrepo .

    image.png

  • 将 Cloudera Manager 的所有 rpm 包放到 /var/www/html/目录的目录 cdh7.1.4下:

image.png

  • 在/etc/yum.repos.d/目录下新建 cm.repo 文件,并添加如下内容: ```shell vim /etc/yum.repos.d/cm.repo

[cmrepo] name=cm7.1.4 baseurl=http://192.168.0.155/cm7.1.4/ enabled=true gpgcheck=false

保存退出 :wq

  1. ![image.png](https://cdn.nlark.com/yuque/0/2021/png/2812139/1613825100112-f2719bc2-3329-44e8-a0af-01aefc5fe542.png#crop=0&crop=0&crop=1&crop=1&height=111&id=FBkgj&margin=%5Bobject%20Object%5D&name=image.png&originHeight=111&originWidth=715&originalType=binary&ratio=1&rotation=0&showTitle=false&size=7761&status=done&style=none&title=&width=715)
  2. ```shell
  3. yum clean all
  4. yum repolist

image.png

  • 配置Web服务器
  • 将上述cdp7.1.2/cm7.1.2目录移动到/var/www/html目录下, 使得用户可以通过HTTP访问这些rpm包。

    1. cd /var/www/html/
    2. ll *7.1.2

    image.png

  • 验证浏览器能否正常访问

image.png
image.png

3.3. 安装 jdbc 驱动

  • 创建/usr/share/java/文件夹,并将驱动 jar 包改名为:mysqlconnector-java.jar进该目录:

    1. mkdir -p /usr/share/java/
    2. cd /usr/share/java
    3. chmod 777 mysql-connector-java-5.1.34.jar
    4. ln -s mysql-connector-java-5.1.34.jar mysql-connector-java.jar
    5. ll

    image.png

    3.5. 安装 jdk

    1. yum -y install openjdk8-8.0+232_9-cloudera.x86_64

    image.png

    3.4. 集群的部署安装

  • 安装并启动 Cloudera-Manager-Server

    1. yum -y install cloudera-manager-server

    image.png

  • 初始化数据库:

    1. /opt/cloudera/cm/schema/scm_prepare_database.sh mysql cm cm password

    image.png

  • 启动Cloudera Manager Server

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

    image.png

  • 检查端口是否监听

    1. netstat -lnpt | grep 7180

    image.png

    四、CDP集群安装向导

    4.1. 通过网页访问 http://192.168.0.155:7180/cmf/login

  • 输入账户:admin

  • 密码:admin 登录 CM

image.png

4.2. 选择60天试用,点击继续

image.png

4.3. 点击继续

image.png

4.4. 点击“继续”,输入集群名称,可以使用默认的“Cluster 1”。

image.png

4.5. 输入主机IP或者名称,点击搜索找到主机后点击继续

image.png

4.6. 选择自定义存储库,输入cm的http地址

image.png

  • CDH and other software”中选择“Parcel Repositories & Network Settings”,点击“ 更多选项”,点击“-”删除其它所有地址,输入http://192.168.0.155/cdh7.1.4,点击“保存更改”

image.png

  • 点击Save & Verify Configuration,验证通过,点击关闭

image.png

  • 点击继续

image.png

4.7. 选择Install a Cloudera-provided version of OpenJDK,点击继续

image.png

4.8. 进入下一步配置ssh账号密码,确保所有机器的root密码都一致,然后输入root的密码即可。

image.png

4.9. 点击“继续”,进入下一步,安装Cloudera Manager相关到各个节点

image.png
image.png

  • 等待Agent安装完毕后,自动跳转到下一步开始分发Parcel

    4.10. 点击“继续”,进入下一步安装cdh到各个节点

    image.png
    image.png

    4.11. 点击Inspect Network Performance和Inspect Hosts,检查主机

    image.png

  • 如果有错误或者黄色警告,查看“显示检查器结果”,并逐项解决,然后“重新运行”检查,直到所有的检查都通过,否则没办法点击继续下一步。

image.png

五、集群设置安装向导

5.1. 选择需要安装的服务,根据需要选择,这里选择自定义服务

image.png
image.png

5.2. 点击“继续”,进入集群角色分配,一台机器作为管理节点,另外三台机器作为DataNode

image.png
image.png

  • 注意:Activity Monitor和Telemetry Publisher不用选择任何主机,留空,即不安装,因为用不到。

    5.3. 点击“继续”,进入下一步,测试数据库连接

    image.png

    5.4. 测试成功,点击继续。设置Range相关参数

  • 以下4个密码,都需要包含至少一个字母与一个数字,为了安装方便都输入admin@123

image.png

5.5. 进入目录设置,此处使用默认目录,根据实际情况进行目录修改

image.png

5.6. 点击“继续”,进入各个服务启动

image.png

5.7. 安装成功后进入home管理界面

image.png

六、组件验证

6.1. HDFS验证

  • 在本地创建一个文件,添加内容。测试向 HDFS 上传该文件,并从HDFS 上查看该文件内容 。

    1. hdfs dfs -ls / #查看hdfs根目录下的文件
    2. sudo -u hdfs hdfs dfs -mkdir /test #在hdfs根目录下创建test文件夹
    3. sudo -u hdfs hdfs dfs -put test.txt /test #上传本地编辑的test.txt文件到hdfs上的test文件夹
    4. hdfs dfs -cat /test/test.txt #查看hdfs上test文件夹下的test.txt文件

    image.png

    6.2. hive验证

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

image.png

七、总结

1.从安装方式上来看,CDP DC7.1.2与CDH6变化不大,这也方便了CDH的用户可以较为快速的迁移到CDP DC7,以及适应CDP DC7的安装与使用。

2.安装条件前置没有任何变化,包括防火墙,SELinux关闭,ntp同步等等。

3.Cloudera Manager自带的JDK直接提供的是OpenJDK1.8,而不是Oracle JDK,同样CDP DC也不再支持JDK1.7。

4.与安装CDH6一样,CM的安装除了下载rpm包以外,还要下载allkeys.asc文件,否则安装agent的时候会报错。

5.对于离线安装CDH6.x,分发Parcel出现hash校验失败的问题,是因为在CM6中修复了一个bug,让它不再忽略由http服务器发送的“Content-Encoding”的header信息,但是我们在Redhat中安装的httpd服务,当它传输parcel文件时,默认会错误的设置“Content-Encoding”。于是CM server会错误的认为parcel文件已经被httpd压缩并尝试解压缩。所以会导致失败。解决办法是参考2.8章节的,设置httpd的conf文件,AddType application/x-gzip .gz .tgz .parcel,然后重启httpd服务和CM服务。这个问题在beta的时候就已经存在了。

6.在创建元数据库时,不需要再创建Navigator和Sentry相关的元数据库,但需要创建Ranger服务相关的元数据库。安装Hue时Oozie服务也不是必须的,所以也可以不创建Oozie数据库。

7.第一次启动Ranger服务时,创建x_portal_user表时会报以下错误:
image.png
image.png

  • 这是因为索引建立的时候,字符长度超过255,由于utf-8字符最长只能为255,超长之后会报错,所以需要对MySQL做如下配置:

    1. SET GLOBAL innodb_file_per_table = ON,
    2. innodb_file_format = Barracuda,
    3. innodb_large_prefix = ON;

    image.png
    8.启动SCM时SM和HM报错。
    image.png

  • 原因内存溢出了,需要配置的java heap太小。

image.png

  • 配置完重启就可以了