一 。CDH简介
CDH (Cloudera’s Distribution, including Apache Hadoop),是Hadoop众多分支中的一种,由Cloudera维护,基于稳定版本的Apache Hadoop构建,并集成了很多补丁,可直接用于生产环境。
Cloudera Manager则是为了便于在集群中进行Hadoop等大数据处理相关的服务安装和监控管理的组件,对集群中主机、Hadoop、Hive、Spark等服务的安装配置管理做了极大简化
具体 关于Cloudera Manager(简称:cm)的用法 参考 (https://www.cloudera.com/documentation/manager/5-1-x/Cloudera-Manager-Introduction/cm5i_primer.html)
》》相关术语
以下图示表示相关术语的关系 具体描述参考:
- deployment
- cluster
- host
- rack
- service
- service instance
- role
- role instance
- role group
- host template
- gateway
- parcel
》》CDH组件
CDH管理着跨组件版本,并提供一个稳定的平台供许多包一起运行:
HDFS—自我修复的分布式文件系统
MapReduce—强大的并行数据处理框架
Hadoop Common—一组支持Hadoop子项目的工具
HBase—支持随机读/写访问的Hadoop数据库
Hive—在大数据集合上的类SQL查询和表
Pig—数据流语言和编译器
Oozie—针对互相依赖的Hadoop作业的工作流
Sqoop—利用集成到Hadoop的数据库和数据仓库
Flume—高可靠、可配置的数据流集合
Zookeeper—面向分布式应用的协调服务
Hue—可视化Hadoop应用的用户接口框架和SDK
》》Cloudera Manager架构
Cloudera管理器的核心是Cloudera管理器服务器。服务器承载管理控制台Web服务器和应用程序逻辑。它负责安装软件、配置、启动和停止服务,以及管理运行服务的集群。
Cloudera管理器服务器与其他几个组件一起工作:
- Agent:安装在每台主机上。它负责启动和停止进程,解压缩配置,触发安装和监控主机
- Management Service:执行各种监控、报警和报告功能的一组角色的服务。
- Database:存储配置和监控信息
- Cloudera Repository:可供Cloudera Manager分配的软件的存储库(repo库)
- Client:用于与服务器进行交互的接口:
- Admin Console:管理员控制台
- API:开发人员使用 API可以创建自定义的Cloudera Manager应用程序
二 。CDH安装
Cloudera管理器可以帮助我们安装内嵌的hadoop套件 需要有个一个管理服务器 和若干个agent代理服务器 多个代理服务器可以位于同一个rack(host分组)中
》》系统环境准备
192.168.58.133 cdh1 cmserver mysql-server
192.168.58.144 cdh2 cmagent
192.168.58.145 cdh3 cmagent
192.168.58.132 chd4 cmagent
系统使用 centos7 (cat /etc/centos-release)
同步时间 三台机器执行
[root@cdh1 ~]# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
[root@cdh1 ~]# ntpdate time1.aliyun.com
关闭防火墙
[root@bogon ~]# systemctl disable firewalld
[root@bogon ~]# iptables --flush
修改主机名
192.168.58.133 执行 hostnamectl set-hostname cdh1
192.168.58.144 执行 hostnamectl set-hostname cdh2
192.168.58.145 执行 hostnamectl set-hostname cdh3
192.168.58.132 执行 hostnamectl set-hostname cdh4
logout重新登录
分别查看是否修改成功
[root@cdh3 ~]# more /etc/hostname
cdh3
修改133 etc/hosts 追加内容
192.168.58.133 cdh1
192.168.58.144 cdh2
192.168.58.145 cdh3
192.168.58.132 cdh4
发送到其他机器
scp /etc/hosts root@192.168.58.144:/etc/
scp /etc/hosts root@192.168.58.145:/etc/
scp /etc/hosts root@192.168.58.132:/etc/
cm安装要求server服务器能免密登录其他agent 133上生成密钥对:
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
ssh localhost 测试不需要输入密码
公钥拷贝到144 145添加到认证文件
scp ~/.ssh/id_rsa.pub root@cdh2:~/.ssh/
scp ~/.ssh/id_rsa.pub root@cdh3:~/.ssh/
scp ~/.ssh/id_rsa.pub root@cdh4:~/.ssh/
两台机器执行 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
[root@cdh1 ~]# ssh cdh2
Last login: Fri Apr 20 09:50:00 2018 from 192.168.58.1
[root@cdh2 ~]# exit
logout
Connection to cdh2 closed.
[root@cdh1 ~]# ssh cdh3
Last login: Thu Apr 19 18:50:19 2018 from 192.168.58.1
[root@cdh3 ~]# exit
logout
Connection to cdh3 closed.
免密登录成功登录cdh2和cdh3
》》离线下载依赖工具准备(yum安装的mysql就没有列出)
- cm5.5.6 (http://archive.cloudera.com/cm5/cm/5/ 下载cloudera-manager-centos7-cm5.5.6_x86_64.tar.gz)
- cdh parcel离线包 (http://archive.cloudera.com/cdh5/parcels/5.5.6/ 下载和cm相同版本的cdh镜像 其中el7表示centos7版本) 需要下载下面三个文件
CDH-5.5.6-1.cdh5.5.6.p0.2-el7.parcel
CDH-5.5.6-1.cdh5.5.6.p0.2-el7.parcel.sha1
manifest.json - jdk1.7 (官网描述cdh5版本支持jdk1.7)
下载地址:(http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html)
》》安装过程(过程参考https://www.cloudera.com/documentation/manager/5-1-x/Cloudera-Manager-Installation-Guide/cm5ig_install_path_C.html)
1 》安装jdk
上传到linux后安装
rpm -ivh jdk-7u79-linux-x64.rpm
2》安装mysql服务器
Cloudera管理器使用数据库存储有关Cloudera管理器配置(loudera Manager Server, Cloudera Management Service, 和 Hive的元数据)的信息,以及系统或任务进度等信息。为了方便快速完成简单安装,Cloudera管理器可以安装和配置嵌入式PostgreSQL数据库 这里不使用内嵌的PostgreSQL 而使用外部数据库mysql(mariadb) 参考
(https://www.cloudera.com/documentation/manager/5-1-x/Cloudera-Manager-Installation-Guide/cm5ig_installing_configuring_dbs.html#cmig_topic_5)
Preparing an Cloudera Manager Server External Database章节
133机器上安装 centos7不能直接使用yum安装 mysql-server 我这里使用mariadb替代
yum -y install epel-release.noarch mariadb-server mariadb
启动并登陆测试
service mariadb start && mysql -uroot -proot
cm5需要通过java远程连接mysql所以需要将java的驱动包放在某个特定的目录(/usr/share/java)名字必须是mysql-connector-java.jar
下载地址:https://dev.mysql.com/downloads/connector/j/5.1.html
mkdir -p /usr/share/java/
cp /soft/mysql-connector-java-5.1.26-bin.jar /usr/share/java/mysql-connector-java.jar
3》安装cm5
下载对应cm安装包(http://archive.cloudera.com/cm5/) 比如我这里下载cloudera-manager-centos7-cm5.5.6_x86_64.tar.gz
mkdir -p /opt/cloudera-manager
tar xzf cloudera-manager*.tar.gz -C /opt/cloudera-manager
创建cm运行的用户(home目录cm版本目录对应上)所有3台主机都要创建
useradd --system --home=/opt/cloudera-manager/cm-5.5.6/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
其他两台机器拷贝 cm 执行以下命令
scp -r /opt/cloudera-manager root@cdh2:/opt/cloudera-manager
scp -r /opt/cloudera-manager root@cdh3:/opt/cloudera-manager
修改两台agent机器(144和145) 配置server
vi /opt/cloudera-manager/cloudera-manager/cm-5.5.6/etc/cloudera-scm-agent/config.ini
修改server_host为 cdh1或者ip地址:192.168.58.133 server_port使用默认7182【没有修改过服务器的】
133 cmserver上初始化数据库
/opt/cloudera-manager/cm-5.5.6/share/cmf/schema/scm_prepare_database.sh mysql -h localhost -uroot -proot --scm-host localhost scm scm scm
成功结果:
root@cdh1 cm-5.5.6]# /opt/cloudera-manager/cm-5.5.6/share/cmf/schema/scm_prepare_database.sh mysql -h localhost -uroot -proot --scm-host localhost scm scm scm
JAVA_HOME=/usr/java/jdk1.7.0_79
Verifying that we can write to /opt/cloudera-manager/cm-5.5.6/etc/cloudera-scm-server
Creating SCM configuration file in /opt/cloudera-manager/cm-5.5.6/etc/cloudera-scm-server
Executing: /usr/java/jdk1.7.0_79/bin/java -cp /usr/share/java/mysql-connector-java.jar:/usr/share/java/oracle-connector-java.jar:/opt/cloudera-manager/cm-5.5.6/share/cmf/schema/../lib/* com.cloudera.enterprise.dbutil.DbCommandExecutor /opt/cloudera-manager/cm-5.5.6/etc/cloudera-scm-server/db.properties com.cloudera.cmf.db.
[ main] DbCommandExecutor INFO Successfully connected to database.
All done, your SCM database is configured correctly!
查看 /opt/cloudera-manager/cm-5.5.6/etc/cloudera-scm-server目录/db.properties
# Auto-generated by scm_prepare_database.sh on Fri Apr 20 12:24:11 CST 2018
#
# For information describing how to configure the Cloudera Manager Server
# to connect to databases, see the "Cloudera Manager Installation Guide."
#
com.cloudera.cmf.db.type=mysql
com.cloudera.cmf.db.host=localhost
com.cloudera.cmf.db.name=scm
com.cloudera.cmf.db.user=scm
com.cloudera.cmf.db.password=scm
动将数据库信息写入了该配置文件 mysql下创建了一个数据库scm 创建了一个用户scm 密码scm 服务器是localhost
添加cm5的cdh5镜像parcel 下载地址:http://archive.cloudera.com/cdh5/parcels/5.5.6/
下载和cm相同版本的cdh镜像 其中el7表示centos7版本
CDH-5.5.6-1.cdh5.5.6.p0.2-el7.parcel
CDH-5.5.6-1.cdh5.5.6.p0.2-el7.parcel.sha1
manifest.json
将三个文件 放入/opt/cloudera/parcel-repo目录
mkdir -p /opt/cloudera/parcel-repo
chown cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo
启动server
/opt/cloudera-manager/cm-5.5.6/etc/init.d/cloudera-scm-server start
[root@cdh1 init.d]# netstat -nlp | grep java
tcp 0 0 0.0.0.0:7180 0.0.0.0:* LISTEN 5390/java
tcp 0 0 0.0.0.0:7182 0.0.0.0:* LISTEN 5390/java
7180是web管理界面
7182用于agent连接server
启动两台agent
/opt/cloudera-manager/cm-5.5.6/etc/init.d/cloudera-scm-agent start
浏览器访问 http://192.168.58.133:7180/ 输入用户名密码都是admin 注意 浏览器语言设置为简体中文 显示中文版
三 。CDH删除重装
1> 删除Agent节点的UUID
# rm -rf /opt/cloudera-manager/cm-5.5.6/lib/cloudera-scm-agent/*
2> 清空主节点CM数据库
进入主节点的Mysql数据库,然后drop database scm;
3> 删除Agent节点namenode和datanode节点信息
# rm -rf /opt/dfs/nn/*
# rm -rf /opt/dfs/dn/*
4> 在主节点上重新初始化CM数据库
/opt/cloudera-manager/cm-5.5.6/share/cmf/schema/scm_prepare_database.sh mysql -h localhost -uroot -proot --scm-host localhost scm scm scm
5> 执行启动脚本
启动server
/opt/cloudera-manager/cm-5.5.6/etc/init.d/cloudera-scm-server start
启动agent
/opt/cloudera-manager/cm-5.5.6/etc/init.d/cloudera-scm-agent start