- 一、文档编写目的
- 二、基础环境搭建(三台机器均需配置)
- 三、 (主节点程序安装)
- 输入密码
- 执行以下语句建立CM,Hive等需要的表
- 四、CDP集群安装向导
- http://192.168.0.155:7180/cmf/login">4.1. 通过网页访问 http://192.168.0.155:7180/cmf/login
- 4.2. 选择60天试用,点击继续
- 4.3. 点击继续
- 4.4. 点击“继续”,输入集群名称,可以使用默认的“Cluster 1”。
- 4.5. 输入主机IP或者名称,点击搜索找到主机后点击继续
- 4.6. 选择自定义存储库,输入cm的http地址
- 4.7. 选择Install a Cloudera-provided version of OpenJDK,点击继续
- 4.8. 进入下一步配置ssh账号密码,确保所有机器的root密码都一致,然后输入root的密码即可。
- 4.9. 点击“继续”,进入下一步,安装Cloudera Manager相关到各个节点
- 4.10. 点击“继续”,进入下一步安装cdh到各个节点
- 4.11. 点击Inspect Network Performance和Inspect Hosts,检查主机
- 五、集群设置安装向导
- 六、组件验证
- 七、总结
一、文档编写目的
CDP DC是Cloudera与Hortonworks合并后,第一个融合CDH和HDP所有组件的on-premise版本,CDP Data Center主要由Cloudera Runtime构成,Cloudera Runtime由超过35个开源项目组成,当然CDP Data Center还包括其它功能如管理功能Cloudera Manager,Key Management,专业支持等,如下图所示:
本文档主要描述如何在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 主机名:
hostnamectl set-hostname cdp1.macro.com
2.3.编写虚拟机的/etc/hosts文件添加主机ip映射
vim /etc/hosts
2.4.关闭三台虚拟机防火墙
systemctl status firewalld #查看防火墙状态
systemctl stop firewalld #关闭防火墙
systemctl disable firewalld #禁止防火墙开机自启
2.5. 修改网络IP,并设置为静态
vim /etc/sysconfig/network-scripts/ifcfg-ens192
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
![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)
- 然后执行命令 yum repolist,看见有状态表示成功。
```shell
yum repolist
2.7. 禁用SELinux
- SELinux就是Security-Enhanced Linux的简称,安全加强的linux。传统的linux权限是对文件和目录的
owner, group和other的rwx进行控制,而SELinux采用的是委任式访问控制,也就是控制一个进程对具
体文件系统上面的文件和目录的访问,SELinux规定了很多的规则,来决定哪个进程可以访问哪些文件
和目录。虽然SELinux很好用,但是在多数情况我们还是将其关闭,因为在不了解其机制的情况下使用
SELinux会导致软件安装或者应用部署失败。
setenforce 0
2.8. 集群所有节点修改/etc/selinux/config文件如下(重启才能生效,所有需要配置上面的临时关闭):
vim /etc/selinux/config
SELINUX=disabled
SELINUXTYPE=targeted
2.9. 关闭透明大页面
echo never > /sys/kernel/mm/transparent_hugepage/defrag
cat /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
cat /sys/kernel/mm/transparent_hugepage/enabled
- 设置开机自关闭
- 将如下配置信息添加到/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
![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)
- 同步到所有节点
```shell
cat /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
ls -l /etc/rc.d | grep rc.local
2.10. 设置swappiness
- swappiness是Linux的一个内核参数,控制系统在进行swap时,内存使用的相对权重。 ```shell sysctl vm.swappiness=1 echo 1 > /proc/sys/vm/swappiness
cat /proc/sys/vm/swappiness
![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)
<a name="2sh4y"></a>
### 2.11. 安装ntp时间同步
- NTP时间同步是一种时间同步网络技术。
- 有多种时间同步技术,每一种技术都各有特点,不同技术的时间同步精度也存在较大的差异。
```shell
yum -y install ntp
- Master 节点修改 /etc/ntp.conf 文件:
注释部分内容
添加以下内容:
server 127.127.1.0
fudge 127.127.1.0 stratum 10
- 集群其他节点修改/etc/ntp.conf 文件如下:
启动 ntpd 服务:
systemctl start ntpd #启动ntp服务
systemctl enable ntpd #开机启动ntp服务
systemctl status ntpd #查看ntp服务状态
ntpq -p #查看时间同步状态
2.12. 安装httpd服务
yum -y install httpd
启动httpd服务
systemctl start httpd #启动http服务
systemctl status httpd #查看http服务状态
systemctl enable httpd #开机启动http服务
三、 (主节点程序安装)
3.1. 安装MariaDB
yum -y install mariadb mariadb-server
```shell systemctl start mariadb
systemctl enable mariadb
systemctl status mariadb
![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)
- 配置 mariadb,设置密码为 password
```shell
/usr/bin/mysql_secure_installation
#回车 一直y 设置密码:password
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;
![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)
<a name="9jsMj"></a>
### 3.2. 配置 Cloudera Manager 的 repo 源
- 将 Cloudera Manager 的所有 rpm 包放到 /var/www/html/目录的目录 cm7.1.4下:
![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)
- 下载 createrepo
```shell
yum -y install createrepo
在/var/www/html/cm5.16.1 目录下执行命令:createrepo . 生成 rpm元数据:
createrepo .
将 Cloudera Manager 的所有 rpm 包放到 /var/www/html/目录的目录 cdh7.1.4下:
- 在/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
![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)
```shell
yum clean all
yum repolist
- 配置Web服务器
将上述cdp7.1.2/cm7.1.2目录移动到/var/www/html目录下, 使得用户可以通过HTTP访问这些rpm包。
cd /var/www/html/
ll *7.1.2
验证浏览器能否正常访问
3.3. 安装 jdbc 驱动
创建/usr/share/java/文件夹,并将驱动 jar 包改名为:mysqlconnector-java.jar进该目录:
mkdir -p /usr/share/java/
cd /usr/share/java
chmod 777 mysql-connector-java-5.1.34.jar
ln -s mysql-connector-java-5.1.34.jar mysql-connector-java.jar
ll
3.5. 安装 jdk
yum -y install openjdk8-8.0+232_9-cloudera.x86_64
3.4. 集群的部署安装
安装并启动 Cloudera-Manager-Server
yum -y install cloudera-manager-server
初始化数据库:
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql cm cm password
启动Cloudera Manager Server
systemctl start cloudera-scm-server
systemctl status cloudera-scm-server
检查端口是否监听
netstat -lnpt | grep 7180
四、CDP集群安装向导
4.1. 通过网页访问 http://192.168.0.155:7180/cmf/login
输入账户:admin
- 密码:admin 登录 CM
4.2. 选择60天试用,点击继续
4.3. 点击继续
4.4. 点击“继续”,输入集群名称,可以使用默认的“Cluster 1”。
4.5. 输入主机IP或者名称,点击搜索找到主机后点击继续
4.6. 选择自定义存储库,输入cm的http地址
- “CDH and other software”中选择“Parcel Repositories & Network Settings”,点击“ 更多选项”,点击“-”删除其它所有地址,输入http://192.168.0.155/cdh7.1.4,点击“保存更改”
- 点击Save & Verify Configuration,验证通过,点击关闭
- 点击继续
4.7. 选择Install a Cloudera-provided version of OpenJDK,点击继续
4.8. 进入下一步配置ssh账号密码,确保所有机器的root密码都一致,然后输入root的密码即可。
4.9. 点击“继续”,进入下一步,安装Cloudera Manager相关到各个节点
等待Agent安装完毕后,自动跳转到下一步开始分发Parcel
4.10. 点击“继续”,进入下一步安装cdh到各个节点
4.11. 点击Inspect Network Performance和Inspect Hosts,检查主机
如果有错误或者黄色警告,查看“显示检查器结果”,并逐项解决,然后“重新运行”检查,直到所有的检查都通过,否则没办法点击继续下一步。
五、集群设置安装向导
5.1. 选择需要安装的服务,根据需要选择,这里选择自定义服务
5.2. 点击“继续”,进入集群角色分配,一台机器作为管理节点,另外三台机器作为DataNode
注意:Activity Monitor和Telemetry Publisher不用选择任何主机,留空,即不安装,因为用不到。
5.3. 点击“继续”,进入下一步,测试数据库连接
5.4. 测试成功,点击继续。设置Range相关参数
以下4个密码,都需要包含至少一个字母与一个数字,为了安装方便都输入admin@123
5.5. 进入目录设置,此处使用默认目录,根据实际情况进行目录修改
5.6. 点击“继续”,进入各个服务启动
5.7. 安装成功后进入home管理界面
六、组件验证
6.1. HDFS验证
在本地创建一个文件,添加内容。测试向 HDFS 上传该文件,并从HDFS 上查看该文件内容 。
hdfs dfs -ls / #查看hdfs根目录下的文件
sudo -u hdfs hdfs dfs -mkdir /test #在hdfs根目录下创建test文件夹
sudo -u hdfs hdfs dfs -put test.txt /test #上传本地编辑的test.txt文件到hdfs上的test文件夹
hdfs dfs -cat /test/test.txt #查看hdfs上test文件夹下的test.txt文件
6.2. hive验证
使用 hive cli,进行创建 hive 测试表,指定路径为上传的 HDFS 文件路径,并对表进行查看。
七、总结
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表时会报以下错误:
这是因为索引建立的时候,字符长度超过255,由于utf-8字符最长只能为255,超长之后会报错,所以需要对MySQL做如下配置:
SET GLOBAL innodb_file_per_table = ON,
innodb_file_format = Barracuda,
innodb_large_prefix = ON;
8.启动SCM时SM和HM报错。原因内存溢出了,需要配置的java heap太小。
- 配置完重启就可以了