一、cloudera背景介绍
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执行管理操作时,存储整体集群情况数据。
二、cloudera环境搭建——基础部分(3台机器都要做)
1、无关基础配置(忽略)
【注:基础命令设置均须切换到root模式,许多设置完成之后重启有效】
Ctrl+Alt+F2 #从kdump界面进入系统
startx #从命令行界面切换到图形界面
#设置开机联网
cd /etc/sysconfig/network-scripts/
vi ifcfg-ens160 #编辑文件将其中ONBOOT=no 改为ONBOOT=yes
2、相关软件下载
操作系统为Centos7.5 x64
cloudera manager的CDH版本要求:
https://www.cloudera.com/documentation/enterprise/release-notes/topics/rn_consolidated_pcm.html#concept_jpd_hpz_jdb
1、CDH软件包官方最新稳定版下载地址:http://archive.cloudera.com/cdh5/parcels/latest/
在该地址需要下载以下三个文件:
CDH-5.15.1-1.cdh5.15.1.p0.4-el7.parcel
CDH-5.15.1-1.cdh5.15.1.p0.4-el7.parcel.sha1
manifest.json
【注:其中,CDH-5.15.1-1.cdh5.15.1.p0.4-el7.parcel.sha(可在下载时改后缀为.sha文件或在后面用的时候改后缀,都可以的)和manifest.json的hash值注意要匹配】
2、Cloudera Manager 官方下载地址:http://archive.cloudera.com/cm5/cm/5/
下载与Linux系统对应版本的Cloudera Manager,比如centos6下载el6,centos7下载el7版本。
下载:cloudera-manager-centos7-cm5.15.1_x86_64.tar.gz
3、Java官方下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
下载:jdk-8u181-linux-x64.tar.gz
4、mysql-connector-java官方下载地址:https://dev.mysql.com/downloads/connector/j/
选择platform independent,下载上面后缀为.tar.gz的文件:mysql-connector-java-8.0.12.tar.gz
3、主机名、路由配置文件修改
1)主机名
【注:主机名最好由纯英文小写字母组成,以避免后面安装中出现无法识别主机的问题。】
hostnamectl set-hostname ns1 #ns1为主机名
cat /etc/hostname #查看更改是否成功
2)路由配置文件
vi /etc/hosts
在文件后面添加:
10.66.241.9 ns1
10.66.241.10 ns2
10.66.241.11 ns3
2、关闭防火墙
systemctl status firewalld.service # 检查防火墙状态
systemctl stop firewalld # 关闭防火墙
systemctl disable firewalld.service # 永久关闭防火墙
centos 6.8
查看防火墙状态:service iptables status
关闭防火墙:service iptables stop
打开防火墙:service iptables start
需要改为开机不启动,使用chkconfig命令
永久开启防火墙: chkconfig iptables on
查看状态:chkconfig --list iptables
永久关闭防火墙:
chkconfig iptables off
3、关闭SElinux
【注:SELinux(Security-Enhanced Linux) 是对于强制访问控制的实现,是 Linux历史上最杰出的新安全子系统。这是一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。】
/usr/sbin/sestatus –v # 查看SElinux的状态
vim /etc/selinux/config #更改SELINUX=disabled
setenforce 0 # 在内存中关闭SElinux
getenforce # 检查内存中状态,如果日志显示结果为disabled或者permissive,说明操作成功。
4、禁用设置、基础服务设置
1)禁用IPv6
【注:CDH 要求使用 IPv4,不支持IPv6,如不禁用,通信可能产生问题,进而各个进程可能挂掉,以及出现超时等问题】
echo "alias net-pf-10 off" >> /etc/modprobe.d/dist.conf
echo "alias ipv6 off" >> /etc/modprobe.d/dist.conf
2)禁用“透明大页面”
【注:安装完CDH后,CDH Manager一般会提示用户需要做一些Linux系统层面的优化,主要包括两类:禁止透明大页面及交换分区设置。若启用“透明大页面”,可能会导致重大的性能问题。】
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo 'echo never > /sys/kernel/mm/transparent_hugepage/defrag' >> /etc/rc.local
3)交换分区设置
注:Cloudera 建议将 /proc/sys/vm/swappiness 设置为 0,修改swap空间的swappiness,降低对硬盘的缓存。】
sysctl vm.swappiness=0 #修改swappiness值为0
cat /proc/sys/vm/swappiness #验证
vi /etc/sysctl.conf #为保证重启有效,在文件中添加下面一行
vm.swappiness=0
4)安装相关依赖组件,设置http、ntp服务
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服务
systemctl start httpd.service
systemctl enable httpd.service #设置为开机启动
启动NTP服务,设置三台机器时间同步
systemctl restart ntpd
systemctl enable ntpd.service #设置为开机启动
【注:http服务开机自启动有效,但ntp服务开机自启动无效,所以重新开机可能需要手动开启ntp服务。出现这个问题的原因可能是服务chronyd未被禁用,导致ntp即使配置了也无法实现开机启动,但笔者尝试了这种方法,还是没有生效,这个问题待解决。】
①主服务器
在主机ns1上修改本地硬件时钟时间:
hwclock --localtime #查看本地硬件时钟时间
hwclock --localtime -w #将系统时间写入本地硬件时钟时间
vi /etc/ntp.conf
在文件中找到这一行,放开restrict的注释,并且修改ip地址:
# Hosts on local network are less restricted.
restrict 10.66.241.1 mask 255.255.255.0 nomodify notrap
找到这一行,注释下面的server:
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
添加下面两行:
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
②其他服务器
vi /etc/ntp.conf
找到这一行,放开restrict的注释,并且修改ip地址:
# Hosts on local network are less restricted.
restrict 10.66.241.1 mask nomodify notrap noquery
找到这一行,注释下面的server:
找到这一行,注释下面的server:
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
指定时间服务
server 10.66.241.9
改好文件后所有机器重启ntp服务:
service ntpd restart
5-10分钟后验证时间是否同步:
ntpstat
synchronised to NTP server (10.66.241.9) at stratum 12
time correct to within 18 ms
polling server every 64 s
(显示上面内容说明同步成功)
利用date命令再次验证:
date
5、SSH免密登录
ssh-keygen
ssh-copy-id ns1 #ns1为主机名
ssh-copy-id ns2
ssh-copy-id ns3
---------------------
验证:
ssh ns2
exit
ssh ns3
exit
rpm -qa|grep java #查询目前已装的JDK
rpm -e --nodeps #后面跟上一条命令查找出来的所有包,用空格隔开 #卸载相应的JDK
2)安装
在usr目录下建立java安装目录(必须要装在这个目录,否则后面会有找不到java_home的报错)
mkdir /usr/java
将jdk-8u181-linux-x64.tar.gz发送到java目录下,解压jdk到当前目录,得到文件夹 jdk1.8.0_151
tar -zxvf jdk-8u181-linux-x64.tar.gz
3)编辑配置文件,配置环境变量:
vi /etc/profile
#添加如下内容:
JAVA_HOME=/usr/java/jdk1.8.0_181
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
source /etc/profile #使文件生效
4)查看安装情况
java -version
7、安装MySQL(MySQL只需要在主服务器上安装)
【注:关于mysql版本问题,笔者安装的mysql5.6,安装过程中以及后面cloudera连接数据库,创建数据库时均未出现问题。】
1)在主服务器检查并卸载系统自动安装的Mysql版本
在主服务器检查并卸载系统自动安装的Mysql版本
rpm -qa | grep mysql
rpm -qa | grep mariadb
rpm -e --nodeps #后面跟上面2条命令查询到的所有包,包之间用空格键隔开
2)采用yum源方式安装Mysql5.6
wget http://repo.mysql.com/mysql57-community-release-el6-8.noarch.rpm #下载yum源文件
rpm -Uvh mysql57-community-release-el6-8.noarch.rpm
#修改yum源文件:
vim /etc/yum.repos.d/mysql-community.repo
[mysql56-community]
enabled=1
gpgcheck=1
[mysql57-community]
enabled=0
gpgcheck=1
vim /etc/yum.repos.d/mysql-community-source.repo
[mysql56-community-source]
enabled=1
gpgcheck=1
[mysql-tools-preview-source]
name=MySQL Tools Preview - Source
baseurl=http://repo.mysql.com/yum/mysql-tools-preview/el/6/SRPMS
enabled=1
gpgcheck=1
yum repolist all | grep mysql #用yum repolist mysql这个命令查看一下是否已经有mysql可安装文件
yum -y install mysql-community-server #yum安装mysql, 一直yes下去
3)安装成功后,启动并初始化
service mysqld start
service mysqld status
mysql刚安装完,mysql的root用户的密码默认是空的,需要给root用户设置密码密码,执行下列命令进行安全设置
mysql_secure_installation #输入当前用户:回车,输入root密码:######
初始化相关数据库以及用户,在MYSQL命令行下执行如下SQL:
mysql -uroot -p #进入MySQL数据库
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 '*****' with grant option;
MySQL常用命令:
systemctl start mysqld #启动mysqld
systemctl stop mysqld #停止mysqld
systemctl restart mysqld #重启mysqld
systemctl enable mysqld #设置开机启动
systemctl status mysqld #查看 MySQL Server 状态
三、Cloudera Manager Server安装
server的安装就只在server主机上执行:
1、上传安装包
Cloudera Manager 安装包:cloudera-manager-centos7-cm5.15.1_x86_64.tar.gz
MySQL驱动包:mysql-connector-java-8.0.12.tar.gz
大数据离线安装库:
CDH-5.15.1-1.cdh5.15.1.p0.4-el7.parcel
CDH-5.15.1-1.cdh5.15.1.p0.4-el7.parcel.sha
manifest.json
2、创建相关安装目录并解压安装介质
创建/opt/cloudera-manager安装目录并解压安装介质
mkdir /opt/cloudera-manager
tar xzf cloudera-manager*.tar.gz -C /opt/cloudera-manager
安装数据库驱动并初始化数据库
安装数据库驱动
#解压数据库驱动包,得到一个mysql-connector-java-8.0.12文件夹,里面有一个mysql-connector-java-8.0.12.jar文件
tar xzf mysql-connector-java-8.0.12.tar.gz
mkdir -p /usr/share/java
cp mysql-connector-java-8.0.12.jar /usr/share/java/mysql-connector-java.jar
初始化数据库
创建系统用户cloudera-scm
useradd --system --home=/opt/cloudera-manager/cm-5.15.1/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
验证用户是否创建成功:
cat /etc/passwd | grep cloudera-scm
#设置CM数据库的权限
mysql -uroot -p #进入mysql数据库
mysql> grant all privileges on *.* to 'temp'@'%' identified by 'temp' with grant option;
mysql> grant all privileges on *.* to 'temp'@'ns1' identified by 'temp' with grant option;
mysql> flush privileges;
mysql> use mysql;
mysql> select host ,user from user;
#进入ns1服务器以下文件夹,执行脚本命令,事先确认已经将mysql-connector-java.jar放入/usr/share/java文件夹中
cd /opt/cloudera-manager/cm-5.15.1/share/cmf/schema
./scm_prepare_database.sh mysql -h ns1 -utemp -ptemp --scm-host ns1 scm scm scm
创建server存储目录
mkdir /var/lib/cloudera-scm-server
chown cloudera-scm:cloudera-scm /var/lib/cloudera-scm-server
创建hadoop离线安装包存储目录
mkdir -p /opt/cloudera/parcels
chown cloudera-scm:cloudera-scm /opt/cloudera/parcels
配置agent的server指向
vi /opt/cloudera-manager/cm-5.15.1/etc/cloudera-scm-agent/config.ini
将server_host修改为cloudera manager server的主机名,对于本示例而言,也就是server主机ns1。
部署CDH离线安装包
mkdir -p /opt/cloudera/parcel-repo
chown cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo
mv CDH-5.15.1-1.cdh5.15.1.p0.4-el7.parcel CDH-5.15.1-1.cdh5.15.1.p0.4-el7.parcel.sha manifest.json /opt/cloudera/parcel-repo/
启动Cloudera Manager Server
/opt/cloudera-manager/cm-5.15.1/etc/init.d/cloudera-scm-server start
启动Cloudera Manager Agent
/opt/cloudera-manager/cm-5.15.1/etc/init.d/cloudera-scm-agent start
四、Cloudera Manager Agent安装
在除了server服务器外的其他的服务器上面执行以下步骤进行对agent的部署:
1、上传安装包
对于agent的安装我们只需要以下的两个安装介质:
Cloudera Manager 安装包:cloudera-manager-centos7-cm5.15.1_x86_64.tar.gz
MySQL驱动包:mysql-connector-java-8.0.12.tar.gz
2、创建相关安装目录并解压安装介质
安装数据库驱动
mkdir -p /usr/share/java
cp mysql-connector-java-8.0.12.jar /usr/share/java/mysql-connector-java.jar
创建安装目录并解压安装介质
mkdir /opt/cloudera-manager
tar xzf cloudera-manager*.tar.gz -C /opt/cloudera-manager
建系统用户cloudera-scm
useradd --system --home=/opt/cloudera-manager/cm-5.15.1/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
验证用户是否创建成功:
cat /etc/passwd | grep cloudera-scm
创建hadoop离线安装包存储目录
mkdir -p /opt/cloudera/parcels
chown cloudera-scm:cloudera-scm /opt/cloudera/parcels
配置agent的server指向
vi /opt/cloudera-manager/cm-5.15.1/etc/cloudera-scm-agent/config.ini
将server_host修改为cloudera manager server的主机名,对于本示例而言,也就是server主机ns1。
启动Cloudera Manager Agent
/opt/cloudera-manager/cm-5.15.1/etc/init.d/cloudera-scm-agent start
服务均显示启动成功后,才进行下一步操作。若服务没有启动成功,则需要查看相关日志文件,解决了问题之后方可进行下一步。
五、Cloudera ManagerMent Service集群的安装
我们部署成功CDH的server和agent之后,我们的其他一切操作都在网页上进行操作。在浏览器中输入http://10.66.241.9:7180进入web页面:
用户名、密码均为admin。
接下来选择需要安装的组件进行安装,安装成功之后显示管理界面:
用户名、密码均为admin。