本文最后更新于 2024-05-31,文章内容可能已经过时。

一、CM安装

1.1 CM部署准备

1.1.1 修改hosts文件(所有节点)

[root@hadoop001 ~]# vi /etc/hosts
127.0.0.1 localhost  localhost
::1     localhost       localhost.localdomain   localhost6      localhost6.localdomain6
172.17.138.24 hadoop102
172.17.138.25 hadoop103
172.17.138.23 hadoop104
注意:这里每个人不一样,ip填写的是私有ip,做完后ping一下。

1.1.2 修改hostname文件(所有节点)

[root@hadoop102 ~]# vi /etc/hostname
hadoop102

依次修改三台机器的hostname文件为hadoop102-104

1.1.3 关闭防火墙(阿里云环境可跳过)(所有节点)

阿里云的防火墙默认是关闭的,但是他有web防火墙,我们需要将7180,3306,8888,8889,9870等端口开放,或者开放全部安全组。

# 1)查看防火墙: 
systemctl status firewalld.service 
# 2)执行关闭命令: 
systemctl stop firewalld.service 
# 3)执行开机禁用防火墙命令: 
systemctl disable firewalld.service

1.1.4 关闭SELINUX(阿里云环境可跳过)(所有节点)

安全增强型Linux(Security-Enhanced Linux)简称SELinux,它是一个 Linux 内核模块,也是Linux的一个安全子系统。为了避免安装过程出现各种错误,建议关闭,有如下两种关闭方法:
1)临时关闭(不建议使用)

[root@hadoop102 ~]# setenforce 0

但是这种方式只对当次启动有效,重启机器后会失效。
2)永久关闭(建议使用)
修改配置文件/etc/selinux/config

[root@hadoop102 ~]# vim /etc/selinux/config
将SELINUX=enforcing 改为SELINUX=disabled
SELINUX=disabled

3)重启hadoop102、hadoop103、hadoop104主机

[root@hadoop102 ~]# reboot

1.1.5 SSH免密登录(所有节点)

配置hadoop102对hadoop102、hadoop103、hadoop104三台服务器免密登录。
1)生成公钥和私钥:

[root@hadoop102 ~]cd ~/.ssh
[root@hadoop102 .ssh]$ ssh-keygen -t rsa

然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
2)将公钥拷贝到要免密登录的目标机器上

[root@hadoop102 .ssh]$ ssh-copy-id hadoop102
[root@hadoop102 .ssh]$ ssh-copy-id hadoop103
[root@hadoop102 .ssh]$ ssh-copy-id hadoop104

重复1和2的操作,配置hadoop103对hadoop102、hadoop103、hadoop104三台服务器免密登录。
注意:每个节点都要做,做完后相互登录几次试一试

1.1.6 配置NTP时钟同步(阿里云环境可跳过)

1)NTP服务器配置(主节点)

[root@hadoop102 ~]# vi /etc/ntp.conf
注释掉所有的restrict开头的配置
修改#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
为restrict 192.168.1.102 mask 255.255.255.0 nomodify notrap
将所有server配置进行注释
添加下面两行内容
server 127.127.1.0
fudge 127.127.1.0 stratum 10

2)启动NTP服务 service ntpd start

[root@hadoop102 ~]# service ntpd start

3)NTP客户端配置(在agent主机上进行配置hadoop103,hadoop104)

[root@hadoop103 ~]# vi /etc/ntp.conf

注释所有restrict和server配置
添加server 192.168.1.102

4)手动测试

[root@hadoop103~]# ntpdate 192.168.1.102

显示如下内容为成功:
17 Jun 15:34:38 ntpdate[9247]: step time server 192.168.1.102 offset 77556618.173854 sec
如果显示如下内容需要先关闭ntpd:
17 Jun 15:25:42 ntpdate[8885]: the NTP socket is in use, exiting
5)启动ntpd并设置为开机自启(每个节点hadoop102,hadoop103,hadoop104)

[root@hadoop103 ~]#  chkconfig ntpd on
[root@hadoop103 ~]#  service ntpd start

1.1.7禁用透明大页面压缩(所有节点)

打开编辑 /etc/rc.local 文件:

vi /etc/rc.local 
# 添加以下内容: 
echo never > /sys/kernel/mm/transparent_hugepage/defrag 
echo never > /sys/kernel/mm/transparent_hugepage/enabled 

1.1.8修改文件打开限制(所有节点)

echo "* soft nofile 65536" >> /etc/security/limits.conf 
echo "* hard nofile 65536" >> /etc/security/limits.conf
echo "* soft memlock unlimited" >> /etc/security/limits.conf 
echo "* hard memlock unlimited" >> /etc/security/limits.conf 

1.1.9设置swap空间(所有节点)

echo "vm.swappiness = 0" >> /etc/sysctl.conf 

1.2 CM安装部署

1.2.1 安装JDK(所有节点)

1)在hadoop102创建/usr/java目录

[root@hadoop102 ~]# mkdir /usr/java
[root@hadoop102 ~]# cd /usr/java

2)将oracle‐j2sdk1.8‐1.8.0+update181‐1.x86_64.rpm上传至hadoop102:/usr/java目录下。

[root@hadoop102 java]# rpm -ivh oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm

3)配置JAVA_HOME环境变量
(1)打开/etc/profile文件

[root@hadoop102 java]$ vi /etc/profile

在profile文件末尾添加JDK路径

#JAVA_HOME
export JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera
export PATH=$PATH:$JAVA_HOME/bin

(2)让修改后的文件生效

[root@hadoop102 jdk1.8.0_181-cloudera]$ source /etc/profile

4)测试JDK是否安装成功

[root@hadoop102 jdk1.8.0_144]# java -version
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

1.2.2 安装MySQL及其驱动(主节点)

1.2.2.1 安装包准备

1)将安装包和JDBC驱动上传到hadoop102,共计6个

01_mysql-community-common-5.7.16-1.el7.x86_64.rpm
02_mysql-community-libs-5.7.16-1.el7.x86_64.rpm
03_mysql-community-libs-compat-5.7.16-1.el7.x86_64.rpm
04_mysql-community-client-5.7.16-1.el7.x86_64.rpm
05_mysql-community-server-5.7.16-1.el7.x86_64.rpm
mysql-connector-java-5.1.27-bin.jar

2)如果是虚拟机按照如下步骤执行
(1)卸载自带的Mysql-libs(如果之前安装过MySQL,要全都卸载掉)

[root@hadoop102 tmp]$ rpm -qa | grep -i -E mysql\|mariadb | xargs -n1 sudo rpm -e --nodeps

3)如果是阿里云服务器按照如下步骤执行
说明:由于阿里云服务器安装的是Linux最小系统版,没有如下工具,所以需要安装。
(1)卸载MySQL依赖,虽然机器上没有装MySQL,但是这一步不可少

[root@hadoop102 tmp]# yum remove mysql-libs

(2)下载依赖并安装

[root@hadoop102 tmp]# yum install libaio
[root@hadoop102 tmp]# yum -y install autoconf

1.2.2.2 安装MySQL

1)安装MySQL依赖

[root@hadoop102 tmp]$ rpm -ivh 01_mysql-community-common-5.7.16-1.el7.x86_64.rpm
[root@hadoop102 tmp]$ rpm -ivh 02_mysql-community-libs-5.7.16-1.el7.x86_64.rpm
[root@hadoop102 tmp]$ rpm -ivh 03_mysql-community-libs-compat-5.7.16-1.el7.x86_64.rpm

2)安装mysql-client

[root@hadoop102 tmp]$ rpm -ivh 04_mysql-community-client-5.7.16-1.el7.x86_64.rpm

3)安装mysql-server

[root@hadoop102 tmp]$ rpm -ivh 05_mysql-community-server-5.7.16-1.el7.x86_64.rpm

注意:如果报如下错误,这是由于yum安装了旧版本的GPG keys所造成,从rpm版本4.1后,在安装或升级软件包时会自动检查软件包的签名。

warning: 05_mysql-community-server-5.7.16-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
error: Failed dependencies:
libaio.so.1()(64bit) is needed by mysql-community-server-5.7.16-1.el7.x86_64

解决办法

[root@hadoop102 tmp]$ rpm -ivh 05_mysql-community-server-5.7.16-1.el7.x86_64.rpm --force --nodeps

4)启动MySQL

[root@hadoop102 tmp]$ systemctl start mysqld

5)查看MySQL密码

[root@hadoop102 tmp]$ cat /var/log/mysqld.log | grep password

1.2.2.3 配置MySQL

配置只要是root用户 + 密码,在任何主机上都能登录MySQL数据库。
1)用刚刚查到的密码进入MySQL(如果报错,给密码加单引号)

[root@hadoop102 tmp]$ mysql -uroot -p'password'

2)设置复杂密码(由于MySQL密码策略,此密码必须足够复杂)

mysql> set password=password("Qs23=zs32");

3)更改MySQL密码策略

mysql> set global validate_password_length=4;
mysql> set global validate_password_policy=0;

4)设置简单好记的密码

mysql> set password=password("root@guoyun");

5)进入MySQL库

mysql> use mysql

6)查询user表

mysql> select user, host from user;

7)修改user表,把Host表内容修改为%

mysql> update user set host="%" where user="root";

8)刷新

mysql> flush privileges;

9)退出

mysql> quit;

10)安装mysql驱动(所有节点)
将mysql-connector-java-5.1.27-bin.jar拷贝到/usr/share/java路径下,并重命名

[root@hadoop102 tmp] mkdir ‐p /usr/share/java/
[root@hadoop102 tmp] mv mysql-connector-java-5.1.27-bin.jar mysql-connector-java.jar
[root@hadoop102 tmp] cp mysql-connector-java.jar /usr/share/java/

注意:一定要将mysql-connector-java-5.1.46-bin.jar改名为mysql-connector-java.jar,不然初 始化cm的时候无法识别。
11)创建数据库(主节点数据库)

mysql> CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
mysql> CREATE DATABASE amon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
mysql> CREATE DATABASE hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
mysql> CREATE DATABASE hive DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
mysql> CREATE DATABASE sentry DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
mysql> CREATE DATABASE oozie DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

1.2.3 yum源安装(主节点)

1.2.3.1启动httpd服务

1)首先需要查看linux是否安装httpd,所以在root权限下输入:

rpm ‐qa | grep httpd 

2)如果没有显示则表示没有安装httpd,输入:

yum ‐y install httpd 

3)开启httpd服务:

systemctl start httpd.service 
systemctl enable httpd.service 

4)查看httpd服务

systemctl status httpd.service

image1-1.png

1.2.3.2制作yum源

1)进入httpd根目录

cd /var/www/html/ 

2)创建文件夹cloudera-repos

mkdir cloudera-repos 
cd /var/www/html/cloudera-repos/ 

3)生成RPM元数据:

createrepo . 

提示:createrpo 点 后面有个点
createrepo没有的话就安装

yum -y install createrepo 

出来一个repodata文件夹就对了

image1-2.png
然后访问https://192.168.254.66/cloudera-repos/
image1-3.png

1.3 CM安装

1.3.1 集群规划

节点 hadoop102 hadoop103 hadoop104
服务 cloudera-scm-server
cloudera-scm-agent
cloudera-scm-agent cloudera-scm-agent

1.3.2 替换yum源(所有节点)
先备份yum源,

cd /etc/yum.repos.d/ 
mkdir repo_bak
mv *.repo repo_bak/ 

新建并修改文件cloudera-manager.repo

vim cloudera-manager.repo 
# 内容如下 
[cloudera-manager] 
name=Cloudera_Manager_6.2.0 
baseurl=http://192.168.3.67/cloudera-repos/
gpgcheck=0 
enabled=1

其中地址指向主节点的httpd
保存,退出,然后执行命令

yum clean all && yum makecache 

1.3.3 安装CM server及agent

[root@hadoop102 ~]# yum install cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server
[root@hadoop103 ~]# yum install cloudera-manager-agent cloudera-manager-daemons
[root@hadoop104 ~]# yum install cloudera-manager-agent cloudera-manager-daemons

1.3.4 修改CM配置文件(所有主机)

vim /etc/cloudera-scm-agent/config.ini

image1-4.png

1.3.5 CDH Parcel文件(主节点)

Cloudera Manager Server安装完成后,进入到本地Parcel存储库目录:
1)上传CDH的parcel文件和manifest.json

cd /opt/cloudera/parcel-repo 

2)执行下面的命令修改文件所有者:

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

最终/opt/cloudera/parcel-repo目录内容如下:

image1-5.png

1.3.6 设置Cloudera Manager 数据库(主节点)

Cloudera Manager Server包含一个配置数据库的脚本。
mysql数据库与CM Server是同一台主机时命令为

/opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm root root@guoyun

/opt/cloudera/cm/schema/scm_prepare_database.sh脚本第一个参数为数据源类型,第二个为库名,第三个为账号,第四个为密码

image1-6.png

1.3.7 启动CM服务

1)启动服务节点:hadoop102

[root@hadoop102 ~]# systemctl start cloudera-scm-server

2)启动工作节点:hadoop102、hadoop103、hadoop104

[root@hadoop102 ~]# systemctl start cloudera-scm-agent
[root@hadoop103 ~]# systemctl start cloudera-scm-agent
[root@hadoop104 ~]# systemctl start cloudera-scm-agent

3)查看Server启动日志

[root@hadoop102 ~]# tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log

image1-7.png

出现Started Jetty server字样及表明启动成功。
4)访问http://hadoop102:7180(初始用户名、密码均为admin)

image1-8.png

二、CDH安装

2.1 选择商业版本

1)欢迎页面

image1-9.png

2)用户协议

image1-10.png

3)选择免费版

image1-11.png

2.2 部署CDH集群

1)欢迎页面

image1-12.png

2)集群命名

image1-13.png

3)选定集群物理节点

image1-14.png

4)添加本地parcel库

image1-15.png

image1-16.png

image1-17.png

5)等待parcel的下载、分配、解压和激活

image1-18.png

6)检查集群网络环境

image1-19.png

7)选择要安装的CDH组件,选择自定义安装

image1-20.png

8)选择需要安装的组件,如下

image1-21.png

9)CDH各组件角色分布

image1-22.png

image1-23.png

image1-24.png

10)数据库连接测试

image1-25.png

11)各组件基本设置,使用默认即可

image1-26.png

12)等待安装部署和启动

image1-27.png

image1-28.png

image1-29.png

13)启动成功

image1-30.png