安装准备工作

系统环境:REDHAT 7 
CDH版本:CDH6.0.0
安装包地址:CM6安装包( https://archive.cloudera.com/cm6/6.0.0/redhat7/yum/)

 
1、CDH6安装包:https://archive.cloudera.com/cdh6/6.0.0/parcels/
下载对应系统版本的Parcel包
下载对应系统版本Parcel包的Sha文件
下载manifest.json
保存到服务器/opt/cloudera/parcel-repo
 
2、下载libtidy组件(这是HUE需要的一个插件,但并没有在CDH的Parcel包里,在HUE安装过程中如果没安装这个插件会报错)
http://rpmfind.net/linux/epel/7/x86_64/Packages/l/libtidy-5.4.0-1.el7.x86_64.rpm  
3、下载JAVA JDK 1.8,目前Cloudera 推荐使用的最高版本为8u162
http://download.oracle.com/otn/java/jdk/8u162-b12/0da788060d494f5095bf8624735fa2f1/jdk-8u162-linux-x64.tar.gz
 
4、下载mysql-connector-java
https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.47.tar.gz
解压,找到里面的mysql-connector-java-5.1.47\mysql-connector-java-5.1.47-bin.jar文件,改名为mysql-connector-java.jar, 存放在服务器的 /usr/share/java 中

系统初始化工作

1. 修改所有节点的HOSTNAME,HOSTNAME必须为FQDN(fully qualified domain name),如:cdhm.test.com, 执行以下命令修改,修改每个节点为不同的名字。
2. 修改所有节点的网络名,/etc/sysconfig/network,注意每个节点的名称对应上一步修改的HOSTNAME,内容如下:
HOSTNAME=cdh.local.com             执行该命令更改Linux系统的主机名:sudo hostnamectl set-hostname cdh.local.com
3. 修改所有节点的hosts 文件,  /etc/hosts,注意每个HOST的名称也必须为FQDN格式,如下,(注意:本手册后面提到主服务器即表示cdh.local.com这台服务器,其余为从服务器):

192.168.1.14  cdh.local.com  cdh0
192.168.1.10  cdh.local1.com  cdh1
192.168.1.11  cdh.local2.com  cdh2
192.168.1.12  cdh.local3.com  cdh3

4. 验证HOSTNAME

  • 执行uname –a 查看输出是否为设定的HOSTNAME,
  • 执行 ifconfig 查看eth0的inet addr显示的主机IP地址与HOSTS里配置的一样
  • 执行host -v -t A $(hostname) 确认输出为设定的HOSTNAME 及IP 与ifconfig 的inet addr一致

5. 关闭防火墙

  • 查看防火墙状态:systemctl status firewalld.service
  • 关闭防火墙:systemctl stop firewalld
  • 禁用防火墙:systemctl disable firewalld

6. 关闭SElinux

  • 修改SElinux配置文件 /etc/selinux/config, (某些系统可能是/etc/sysconfig/selinux)
  • 找到SELINUX, 将它改为permissive 或者disabled
  • 6.3 执行setenforce 0 对SElinux 进行立即关闭

7. 安装NTP,设置时钟同步,在所有节点上安装NTP,执行命令如下:

yum –y install NTP

 

  •  其中一台服务器作为NTP主服务器,修改NTP主服务器文件 /etc/ntp.conf,修改server 部发如下,表示这台服务器的时钟与自身同步:
server 127.127.1.0
furge 127.127.1.0 stratum 10

 

  • 修改其它服务器的NTP配置文件/etc/ntp.conf,将server 修改为NTP主服务器的IP地址,比如cdhm.test.com 作为NTP主服务器,IP为192.17.1.111,则修改为 server 172.17.1.111
  • NTP主服务器重启ntp 服务:service ntpd restart
  • 调整从服务器的时钟与NTP主服务器同步, 在其它NTP从服务器上执行:ntpdate cdh.local.com

8. 在所有节点上安装libtidy 插件,在放置libtidy 安装包的位置执行,例如 /var/www/html,执行

rpm -ivh /var/www/html/libtidy-5.4.0-1.el7.x86_64.rpm

9. SSH无密登陆

  •  在主机器执行 ssh-keygen -t rsa
  • 在master机器执行命令如:将公钥文件传输的其它机器,并生效
ssh-copy-id -i ~/.ssh/id_rsa.pub root@cdh.local1.com
ssh-copy-id -i ~/.ssh/id_rsa.pub root@cdh.local2.com
ssh-copy-id -i ~/.ssh/id_rsa.pub root@cdh.local3.com

 

  • 验证免密登陆: ssh root@cdh.local.com,如果不需要输入密码,则免密登陆配置完成(注意,这时候你已经不在主服务器上,而是远程登陆到cdh1服务器上了,确保跳回主服务器再继续下面的操作)

10. 主服务器及所有节点安装JDK

  • 在usr目录下建立java安装目录, mkdir /usr/java
  • 进入刚建立的JAVA目录,cd /usr/java
  •  将java包FTP传到刚建立的java目录下,或从java 包所在位置拷贝到刚建立的java目录,如  cp /software/ jdk-8u162-linux-x64.tar.gz /usr/java/
  • 解压jdk到当前目录tar -zxvf jdk-8u162-linux-x64.tar.gz
  • 得到文件夹 jdk1.8.0_162
  • 将JAVA拷步到其它服务器 scp –r /usr/java/jdk1.8.0_162 root@cdh.local1.com:/usr/java/
scp –r /usr/java/jdk1.8.0_162 root@cdh.local1.com:/usr/java/
scp –r /usr/java/jdk1.8.0_162 root@cdh.local2.com:/usr/java/
scp –r /usr/java/jdk1.8.0_162 root@cdh.local3.com:/usr/java/

 11. SWAP 设置,CDH 推荐设置为10, vim /etc/sysctl.conf, 加入如下代码

vm.swappiness = 10

12. 设置本地HTTP  SERVER 安装CM

  • 在主服务器上安装HTTP SERVER
yum –y install httpd
  •  创建HTTP server 目录存放cm6 的文件, 如http://cdhm.test.com/cm6, 则创建如下目录
mkdir /var/cdh/cm6
  • 将https://archive.cloudera.com/cm6/6.0.0/redhat7/yum/ 下载下来的所有文件及目录按原有的目录结构存放在刚建立的cm6 目录下
  •  使用浏览器访问 http://cdh.local.com/cm6 ,如果能看到刚下载的文件,表示HTTP已经配置好了,注意:如果浏览器不是在同一集群中,可能无法解释cdh.local.com. 这时需使用IP进行访问,比如  http://192.168.1.10/cm6
  • 设置 REPO,创建cloudera-repo.repo, vim /etc/yum.repos.d/cloudera-repo.repo, 内容如下:
[cloudera-repo]
name=cloudera-repo
baseurl=http://cdh.local.com/cm6
enabled=1
gpgcheck=0

安装 cloudrea-manager

  • 安装CM6
  • 如果发现找不到安装包,有可能是HTTP 或者YUM REPO没设置好,请检查上一章节的步骤 10的全部内容
  • 设置 AUTO-TLS  自动认证,执行以下命令
sudo yum install cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server
sudo JAVA_HOME=/usr/java/jdk1.8.0_162 /opt/cloudera/cm-agent/bin/certmanager setup --configure-services

注意:1、如果你安装的java 目录不是/usr/java/jdk1.8.0_162, 你需要把它改成你安装JAVA的路径;2、certmanager 是随cloudera-manager-agent安装的,如果进行AUTO-TLS时出错,请确认cloudera-manager-agent 安装成功

安装Mysql

  • 解压MySQL
  • 主服务器上安装MySQL
  • 删除InnoDB 文件
Sudo tar -zxvf MySQL-5.5.61-1.el7.x86_64.rpm-bundle.tar
Sudo rpm -ivh MySQL-server-5.5.60-1.el7.x86_64
mv /var/lib/mysql/ib_logfile0 /var/lib/mysql/ib_logfile0.bak
mv /var/lib/mysql/ib_logfile1 /var/lib/mysql/ib_logfile1.bak
  • 设置MySQL开机启动
systemctl enable mysqld
  • 启动MySQL
systemctl start mysqld
  • 初始化MySQL
sudo /usr/bin/mysql_secure_installation

注意:MySQL 的初始密码为空,如果需要输入旧密码时直接回车,如果需要设置新的密码,则在提示输入新密码时输入新密码,如果保留空密码,则直接回车,初始化步骤如下:

[...]
 Enter current password for root (enter for none):
 OK, successfully used password, moving on...
 [...]
 Set root password? [Y/n] Y
 New password:
 Re-enter new password:
 Remove anonymous users? [Y/n] Y
 [...]
 Disallow root login remotely? [Y/n] N
 [...]
 Remove test database and access to it [Y/n] Y
 [...]
 Reload privilege tables now? [Y/n] Y
 All done!
  • 登录MySQL,创建数据库和用户
mysql -u root -p
  • 创建数据库,在MySQL 中执行以下命令创建数据库并授权
CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE amon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE rman DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE metastore DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE sentry DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE nav DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE navms DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE oozie DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
 
GRANT ALL ON scm.* TO 'scm'@'%' IDENTIFIED BY '123456';
GRANT ALL ON amon.* TO 'amon'@'%' IDENTIFIED BY '123456';
GRANT ALL ON rman.* TO 'rman'@'%' IDENTIFIED BY '123456';
GRANT ALL ON hue.* TO 'hue'@'%' IDENTIFIED BY '123456';
GRANT ALL ON metastore.* TO 'hive'@'%' IDENTIFIED BY '123456';
GRANT ALL ON sentry.* TO 'sentry'@'%' IDENTIFIED BY '123456';
GRANT ALL ON nav.* TO 'nav'@'%' IDENTIFIED BY '123456';
GRANT ALL ON navms.* TO 'navms'@'%' IDENTIFIED BY '123456';
GRANT ALL ON oozie.* TO 'oozie'@'%' IDENTIFIED BY '123456';
  • 初始化Cloudera Manager 数据库, 执行以下命令
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm

注意如果MySQL 安装在别的服务器上,则使用以下命令指定远程MySQL服务器地址, 下面的db.lcoal.com是远程MySQL 服务器的地址,cdh.lcoal.com 为安装CM的服务器地址
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql -h db.local.com --scm-host cdh.lcoal.com scm scm 

安装CDH 

  •  启动Cloudera manager
  •  等待cloudera manager启动完成,执行以下命令可以查看启动的状态
systemctl start cloudera-scm-server
tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log

当看到状态显示下面的语句,说明启动完成了!
INFO WebServerImpl:com.cloudera.server.cmf.WebServerImpl: Started Jetty server.

  • 登录Cloudera Manager, 使用浏览器访问  http://cdh.local.com:7180 , 这时候你应该能看到登录界面了!!!
  • 用户名admin, 密码 admin
  • 首先是欢迎页!
  • 第二步是确认是否已经设置了AUTO-TLS,如果已经在前面设置了,会看到如下的提示,然后进入下一步
  • 输入节点的列表,如果是连续的IP地址,可以像截图那样写,172.17.1.[142-145],表示总共是4个节点,IP分别为142,143,144,145,点Search进行扫描,扫描成功后,进入下一步
  • 这里是指定安装包的位置,Cloudera Manager Agent 选择Custom Repository, 使用之前安装CM6的地址,如 http://cdh.local.com
  • 安装JDK, 前面的步骤已经安装JDK了,所以这里直接点下一步就可以了
  • 输入各节点的root 密码,注意: 所有节点的root 密码需一致,然后点击下一步就开始安装了!
  • 耐心等待安装完成
  • 安装完成后等待健康检查,检查没问题进入下一步
  • 指定节点模版,因为是新装的,所以没有模版,下一步就可以了
  • 执行设置脚本,这一步是对节点的某些role 进行配置,例如HBase, HDFS, Hive, MapReduce, and YARN,因为是新装并没有分配角色,所以配置无法执行,直接结束就好了
  • 添加服务及分配角色
  • 点击上方菜单Clusters-> Add Services
  • 根据不同的场景选择,默认为Essentials
  • 这是点击Esstials 方案后,系统自动为每个节点给了的角色分配方案,需根据实时项目情况调整,这里以默认为例,进入下一步
  • 这一步填入MYSQL所在的服务器,及对应数据库的名字,用户名及密码,然后点击下方的“TEST CONNECTION” 进行测试
  • 对节点的参数进行设置,本手册以默认配置作为示例
  •  这一步会对各节点进行设置,请耐心等待配置结束然后进入下一步
  • 到这一步说明节点配置引导已经全部完成了,点击“Finish”关闭

这时会返回主界面,并能查看各服务的状态,至此,CDH6 的安装完成!!!

注意:过程中可能存在误操作等,请报错后根据详细信息去定位解决问题即可,总体安装情况如上文。