本文将从最基础的环境配置开始,介绍如何在Linux虚拟机中搭建一个CM集群,并使用CDH自动部署一个Hadoop集群。所有步骤都是我一步一步做过的,如果使用的环境(centos7.6),CM及CDH版本和我的一样,那么应该是不会出什么问题的。教程有点长,但是一步一步跟着做应该不会花太多时间就能将集群搭建好,我将下面过程中使用到的所有软件包放到了百度网盘上,链接:https://pan.baidu.com/s/1SXraeAGuahQC-voRquiTzQ 提取码:s94p
如需转载请标明出处,同时私信告知我一下。
文章目录
一.CM及CDH介绍
CM
Cloudera Manager(简称CM)是Cloudera公司开发的一款大数据集群安装部署及管理监控的平台,它可以自动部署一个hadoop集群,免去了很多复杂的配置过程。CM具有大数据集群自动化安装、中心化管理、集群监控、报警等功能,使得安装集群从几天的时间缩短在几小时以内,运维人员从数十人降低到几人以内,极大的提高集群管理的效率。
Cloudera Manager架构及组件
Agent:
安装在每台主机上。该代理负责启动和停止的过程,拆包配置,触发装置和监控主机。
Management Service:
由一组执行各种监控,警报和报告功能角色的服务。
Database:
存储配置和监视信息。通常情况下,多个逻辑数据库在一个或多个数据库服务器上运行。例如,Cloudera的管理服务器和监控角色使用不同的逻辑数据库。
Cloudera Repository:
软件由Cloudera 管理分布存储库。
Clients:
是用于与服务器进行交互的接口:
Admin Console :
基于Web的用户界面与管理员管理集群和Cloudera管理。
API :
与开发人员创建自定义的Cloudera Manager应用程序的API。
CDH
CDH全称Cloudera’s Distribution, including Apache Hadoop,是Hadoop三大发行版本之一,这三大发行版本分别是:Apache、Cloudera、Hortonworks。Apache版本是最原始(最基础)的版本。Cloudera在大型互联网企业中用的较多。Hortonworks文档较好。CDH由Cloudera公司维护,基于稳定版本的Apache Hadoop构建。CDH提供了Hadoop的核心可扩展存储(HDFS)和分布式计算(MR),还提供了WEB页面进行管理、监控。
由于使用Cloudera Manager部署CDH非常的方便,可以让使用者在很短的时间内搭建好一个可用的并且有精美的web管理界面的hadoop大数据集群。所以CM目前使用的相当广泛,具有很高的市场占有率。CM除了可以快速部署大数据集群并对其进行管理外,还可以非常方便的进行升级和为现有的集群增加组件。虽然CM有着很多的优点,解决了很多企业的痛点,但是,CM也有一些不足之处,由于Cloudera开发的CDH使用的hadoop都是一些比较稳定的版本,所以一些喜欢尝试新技术的公司还是得使用原生的Apache Hadoop。目前,Apache Hadoop,Cloudera和Hortonworks三种主要的Hadoop分支的市场占有率大概分别为40%,40%和20%。
二.准备工作
2.1 硬件资源分配
master节点分配的内存非常多,这是因为CDH部署集群时好多组件的主节点默认会安装在CM的master上,所以master节点要多分一点内存。建议将虚拟机放在SSD上,否则安装过程会非常慢。我使用如下的资源分配,集群搭建好后有很多警告和报错,在本文最后有一张图可以看到,都是因为硬件资源不足,所以16G电脑使用虚拟机搭建的CDH集群应该是不能正常使用的,不过可以学习一下搭建过程。
节点 | 内存 | 硬盘 | CPU |
---|---|---|---|
master | 12G | 80G | 4 |
node1 | 4G | 80G | 4 |
node2 | 4G | 80G | 4 |
2.2 下载需要的各种安装包
下图是需要的全部安装包
1.基础工具JDK和MySQL
JDK是必须的,CDH在部署时需要用到数据库,有三种数据可选,我们使用最常用的MySQL。MySQL安装需要三个安装包,分别是MySQL-client、MySQL-server和MySQL-share。CM连接MySQL需要一个jar包,这个jar包需要我们自己下载,mysql-connector-java。
2.CM安装包
CM下载地址:http://archive.cloudera.com/cm5/cm/5/
下图是CM官方下载页,注意选择和自己操作系统匹配的版本,centos6用户要选名称中有el6的版本,centos7用户要选名称中有centos7的版本。
3.CDH离线库
CDH可以通过离线库安装,也可以通过在线库安装,在线库非常容易出问题,比如还没下载完发生了掉线,那么又得重新下,非常麻烦,所以提前下好离线库来安装是最好的。
离线库下载地址:http://archive.cloudera.com/cdh5/parcels
下图是CDH官方下载页,关于CDH,我们要下载三个文件。例如下载5.14.2版本CDH离线库,需要下载红线圈出的三个文件。
2.3 安装JDK
解压压缩包,然后修改vi /etc/profile
文件,配置环境变量。
#set java environment
JAVA_HOME=你的JDK在系统中的路径(例:/usr/local/jdk1.7.0_71)
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
使用命令source /etc/profile
使配置生效。
注意:CDH要求JDK的版本必须在1.8以上。
2.4 设置免密登录
使用命令ssh-keygen
生成秘钥,中间会有三次可以更改设置,全部回车采用默认设置。
进入/root/.ssh
文件夹,可以看到刚才生成的公钥和私钥。
使用ssh-copy-id ip
命令将公钥传给另外两台机器,三个节点都要做这个操作。
2.5 关闭SELINUX
临时关闭:
setenforce 0
永久关闭:
修改配置文件/etc/selinux/config
将SELINUX=enforcing 改为SELINUX=disabled
重启虚拟机后生效。
2.6 安装MySQL并创建CDH需要的数据库
安装MySQL
使用安装包安装MySQL,安装过程中出现冲突。
使用命令rpm -qa | grep mariadb
查看已安装的软件。
使用命令rpm -e --nodeps mariadb-libs-5.5.64-1.el7.x86_64
将上一步查到的软件卸载。
重新执行安装命令,安装成功。
使用命令cat /root/.mysql_secret
查看MySQL的原始密码
使用命令mysql_secure_installation
进行MySQL权限设置,第一步需要输入原始密码,注意输入后不会显示输入了信息,第二步修改密码。
第三步,回车默认;第四步,输入n,不禁用远程连接;第五步,删除测试库,回车默认;第六步,重载权限,选否的话就白改了,回车默认选是。
创建四个数据库
集群监控数据库
create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
hive数据库
create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
oozie数据库
create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
hue数据库
create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
修改用户连接设置
进入mysql数据库,使用命令use mysql
更改当前操作对象。修改user表中的内容,修改前user表中内容如下:
改成下图这样,这样所有主机都可以连接MySQL数据库。
2.7 安装第三方依赖库
执行下面yum命令,安装CM需要的第三方库。
yum -y install chkconfig python bind-utils psmisc libxslt zlib sqlite cyrus-sasl-plain cyrus-sasl-gssapi fuse fuse-libs redhat-lsb httpd mod_ssl
三.安装ClouderaManager
以下操作均使用root用户,先在master上配置然后将master上的CM拷贝到slave节点上。
3.1 将CM安装包上传并解压
将CM安装包解压到/opt/目录下
tar -zxvf cloudera-manager-centos7-cm5.15.2_x86_64.tar.gz -C /opt/
3.2 创建cloudera-scm用户
Cloudera Manager默认用户为cloudera-scm, 安装完成后,CM将自动使用此用户,所有节点都需要创建这个用户。
执行添加用户命令:
useradd --system --home=/opt/cm-5.15.2/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
上述命令中几个参数得含义:
–system 创建一个系统账户
–home 指定用户登入时的主目录,替换系统默认值/home/<用户名>
–no-create-home 不要创建用户的主目录
–shell 用户的登录 shell 名
–comment 用户的描述信息
注意home目录需要根据自己的情况修改一下。
3.3 修改CM agent的配置
修改server_host的值,改为master节点
3.4 配置CM数据库
准备CM连接数据库需要使用的jar包
先配置CM连接MySQL需要的jar包,解压mysql-connector-java这个压缩包,进入解压后的文件夹。可以看到该文件夹下有如下图所示的几个文件。
创建一个文件夹:
mkdir /usr/share/java/
将mysql-connector-java-5.1.48-bin.jar这个jar包复制到刚才创建的文件夹下。
cp mysql-connector-java-5.1.48-bin.jar /usr/share/java/
将这个jar更名为mysql-connector-java.jar,否则CM无法识别。
mv /usr/share/java/mysql-connector-java-5.1.48-bin.jar /usr/share/java/mysql-connector-java.jar
创建CM数据库
执行脚本,这个脚本需要一些参数,根据自己的情况修改一下。
/opt/cm-5.15.2/share/cmf/schema/scm_prepare_database.sh mysql cm -hcmmaster -uroot -p123456 --scm-host cmmaster scm scm scm
出现如下信息表示脚本执行成功。
进入mysql可以看到刚才的脚本执行后创建的数据库cm。
3.5 将CM分发给其他节点
scp -r /opt/ cmnode1:/
scp -r /opt/ cmnode2:/
3.6 创建CM本地仓库Parcel-repo
创建本地仓库后,CM将使用本地仓库中的CDH,如果没有创建本地仓库,则只能从远程仓库中下载CDH,会非常麻烦。
创建本地仓库文件夹:
mkdir -p /opt/cloudera/parcel-repo
将本地仓库文件夹的所有者改为之前创建的cloudera-scm用户:
chown cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo
将之前下载的三个CDH文件移动到CM本地仓库
CDH-5.15.2-1.cdh5.15.2.p0.3-el7.parcel
CDH-5.15.2-1.cdh5.15.2.p0.3-el7.parcel.sha1注意这个文件需要改名,改为CDH-5.15.2-1.cdh5.15.2.p0.3-el7.parcel.sha
manifest.json
mv CDH-5.15.2-1.cdh5.15.2.p0.3-el7.parcel CDH-5.15.2-1.cdh5.15.2.p0.3-el7.parcel.sha manifest.json /opt/cloudera/parcel-repo
在主节点上创建本地仓库后,可以直接将仓库分发给slave节点,也可以之后在CDH部署时通过UI界面操作,两种方式差不多,我这里就不手动分发了。
3.7 启动CM集群
先启动server,在启动各agent
首先在master节点上执行命令,启动server:
/opt/cm-5.15.2/etc/init.d/cloudera-scm-server start
接着在master和node节点上执行命令,启动agent:
/opt/cm-5.15.2/etc/init.d/cloudera-scm-agent start
出现如下信息表示启动成功,master节点:
slave节点:
启动成功后,还不能立即访问UI界面,需要等到CM完全启动起来,使用命令netstat -anp | grep 7180
查看到端口占用后,在浏览器访问master节点的7180端口。
四.部署CDH
使用默认用户名密码,admin、admin登录。
选择免费版本。
一直下一步,指定主机时选择所有主机。
刚才我们配置了本地仓库,这里可以看到了,CM默认选择的就是我们刚才装的本地仓库中的CDH,CM也推荐使用本地仓库。
点击继续,由于之前我们没有把CDH分发给各slave节点,所以这里CM开始自动给各slave节点分发CDH。
分发成功
接着CM会进行检查,然后列出检查结果,有黄色叹号的可以先略过,之后在处理。
验证之后开始集群设置,首先会让选需要搭建一个什么样的集群,可以随便选一个测试一下。第一次创建的话可以选第一个,比较简单一点,组件少,需要配置的东西不多。
给集群中各台主机选定角色,使用默认的就可以。
CM需要向数据库中存储一些信息,之前我们在MySQL中创建的数据库在这里需要用到。输入数据库名称和用户及密码后,测试连接,hue这个数据库发生了问题,这是因为我们之前在安装MySQL时,删除了和MySQL有冲突的包,而删除这个包的同时也删除了Linux的一些lib文件,所以这里会出现问题。可以看这篇博客解决:CDH添加Hue服务时,验证数据库连接报错 Unexpected error. Unable to verify database connection.
群集设置这里采用默认的设置
CM开始创建集群了,需要一点时间,耐心等。
集群搭建成功
进入主页,可以看到有很多黄色和红色的警告,这是因为CM集群需要的硬件资源非常高,所以会出现错误和警告,解决办法就是提高虚拟机的内存和硬盘大小,然后重启。