CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

说在前面的话:本文适合电脑内存16G以上的,安装的是纯正的CDH,不是三个节点的,纯正四节点。建议配置主节点3G内存,从节点1.5G内存,硬盘大小建议单节点配置20G以上,CDH版本比apache吃内存和硬盘,请准备好再安装

如果你是新手学习,强烈!建议不要瞎改瞎命名,因为后面都是有关联的。如果跟我的一模一样,完全无脑CV保证安装成功,安装过程中遇到的报错各种问题都在相应的环节有说明,不要慌稍微往后看看。

1.下载 CentOS-6.7-x86_64-bin-DVD1.iso

2.安装CentOS

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

3.配置相关

可以先删除当前账户家目录无用文件

[[email protected] ~]$ rm -rf *

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

3.1 修改主机名

在 root 账号下用命令:vi /etc/sysconfig/network

或者如果配置了 hadoop sudo 权限,则在 hadoop 登录情况下使用命令:sudo vi /etc/sysconfig/network

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

3.2 设置系统默认启动级别

在 root 账号下输入 vi /etc/inittab

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

3.3 配置 hadoop 用户 sudoer 权限

在 root 账号下,命令终端输入:vi /etc/sudoers

找到 root ALL=(ALL) ALL 这一行,

然后在他下面添加一行:

hadoop ALL=(ALL) ALL

保存,退出

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

3.4 关闭防火墙/关闭 Selinux

防火墙操作相关:

查看防火墙状态:service iptables status

关闭防火墙:service iptables stop

开启防火墙:service iptables start

重启防火墙:service iptables restart

关闭防火墙开机启动:chkconfig iptables off

开启防火墙开机启动:chkconfig iptables on

关闭 Selinux:具体做法是修改vim /etc/selinux/config 配置文件中的 SELINUX=disabled

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

3.5 安装 JDK

1、 上传 jdk-8u73-linux-x64.tar.gz

2、 切换成root用户,su root

[[email protected] ~]# cd /home/hadoop/

[[email protected] ~]# mkdir /usr/java/

解压到 cd /usr/java 目录下 tar -zxvf jdk-8u73-linux-x64.tar.gz -C /usr/java

注意:/usr/local/ 这个目录需要有root权限才行。所以要切换用户。

3、 配置环境变量

a) vi /etc/profile

b)在最后加入两行:

export JAVA_HOME=/usr/java/jdk1.8.0_73

export PATH=$PATH:$JAVA_HOME/bin

c)保存退出

4、 source /etc/profile

5、 检测是否安装成功,输入命:java -version

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

3.4 配置网络

在VM虚拟机的设置中改成下图所示

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

然后ping baidu.com

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

看一下ip地址:ifconfig

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

3.5 配置内网域名映射

注意需要root用户

[[email protected] ~]$ vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.123.202 CDH02
192.168.123.203 CDH03
192.168.123.204 CDH04
192.168.123.205 CDH05

3.6 设置linux系统的时间

 

修改时区为上海CST

[[email protected] ~]# mv /etc/localtime /etc/localtime.bak

[[email protected] ~]# ln -s /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime

[[email protected] ~]# date

修改时间为windows系统时间

[[email protected] ~]# ntpdate time.windows.com

4.克隆虚拟机

1、 选中一台已关闭的虚拟机,在虚拟机名称上,右键点击,选择“管理”,再选择“克隆”,出现如下画面:

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

2、 点击“下一步”,出现如下画面:

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

3、 点击“下一步”,出现如下画面:

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

记得选中“创建完整克隆”

4、 点击“下一步”,出现如下画面,改号里面的值:改虚拟机名字分别为CDH03、CDH04、CDH05

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

记得更改“虚拟机名称”和“位置”的值

5、 点击“完成”,vmware 将为我们克隆一台新的虚拟机,下面是克隆的状态

6、 到此为止,新的CDH03 就被创建出来了。但是CDH03 跟之前的 CDH02 完全一模一样。所以还有几个地方需要修改

7、 先开机 CDH03,然后正常登陆

8、 第一个修改的地方,是网卡,请按照下面的说明步骤来,修改一个配置文件,执行命令:vi /etc/udev/rules.d/70-persistent-net.rules

发现是如此结果:

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

我们要做的事情是把第一个红框,也就是 eth0 网卡,给删掉然后再把下面红框当中的“eth1”改为“eth0”,改完之后的结果是:

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

然后保存退出

9、 第二个要修改的地方是网卡配置文件,执行命令:vi /etc/sysconfig/network-scripts/ifcfg-eth0

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

我们把红框当中的“UUID”和“HWADDR”这两行信息删掉,然后把“IPADDR”再重新分配一个 IP,我在此给它改为 192.168.123.203,结果如下:

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

保存退出。这个地方就改好了。

10、重启

最后注意:如果该主机配置主机名,那么还要记得改掉主机名

5.配置免密登陆

a) 在 hadoop 登录状态下,

输入命令 ssh-******

b) 之后你会发现,在/home/hadoop/.ssh 目录下生成了公钥文件

[[email protected] ~]$ cd .ssh

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

c) 使用一个更简单的方式,使用命令:ssh-copy-id CDH03 建立 CDH02 到 CDH03 的免密登录

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

d)测试ssh是否成功

ssh CDH02

exit

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

6.禁用 IPV 6(在root用户下执行)

echo " " >> /etc/modprobe.d/dist.conf

echo "alias net-pf-10 off" >> /etc/modprobe.d/dist.conf

echo "alias ipv6 off" >> /etc/modprobe.d/dist.conf

在所有主机上执行如上命令,并重启生效。

7.设置用户最大能打开文件数目、进程数和内存(所有节点)

在linux终端中输入 ulimit -a 进行查看

“open files”参数选项后面的数值就是当前系统支持的最大打开文件数

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

vim /etc/security/limits.conf

通过拷贝修改

* soft nofile 32728

* hard nofile 1029345

* soft nproc 65536

* hard nproc unlimited

* soft memlock unlimited

* hard memlock unlimited

修改后 reboot 重启系统

8.安装 MySQL 数据

8.1、 检查以前是否装过 MySQL

rpm -qa|grep -i mysql

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

8.2、 发现有的话就都卸载(需要root用户)

rpm -e --nodeps mysql-libs-5.1.73-5.el6_6.x86_64

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

8.3、 删除老版本 mysql 的开发头文件和库

rm -rf /usr/lib/mysql

rm -rf /usr/include/mysql

rm -rf /etc/my.cnf

rm -rf /var/lib/mysql

注意:卸载后/var/lib/mysql 中的数据及/etc/my.cnf 不会删除,确定没用后就手工删除

8.4、 准备安装包 

MySQL-5.6.26-1.linux_glibc2.5.x86_64.rpm-bundle.tar,上传到 全部节点,

解压命令:tar -xvf mysql-5.6.26-1.linux_glibc2.5.x86_64.rpm-bundle.tar 

 

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

8.5、 安装 server

【注意需要在root用户下】

su

cd /home/hadoop

rpm -ivh MySQL-server-5.6.26-1.linux_glibc2.5.x86_64.rpm

开头:

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

结尾:

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

如上图所提示,即安装 server 成功

8.6.安装客户端

rpm -ivh MySQL-client-5.6.26-1.linux_glibc2.5.x86_64.rpm

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

8.7.登陆 MYSQL(登录之前千万记得一定要启动 mysql 服务)

service mysql start

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

初始密码在cat /root/.mysql_secret 这个文件里

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

[[email protected] hadoop]# mysql -uroot -pbWUI51vd6vv28yfn

8.8.修改密码

set PASSWORD=PASSWORD('root');

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

8.9.退出登陆验证,看是否改密码成功

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

8.10.增加远程登陆权限

mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;

mysql>FLUSH PRIVILEGES;

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

8.11.修改数据库的默认编码和执行引擎

第一步:先登录查看,数据库的字符编码,命令:show variables like '%char%';

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

第二步:关闭 MySQL,拷贝一个配置文件到/etc 目录下,具体请看命令:

[[email protected] hadoop]# cp /usr/share/mysql/my-default.cnf /etc/my.cnf

第三步:修改该配置文件:vim /etc/my.cnf,添加以下内容:

[mysqld]
default-storage-engine = INNODB
character-set-server = utf8
collation-server = utf8_general_ci

[client]
default-character-set = utf8

并给最后一行加上 #空格 如图所示,否则关闭mysql会报错

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

第四步:重启mysql

关闭mysql:mysqladmin -u root -p shutdown

启动mysql:service mysql start

查看默认编码:show variables like '%char%';

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

8.12添加用户组合用户名

yum list | grep mysql

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

添加用户组:groupadd mysql

添加用户名:useradd -r -g mysql mysql

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

在 MySQL 里执行如下命令:

CREATE USER 'temp'@'localhost' IDENTIFIED BY 'temp';

grant all privileges on *.* to 'temp'@'%' identified by 'temp' with grant option;

grant all privileges on *.* to 'temp'@'CDH02' identified by 'temp' with grant option;

flush privileges;

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

9.CDH软件的安装

9.1 创建安装目录(所有节点)

需要root权限

su

[[email protected] ~]# mkdir -p /opt/cloudera-manager

[[email protected] ~]# mkdir -p /opt/cloudera-manager

[[email protected] ~]# mkdir -p /opt/cloudera-manager

[[email protected] ~]# mkdir -p /opt/cloudera-manager

9.2到官网下载相对应的安装包(所有节点)

点击去官网

说明:

EL是Red Hat Enterprise Linux的简写 
- EL6软件包用于在Red Hat 6.x, CentOS 6.x, and CloudLinux 6.x进行安装 
- EL5软件包用于在Red Hat 5.x, CentOS 5.x, CloudLinux 5.x的安装 
- EL7 软件包用于在Red Hat 7.x, CentOS 7.x, and CloudLinux 7.x的安装

这里我们下载

cloudera-manager-el6-cm5.10.2_x86_64.tar.gz

上传到各个节点上

解压cloudera-manager-el6-cm5.10.2_x86_64.tar.gz到 /opt/cloudera-manager/下 (所有节点)

cd /home/hadoop

tar -zxvf cloudera-manager-el6-cm5.10.2_x86_64.tar.gz -C /opt/cloudera-manager/

解压过程时间较长,出现如下图即为成功

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

9.3 修改config.ini文件(所有节点)

进入下面的文件路径

cd /opt/cloudera-manager/cm-5.10.2/etc/cloudera-scm-agent

vim config.ini

修改server_host=CDH02

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

9.4 创建CM用户(只需要CDH02执行即可)

在CM的server节点上(这里是CDH02)找到下面目录下的脚本

[[email protected] schema]# cd /opt/cloudera-manager/cm-5.10.2/share/cmf/schema

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

[[email protected] schema]# ./scm_prepare_database.sh mysql -h CDH02 -utemp -ptemp --scm-host CDH02 scm scm scm

注意:这里的temp是在安装mysql那里就设置好的,如果你的主机映射跟我不同是可以的,别的就不能修改了

第一个:CDH02:MySQL 的安装位置

第二个:CDH02:CM server 服务的位置

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

注意此时是报错的:

需要把Mysql的驱动包发送到/usr/share/java 目录下(server)

注意要把jar包名称重命名为 mysql-connector-java.jar

首先:

注意:Mysql5.5版本之后全部采用统一的驱动jar即为MySqlConnector/J 8.0.11

[[email protected] hadoop]# mkdir /usr/share/java

其次:去官网下载mysql驱动包

点击去mysql官网

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

上传到CDH02中

注意:下载的是tar.gz文件不能直接用,需要解压,然后找到里面的mysql-connector-java-8.0.11.jar文件,然后再修改移动再修改名字。

[[email protected] java]# cd /home/hadoop

[[email protected] hadoop]# scp -r mysql-connector-java-8.0.11.tar.gz /usr/share/java/

[[email protected] hadoop]# cd /usr/share/java/

[[email protected] mysql-connector-java-8.0.11]# tar -zxvf mysql-connector-java-8.0.11.tar.gz -C $PWD

[[email protected] mysql-connector-java-8.0.11]# cd mysql-connector-java-8.0.11

[[email protected] mysql-connector-java-8.0.11]# scp -r mysql-connector-java-8.0.11.jar /usr/share/java/

[[email protected] java]# mv mysql-connector-java-8.0.11.jar mysql-connector-java.jar

最后的效果如下图所示

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

再次执行上面创建CM用户的两个命令:

[[email protected] schema]# cd /opt/cloudera-manager/cm-5.10.2/share/cmf/schema

[[email protected] schema]# ./scm_prepare_database.sh mysql -h CDH02 -utemp -ptemp --scm-host CDH02 scm scm scm

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

9.5 配置CDH源:(这里的命令只需要CDH02执行即可)

找到相应的源并下载:

http://archive.cloudera.com/cdh5/parcels/5.10.2/

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

下载对应版本的源,我们这里下载如上图红线所示的两个文件

上传到CDH02节点中

在Server服务器(CDH02)中:把上面的两个源放在/opt/cloudera/parcel-repo/     该步骤不用着急,后面有代码,按照我的教程一步一步走(这里只是为了讲我们下面要做什么)

(该步骤是CDH自动进行,我们不需要手动操作)在Agent服务器中:把上面这两个源放在/opt/cloudera/parcels/

[[email protected] ~]# mkdir -p /opt/cloudera/parcel-repo/         这条命令所有节点都要执行

[[email protected] ~]# mkdir -p /opt/cloudera/parcels/                这条命令所有节点都要执行

在CDH02中:(下面没特殊说明均在server节点,本文为CDH02节点执行)

[[email protected] ~]# cd /home/hadoop/

[[email protected] hadoop]# mv CDH-5.10.2-1.cdh5.10.2.p0.5-el6.parcel /opt/cloudera/parcel-repo/
[[email protected] hadoop]# mv CDH-5.10.2-1.cdh5.10.2.p0.5-el6.parcel.sha1 /opt/cloudera/parcel-repo/

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

注意:

我们一开始只需要把源放到server端(本文是CDH02)的/opt/cloudera/parcel-repo/目录下即可

然后安装的时候server会把相对应的源放到agent的/opt/cloudera/parcels/目录下

注意修改CDH-5.10.2-1.cdh5.10.2.p0.5-el6.parcel.sha1 的文件名,把末尾的1去掉

[[email protected] ~]# cd /opt/cloudera/parcel-repo

[[email protected] parcel-repo]# mv CDH-5.10.2-1.cdh5.10.2.p0.5-el6.parcel.sha1 CDH-5.10.2-1.cdh5.10.2.p0.5-el6.parcel.sha

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

9.6 CDH内部用户(这里的命令全部节点都要执行)

执行以下命令创建 cloudera-scm 用户 [所有节点]上都要创建

useradd --system --home=/opt/cloudera-manager/cm-5.3.6/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

修改

server:/opt/cloudera/parcel-repo

agent:/opt/cloudera/parcels/

的所属者和所属组为 cloudera-scm 用户(按照下面的代码执行即可,不要自己瞎搞)

[[email protected] cloudera]# cd /opt/cloudera          这条命令所有节点都要执行

[[email protected] cloudera]# chgrp cloudera-scm parcel-repo/          这条命令所有节点都要执行

[[email protected] cloudera]# chown cloudera-scm parcel-repo/         这条命令所有节点都要执行

所有 agent 节点(所有节点)执行:chown -R cloudera-scm:cloudera-scm /opt/cloudera/

修改前如下图所示:

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

修改后如下图所示:

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

可以看到所有节点的cloudera文件夹的所属者和所属组都变了

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

9.7 启动CM

a.首先启动server(在server服务器上,本文是CDH02)

注意:mysql一定要保证启动,必须要使用root用户执行下面命令

cd /opt/cloudera-manager/cm-5.10.2/etc/init.d 下执行 ./cloudera-scm-server start

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

查看启动结果:需要通过查看 server 的启动日志文件

[[email protected] ~]# cd /opt/cloudera-manager/cm-5.10.2/log/cloudera-scm-server/

[[email protected] ~]# tail -f cloudera-scm-server.log

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

看到如上图所示即为成功(跟上图不一样也不要慌,因为我第二次装跟上图就不一样,往下继续即可)

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

b.启动agent(在所有节点执行下面的命令)(必须要使用root用户)

cd /opt/cloudera-manager/cm-5.10.2/etc/init.d 执行:./cloudera-scm-agent start

所有节点的状态应如下图

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

10. CDH的演示及使用

登陆页面:http://CDH02:7180/cmf/login

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

用户名:admin

密码:admin

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

选择免费版,一路【继续】

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

选择CDH版本时,选择我们之前已经上传上去的版本

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

花费时间较长

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

选择自定义,需要什么就安装什么

安装完CDH后,CDH Manager一般会提示用户需要做一些Linux系统层面的优化,主要包括两类:禁止透明大页面及交换分区设置。

详情请参考Cloudera官方网址:https://www.cloudera.com/documentation/enterprise/latest/topics/cdh_admin_performance.html

在所有节点执行下面命令

作用:关闭透明大页面

首先查看透明大页是否启用,[always] never表示已启用,always [never]表示已禁用

cat /sys/kernel/mm/redhat_transparent_hugepage/defrag

如果是启用状态,先运行一次下面的两行代码,再修改vim /etc/rc.local文件并添加以下两行,

[[email protected] ~]# echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag 
[[email protected] ~]# echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled 

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)
CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

修改swappiness

Linux内核参数vm.swappiness,值的范围为0~100,表示系统什么时候开始进行物理内存与虚拟内存的交换。举个例子,系统总内存为64G,vm.swappiness为60,表示在系统内存使用64*0.4=25.6G的时候开始物理内存与虚拟内存的交换,这个动作势必会影响系统的性能。因此,Cloudera建议把这个值修改为1~10。 
首先检查当前设置的vm.swappiness值,

在所有节点执行以下命令

[[email protected] ~]# cat /proc/sys/vm/swappiness

临时修改swappiness(重启后恢复)

[[email protected] ~]# sysctl -w vm.swappiness=10

永久生效(重启后不恢复)

[[email protected] ~]# echo "vm.swappiness=10" >> /etc/sysctl.conf

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

按照上图所示进行勾选,然后下一步,


建议:配置之前先了解一下

Cloudera Manager(CDH5)内部结构、功能包括配置文件、目录位置

Cloudera Management Service将各种管理功能实现为一组角色:

官网说明文档直链

  • Activity Monitor - collects information about activities run by the MapReduce service. This role is not added by default.

收集关于MapReduce服务运行的活动的信息。默认情况下不会添加这个角色。

  • Host Monitor - collects health and metric information about hosts

收集关于主机的健康和指标信息

  • Service Monitor - collects health and metric information about services and activity information from the YARN and Impala services

从YARN和Impala服务收集有关服务和活动信息的运行状况和度量标准信息

  • Event Server - aggregates relevant Hadoop events and makes them available for alerting and searching

聚合相关的Hadoop事件,并使其用于警报和搜索

  • Alert Publisher - generates and delivers alerts for certain types of events

为特定类型的事件生成并发送警报

  • Reports Manager - generates reports that provide an historical view into disk utilization by user, user group, and directory, processing activities by user and YARN pool, and HBase tables and namespaces. This role is not added in Cloudera Express.

生成报告,按用户,用户组和目录提供磁盘利用率的历史视图,按用户和YARN池处理活动,以及HBase表和命名空间。Cloudera Express中未添加此角色。

Cloudera Manager分别管理每个角色,而不是作为Cloudera Manager Server的一部分,以实现可伸缩性(例如,在大型部署中将监视器角色放在自己的主机上很有用)和隔离。

 

1. 相关目录 /var/log/cloudera-scm-installer : 安装日志目录。


/var/log/* : 相关日志文件(相关服务的及CM的)。
/usr/share/cmf/ : 程序安装目录。
/usr/lib64/cmf/ : Agent程序代码。
/var/lib/cloudera-scm-server-db/data : 内嵌数据库目录。
/usr/bin/postgres : 内嵌数据库程序。
/etc/cloudera-scm-agent/ : agent的配置目录。
/etc/cloudera-scm-server/ : server的配置目录。
/opt/cloudera/parcels/ : Hadoop相关服务安装目录。
/opt/cloudera/parcel-repo/ : 下载的服务软件包数据,数据格式为parcels。
/opt/cloudera/parcel-cache/ : 下载的服务软件包缓存数据。
/etc/hadoop/* : 客户端配置文件目录。

2. 配置


Hadoop配置文件
 
配置文件放置于/var/run/cloudera-scm-agent/process/目录下。如:/var/run/cloudera-scm-agent/process/193-hdfs-NAMENODE/core-site.xml。这些配置文件是通过Cloudera Manager启动相应服务(如HDFS)时生成的,内容从数据库中获得(即通过界面配置的参数)。
 
在CM界面上更改配置是不会立即反映到配置文件中,这些信息会存储于数据库中,等下次重启服务时才会生成配置文件。且每次启动时都会产生新的配置文件。
 
CM Server主要数据库为scm基中放置配置的数据表为configs。里面包含了服务的配置信息,每一次配置的更改会把当前页面的所有配置内容添加到数据库中,以此保存配置修改历史。

scm数据库被配置成只能从localhost访问,如果需要从外部连接此数据库,修改vim /var/lib/cloudera-scm-server-db/data/pg_hba.conf文件,之后重启数据库。运行数据库的用户为cloudera-scm。
 
查看配置内容
 
1). 直接查询scm数据库的configs数据表的内容。
2). 访问REST API: http://hostname:7180/api/v4/cm/deployment,返回JSON格式部署配置信息。

配置生成方式
CM为每个服务进程生成独立的配置目录(文件)。所有配置统一在服务端查询数据库生成(因为scm数据库只能在localhost下访问)生成配置文件,再由agent通过网络下载包含配置文件的zip包到本地解压到指定的目录。
 
配置修改
CM对于需要修改的配置预先定义,对于没有预先定义的配置,则通过在高级配置项中使用xml配置片段的方式进行配置。而对于/etc/hadoop/下的配置文件是客户端的配置,可以在CM通过部署客户端生成客户端配置。
 

3. 数据库 


Cloudera manager主要的数据库为scm,存储Cloudera manager运行所需要的信息:配置,主机,用户等。
 

4. CM结构 


CM分为Server与Agent两部分及数据库(自带更改过的嵌入Postgresql)。它主要做三件事件:
1). 管理监控集群主机。
2). 统一管理配置。
3). 管理维护Hadoop平台系统。
 
实现采用C/S结构,Agent为客户端负责执行服务端发来的命令,执行方式一般为使用python调用相应的服务shell脚本。Server端为Java REST服务,提供REST API,Web管理端通过REST API调用Server端功能,Web界面使用富客户端技术(Knockout)。
1). Server端主体使用Java实现。
2). Agent端主体使用Python, 服务的启动通过调用相应的shell脚本进行启动,如果启动失败会重复4次调用启动脚本。
3). Agent与Server保持心跳,使用Thrift RPC框架。
 

5. 升级 


在CM中可以通过界面向导升级相关服务。升级过程为三步:
1). 下载服务软件包。
2). 把所下载的服务软件包分发到集群中受管的机器上。
3). 安装服务软件包,使用软链接的方式把服务程序目录链接到新安装的软件包目录上。
 

6. 卸载 


sudo /usr/share/cmf/uninstall-scm-express.sh, 然后删除/var/lib/cloudera-scm-server-db/目录,不然下次安装可能不成功。
 

7. 开启postgresql远程访问 


CM内嵌数据库被配置成只能从localhost访问,如果需要从外部查看数据,数据修改vim /var/lib/cloudera-scm-server-db/data/pg_hba.conf文件,之后重启数据库。运行数据库的用户为cloudera-scm。


CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

然后下一步:

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

出现如上问题是因为mysql没有新建用户,不能使用root用户

使用root用户登录mysql,使用下面的命令新建用户cdh密码cdh

mysql> GRANT USAGE ON *.* TO 'cdh'@'%' IDENTIFIED BY 'cdh' WITH GRANT OPTION; 

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

然后在CDH02中的mysql中执行下面代码:(创建需要mysql作为元数据的数据库)

mysql> create database ActivityMonitorDatabase;

mysql> create database OozieDatabase;

mysql> create database HiveDatabase;

mysql> create database HueDatabase;

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

使用root用户登录mysql数据库 为cdh用户授权所有数据库的全部权限

mysql>  grant all privileges on *.* to [email protected]"%" identified by 'cdh'; 

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

@"%" 表示对所有非本地主机授权,不包括localhost。对localhost授权:加上下面这句

mysql> grant all privileges on *.* to [email protected] identified by 'cdh';

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

mysql> FLUSH PRIVILEGES;

然后去设置元数据的用户名,密码如下图所示。

再次连接可以看见如下图,Hue报错 Unexpected error. Unable to verify database connection.

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

其实就是缺少mysql的一些包(如果和本文不同的mysql版本,低于5.5的请自己在官网找一下对应版本,5.5以上统一采用本文的方案)

点击进入下载界面

下载下面三个

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

下载完毕后全部上传到CDH02节点(其实是上传到Hue的节点)

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

依次!执行下面的命令:(注意是有顺序的,层层依赖,如果不按顺序执行会提示你需要上一个依赖)

[[email protected] hadoop]# rpm -ivh mysql-community-common-8.0.11-1.el6.x86_64.rpm

[[email protected] hadoop]# rpm -ivh mysql-community-libs-8.0.11-1.el6.x86_64.rpm

[[email protected] hadoop]# rpm -ivh mysql-community-libs-compat-8.0.11-1.el6.x86_64.rpm

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

然后下一步:

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

如下图所示不用动,默认就好

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

 

下一步:

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

其实是spark这里没有去环境变量里面找jdk,而是跑到了 /usr/java/default 这个目录下去找jdk,所有报错说没有找到JAVA_HOME,只需要在集群机器上面创建 /usr/java 目录,然后创建软连接就行:

CDH-5.10.2集群的搭建【史上最全,不全不要钱】(已经实现,但是非预期效果,可能是由于内存不足)

[[email protected] java]# mkdir /usr/java

[[email protected] java]# ln -s /usr/local/jdk1.8.0_73 /usr/java/default

[[email protected] bin]# ln -s /usr/java/default java

[[email protected] jdk1.8]# ln -s /usr/local/jdk1.8.0_73 /usr/java/jdk1.8

其实按照上面我并没有解决问题。后来我修改了该博客的jdk安装部分。我直接删除java重装,直接把java装到了/usr/java/目录下。然后就自动进入集群管理界面了。初次的导航设置界面就不见了。