1 文档编写目的
在部署CDH集群时,可能使用tar包或者rpm包的方式安装的集群,但是在部署时并没有采用Cloudera Manager来对集群进行管理,在使用过程中,集群数据量日益增长,组件慢慢变多,因此想将现有的集群使用Cloudera Manager来进行管理,本文档将介绍如何使用Cloudera Manager来接管一个无Cloudera Manager管理的CDH集群。
测试环境:
· CM和CDH版本为5.10.0
· 操作系统版本为RedHat7.2
· 使用root用户进行操作
· 集群一共三个节点
CDH集群以rpm方式已经安装的组件如下:
· Zookeeper
· HDFS
· Yarn
· Spark
· Hive
· Oozie
· Impala
· Hue
2 前置准备
在安装前需要做一些前置准备,如下:
1.修改hosts文件以及hostname
2.禁用SELinux
3.关闭防火墙
4.设置交换分区
5.关闭透明大页面
6.Ntp时钟同步
7.在MySQL元数据库中创建好Cloudera Manager所需的数据库和用户,因为其他服务已经以rpm的方式安装,数据库和用户也已经创建,所以此处只创建Cloudera Manager相关的库和用户
create database cm default character set utf8;
CREATE USER 'cm'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON cm.* TO 'cm'@'%';
FLUSH PRIVILEGES;
create database am default character set utf8;
CREATE USER 'am'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON am.* TO 'am'@'%';
FLUSH PRIVILEGES;
create database rm default character set utf8;
CREATE USER 'rm'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON rm.* TO 'rm'@'%';
FLUSH PRIVILEGES;
8.在CM节点安装httpd服务并启动
9.下载好CDH5.10.0的parcel包以及CM5.10.0的rpm包
10.准备好cm的yum源
11.为rpm方式安装的服务设置chkconfig off
Where | Command |
---|---|
NameNode | $ sudo chkconfig hadoop-hdfs-namenode off |
ResourceManager | $ sudo chkconfig hadoop-yarn-resourcemanager off |
Secondary NameNode (if used) | $ sudo chkconfig hadoop-hdfs-secondarynamenode off |
NodeManager | $ sudo chkconfig hadoop-yarn-nodemanager off |
DataNode | $ sudo chkconfig hadoop-hdfs-datanode off |
MapReduce JobHistory node | $ sudo chkconfig hadoop-mapreduce-historyserver off |
Hue server | $ sudo chkconfig hue off |
Oozie server | $ sudo chkconfig oozie off |
Hive Metastore server | $ sudo chkconfig hive-metastore off |
HiveServer2 | $ sudo chkconfig hive-server2 off |
Zookeeper server | $ sudo chkconfig zookeeper-server off |
Spark | $ sudo chkconfig spark-history-server off |
12.备份配置文件
13.在安装CM前,在HDFS和Hive中准备一些数据,用作接管完成后进行对比
- 上传两个tar包到HDFS上用作测试数据
- 在Hive中创建两个库,每个库创建一张表,并分别向两张表中导入数据
创建库test1、test2
在test1中创建表web_returns
向web_returns导入数据
查看web_returns中的数据
在test2中创建分区表test_partition
向表test_partition中导入数据
查看test_partition中的数据
3 安装Cloudera Manager
1.安装cloudera-manager-server
yum -y install cloudera-manager-server
2.为CM初始化数据库
/usr/share/cmf/schema/scm_prepare_database.sh mysql cm cm password
3.启动Cloudera Manager Server
systemctl start cloudera-scm-server
4.访问Cloudera Manager UI,用户名密码均为admin
5.接受用户许可条款
6.选择60天试用版
7.版本信息
8.添加三个节点的主机
9.选择存储库
10.安装jdk
11.单用户模式,这里不选择
12.输入服务器的密码
13.安装cloudera-scm-agent
14.分发parcel
15.检查主机正确性
出现的两个警告是由于使用rpm的方式安装了CDH集群,并不影响
16.安装服务页面,在此处不选择添加任何服务,在后面再进行服务的添加
17.点击左上角,回到CM主页
18.点击右上角的“添加 Cloudera Management Service”,输入创建的数据库信息
19.启动Cloudera Management Service
- Cloudera Management Service添加成功
4 服务状态检查
1.执行HDFS fsck来检查HDFS状态,确保HDFS服务是正常的
·Under-replicated blocks应该为0
·Mis-replicated blocks应该为0
·Corrupt blocks应该为0
sudo -u hdfs hadoop fsck /
2.运行MR示例程序以及Spark来确保Yarn和Spark服务正常
运行MR示例程序
访问Spark服务
3.列出所有节点rpm安装的CDH服务的角色
·cdh178.macro.com
ZooKeeper Server、NameNode、SecondaryNameNode、DataNode、JobHistory Server、ResourceManager、NodeManager、History Server、Hive Metastore Server、HiveServer2、Oozie Server、Impala Catalog Server、Impala StateStore、Impala Daemon、Hue Server
·cdh177.macro.com、cdh176.macro.com
ZooKeeper Server、DataNode、NodeManager、HiveServer2、Impala Daemon
4 停止所有服务并进行备份
1.进入HDFS的安全模式
sudo -u hdfs hadoop dfsadmin -safemode enter
2.保存HDFS名称空间
sudo -u hdfs hadoop dfsadmin -saveNamespace
3.查看HDFS当前的目录,记录HDFS的当前的数据信息
hadoop fs -ls /
hadoop fs -ls /user
sudo -u hdfs hadoop fsck /
Total Size | 1927512606 B |
---|---|
Total dirs | 72 |
Total files | 689 |
Total blocks | 698 |
4.停止HDFS服务
5.停止Zookeeper服务
6.在停止HDFS服务后确保in_use.lock文件已经被移除
7.备份HDFS的数据
8.备份CDH服务的元数据库
5 在Cloudera Manager上添加CDH服务
逐个添加所有服务,需要注意的是服务之间有依赖关系,推荐按照下列顺序进行服务的添加:
1)Zookeeper
2)HDFS
3)Yarn
4)Spark
5)Hive
6)Impala
7)Oozie
8)Hue
一般来说添加服务的步骤几乎是相同的:
1)在Cloudera Manager上添加服务
2)角色的分配与之前保持一致
3)应用所有配置文件
4)启动服务
6.1添加Zookeeper
1.从CM添加Zookeeper服务
2.选择Zookeeper服务
3.选择ZK Server,与之前安装时一致
4.设置与之前相同的目录
5.不点击继续,直接点击左上角回到CM主页,进入Zookeeper的配置
6.应用之前的配置,保持与之前一致
Server ID保持与之前安装时设置的一致
修改/var/lib/zookeeper/version-2的属主为zookeeper
设置堆栈大小
保证设置的ZK log目录和Heap Dump目录空间足够,如果默认的目录空间不够,则进行修改
7.启动Zookeeper
6.2 添加HDFS
1.从CM上添加HDFS
2.选择角色,保持与之前的安装一致
3.保持目录与之前一致
4.删除/data0/dfs/nn目录下NN的元数据,启动HDFS
5.将之前备份的NameNode元数据拷贝回/data0/dfs/nn目录
6.验证HDFS的数据与之前是否一致
列出HDFS的目录,与之前一致,能够看到最开始上传用作测试的两个tar包
使用fsck命令查看,数据与之前一致
6.3添加Yarn
1.在CM上添加Yarn服务
2.选择角色,保持与安装的一致
3.设置Yarn的目录与之前安装的一致
4.启动Yarn
5.Yarn启动成功
6.运行MR示例程序进行测试,示例程序运行成功
6.4添加Spark
1.从CM上添加Spark,选择Spark而不是Spark(Standalone)
2.保持角色与之前一致,Gateway选择所有节点
3.启动Spark
- Spark安装成功
重启相关的服务
重新部署客户端配置
重启成功
6.5添加Hive
1.在CM上添加Hive服务
2.为Hive选择依赖关系
3.选择角色,与之前的安装保持一致
4.设置数据库
5.Hive的目录,确保与之前安装配置的一致
6.启动Hive
7.Hive安装成功
8.验证Hive的数据与之前是否一致
查看库,可以看到之前创建的两个库test1、test2
查看库test1,可以看到之前创建的表web_returns
查看表web_returns的数据,与之前一致
查看库test2,可以看到之前创建的表test_partition
查看表test_partition的数据,与之前一致
6.6添加Impala
1.在CM上添加Impala
2.为Impala选择角色,与之前的安装保持一致
3.为Impala指定目录
4.创建Impala用户目录
5.Impala安装成功
6.启动Impala
7.测试Impala使用
6.7添加Oozie
1.在CM上添加Oozie服务
2.为Oozie服务选择依赖关系
3.选择角色,保持与之前一致
4.设置数据库
5.指定Oozie共享库目录和数据目录,与之前的安装保持一致
6.启动Oozie服务
7.Oozie服务安装成功
6.8添加Hue
1.在CM上添加Hue
2.为Hue选择依赖关系
3.选择角色,与之前安装时一致
4.设置数据库
5.启动Hue
6.Hue服务添加成功
7.访问Hue
8.测试Hue的使用
使用Hive
使用Impala
至此CM接管完成,CM主页如下图所示:
7 总结
1.使用CM接管未受管的CDH集群,在添加服务时需要注意的是,要保持角色与之前安装时的角色一致,数据目录也需要指定成之前安装时的数据目录,以及一些配置也需要在CM上修改,与支持一致,保证CM接管后服务都与之前一样正常运行。
2.在接管之前需要对服务的一些数据和配置文件进行备份,在后面CM安装服务时需要用到。
3.在接管之前需要对服务进行检查,对数据进行记录,在接管后对数据进行对比,比如HDFS以及Hive,本文档在接管后,HDFS以及Hive中数据都与之前一致。