一 。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 :- Cloudera管理器和它管理的所有集群的配置。
- cluster : 一个逻辑实体,包含一组主机、一个安装在主机上的CDH版本以及在主机上运行的服务和角色实例。主机只能属于一个集群。
- host : 运行角色实例的物理或虚拟机。
- rack : 包含一组物理主机的物理实体,通常由同一个交换机提供服务。
- service : cdh中的一类功能,有时被称为服务类型。例如:MapReduce、HDFS、yarn。记住这一基本原则也很有帮助:而 在传统环境中,一个主机、cdh和其他分布式系统上运行多个服务,一个服务在许多主机上运行。.
- service instance :在集群上运行的服务实例。服务实例跨越多个角色实例。例如: "H" and "yarn".
- role : 服务中的一类功能。例如,HDFS服务具有以下角色:: NameNode, SecondaryNameNode, DataNode, and Balancer.有时被称为角色类型.
- role instance : 在主机上运行的角色的实例。它通常映射到UNIX进程。例如: "NameNode-h1" and "DataNode-h1".
- 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