关于CDH和ClouderaManager
CDH (Cloudera's Distribution, includingApache Hadoop),是Hadoop众多分支中的一种,由Cloudera维护,基于稳定版本的ApacheHadoop构建,并集成了很多补丁,可直接用于生产环境。
Cloudera Manager(本文以下简称为CM)则是为了便于在集群中进行Hadoop等大数据处理相关的服务安装和监控管理的组件,对集群中主机、Hadoop、Hive、Spark等服务的安装配置管理做了极大简化。
环境准备
服务器环境:Linux物理机
服务器配置:内存:128G,CPU:40Core
操作系统:CentOS 6.5 x64
Cloudera Manager:5.8.0
CDH: 5.8.0
前期环境准备操作:
打通SSH
配置Hosts
关闭SELINUX
关闭防火墙
NTP(可选)
jdk安装
MySql安装
IP对应的主机名
10.10.161.101 master
10.10.161.102 slave1
10.10.161.103 slave2
对应的CM角色
CM的主节点:master
CM的子节点:master,slave1,slave2
下载安装包
CM的安装包
下载地址:
http://archive.cloudera.com/cm5/cm/5/
对应的文件是:
cloudera-manager-el6-cm5.8.0_x86_64.tar.gz
本地源的安装包
由于是离线安装,需要配置本地源,需要下载相关的包,下载地址是:
http://archive-primary.cloudera.com/cdh5/parcels/5.8.0/
由于系统是CentOS6.5,所以对应的文件是:
CDH-5.8.0-1.cdh5.8.0.p0.42-el6.parcel
CDH-5.8.0-1.cdh5.8.0.p0.42-el6.parcel.sha1
manifest.json
jdk的rpm包
地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
jdk-8u102-linux-x64.rpm
mysql connector包
由于我的CM以及其他CDH组件存储元数据等信息使用的是mysql,所以此处需要准备jdbc连接mysql相关的包,如果使用其他的数据库,请准备相对应的包
mysql-connector-java-5.1.39.jar
由于此次安装mysql我使用的是yum的方式,所以此处未单独下载相关的软件包,另外,建议使用yum或者rpm的方式安装mysql以及jdk,这样jdk以及mysql会安装到默认位置上,由于CM自身机制的问题,如果这两个软件未安装到默认的位置上会导致许多额外的配置以及很多不期而遇的问题
关闭SELINUX以及防火墙
防火墙会引起hadoop相关组件通讯的各种异常,需关闭防火墙。用root用户权限登录进行操作:
1 关闭防火墙:
service iptables stop
验证:service iptables status
service iptables stop (临时关闭)
chkconfig iptables off (重启后生效)
2 关闭selinux:
查看SELinux状态:
1、/usr/sbin/sestatus -v ##如果SELinux status参数为enabled即为开启状态
SELinux status: enabled
2、getenforce ##也可以用这个命令检查
关闭SELinux:
1、临时关闭(不用重启机器):
setenforce 0 ##设置SELinux 成为permissive模式
##setenforce 1 设置SELinux 成为enforcing模式
2、修改配置文件需要重启机器:
修改/etc/selinux/config 文件
将SELINUX=enforcing改为SELINUX=disabled
重启机器即可
修改/etc/hosts
vi /etc/hosts
保存退出
SSH无密码登陆
1:ssh-keygen -trsa
连续3个回车,不必输入,生成密钥
2:ssh-copy-id -i /root/.ssh/id_rsa.pub root@master
把本机的公钥追到master的.ssh/authorized_keys 里
3:在每台机器上都对其他机器重复执行第2步,直到所有机器都能相互免密码登陆
安装NTP服务器
由于非必须此处我未安装,感兴趣或者需要的同学就去问下度娘吧
rpm安装jdk
rpm -ivh jdk-8u102-linux-x64.rpm
配java环境变量
java -version来检测jdk是否安装成功
yum安装mysql
建议将mysql安装到CM的主服务器上
安装之前检查下机器是否已经安装mysql:
rpm -qa|grep mysql
效果如下:
包含图上所示4个包就正确了,Mysql包不能多装,否则会在安装oozie hive等会出现链接拒绝问题
如果多了使用下面的命令卸载:
rpm -e xxxxxxxx
如果少了使用下面的命令安装,少那个就安装哪个:
yum install -y mysql-devel
yum install -y mysql-server
yum install -y mysql-libs
yum install -y mysql
创建mysql数据库
1) . --hive 数据库
create database hive DEFAULT CHARSET utf8 COLLATEutf8_general_ci;
2) . --集群监控数据库
create database amon DEFAULT CHARSET utf8 COLLATEutf8_general_ci;
3) . --hue 数据库
create database hue DEFAULT CHARSET utf8 COLLATEutf8_general_ci;
4) . --oozie 数据库
create database oozie DEFAULT CHARSET utf8 COLLATEutf8_general_ci;
为新创建的库赋权限
如果对mysql数据库权限要求比较高的话可以手动单独处理
如果要求不是很高,直接使用以下命令即可:
grant all privileges on *.* to 'root'@'%' identified by 'XXXX' with grant option;
flush privileges;
语句中的“XXXX”是root用户的登录密码
安装CM
将cloudera-manager-el6-cm5.8.0_x86_64.tar.gz上传到CM的主节点的/opt/目录下并解压缩,解压后会生成cloudera以及cm-5.8.0两个文件夹。
由于cloudera自身机制的问题,如果解压后的位置不在/opt/下会导致许多额外的配置以及很多不期而遇的问题
为每个节点都要创建用户
useradd --system--home=/opt/cm-5.8.0/run/cloudera-scm-server --no-create-home--shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
在 CM的主节点上修改sudoers文件
vim /etc/sudoers
在root ALL=(ALL) ALL后面增加
cloudera-scm ALL=(ALL) NOPASSWD: ALL
此处的配置是为了部分避免后面页面配置过程中发生配置无法下发到agent端的问题而进行的配置
在CM的主节点上部署mysql connector包
将mysql-connector-java-5.1.39-bin.jar放到/opt/cm-5.8.0/share/cmf/lib/下
修改agent配置文件
vim /opt/cm-5.8.0/etc/cloudera-scm-agent/config.ini
将server_host配置项由localhost改成master(CM的主节点)
保存退出
将cm-5.8.0 scp到其让机器opt文件夹下
scp –r cm-5.8.0 slave1:/opt/
scp –r cm-5.8.0 slave2:/opt/
初始化CM数据库
/opt/cm-5.8.0/share/cmf/schema/scm_prepare_database.shmysql cm -hlocalhost -uroot -proot --scm-host localhost scm scm scm
CM的主节点配置本地源
将已下载完毕的 CDH-5.8.0-1.cdh5.8.0.p0.42-el6.parcel,
CDH-5.8.0-1.cdh5.8.0.p0.42-el6.parcel.sha1,
manifest.json
并将他们放到 /opt/cloudera/parcel-repo下,并把CDH-5.8.0-1.cdh5.8.0.p0.42-el6.parcel.sha1重命名为CDH-5.8.0-1.cdh5.8.0.p0.42-el6.parcel.sha
CM主节点启动server
/opt/cm-5.8.0/etc/init.d/cloudera-scm-server start
查看日志
tail -f/opt/cm-5.8.0/log/cloudera-scm-server/cloudera-scm-server.log
CM子节点创建agent所需的文件夹
mkdir -p /opt/cm-5.8.0/run
CM子节点启动agent
/opt/cm-5.8.0/etc/init.d/cloudera-scm-agent start
页面配置
登录地址:10.10.161.101(CM主节点):7180
默认用户名密码:admin/admin
登录界面
签了免责条款,继续
免费版本即可以满足基本需求,如果有特别需求或者土豪可以选择其他,点击继续
CM可以管理的CDH组件的列表,点击继续
主机配置
如果agent进程正常启动,此处就可以发现当前已经管理的主机,全选后,点击继续
此处选择使用Parcel,由于我们已经构建了本地源,所以有CDH-5.8.0-1.cdh5.8.0.p0.42这个选项,如果此处未出现这个选项,说明你本地源搭建有问题,其他Parcel暂时可以不选,后续可以再处理,选中后点击继续
点击继续后出现此界面,显示已下载100%说明本地源构建成功,不需要再额外下载了
此处CM会自动将本地源的相关信息在各个agent上分配,解压以及激活,此处需要等待一些时间,时间根据服务器性能而异,我的物理机大约需要几分钟,虚拟机的话大约需要十几或者几十分钟,耐心等待,全部完毕后,点击继续
CM自动为各个服务器进行体检
体检结果出来了,中间这两个警告可以忽略,CM会自动帮我们摆平的,如果有其他的问题,根据问题提示给予解决,点击完成
集群配置
各种不同的Hadoop搭配,鱼丸和粗面都有,根据个人需求自己选择,也支持自定义,本人选择了核心hadoop,点击继续
此处为各个CDH组件分配服务器,根据需求分配即可,我的经验是绝大部分可以默认,zookeeper以及hdfs的secondarynamenode需要改一下即可,点击继续
测试CDH组件与元数据存放的RDBMS的连通性
填完相关的信息后,点击测试链接,测试通过后,点击继续
此处是安装的CDH组件的配置信息,如果没有特定的配置或者特殊的要求,可以先都用默认值,后续再界面中可以修改,配置完毕后,点击继续
集群各个组件初始化,耐心等待,初始化完毕后,点击完成即大功告成
CM卸载
由于CM没有提供官方的卸载工具,加上CM的结构复杂,文件存放分散,所以CM的卸载是件风险很高的事情,很有可能卸载不干净而导致二次安装出现各种奇怪的问题,所以不推荐进行卸载。
此处的卸载方法仅供参考。下面所有的操作除了停止agent以及server进程外其余在所有的服务器上全部执行
关闭集群中的所有服务
这个可以通过clouder manger 主页关闭集群
卸载
[root@master ~]#/usr/share/cmf/uninstall-cloudera-manager.sh
在某些版本中没有这个脚本,可以忽略,继续下面的操作
在所有的CM的agent上执行
/opt/cm-5.8.0/etc/init.d/cloudera-scm-agent stop
在CM的主节点上执行
/opt/cm-5.8.0/etc/init.d/cloudera-scm-server stop
一下都是所有要卸载的集群均要执行清除工作:
[root@master ~]# rm -rf /usr/share/cmf /var/lib/cloudera*/var/cache/yum/x86_64/6/cloudera* /var/log/cloudera* /var/run/cloudera* /etc/cloudera*
卸载安装包
[root@slave1 ~]# rpm -qa | grep cloudera
[root@slave1 ~]# for f in `rpm -qa | grep cloudera ` ; do rpm -e ${f} ; done (如果有保存,在执行一遍)
清除安装文件
rm -rf/var/lib/hadoop-* /var/lib/impala /var/lib/solr /var/lib/zookeeper /var/lib/hue/var/lib/oozie /var/lib/pgsql /var/lib/sqoop2 /data/dfs/ /data/impala/ /data/yarn/ /dfs//impala/ /yarn/ /var/run/hadoop-*//var/run/hdfs-*/ /usr/bin/hadoop* /usr/bin/zookeeper* /usr/bin/hbase*/usr/bin/hive* /usr/bin/hdfs /usr/bin/mapred /usr/bin/yarn /usr/bin/sqoop*/usr/bin/oozie /etc/hadoop* /etc/zookeeper* /etc/hive* /etc/hue /etc/impala/etc/sqoop* /etc/oozie /etc/hbase* /etc/hcatalog
//只删除hadoop系列的,不要删除其他软件的,否则其他软件的版本控制会被破坏
[root@master alternatives]# rm -rf ` find/var/lib/alternatives/* ! -name "mta" ! -name "print" !-name "zlibrary-ui" -mtime -3`
[root@master alternatives]# rm -rf /etc/alternatives/*
杀死相关进程
for u in hdfs mapred cloudera-scm hbase hue zookeeperoozie hive impala flume; do sudo kill $(ps -u $u -o pid=); done
删除cm相关的所有文件
rm –rf /opt/cloudera/
rm –rf /opt/cm-5.8.0/
如果中途提示某个文件或者文件夹被占用,则使用umount命令进行处理,处理后继续删除
例如umount /opt/cm-5.8.0/run/cloudera-scm-agent/process/
到此卸载完毕