准备工作
一、安装虚拟机、centos
1、安装VMwareWorkstation虚拟化软件
首先我们使用VMwareWorkstation来快速的进行虚拟机的新建。
本文使用的版本为VMwareWorkstation 16.1.2(版本16.1.2 build-17966106)
2、主节点配置(master)















虚拟机新建完成,可以继续编辑虚拟机,将安装镜像挂载

3、设置虚拟机网络
等虚拟机装机完成,点设置进行挂载

Ifconfig 查虚拟机网络



网络 vmnet8
子网 IP 192.168.67.0
子网掩码 255.255.255.0
网关 192.168.67.2
进入虚拟机进行网卡设置

root@localhost /\]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO=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="82f63c42-7f4b-4b07-a22d-5bb3be8e50d6"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.67.101
NETMASK=255.255.255.0
GATEWAY=192.168.67.2
DNS1= 8.8.8.8
DNS2=8.8.8.4
重启网络


获取本地 百度 某个节点进行访问


解决网络不通的问题

ping: www.baidu.com: Name or service not known
resolv.conf中的nameserver与ifcfg-ens33文件中DNS的设置相同:
vi /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.8.4

\[root@localhost /\]# history
1 vi ifcfg-ens33
2 service network restart
3 ifconfig
4 ping 192.168.67.101
5 ping 183.2.172.177
6 ping www.baidu.com
7 vi /etc/resolv.conf
8 cat /etc/resolv.conf
9 cd /
10 source /etc/resolv.conf
11 echo $PATH
12 history

网络已通
4、从节点(slave-1和slave-2)配置
按上述步骤固定网络和疏通网络
内存足够的话 克隆操作是最方便的,但是内存有限只能主节点内存配置高,其余节点少一些了。直接克隆主节点会报内存不足。







内存爆满,铲掉!重新配置

按照master 节点进行 网络配置
\[root@localhost /\]# history
1 vi /etc/sysconfig/network-scripts/ifcfg-ens33
2 service network restart
3 ping 192.168.92.102
4 ping 192.168.67.102
5 vi /etc/resolv.conf
6 ping www.baidu.com
7 ping 192.168.67.103
8 ping 192.168.67.102
9 ifconfig
10 history


\[root@localhost /\]# history
1 vi /etc/sysconfig/network-scripts/ifcfg-ens33
2 service network restart
3 vi /etc/resolv.conf
4 ping 192.168.67.103
5 ping www.baidu.com
6 history
上述操作完成 节点2和节点3 网络的固定和通网。
5、xshell远程访问
此时将三台虚拟机开启,最终的效果三台虚拟机正常运行,xshell可以远程同时操作这三台机器

连接SSH 管理虚拟机
网络 vmnet8
子网 IP 192.168.67.0
子网掩码 255.255.255.0
网关 192.168.67.2
主节点 192.168.67.101 master
节点1 192.168.67.102 slave-1
节点2 192.168.67.103 slave-2




其余俩节点类似配置登上去即可


6、设置主机名(每一个节点都需要执行)
# 此处为例子,根据实际情况自行设定名称,此处将服务器名称改为master
hostnamectl set-hostname master
# 设置第二个节点服务器的名称为slave-1
hostnamectl set-hostname slave-1
# 设置第三个节点服务器的名称为slave-2
hostnamectl set-hostname slave-2
输入 exit 退出登录,接着输入ssh [email protected] 输密码登录即可看到修改的服务器名已生效

\[root@master \~\]# history
1 ifconfig
2 hostnamectl set-hostname master
3 exit
4 history



也可以通过输入 hostname 来验证是否成功,上述登录登出只是为了直观感受(看着舒服)



7、修改hosts文件(每一个节点都需要执行)
# 修改hosts文件(每一个节点都需要执行)
# 编辑hosts文件
vim /etc/hosts
# 在hosts文件尾部追加如下内容
192.168.67.101 master
192.168.67.102 slave-1
192.168.67.103 slave-2




8、修改每台主机的/etc/sysconfig/network文件(每一个节点都需要执行)
# 打开文件
vim /etc/sysconfig/network
# 写入对应的服务器
HOSTNAME=master
注:其余节点服务器分别写入各自服务器名称



9、查看主机名是否生效(每一个节点都需要执行)



10、关闭防火墙(每一个节点都需要执行)
# 直接全部粘贴复制执行就好
systemctl stop firewalld
\&\& systemctl disable firewalld
\&\& systemctl status firewalld



11、关闭Selinux(每一个节点都需要执行)
# 编辑selinux文件
vim /etc/sysconfig/selinux
# 修改如下内容,将enforcing换成permissive
SELINUX=permissive
### 注意:此处需要重启服务器,不然不生效,会导致后面搭建本地yum源的时候报403的错误
重启指令:reboot

其余俩节点进行一样的修改



12、配置SSH免密登陆(每一个节点都需要执行)
虚拟机新增三节点如下:
192.168.67.101 master 主节点
192.168.67.102 slave-1 节点1
192.168.67.103 slave-2 节点2
# 配置SSH免密登陆(每一个节点都需要执行)
1、设置master免密远程登录其他节点,以root用户为例
# 在master节点输入如下指令(生成密钥):
ssh-keygen -t rsa
# 四次回车 密码给空
# 如下操作,将公钥发送给每个节点:
ssh-copy-id master
ssh-copy-id slave-1
ssh-copy-id slave-2
# 上述操作在三个节点上都操作一边,即可实现免密码登录服务器





操作跟主节点一致

验证
# 在master节点输入如下指令(生成密钥):
ssh-keygen -t rsa
# 四次回车 密码给空
# 如下操作,将公钥发送给每个节点:
ssh-copy-id master
ssh-copy-id slave-1
ssh-copy-id slave-2



13、设置NTP服务
在主节点上
# 编辑ntp.conf文件
vim /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 127.127.1.0
Fudge 127.127.1.0 stratum 10
# 修改如下信息
restrict ${当前节点ip} nomodify notrap nopeer noquery
restrict ${集群所在网段的网关} mask ${子网掩码} nomodify notrap

其余节点上(其余节点都需要执行)
# 编辑ntp.conf文件
vim /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 ${主节点ip}
Fudge ${主节点ip} stratum 10
# 修改如下信息
restrict ${当前节点ip} nomodify notrap nopeer noquery
restrict ${集群所在网段的网关} mask ${子网掩码} nomodify notrap
--slave-1
vim /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 192.168.67.101
Fudge 192.168.67.101 stratum 10
restrict 192.168.67.102 nomodify notrap nopeer noquery
restrict 192.168.67.2 mask 255.255.255.0 nomodify notrap

--slave-2
vim /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 192.168.67.101
Fudge 192.168.67.101 stratum 10
restrict 192.168.67.103 nomodify notrap nopeer noquery
restrict 192.168.67.2 mask 255.255.255.0 nomodify notrap

启动时间同步服务器(每一个节点都要执行)
# 启动时间同步服务器(每一个节点都要执行)
# 直接全部粘贴复制运行即可
systemctl start ntpd
\&\& systemctl enable ntpd
\&\& ntpdate -u 0.cn.pool.ntp.org
\&\& hwclock --systohc
\&\& date
# 查看是否链接上主节点时间服务器
Ntpstat

上个步骤报错
# 解决方案
原因是 上一步的 改动 动网了 上不了网了
ping: www.baidu.com: Name or service not known
vi /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.8.4
# 不知何原因vi /etc/resolv.conf 配置总被失效,只能每次发现问题时加上nameserver 8.8.8.8才通网,后续找个彻底修改的方法。
重新进行上一步骤,启动时间同步服务器



以上操作为服务器前期准备操作,接下来就是 下载相关软件进行部署
二、安装软件清单和路径创建
通过网盘分享的文件:cloudera.zip
链接: 提取码: 7qe5
注:以上安装包是一个zip包,内包含安装CDH6.1所有的包,下载后解压即可

1.上传安装包到master主节点
注意:这里的安装目录最好以本文为主,这样后面的指令直接可以粘贴复制即可,不用修改
2.在root目录下新建cloudera目录,并将下载的安装包放于里面
# 在root目录下创建cloudera目录
cd /root
mkdir cloudera




3.上传安装包于cloudera目录下,并解压

上传安装包后截图

# 解压指令
unzip cloudera.zip
# 这里解决一下一个bug,文件名命名不对,我懒得去更新压缩包内的内容了,所有搭建者看到这就自己辛苦下
cd /root/cloudera/cloudera-manager
mv allkeys.asc.txt allkeys.asc



4.查看所有安装包目录信息
5.安装tree
# 如果没有tree指令,则先下载安装指令
yum install tree
# 查看root目录下cloudera目录的目录树
tree -C /root/cloudera
6.tree安装失败处理方案
--tree 下载失败
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget -O /etc/yum.repos.d/CentOS-Base.repo
或者
curl -o /etc/yum.repos.d/CentOS-Base.repo
yum clean all
yum makecache

\[root@master /\]# history
1 ifconfig
2 hostnamectl set-hostname master
3 exit
4 history
5 hostname
6 vim /etc/hosts
7 cat /etc/hosts
8 vim /etc/sysconfig/network
9 cat /etc/sysconfig/network
10 hostname
11 systemctl stop firewalld \&\& systemctl disable firewalld \&\& systemctl status firewalld
12 vim /etc/sysconfig/selinux
13 reboot
14 history
15 vim /etc/ntp.conf
16 systemctl start ntpd \&\& systemctl enable ntpd \&\& ntpdate -u 0.cn.pool.ntp.org \&\& hwclock --systohc \&\& date
17 vi /etc/resolv.conf
18 systemctl start ntpd \&\& systemctl enable ntpd \&\& ntpdate -u 0.cn.pool.ntp.org \&\& hwclock --systohc \&\& date
19 ntpstat
20 cd /root
21 mkdir cloudera
22 ls
23 ll
24 cd cloudera/
25 ls
26 ll
27 unzip cloudera.zip
28 ll
29 cd /root/cloudera/cloudera-manager
30 mv allkeys.asc.txt allkeys.asc
31 ll
32 cd /
33 yum install tree
34 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
35 wget -O /etc/yum.repos.d/CentOS-Base.repo
36 yum clean all
37 yum makecache
38 yum install tree
39 history
\[root@master /\]#

在其余俩节点可按喜好进行安装tree(本文安装了)
7.安装常用工具(每一个节点都需要执行)
yum install -y vim wget ntp net-tools
三、在主节点安装本地yum源(只需要在主节点,也就是安装CM的节点)
# 前面强调了把下载的安装包放于/root/cloudera下面,此处下面指令就全部粘贴复制运行即可,否则需要更改路径信息
yum -y install httpd createrepo
\&\& systemctl start httpd
\&\& systemctl enable httpd
\&\& cd /root/cloudera/cloudera-manager/
\&\& createrepo .
\&\& mv /root/cloudera/cloudera-manager/ /var/www/html/

四、安装JDK(只需要在主节点,也就是安装CM的节点)
# 进入到安装路径下,(安装前面所示安装包路径,则直接粘贴使用)
cd /var/www/html/cloudera-manager/
rpm -ivh oracle-j2sdk1.8-1.8.0+update141-1.x86_64.rpm

五、安装Mysql(只需要在主节点,也就是安装CM的节点)
1.卸载mariadb
# 以下指令全部粘贴复制就行
# 卸载自带的mariadb
yum -y remove mariadb-libs

2.解压下载MySQL的安装包
# 解压下载的MySQL包
cd /root/cloudera/mysql/
tar -xvf mysql-5.7.27-1.el7.x86_64.rpm-bundle.tar


3.安装MySQL
`#直接全部粘贴复制运行 yum install -y libaio \ && rpm -ivh mysql-community-common-5.7.27-1.el7.x86_64.rpm \ && rpm -ivh mysql-community-libs-5.7.27-1.el7.x86_64.rpm \ && rpm -ivh mysql-community-client-5.7.27-1.el7.x86_64.rpm \ && rpm -ivh mysql-community-server-5.7.27-1.el7.x86_64.rpm \ && rpm -ivh mysql-community-libs-compat-5.7.27-1.el7.x86_64.rpm`

4.配置 my.cnf
`#粘贴复制运行即可 echo character-set-server=utf8 >> /etc/my.cnf`

5.创建数据库以及授权
# 这只是一个创建数据库的SQL脚本文件,里面涉及到数据库的密码,根据个人进行修改即可,修改后全部粘贴复制运行就好
`( cat <> /root/c.sql`

6.启动MySQL服务
# 直接粘贴复制运行即可
`systemctl enable mysqld && systemctl start mysqld && grep password /var/log/mysqld.log | sed 's/.*\(............\)$/\1/'`

初始化密码为 8Tkxdu/dTAdj
7.登陆MySQL并运行之前写好的SQL脚本
# 登陆MySQL
mysql -uroot -p
# 密码就输入上面打印出的初始化密码就好
# 运行SQL文件(注意你的sql是否放在该目录下,建议以文档为主,懒得修改那么多)
source /root/c.sql


8.配置MySQL JDBC驱动
输入exit 退出 mysql
# 直接粘贴复制执行
mkdir -p /usr/share/java/
\&\& cd /root/cloudera/mysql-jdbc/;tar -zxvf mysql-connector-java-5.1.47.tar.gz
\&\& cp /root/cloudera/mysql-jdbc/mysql-connector-java-5.1.47/mysql-connector-java-5.1.47-bin.jar /usr/share/java/mysql-connector-java.jar
需要授权,赋予执行权限
chmod 777 mysql-connector-java.jar 或者 chmod 775 mysql-connector-java.jar
CM搭建、集群部署
一、在主节点上配置本地yum源
# 配置本地yum源,记得要修改ip,修改后直接粘贴复制执行即可
`( cat <> /etc/yum.repos.d/cloudera-manager.repo \ && yum clean all \ && yum makecache`

二、安装 Cloudera Manager
`yum install -y cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server`

三、 配置本地Parcel存储库
# 以下指令依次粘贴执行就好,第一条指令
\`mv /root/cloudera/parcel/\* /opt/cloudera/parcel-repo
# 第二条指令
cd /opt/cloudera/parcel-repo/
# 第三条指令
sha1sum CDH-6.1.0-1.cdh6.1.0.p0.770702-el7.parcel \| awk '{ print $1 }' \> CDH-6.1.0-1.cdh6.1.0.p0.770702-el7.parcel.sha
# 第四条指令
chown -R cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo/\*\`

四、初始化scm库
# 注意修改你所配置的mysql对应scm库的密码
`/opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm 123456Aa.`
五、启动CM
# 直接粘贴复制执行
`systemctl start cloudera-scm-server \ && sleep 2 \ && tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log | grep "INFO WebServerImpl:com.cloudera.server.cmf.WebServerImpl: Started Jetty server"`

六、登陆CM界面完成CDH部署
{CM所在节点的IP}:7180
账号/密码:admin/admin
1.登录CM界面
账号/密码:admin/admin

2.用户许可,同意,继续

3.选择使用版本,继续



4.搜索主机,添加到群集

5.自定义存储库(选择配置好的yum源地址)

6.同意jdk使用许可,继续

7.提供SSH登录凭据,继续

8.安装Agents(每个节点均需)



9.安装parcels(每个节点均需)


点继续,完成主机检查
10.选择自定义安装的大数据组件


11.选择自定义角色分配(均匀一些)

12.测试数据库连接


点测试连接

未找到驱动

问题原因:102、103未找到MySQL驱动
只在主节点放驱动,未在slave-1 slave-2 放驱动


解决方案:将MySQL驱动上传至102、103
创建驱动目录,把文件上传到俩从节点 102 和 103


mkdir cloudera
上传mysql-jdbc文件至/root/cloudera 目录下 即可

点测试连接,通过,继续下一步
13.首次运行

hive启动MetaStore报错
报错信息:First failure: Command (Validate Hive Metastore schema (78)) has failed


创建HIVE 数据库失败
First failure: Command (Validate Hive Metastore schema (78)) has failed

返回返回返回 改回 只在master 节点安装
解决方法:
在cdh角色配置页中,将hive的Hive Metastore server配置为master机器
--此解决方案失败,继续排查

sudo cp /root/cloudera/mysql-jdbc/mysql-connector-java-5.1.47/mysql-connector-java-5.1.47-bin.jar /usr/share/java/mysql-connector-java.jar
此方案也不行
参考第三种方案

根据错误提示可以看到,初始化过程中没有连接mysql数据库,而是去连接默认的derby数据库,于是打开/etc/hive/conf/hive-site.xml,我们可以看到它并没有相关mysql元数据库的配置--这个方案是可行的,最后也是用了此方案,我配置信息配错了,可直接翻到最后查看准确的配置信息。

所以需要在/etc/hive/conf/hive-site.xml(cloudera/parcels/CDH/lib/hive/conf的软链实体)中手动添加元数据库配置,添加如下内容:

删库重来

不能解决此问题,继续排查

chmod 777 mysql-connector-java.jar或者 chmod 775 mysql-connector-java.jar

重新执行还是不行(崩溃ing)
修改文件打开限制
vi /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* soft nproc 131072
报错信息变了
Failed to get schema version, Cause:Table 'metastore.VERSION' doesn't exist

初始化脚本在
cd /opt/cloudera/parcels/CDH/lib/hive/bin/
执行初始化命令
./schematool -initSchema -dbType mysql --verbose
根据错误提示可以看到,初始化过程中没有连接mysql数据库,而是去连接默认的derby数据库,于是打开/etc/hive/conf/hive-site.xml,我们可以看到它并没有相关mysql元数据库的配置
新增配置:
`vi /etc/hive/conf/hive-site.xml`
` javax.jdo.option.ConnectionURL jdbc:mysql://192.168.67.101:3306/metastore?createDatabaseIfNotExist=true javax.jdo.option.ConnectionDriverName com.mysql.jdbc.Driver javax.jdo.option.ConnectionUserName root javax.jdo.option.ConnectionPassword 123456Aa. `

`cd /opt/cloudera/parcels/CDH/lib/hive/bin/`
`./schematool -initSchema -dbType mysql --verbose`
再次执行完就能看到schemaTool completed信息,可回到CM主页进行重跑。


14.安装服务完成




