前言-虚拟机安装Centos 7 【略】
一、环境准备
1.0 设置静态ip,重启网络
vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static" 【dhcp修改成static】
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="3ae6eeaa-9ed5-4166-89d2-6212f0e65c13"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.44.101 【添加】
GATEWAY=192.168.44.2 【添加】
DNS1=192.168.44.2 【添加】
service network restart --重启网络
若是xshell客户端修改,会出现下面提示,按静态IP重新配置连接
1.1 3台机器主机名配置,reboot重启
[root@localhost ~]# hostname cdh01
[root@localhost ~]# vi /etc/hostname
cdh01
[root@localhost ~]# reboot
修改后
1.2 配置hosts映射
# vim /etc/hosts
1.3 关闭防火墙
[root@cdh01 admin]# systemctl stop firewalld
[root@cdh01 admin]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@cdh01 admin]#
1.4 SSH免密登录
先实现每一个节点自己免密码登录自己
在cdh01节点上操作
[root@cdh01 ~]# ssh-keygen -t rsa
[root@cdh01 ~]# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
[root@cdh01 ~]# ssh cdh01
[root@cdh01 ~]# exit
在cdh02节点上操作
[root@cdh01 ~]# ssh-keygen -t rsa
[root@cdh01 ~]# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
[root@cdh01 ~]# ssh cdh02
[root@cdh01 ~]# exit
在cdh03节点上操作
[root@cdh01 ~]# ssh-keygen -t rsa
[root@cdh01 ~]# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
[root@cdh01 ~]# ssh cdh03
[root@cdh01 ~]# exit
接着实现cdh01免密码登录cdh02和cdh03
在cdh01节点上操作
[root@cdh01 ~]# scp ~/.ssh/authorized_keys cdh02:~/
[root@cdh01 ~]# scp ~/.ssh/authorized_keys cdh03:~/
在cdh02和cdh03节点上操作
[root@cdh02 ~]# cat ~/authorized_keys >> ~/.ssh/authorized_keys
[root@cdh03 ~]# cat ~/authorized_keys >> ~/.ssh/authorized_keys
此时cdh01节点就可以免密码登录cdh02和cdh03了
验证一下
[root@cdh01 ~]# ssh cdh02
Last login: Wed Oct 28 14:31:26 2020 from cdh02
[root@cdh02 ~]# exit
logout
Connection to cdh02 closed.
[root@cdh01 ~]# ssh cdh03
Last login: Wed Oct 28 14:32:14 2020 from cdh03
[root@cdh03 ~]# exit
logout
Connection to cdh03 closed.
接着实现cdh02免密码登录cdh01和cdh03
在cdh02节点上操作
[root@cdh02 ~]# scp ~/.ssh/authorized_keys cdh01:~/
[root@cdh02 ~]# scp ~/.ssh/authorized_keys cdh03:~/
在cdh01和cdh03节点上操作
[root@cdh01 ~]# cat ~/authorized_keys >> ~/.ssh/authorized_keys
[root@cdh03 ~]# cat ~/authorized_keys >> ~/.ssh/authorized_keys
此时cdh02节点就可以免密码登录cdh01和cdh03了
接着实现cdh03免密码登录cdh01和cdh02
在cdh02节点上操作
[root@cdh03 ~]# scp ~/.ssh/authorized_keys cdh01:~/
[root@cdh03 ~]# scp ~/.ssh/authorized_keys cdh02:~/
在cdh01和cdh02节点上操作
[root@cdh01 ~]# cat ~/authorized_keys >> ~/.ssh/authorized_keys
[root@cdh02 ~]# cat ~/authorized_keys >> ~/.ssh/authorized_keys
此时cdh02节点就可以免密码登录cdh01和cdh02了
到此为止,集群内的所有节点都可以互相免密码登录了。
1.5 配置NTP时钟同步
1)首先在三台机器上进行如下操作
安装ntp服务,同步阿里云ntp服务器时间
[root@cdh01 ~]# yum -y install ntp
[root@cdh01 ~]# vi /etc/ntp.conf
.....
# 将下面这四行内容注释掉
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
# 然后增加一行内容
server ntp.aliyun.com
#启动ntp服务
[root@cdh01 ~]# service ntpd start
Redirecting to /bin/systemctl start ntpd.service
#添加到开机启动项里面
[root@cdh01 ~]# systemctl enable ntpd.service
Created symlink from /etc/systemd/system/multi-user.target.wants/ntpd.service to /usr/lib/systemd/system/ntpd.service.
配置好了以后查看验证一下当前同步的时间服务器
随便找一台机查看一下。
注意:需要等5~10分钟才能看到类似下面的结果,显示出来下面这种结果的时候才说明是真正成功了,如果看不到这样的效果,需要等一会再来查看。
[root@cdh01 ~]# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*203.107.6.88 100.107.25.114 2 u 40 128 377 36.058 -7.906 1.142
[root@cdh01 ~]# ntpstat
synchronised to NTP server (203.107.6.88) at stratum 3
time correct to within 42 ms
polling server every 128 s
1.6 关闭SELINUX
安全增强型Linux(Security-Enhanced Linux)简称SELinux,它是一个 Linux 内核模块,也是Linux的一个安全子系统。为了避免安装过程出现各种错误,建议关闭,有如下两种关闭方法:
1)临时关闭(重启机器后会失效)
# setenforce 0
2)永久关闭(建议使用)
# vim /etc/selinux/config
--将SELINUX=enforcing 改为SELINUX=disabled
3)同步/etc/selinux/config配置文件
cd /root/bin
sh xsync.sh /etc/selinux/config
--该脚本会批量修改其他机器的配置文件
4)重启master、slave01、slave02
# reboot
二、CM安装准备软件
2.1 安装JDK
#将jdk的rpm安装包上传到cdh01的/opt目录下
#安装jdk:
rpm -ivh oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm
#拷贝至其他机器:
scp -rq oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm cdh02:/opt/
scp -rq oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm cdh03:/opt/
#修改环境变量,在profile文件末尾添加JDK路径
vim /etc/profile
#JAVA_HOME
export JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera
export PATH=$PATH:$JAVA_HOME/bin
#重新加载环境变量
source /etc/profile
#测试
java -version
2.2 安装Mysql
卸载原生的mariadb
[root@cdh01 opt]# rpm -qa|grep mariadb
mariadb-libs-5.5.68-1.el7.x86_64
[root@cdh01 opt]#
将MySQL安装包上传到cdh01的/opt目录中
将MySQL安装包上传到cdh01的/opt目录中,解压
[root@cdh01 opt]# tar -xvf mysql-5.7.31-1.el7.x86_64.rpm-bundle.tar
安装MySQL
[root@cdh01 opt]# rpm -ivh mysql-community-common-5.7.31-1.el7.x86_64.rpm --force --nodeps
[root@cdh01 opt]# rpm -ivh mysql-community-libs-5.7.31-1.el7.x86_64.rpm --force --nodeps
[root@cdh01 opt]# rpm -ivh mysql-community-client-5.7.31-1.el7.x86_64.rpm --force --nodeps
[root@cdh01 opt]# rpm -ivh mysql-community-server-5.7.31-1.el7.x86_64.rpm --force --nodeps
[root@cdh01 opt]# rpm -ivh mysql-community-libs-compat-5.7.31-1.el7.x86_64.rpm --force --nodeps
先初始化MySQL
[root@cdh01 opt]# mysqld --initialize --user=mysql
获取MySQL生成的随机密码,在文件/var/log/mysqld.log的最后一行
[root@cdh01 opt]# cat /var/log/mysqld.log | tail -1
2020-10-28T11:51:25.902353Z 1 [Note] A temporary password is generated for root@localhost: Z+W(z1V%cii=
设置MySQL服务开机启动
[root@cdh01 opt]# systemctl start mysqld.service
重启一下MySQL服务,否则连不上去
[root@cdh01 opt]# systemctl restart mysqld
修改密码
[root@cdh01 opt]# mysql -uroot -p
mysql> alter user user() identified by "abc123456";
在MySQL中创建数据库,后面会用到这些库。
create database cmserver default charset utf8 collate utf8_general_ci;
grant all on cmserver.* to 'root'@'%' identified by 'abc123456';
create database metastore default charset utf8 collate utf8_general_ci;
grant all on metastore.* to 'root'@'%' identified by 'abc123456';
create database rman default charset utf8 collate utf8_general_ci;
grant all on rman.* to 'root'@'%' identified by 'abc123456';
create database oozie default charset utf8 collate utf8_general_ci;
grant all on oozie.* to 'root'@'%' identified by 'abc123456';
create database hue default charset utf8 collate utf8_general_ci;
grant all on hue.* to 'root'@'%' identified by 'abc123456';
创建/usr/share/java目录,将mysql的connector驱动jar包上传到里面
注意:需要在集群内的所有节点操作
先在cdh01、cdh02、cdh03上创建目录
[root@cdh01 ~]# mkdir -p /usr/share/java
[root@cdh02 ~]# mkdir -p /usr/share/java
[root@cdh03 ~]# mkdir -p /usr/share/java
将mysql的connector驱动jar包上传到集群内所有节点的/usr/share/java目录中,jar包重命名
[root@cdh01 java]# mv mysql-connector-java-5.1.47.jar mysql-connector-java.jar
[root@cdh02 java]# mv mysql-connector-java-5.1.47.jar mysql-connector-java.jar
[root@cdh03 java]# mv mysql-connector-java-5.1.47.jar mysql-connector-java.jar
2.3 在cdh01节点上安装Httpd服务
使用yum在线安装httpd
[root@cdh01 opt]# yum -y install httpd
启动httpd服务
[root@cdh01 opt]# systemctl start httpd
添加到开启启动项中
[root@cdh01 opt]# systemctl enable httpd.service
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
2.4 在cdh01节点上配置Cloudera Manager包
创建目录
[root@cdh01 opt]# mkdir -p /var/www/html/cloudera-repos/cm6
将Cloudera Manager的相关文件上传到/var/www/html/cloudera-repos/cm6目录中 ,allkeys.asc RPM-GPG-KEY-cloudera 也上传
安装createrepo
http://www.rpmfind.net/linux/rpm2html/search.php?query=createrepo
将下载的createrepo-0.9.9-28.el7.noarch.rpm上传到/opt目录中
[root@cdh01 opt]# rpm -ivh createrepo-0.9.9-28.el7.noarch.rpm --force --nodeps
安装deltarpm
http://mirror.centos.org/centos/7/os/x86_64/Packages/python-deltarpm-3.6-3.el7.x86_64.rpm
将下载好的python-deltarpm-3.6-3.el7.x86_64.rpm上传到/opt目录中
[root@cdh01 opt]# rpm -ivh python-deltarpm-3.6-3.el7.x86_64.rpm --force --nodeps
创建repodata
[root@cdh01 cm6]# createrepo .
Spawning worker 0 with 1 pkgs
Spawning worker 1 with 1 pkgs
Spawning worker 2 with 1 pkgs
Spawning worker 3 with 1 pkgs
Spawning worker 4 with 0 pkgs
Spawning worker 5 with 0 pkgs
Spawning worker 6 with 0 pkgs
Spawning worker 7 with 0 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
注意:repodata创建成功之后,会在cm6目录下看到一个新创建的repodata目录
此时cm6目录中的内容如下:
2.5 在集群内所有节点添加新配置的yum源
首先在cdh01节点上操作
添加yum源
[root@cdh01 ~]# vi /etc/yum.repos.d/cloudera-manager.repo
[cloudera-manager]
name = Cloudera Manager,Version
baseurl = http://cdh01/cloudera-repos/cm6
gpgcheck = 1
清除yum缓存
[root@cdh01 ~]# yum clean all
[root@cdh01 ~]# yum makecache
然后在cdh02节点上操作
添加yum源
[root@cdh02 ~]# vi /etc/yum.repos.d/cloudera-manager.repo
[cloudera-manager]
name = Cloudera Manager,Version
baseurl = http://cdh01/cloudera-repos/cm6
gpgcheck = 1
清除yum缓存
[root@cdh01 ~]# yum clean all
[root@cdh01 ~]# yum makecache
然后在cdh03节点上操作
添加yum源
[root@cdh02 ~]# vi /etc/yum.repos.d/cloudera-manager.repo
[cloudera-manager]
name = Cloudera Manager,Version
baseurl = http://cdh01/cloudera-repos/cm6
gpgcheck = 1
清除yum缓存
[root@cdh01 ~]# yum clean all
[root@cdh01 ~]# yum makecache
注意:要确保配置中baseurl 对应的url是可以访问的
由于我在windows中没有配置主机名和ip的映射关系,所以在windows中的浏览器里面访问的时候需要使用ip
2.6 安装 Cloudera Manager相关服务
Cloudera Manager简称为cm
想要安装CDH集群,需要先安装cm,然后在cm提供的web界面上安装CDH集群,比较方便。
1)首先在三台机器上操作
注意:在安装之前,先执行这个命令,否则在安装cm相关服务的时候会报错
该文件只在CDH01上有
[root@cdh01 ~]# rpm --import http://cdh01/cloudera-repos/cm6/RPM-GPG-KEY-cloudera
2) 安装 cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server这3个服务
cdh01节点作为cm的server节点,故需要多安装一个cloudera-manager-server服务
[root@cdh01 ~]# yum -y install cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server
cdh02,03只需安装 cloudera-manager-daemons cloudera-manager-agent
[root@cdh03 ~]# yum -y install cloudera-manager-daemons cloudera-manager-agent
2.7 上传cdh安装包到集群所有节点上
安装完cm之后,在/opt/目录下会出现cloudera目录
将cdh的安装包CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel上传到/opt/cloudera/parcel-repo目录中。
生成sha文件
[root@cdh01 parcel-repo]# sha1sum CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel | awk '{print $1}' > CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha
然后通过scp将CDH安装包和sha文件拷贝到cdh02和cdh03节点的/opt/cloudera/parcel-repo目录中
注意:cdh02和cdh03节点上只有/opt/cloudera/目录,没有parcel-repo目录,需要我们手工创建
在cdh02,03节点上操作
[root@cdh02 ~]# mkdir -p /opt/cloudera/parcel-repo
[root@cdh03 ~]# mkdir -p /opt/cloudera/parcel-repo
在cdh01节点上使用scp远程拷贝
[root@cdh01 parcel-repo]# scp -rq CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel cdh02:/opt/cloudera/parcel-repo
[root@cdh01 parcel-repo]# scp -rq CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha cdh02:/opt/cloudera/parcel-repo
[root@cdh01 parcel-repo]# scp -rq CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel cdh03:/opt/cloudera/parcel-repo
[root@cdh01 parcel-repo]# scp -rq CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha cdh03:/opt/cloudera/parcel-repo
2.8 在cdh01节点上启动cm+安装cdh集群
初始化cm
[root@cdh01 ~]# /opt/cloudera/cm/schema/scm_prepare_database.sh mysql cmserver root abc123456
启动cm
[root@cdh01 ~]# service cloudera-scm-server start
稍后几分钟(5~10分钟),就可以打开cm的管理界面了,端口是7180。
http://cdh01:7180
安装cdh集群
注意:在windows中没有配置cdh01主机名和ip映射关系的话,就需要使用ip访问了
我在这里就使用ip访问了
http://192.168.44.101:7180
用户名和密码都是admin
登录进来之后是这样的,点击继续
输入集群中的所有节点主机名
点击搜索按钮
选中所有主机,【继续】
输入自定义存储库,确认CDH版本为6.3.2
点击【继续】
输入集群中节点的密码,然后点击继续
然后会进入到cm Agent安装界面,需要稍等一会,5~10分钟。
需要用到【步骤2.4】中上传的文件allkeys.asc
cm Agent安装成功之后是这样的,点击继续按钮
此时会进入到CDH安装界面,需要稍等一会,10~20分钟
安装完成
击这两个高级选项,开始检测
点击第一个 连通性检测结果 【可能误报,具体以实际情况为准】
连通性 ok
第二个检测结果,一些修改机器配置的建议,建议根据提示修改
【执行建议方案】
首先在三个节点上操作
[root@cdh01 ~]# sysctl vm.swappiness=10
[root@cdh01~]# echo 'vm.swappiness=10'>> /etc/sysctl.conf
[root@cdh01 ~]# echo never > /sys/kernel/mm/transparent_hugepage/defrag
[root@cdh01 ~]# echo never > /sys/kernel/mm/transparent_hugepage/enabled
[root@cdh01 parcel-repo]# vi /etc/rc.local
# 将下面这两行配置添加到文件末尾即可
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
修改完毕以后,点击重新运行,重新检测
选择适合自己的方案
cdh会自动进行角色分配,将刚才选择的大数据组件安装到集群的不同节点上。
注意:前期不是很熟悉的情况下,建议使用自动分配的方式即可,这里什么都不要修改。
在这里输入数据库名称,用户名、密码,然后点击 测试连接 按钮,测试成功的话,在每一行的最后面都会显示Successful,如果有问题,会显示具体的错误信息。
【问题】Logon denied for user/password. Able to find the database server and database, but the login request
【解决方式】
grant all privileges on *.* to 'root'@'cdh01' identified by 'abc123456' with grant option;
flush privileges;
这些数据库我们在前面安装mysql的时候已经提前创建好了。
默认在这里不需要改什么东西
等待启动集群内大数据组件的服务,大致需要10~20分钟
服务启动成功之后是这样的,如果有红色的报错提示,可以点进去查看详细报错信息。