(最详细)Cloudera Manager安装部署
Cloude Manager概述
CDH是Cloudera公司对整体hadoop集群环境进行监控与管理的企业级大数据管理平台。
Cloudera Manager分为:
Cloudera Manager Server:对整个集群提供监控与管理操作。Cloudera Manager Server通过部署在不同设备上的Cloudera Manager Agent进行管理整体集群。Cloudera Manager Server需要部署在一台设备上。 Cloudera Manager Agent:部署在每个需要监控与管理的设备上。负责采集运行数据与执行下发的管理命令DataBase:关系型数据库是Cloudera Manager执行管理操作时,存储整体集群情况数据。
安装要求
本示例使用的操作系统是Centos7 x64。你需要根据你的操作系统的不同进行选择对应版本的安装包。使用ROOT用户进行安装;如果使用其他非ROOT用户安装,请保证该用户具有sudo权限,而且也要保证所有的相关文件的所有者是该用户。保证所有的主机之间网络全通。也就是说防火墙策略和SELinux策略要全通。 本案例中所有的执行命令都以绿色五号新罗马标出还要保证JDK的版本在1.8以上。保证每台设备的内存至少要在8G以上。 保证每台设备的/var目录和/usr目录的剩余空间在30G以上。数据存储盘根据需求进行挂载。本示例是使用Centos7 x64版本的最小安装下测试通过的。
安装示例介绍
服务器基本参数
IP
主机名称
CPU
内存
磁盘
角色
操作系统
192.168.174.111
hdfs01
8C
128G
3T
server
Centos7 x64
192.168.174.112
hdfs02
8C
128G
3T
agent
Centos7 x64
192.168.174.113
hdfs03
8C
128G
3T
agent
Centos7 x64
192.168.174.114
hdfs04
8C
128G
3T
agent
Centos7 x64
192.168.174.115
hdfs05
8C
128G
3T
agent
Centos7 x64
192.168.174.116
hdfs06
8C
128G
3T
agent
Centos7 x64
192.168.174.117
hdfs07
8C
128G
3T
agent
Centos7 x64
192.168.174.118
hdfs08
8C
128G
3T
agent
Centos7 x64
对于CDH的安装我们最好使用ROOT用户进行安装,避免一些目录以及文件夹的权限问题出现各种各样的麻烦,当然,如果想要使用其他非ROOT用户安装也可以,但是该用户一定要有sudo的NOPASSWD权限。还有就是所有相关的文件以及文件夹的所有者都要设置为该用户,单独修改的除外。
CDH软件包官方最新稳定版下载地址:http://archive.cloudera.com/cdh5/parcels/latest/
在该地址需要下载以下三个文件:
CDH-5.14.0-1.cdh5.14.0.p0.24-el7.parcel
CDH-5.14.0-1.cdh5.14.0.p0.24-el7.parcel.sha1
manifest.json
Cloudera Manager 官方下载地址:http://archive.cloudera.com/cm5/cm/5/
在该地址只下载一个文件(该文件需要根据自己的系统进行选择):
cloudera-manager-centos7-cm5.14.1_x86_64.tar.gz
官方安装参考文档:https://www.cloudera.com/documentation/enterprise/5-14-x/topics/installation_installation.html
操作系统的相关配置
关闭防火墙
因为我们要搭建集群,集群之间就会有通信,服务器之间要是有通信,就要有相应的防火墙策略开放,因此我们要将防火墙关闭。以下给关闭防火墙操作命令(在root用户下进行操作):
# 检查防火墙状态
Centos6: [root@localhost ~]# service iptables status
Centos7: [root@localhost ~]# systemctl status firewalld.service
如果显示状态不是iptables: Firewall is not running.则需要关闭防火墙
# 关闭防火墙
Centos6:[root@localhost ~]# service iptables stop
Centos7:[root@localhost ~]# systemctl stop firewalld
# 永久关闭防火墙
Centos6:chkconfig iptables off
Centos7:systemctl disable firewalld.service
# 检查防火墙状态
Centos6: [root@localhost ~]# service iptables status
Centos7:[root@localhost ~]# systemctl status firewalld.service
iptables: Firewall is not running.
关闭SElinux
因为centos的所有访问权限都是有SELinux来管理的,为了避免我们安装中由于权限关系而导致的失败,我们将其关闭,以后跟根据需要进行重新管理。以下给出关闭SELinux的操作命令(在ROOT用户下进行操作):
# 查看SElinux的状态
[root@localhost ~]# /usr/sbin/sestatus –v
SELinux status: enabled
如果SELinux status参数为enabled即为开启状态,需要进行下面的关闭操作。
# 关闭SElinux
[root@localhost ~]# vim /etc/selinux/config
在文档中找到SELINUX,将SELINUX的值设置为disabled,即:
SELINUX=disabled
# 在内存中关闭SElinux
[root@localhost ~]# setenforce 0
# 检查内存中状态
[root@localhost ~]# getenforce
如果日志显示结果为disabled或者permissive,说明操作已经成功。
配置yum源
此步骤主要是将操作系统安装包(ISO)设置为YUM源,用来安装更多组件。在所有主机上执行(将Centos的ISO安装文件上传到/opt文件夹下)
1. 挂载操作系统ISO文件到指定目录
[root@localhost ~]# mkdir /mnt/iso
[root@localhost ~]# mount -o loop /opt/CentOS-7-x86_64-DVD-1511.iso /mnt/iso
其中CentOS-7-x86_64-DVD-1511.iso为CentOS7.2的ISO文件
2. 设置yum源repo文件
[root@localhost ~]# cd /etc/yum.repos.d
[root@localhost ~]# mkdir /opt/repo_bak;mv *.repo /opt/repo_bak
[root@localhost ~]# vi base.repo
新建的base.repo文件中添加如下代码:
[base]
name=CentOS 7
baseurl=file:///mnt/iso
gpgcheck=0
3. 刷新yum
[root@localhost ~]# yum clean all
[root@localhost ~]# yum makecache
安装相关依赖组件
[root@localhost ~]# yum -y install chkconfig bind-utils psmisc libxslt zlib sqlite cyrus-sasl-plain cyrus-sasl-gssapi fuse portmap fuse-libs redhat-lsb httpd httpd-tools unzip ntp
启动httpd服务
[root@localhost ~]# systemctl start httpd.service
[root@localhost ~]# systemctl enable httpd.service #设置为开机启动
配置NTP时钟同步
在所有要安装CDH环境的设备中设置统一时钟同步服务。如果我们有时钟服务器,那么我们需要在每一台设备上进行NTP客户端配置;如果没有,我们就将server主机作为时钟服务器,对server主机进行NTP服务器配置。其他服务器来同步这台服务器的时钟。
本示例中将按照没有时钟服务器的情况进行演示,将server主机配置为NTP服务器,其他主机配置为NTP客户端。如果有时钟服务器更简单,所有的服务器都配置为NTP客户端就好了。
NTP服务器配置(在server主机上配置,如果有时钟服务器,server主机也是配置为客户端)
修改/etc/ntp.conf
对该文件的内容进行以下的修改:
1、注释掉所有的restrict开头的配置
2、找到restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap,取消注释,并将其中IP和掩码修改为真实环境IP和掩码,此行配置为允许ntp客户端连接的配置
3、找到server 0.centos.pool.ntp.org iburst,并将所有server配置进行注释
4、添加下面两行内容
server 127.127.1.0
fudge 127.127.1.0 stratum 10
启动NTP服务
执行以下命令启动ntp服务
[root@localhost ~]# systemctl restart ntpd
查看服务状态
启动服务后,使用ntpq -p查看服务状态,当reach达到比较大的值后(一般为17),再进行NTP客户端配置。
NTP客户端配置(在agent主机上进行配置)
修改/etc/ntp.conf
对该文件进行以下内容的修改:
1、注释所有restrict和server配置
2、添加下面注释,需要修改以下的IP为NTP服务器的IP(在本案例中就是server主机的IP)
server 192.168.187.5
手动同步时间
为了避免首次同步时间比较慢,和测试一下我们是否配置正确,我们先使用下面命令手工同步一次。
[root@localhost ~]# ntpdate 192.168.187.51
启动NTP服务
[root@localhost ~]# systemctl restart ntpd
将所有的主机的ntp服务设置为开机自启动
centos6:[root@localhost ~]# chkconfig ntpd on
centos7:[root@localhost ~]# systenctl enable ntpd.service
修改主机名称
修改主机名的原因是为了方便我们记忆与管理,但这并不是主要原因,更主要的是防止hadoop的内部实现机制要通过主机名来路由到该主机的IP上,我们需要保证每一台机器的主机名不相同。
本示例中仅以第一台服务器的操作为示例,其他的服务器都是相同的操作,但需要注意的是一定要保证每一台主机的hostname不相同。(建议使用hdfs1,hdfs2,hdfs3.. . 这样的格式一次为每一台服务器命名)。
以下给出修改主机名的操作命令(在ROOT下进行操作):
Centos6:
[root@localhost ~]# vi /etc/hostname
将内容修改为新的hostname
Centos7:
[root@localhost ~]# hostnamectl set-hostname hdfs1;
[root@localhost ~]# hostname hdfs1
执行完以上的命令退出,重新登录即可。
主机名中不能使用下划线(_)。
主机名不能保护大写字符
设置主机路由(HOSTS)
修改HOSTS的原因主要有两点:
1、为了防止hadoop内部实现机制通过主机名来进行对主机的访问。
2、为了我们在配置过程中书写起来比较方便,看起来也一目了然。
这里要说明的是,我们配置HOSTS并不是只配置本机IP和主机的对应关系,而是我们规划中的每一台机器都要配置所有机器的IP和主机名称的对应关系。
修改HOSTS方法:
以下是修改HOSTS的操作命令(在ROOT用户下进行操作):
修改/etc/hosts文件,在文件中添加规划中的所有主机的IP和主机名的对应关系。而且每一台机器都配置。
[root@hdfs1 ~]# vi /etc/hosts
在该文件中添加以下格式的内容,该内容是我们规划中的所有主机的IP和主机名称,而且每一台机器的HOSTS中都要添加相同的内容,IP与主机名用一个TAB键隔开。
192.168.186.101 hdfs1
192.168.186.102 hdfs2
192.168.186.103 hdfs3
……
如果想要多个名称路由到同一个IP,我们只需要在后边继续添加即可,同样是使用TAB键隔开。例如:
192.168.186.101 hdfs1 master spark hadoop
关系型数据库的安装
MySQL的安装
使用到的安装包
MySQL-client-5.6.26-1.el6.x86_64.rpm
MySQL-devel-5.6.26-1.el6.x86_64.rpm
MySQL-server-5.6.26-1.el6.x86_64.rpm
卸载Centos自带的MySQL 和 mariadb
执行以下的两个命令查看系统预安装的MySQL或mariadb
[root@hdfs1 ~]# rpm -qa | grep MySQL
[root@hdfs1 ~]# rpm -qa | grep mariadb
将以上命令查询到的所有已安装的组件通过以下命令将其删除
[root@hdfs1 ~]# rpm -e --nodeps (以上命令查出来的所有包,以空格分开)
使用以下的命令查询所有与MySQL相关的文件
[root@hdfs1 ~]# find / -name mysql
删除以上命令查到的所有文件
安装MySQL
进入到我们MySQL的安装包的目录下,执行以下的命令(我将所有的MySQL安装包放到了root用户的主目录下了)
[root@hdfs1 ~]# rpm -ivh MySQL*
启动MySQL
centos6:[root@hdfs1 ~]# service mysql start
centos7:[root@hdfs1 ~]# systemctl start mysql.service
初始化密码
在安装MySQL的过程中,我们会看到以下内容被打印出来:
A RANDOM PASSWORD HAS BEEN SET FOR THE MySQL root USER !You will find that password in ‘/root/.mysql_secret’.
我们需要在这个文件下找到随机生成的root密码,使用以下命令:
[root@hdfs1 ~]# cat /root/.mysql_secret
登录到MySQL的命令控制台
[root@hdfs1 ~]# mysql –uroot –p密码 # 密码为我们在上一步中查看到的随机密码
修改MySQL的root用户的密码
在MySQL的命令控制台中执行以下的SQL,将root用户的密码重置为123456
SET PASSWORD FOR 'root'@'localhost' = PASSWORD(‘123456’)
修改MySQL的ROOT用户的权限
grant all on *.* to root@"%" identified by "123456"
设置MySQL开机启动
centos6:[root@hdfs1 ~]# chkconfig mysqld on
centos7:[root@hdfs1 ~]# systemctl enable mysqld.service
编辑/etc/my.cnf文件。编辑请将my.cnf文件备份。按照如下参数设置:
[mysqld]
transaction-isolation = READ-COMMITTED
# Disabling symbolic-links is recommended to prevent assorted security risks;
# to do so, uncomment this line:
# symbolic-links = 0
key_buffer = 16M
key_buffer_size = 32M
max_allowed_packet = 32M
thread_stack = 256K
thread_cache_size = 64
query_cache_limit = 8M
query_cache_size = 64M
query_cache_type = 1
max_connections = 550
#expire_logs_days = 10
#max_binlog_size = 100M
#log_bin should be on a disk with enough free space. Replace '/var/lib/mysql/mysql_binary_log' with an appropriate path for your system
#and chown the specified folder to the mysql user.
log_bin=/var/lib/mysql/mysql_binary_log
binlog_format = mixed
read_buffer_size = 2M
read_rnd_buffer_size = 16M
sort_buffer_size = 8M
join_buffer_size = 8M
# InnoDB settings
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 64M
innodb_buffer_pool_size = 4G
innodb_thread_concurrency = 8
innodb_flush_method = O_DIRECT
innodb_log_file_size = 512M
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
symbolic-links一定要注释掉
初始化数据库
[root@lhdfs1 ~]# /usr/bin/mysql_secure_installation
按照如下方式初始化。此步骤会初始化root用户的密码,请记住初始化后的root用户的密码。
初始化相关数据库以及用户。在MYSQL命令行下执行如下SQL:
create database amon DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
create database rman DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
create database metastore DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
create database sentry DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
create database nav DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
create database navms DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database monitor DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
grant all on *.* to 'root'@'%' identified by '123456' with grant option;
JDK的安装
因为CDH的运行依赖JDK1.8的运行环境。所以在安装CDH之前一定要先安装JDK1.8。本示例中以在ROOT用户下安装JDK为例。
1、 下载并上传JDK1.8的安装包
将压缩包上传到任意目录,本文以ROOT用户的主目录(~)下为例
2、 解压到相应的安装目录下
本示例中将JDK安装在了/usr/local目录下。
[root@hdfs1 ~]# tar -zxvf jdk-8u131-linux-x64.tar.gz -C /usr/local/
3、 配置环境变量
将解压后的jdk的目录配置到环境变量中
[root@hdfs1 ~]# vi /etc/profile
在该文件的末尾处添加以下内容
export JAVA_HOME=/usr/local/jdk1.8.0_131
export PATH=$JAVA_HOME/bin:$PATH
4、刷新环境变量
[root@hdfs1 ~]# source /etc/profile
5、测试是否安装成功
在任意目录下执行一下命令
[root@hdfs1 ~]# java -version
如果出现Java的版本信息证明安装成功,如果未出现,请检查环境变量中配置的路径是否正确。
Cloudera Manager Server的安装
既然是server的安装,我们就只在server主机上执行以下步骤。
上传安装包
对于server的安装我们只需要以下安装介质
Cloudera Manager 安装包:cloudera-manager-centos7-cm5.12.1_x86_64.tar.gz
MySQL驱动包:mysql-connector-java-5.1.44-bin.jar
大数据离线安装库: CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel
CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha
manifest.json
以上的介质我们在[安装示例介绍]章节中都已经明确,本示例中上传到ROOT用户的主目录下。
创建安装目录并解压安装介质
[root@hdfs1 ~]# mkdir /opt/cloudera-manager
[root@hdfs1 ~]# tar xzf cloudera-manager*.tar.gz -C /opt/cloudera-manager
安装数据库驱动并初始化数据库
安装数据库驱动
[root@hdfs1 ~]# mkdir -p /usr/share/java
[root@hdfs1 ~]# cp mysql-connector-java-5.1.44-bin.jar /usr/share/java/mysql-connector-java.jar
初始化数据库
创建系统用户cloudera-scm
[root@hdfs1 ~]# useradd --system --home=/opt/cloudera-manager/cm-5.12.1/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
创建server存储目录
[root@hdfs1 ~]# mkdir /var/lib/cloudera-scm-server
[root@hdfs1 ~]# chown cloudera-scm:cloudera-scm /var/lib/cloudera-scm-server
创建hadoop离线安装包存储目录
[root@hdfs1 ~]# mkdir -p /opt/cloudera/parcels;
[root@hdfs1 ~]# chown cloudera-scm:cloudera-scm /opt/cloudera/parcels
配置agent的server指向
修改文件我方式有两种,当然,这不过是shell的功能而已,如果shell厉害,可能还会有更多的方法。
第一种方法:
[root@hdfs1 ~]# vi /opt/cloudera-manager/cm-5.12.1/etc/cloudera-scm-agent/config.ini
将server_host修改为cloudera manager server的主机名,对于本示例而言,也就是server主机。
第二种方法:
[root@dhdfs1 ~]# sed -i "s/server_host=localhost/server_host=hdfs1/" /opt/cloudera-manager/cm-5.12.1/etc/cloudera-scm-agent/config.ini
部署CDH离线安装包
[root@hdfs1 ~]# mkdir -p /opt/cloudera/parcel-repo;
[root@hdfs1 ~]# chown cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo;
[root@hdfs1 ~]# mv CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha manifest.json /opt/cloudera/parcel-repo/
启动Cloudera Manager Server
[root@hdfs1 ~]# /opt/cloudera-manager/cm-5.12.1/etc/init.d/cloudera-scm-server start
启动Cloudera Manager Agent
[root@hdfs1 ~]# /opt/cloudera-manager/cm-5.12.1/etc/init.d/cloudera-scm-agent start
Cloudera Manager Agent的安装
在除了server服务器外的其他的服务器都要执行以下步骤进行对agent的部署。
上传安装包
对于agent的安装我们只需要以下的两个安装介质
Cloudera Manager 安装包:cloudera-manager-centos7-cm5.12.1_x86_64.tar.gz
MySQL驱动包:mysql-connector-java-5.1.44-bin.jar
安装数据库驱动
[root@hdfs1 ~]# mkdir -p /usr/share/java
[root@hdfs1 ~]# cp mysql-connector-java-5.1.44-bin.jar /usr/share/java/mysql-connector-java.jar
创建安装目录并解压安装介质
[root@hdfs1 ~]# mkdir /opt/cloudera-manager
[root@hdfs1 ~]# tar xzf cloudera-manager*.tar.gz -C /opt/cloudera-manager
建系统用户cloudera-scm
[root@hdfs1 ~]# useradd --system --home=/opt/cloudera-manager/cm-5.12.1/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
创建hadoop离线安装包存储目录
[root@hdfs1 ~]# mkdir -p /opt/cloudera/parcels;
[root@hdfs1 ~]# chown cloudera-scm:cloudera-scm /opt/cloudera/parcels
配置agent的server指向
修改文件我方式有两种,当然,这不过是shell的功能而已,如果shell厉害,可能还会有更多的方法。
第一种方法:
[root@hdfs1 ~]# vi /opt/cloudera-manager/cm-5.12.1/etc/cloudera-scm-agent/config.ini
将server_host修改为cloudera manager server的主机名,对于本示例而言,也就是server主机。
第二种方法:
[root@dhdfs1 ~]# sed -i "s/server_host=localhost/server_host=hdfs1/" /opt/cloudera-manager/cm-5.12.1/etc/cloudera-scm-agent/config.ini
启动Cloudera Manager Agent
[root@hdfs1 ~]# /opt/cloudera-manager/cm-5.12.1/etc/init.d/cloudera-scm-agent start
Cloudera ManagerMent Service集群的安装
当我们部署完CDH的server和agent之后,我们的其他一切操作都在网页上进行操作。首先我们就要安装CDH的监控集群,它是用来监控我们整个CDH的所有主机和集群的运行状态的服务。所以安装很有必要。
但是有一点是,他的进程很多,非常占用内存,生产环境中一定不要和集群安装在一台机器上。我的安装部署原则是,server主机上部署所有Cloudera Manager 相关的组件(MySQL,Cloudera Manager Server, Cloudera ManagerMent Service的所有角色),而hadoop集群的所有角色都分配到agent中。
登录到CDH的管理页面
点击添加CLOUDERA MANAGERMENT SERVICE按钮
进入到角色分配页面,将所有的主机都选择server那台。server主机我们只安装CDH的管理工具。
点击继续,进入到数据库的配置页面,配置好各个参数之后点击测试,如果显示successful证明可以进行下一步。
点击继续,进入到告警发送配置页面,如果不需要完全可以默认。
点击继续,进入到安装启动页面,等待启动完成即可
点击继续
点击完成
安装总结
转自:https://my.oschina.net/epoch/blog/1633971