一、预先需要下载的安装包
- CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel
这是Centos下的CDH软件安装包。 - CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel.sha1
这里面存的是与上述CDH版本相对应的hash code。 manifest.json
以上三个包都可在该链接(https://archive.cloudera.com/cdh5/parcels/5.16.1/ )下载,如下图中红色方框标注所示。cloudera-manager-centos7-cm5.16.1_x86_64.tar.gz
这是cloudera-manager的安装包,可在此处(https://archive.cloudera.com/cm5/cm/5/ )下载。- jdk-8u201-linux-x64.tar.gz
这是Java 8在linux下的了离线安装包,可在此处(https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html )下载。虽然目前Java 10已经出来了,但还是建议大家都使用Java 8,因为它更稳定,运用也更加广泛。 mysql-connector-java-8.0.15.jar
这是MySQL的Java驱动程序包 ,可在此处(https://dev.mysql.com/downloads/connector/j/ )下载,如下图所示选择tar.gz格式下载。这里下载最新的驱动包没有任何问题,因为MySQL的驱动包是向下兼容的,也就是说支持旧版本的。以上的软件安装包下载好之后,请自行放到Centos用户目录的Downloads文件夹中,即放到 ~/Downloads 中。
二、关闭防火墙和SELINUX
在终端执行下面两条命令,首先停止防火墙服务,然后禁用防火墙。1
2sudo service firewalld stop
sudo systemctl disable firewalld.service
其次是禁用SELINUX,执行下面的命令进行修改,修改后的结果如下图所示。1
sudo vim /etc/selinux/config .config/
三、配置本地SSH免密钥登录
由于配置CDH至少需要三台主机,而笔者使用的是Centos虚拟机,所以只需先配置好一台主机后,直接克隆即可。那么这里就以主节点为例,详细介绍配置的过程。
1.首先是修改本主机的hostname,在终端执行下面的命令,并将hostname改为master。1
sudo vim /etc/hostname
2.其次修改hosts,首先在终端 ip addr 查看IP地址,然后执行后面的命令修改hosts,在hosts中添加主节点和从节点的IP信息,如下图所示。图中的 branch1 和 branch2 就是从节点的hostname。1
2ip addr # 查看IP地址
sudo vim /etc/hosts
3.重启主机,重启是为了使修改后的hostname生效,这样才能保证生成的的SSH公钥不会出错。接着在终端依次执行下面的命令,首先是生成密钥(可使用 ls ~/.ssh/ 命令查看生成的密钥文件),然后拷贝公钥id_rsa.pub到authorized_keys,最后一定要修改authorized_keys的权限,否则在测试免密钥登录时依然要输入密码。如果执行 ssh localhost 不需要输入密码,则说明配置成功。1
2
3
4ssh-keygen -t rsa -P '' # 生成密钥
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys # 拷贝公钥
sudo chmod 600 ~/.ssh/authorized_keys # 修改权限
ssh localhost # 测试,或用 ssh master
四、安装JDK
1.首先要卸载系统的OpenJDK,在终端输入 java -version ,如果出现了OpenJDK的信息,说明本机上安装了OpenJDK,那么执行下面的命令进行卸载。第一条命令是卸载 java 相关的所有程序,第二条命令是卸载OpenJDK相关的依赖包。1
2sudo yum remove java*
sudo yum autoremove
2.安装预先下载好的Java 8软件包,第一步创建Java的安装路径 /usr/java,然后解压tar.gz安装包到该目录下,最后更改文件名,便于配置环境变量。1
2
3
4sudo mkdir /usr/java # Java必须要安装在这个新建的目录,否则后面cloudera-manager找不到Java
cd /usr/java
sudo tar -zxvf ~/Downloads/jdk-8u201-linux-x64.tar.gz . # 解压到当前目录,注意别漏掉末尾的点
sudo mv jdk1.8.0_201 jdk1.8 # 改个名,便于配置环境变量
3.配置Java的环境变量,主要是这三个变量:JAVA_HOME,CLASSPATH,PATH。第一步在终端中执行 sudo vim /etc/profile 命令(这是为所有用户配置Java,如果只对当前用户配置则修改 ~/.bashrc 文件),第二步在文件的末尾添加如下的内容1
2
3
4# java configuration
export JAVA_HOME=/usr/java/jdk1.8
export CLASSPATH=.:$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin
4.最后在终端中执行 java -version 命令,如果出来了如下图所示的Java版本信息,那么说明Java安装成功。
5.把Java连接MySQL所需的依赖包放到 /usr/share/java/ 目录下。如果没有该目录,则依次执行下面的命令,先创建该目录,然后把预先下载好的依赖包移动到该目录下,最后重命名即可(重命名是因为cloudera-manager启动的时候会默认加载不含有版本号的mysql-connector-java.jar依赖包)。1
2
3
4sudo mkdir /usr/share/java
cd /usr/share/java
mv ~/Downloads/mysql-connector-java-8.0.15.jar .
sudo mv mysql-connector-java-8.0.15.jar mysql-connector-java.jar # 重命名
至此,如果你也是使用虚拟机来配置CDH,那么便可以进行虚拟机克隆了。将master虚拟机分别克隆为branch1和branch2,然后修改hostname对应为branch1和branch2,重启之后根据第三章介绍中的第3节重新生成密钥即可。最后,记得验证master是否能够通过SSH免密钥登录branch1和branch2,而反过来需要输入密码才能登录。
五、安装MySQL
1.MySQL只需要安装到==主节点master==上就行了,但是在安装之前需要卸载Centos自带的MariaDB数据库(MariaDB数据库是MySQL的一个分支,完全支持MySQL的所有命令和API,但是在Centos中二者不能共存)。打开终端依次执行下面的命令,首先是卸载mariadb所有相关的软件,然后清除mariadb相关的依赖。1
2sudo yum remove mariadb* # 卸载mariadb
sudo yum auto remove # 卸载相关依赖
2.下载MySQL 5.7的源到本地,然后启用本地源,最后进行MySQL服务的安装。具体的命令如下所示,只需依次执行即可。1
2
3
4wget http://repo.mysql.com/mysql57-community-release-el7-9.noarch.rpm # 下载MySQL 5.7的源
sudo yum localinstall mysql57-community-release-el7-9.noarch.rpm # 启用本地源
yum repolist enabled | grep "mysql.*-community.*" # 查看MySQL源是否添加成功
sudo yum install mysql-community-server # 安装MySQL服务
3.安装好MySQL服务后,需要修改账号密码。依次执行下面的命令,首先要启动MySQL服务,然后获取生成的临时登录密码,接着登入MySQL修改root账号的密码,最后刷新权限并退出。1
2
3
4
5sudo service mysqld start # 启动MySQL
sudo grep 'temporary password' /var/log/mysqld.log # 获取临时登录密码
mysql -u root -p # 登录MySQL
mysql> alter user 'root'@'localhost' identified by 'root_password'; # 修改root的密码
mysql> flush privileges; # 刷新权限
4.再次登录MySQL,然后创建scm数据库以及scm用户,并赋予scm用户数据库的所有权限(这里的scm是Server of Cloudera Manager的缩写)。1
2
3mysql -u root -p
mysql> create database scm;
mysql> grant all on *.* to 'scm'@'localhost' identified by 'scm_password’ with grant option;
六、安装cloudera-manager
1.cloudera-manager是==所有节点==都需要安装的,这里建议安装在 /opt/cloudera-manager 目录下,因为 /opt 就是它启动后的默认工作目录。在终端依次执行下面的命令,首先是创建该安装目录,其次是解压预先下载好的离线安装包,解压完成后会看到如下图所示的两个子文件夹。1
2
3sudo mkdir /opt/cloudera-manager
cd /opt/cloudera-manager
sudo tar -zxvf ~/Downloads/cloudera-manager-centos7-cm5.16.1_x86_64.tar.gz .
2.第2步只在==主节点master==上进行配置,创建Cloudera Manager服务本地数据存储目录,在终端依次执行下面的命令即可。1
2sudo mkdir /var/lib/cloudera-scm-server
sudo chown cloudera-scm:cloudera-scm /var/lib/cloudera-scm-server
3.在==所有节点上==进行配置,首先是创建用户cloudera-scm,由于Cloudera Manager和Managed Services默认使用cloudera-scm,所以需要创建此用户。其次是修改Agent,即修改/opt/cloudera-manager/cm-5.16.1/etc/cloudera-scm-agent/config.ini文件,将文件中的server_host修改成主节点的主机名master,修改后的结果如下图所示。1
2sudo useradd --system --home=/opt/cloudera-manager/cm-5.16.1/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
sudo vim /opt/cloudera-manager/cm-5.16.1/etc/cloudera-scm-agent/config.ini
4.在==主节点master==上初始化cloudera manager,依次执行下面的命令,如果出现了如下图所示的结果,那么说明cloudera manager已经安装成功。1
2cd /opt/cloudera-manager/cm-5.16.1/share/cmf/schema/
sudo ./scm_prepare_database.sh mysql scm scm scm_password # 第一个scm指的是MySQL用户,第二个scm指的是数据库名
5.移动CDH安装包到相应目录,首先在==主节点master==上,将CDH安装包移至 /opt/cloudera/parcel-repo 目录下,待移动完成后,修改该目录所属的用户组和用户都是之前创建的cloudera-scm用户。1
2
3
4
5
6
7sudo mkdir /opt/cloudera/parcel-repo
cd /opt/cloudera/parcel-repo/
sudo mv ~/Downloads/CDH* .
sudo mv ~/Downloads/manifest.json .
# 下面的改名是必须的,否则配置集群的时候会重新下载CDH安装包
sudo mv CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel.sha1 CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel.sha
sudo chown cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo # 修改权限
6.在==从节点branch1、branch2==上,移动CDH安装包到 /opt/cloudera/parcels 目录下,执行的操作与上一步完全相同,在终端执行下面的命令即可。1
2
3
4
5
6
7sudo mkdir /opt/cloudera/parcels
cd /opt/cloudera/parcels
sudo mv ~/Downloads/CDH* .
sudo mv ~/Downloads/manifest.json .
# 下面的改名是必须的,否则配置集群的时候会重新下载CDH安装包
sudo mv CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel.sha1 CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel.sha
sudo chown cloudera-scm:cloudera-scm /opt/cloudera/parcels # 修改权限
7.启动cloudera-manger,在==主节点master==上,必须启动cloudera-scm-server和cloudera-scm-agent,而在==从节点branch1、branch2==上,只需要启动cloudera-scm-agent即可,执行的命令如下所示。1
2
3cd /opt/cloudera-manager/cm-5.16.1/etc/init.d/
sudo ./cloudera-scm-server start # 仅master启动
sudo ./cloudera-scm-agent start # master, branch 1-2 均启动
七、CDH集群的配置
1.cloudera-manager的启动需要花3-6分钟的时间,启动完成后在浏览器中打开 http://localhost:7180/ 网址(如果是Centos服务器,则访问 http://公网IP:7180/ 即可,不过服务器注意要开放7180端口),之后会出现cloudera-manager的登录界面,初始的用户名和密码都是admin,登录成功后如下图所示,选择要安装的版本。
2.第二步则是选择要作为集群的主机,如下图所示。如果在这里没有出现你的所有主机,第一是确认你的Agent是否都已经配置为了master,第二确认cloudera-scm-agent是否成功启动。
3.下一步就是集群的安装,如下图所示,如果你那里没有出现预先下载好的CDH版本,则点击更多选项,见后面图中进行Parcel存储库的设置,应用更改后刷新下网页则会出现CDH版本。
4.接着就是在所有主机上安装CDH,如下第一张图所示,如果所有配置都正确,那么会显示 已下载:100%(如果出现 正在下载:0%,那往回检查看哪里配置出了问题)。接着让它自己执行完就行,如下第二张图所示。
5.待安装完成后,会自动运行主机正确性检查,检查完后的结果如下图所示。如果出现图中所示的警告,按照上面的提示,运行提示中的命令,进行修改即可。
6.下一步是根据自己的需要,安装所需的集群服务,笔者这里是选择了安装所有服务。
7.接着根据你上一步选择的服务,会进行相应的角色分配,系统会自动分配一些角色,如果你有其他的需求,自行更改即可。
- 然后是进行数据库的配置,如果你也是同笔者一样安装的全部服务,千万不要忘了创建hive、oozie、hue这三个数据库哦!
9.下一步是HDFS、HBase的配置,如果没有特殊要求,默认即可。
10.接着是自动运行所有服务,这里需要等待10-15分钟的时间,具体取决于根据你安装的服务项。
11.最后当上面的所有命令运行完成后,会进入如下的主页面。至此,CDH的配置已经完成。
关于图中cloudera-manager主页出现的错误,笔者也在抓紧时间修复中,并会发布一篇解决方案,如感兴趣还请持续关注笔者的博客。
[1]: https://www.cloudera.com/documentation/enterprise/5-16-x/topics/installation.html (官方文档)
...
...