概述
最近公司需要研究大数据方向的内容,经初步讨论,决定使用CDH版本
的Hadoop,使用Cloudera生态下的Cloudera Manager平台。CDH(Cloudera’s Distribution,
including Apache Hadoop),是hadoop分支中的一种,由Cloudera
维护,基于稳定版本的Apache hadoop构建,并继承了许多补丁,可以直接用于生产环境。
Cloudera Manager则是为了便于在集群中进行Hadoop等大数据处理相关
的服务安装和监控管理的组件,对集群中主机、Hadoop、Hive、Spark等服务的安装配置管理做了极大
简化。
准备条件
本文环境是在虚拟机上搭建的分布式环境。
- 硬件:
- 主节点 Intel Core i5-4200H,12G,80G 从节点Intel Core i5-5200u,12G,40G*2
- 软件:
- 操作系统 : CentOS7.3 GNOME DESTOP + development tools组包
- Java : 这里使用的是jdk-8u121-Linux-x64.rpm
- MySQL : 这里使用的是mysql-5.7.18-1.el7.x86_64.rpm-bundle.tar以及mysql-connector-java-5.1.43-bin.jar
- Cloudera Manager
- 下载地址 : https://archive.cloudera.com/cm5/cm/5/
- 这里下载的是 : https://archive.cloudera.com/cm5/cm/5/cloudera-manager-centos7-cm5.11.1_x86_64.tar.gz
- CDH安装包
- 下载地址 : http://archive.cloudera.com/cdh5/parcels
- 这里用的是 :CDH-5.11.1-1.cdh5.11.1.p0.4-el7.parcel和CDH-5.11.1-1.cdh5.11.1.p0.4-el7.parcel.sha1
注意对应的版本号,CentOS7对应的是el7
系统环境配置
首先修改各台机器上的主机名,如本人设置为centos96,centos74,centos72。
# hostnamectl set-hostname centos96
修改主机名与IP的对应关系,向所有服务器配置/etc/hosts文件,向其中添加行
# vim /etc/hosts
分别修改:
127.0.0.1 localhost.centos74
所有服务器都要修改:
192.168.2.74 centos74
192.168.2.96 centos96
192.168.2.72 centos72
#vi /etc/hostname
分别修改:
centos74
配置SSH无秘钥登录服务,注意每台机器上都要配置
# ssh-keygen -t rsa
# ssh-copy-id centos74
# ssh-copy-id centos96
# ssh-copy-id centos72
如果出现:Warning: the ECDSA host key for 'centos74' differs from the key for the IP address '192.168.2.74'
解决如下:ssh-keygen -R 192.168.1.123
所有服务器均创建安装用户:cloudera
# groupadd cloudera
# useradd -g cloudera cloudera
# echo "*********" | passwd --stdin cloudera
所有服务器为cloudera用户配置sudo权限
# chmod u+w /etc/sudoers
# echo "cloudera ALL=(root)NOPASSWD:ALL" >> /etc/sudoers
# chmod u-w /etc/sudoers
所有服务器关闭防火墙和Selinux服务
关闭防火墙
# systemctl stop firewalld
# systemctl disable firewalld
关闭Selinux
# vim /etc/sysconfig/selinux
SELINUX=disabled
重启才能生效
重启后检查
#sestatus -v
SELinux status: disabled
表示已经关闭了
重启后生效。
所有服务器设置文件打开数量及最大进程数
cp /etc/security/limits.conf /etc/security/limits.conf.bak
# echo "* soft nproc 32000" >>/etc/security/limits.conf
# echo "* hard nproc 32000" >>/etc/security/limits.conf
# echo "* soft nofile 65535" >>/etc/security/limits.conf
# echo "* hard nofile 65535" >>/etc/security/limits.conf
配置集群时间同步服务:通过ntp服务配置
ntp主节点配置:
所有节点
# yum -y install ntp
更改配置文件/etc/ntp.conf
在master节点namenode节点
注释掉原有的server指向把时间服务器的域名地址指向一个靠谱可连的时间服务器,我选择的是ntp.api.bz.
# vi /etc/ntp.conf
#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 ntp.api.gz iburst
在其余的节点上,把时间服务器的server指向master namenode节点
# vi /etc/ntp.conf
#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 192.168.2.74 iburst
所有节点
# systemctl start ntpd
# systemctl enable ntpd
Created symlink from /etc/systemd/system/multi-user.target.wants/ntpd.service to /usr/lib/systemd/system/ntpd.service.
安装Java
每台服务器需要安装相同版本的Java。这里采用的是RPM方式安装Java.
CentOS7自带了OpenJDK,但并不适用Cloudera Manager,所以首先检查安装的Java,卸载自带的OpenJDK。
[root@localhost ~]# rpm -qa | grep java
tzdata-java-2014i-1.el7.noarch
java-1.7.0-openjdk-headless-1.7.0.71 -2.5.3.1 .el7_0.x86_64
java-1.7.0-openjdk-1.7.0.71 -2.5.3.1 .el7_0.x86_64
java-1.8.0-openjdk-headless-1.7.0.71 -2.5.3.1 .el7_0.x86_64
java-1.8.0-openjdk-1.7.0.71 -2.5.3.1 .el7_0.x86_64
删除上面的java包
# rpm -e --nodeps $PACKGENAME
安装Oracle JDK
# rpm -ivh jdk-8u131-linux-x64.rpm
Java默认安装在/usr/java/目录下
配置Java环境变量,在/etc/profile后添加:
# vim /etc/profile
JAVA_HOME=/usr/java/jdk1.8.0_131
JRE_HOME=/usr/java/jdk1.8.0_131/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
使环境变量生效
# source /etc/profile
建议手动指定一下java的使用版本,避免在安装Spark组件时报错
alternatives –config java
安装MySQL
这里使用的是mysql-5.7.18-1.el7.x86_64.rpm-bundle.tar安装,解压缩后会有Mysql相应的rpm文件,
我们只需要依次安装一下几个rpm即可。
mysql-community-common-5.7.18-1.el7.x86_64.rpm
mysql-community-libs-5.7.18-1.el7.x86_64.rpm
mysql-community-client-5.7.18-1.el7.x86_64.rpm
mysql-community-server-5.7.18-1.el7.x86_64.rpm
1、和安装Java一样,首先需要检查是否已经安装了MySQL。
# rpm -qa|grep mysql 如果有的话请先卸载
然后再依次安装上述的rpm文件,因为它们存在相互依赖。
2、安装完毕后启用mysql服务。
# systemctl start mysqld
# systemctl status mysqld
3、这种方式完成安装MySQL后,会自动随机生成一个原始密码。登录并修改密码,否则报密码过期错误。
# cat /var/log/mysqld.log | grep password
2017-05-13T05:39:44.497086Z 1 [Note] A temporary password is generated for root@linuxvnode0: sjsO:Pin<5c_
使用上述密码登录MySQL
# mysql -uroot -p
Enter password:
登录成功后:
mysql> SET PASSWORD = PASSWORD('**********');
Query OK, 0 rows affected, 1 warning (0.00 sec)
注意此处密码设置必须用强密码,否则安装CM时报密码过期错误。
4、设置root授权访问以上所有的数据库,因为CM安装时会创建数据库,这里设置后安装CM时可以设置数据库的host为linuxvnode0
mysql>grant all privileges on *.* to 'root'@'pwd' identified by '****' with grant option;
mysql>flush privileges;
5、由于本人需要安装hive做为数据仓库,同时使用了Mysql作为Hive的存储方式,所以这里单独为hive建立一个库。
#为hive建库hive
mysql>create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
个人感觉此处必须得新建一个库与CM安装时建立的库分开,否则启动Hive时会报角色无法启动的错误。
安装Cloudera Manager
1、来到了重头戏了,首先主节点上解压相应的文件cloudera-manager-centos7-cm5.11.1_x86_64.tar.gz 到/opt/目录下。
# tar -zxvf cloudera-manager-centos7-cm5.11.1_x86_64.tar.gz -C /opt/
3、将mysql-connector-java-5.1.43-bin.jar
放到/opt/cm-5.11.1/share/cmf/lib
和/usr/share/java
下
# mkdir -p /usr/share/java
# mv mysql-connector-java-5.1.43-bin.jar mysql-connector-java.jar
# cp mysql-connector-java.jar /opt/cm-5.11.1/share/cmf/lib/
# cp mysql-connector-java.jar /usr/share/java/mysql-connector-java.jar
注意:最好将名字命名为mysql-connector-java.jar,不然后面安装HIVE等可能会报找不到connector的错误。
4、初始化数据库
/opt/cm-5.11.1/share/cmf/schema/scm_prepare_database.sh [-数据库类型] [-创建的数据库名] [-h主机名] [-u用户名] [-p密码]
# /opt/cm-5.11.1//share/cmf/schema/scm_prepare_database.sh mysql cm -h127.0.0.1 -uroot -p123456 -P3306 --scm-host 127.0.0.1 scm scm scm
说明:这个脚本就是用来创建和配置CMS需要的数据库的脚本。各参数是指:
mysql
:数据库用的是mysql,如果安装过程中用的oracle,那么该参数就应该改为oracle。
-h127.0.0.1
:数据库建立在127.0.0.1主机上面。也就是主节点上面。
-uroot
:root身份运行mysql。-123456:mysql的root密码是*。
--scm-host 127.0.0.1
:CMS的主机,一般是和mysql安装的主机是在同一个主机上。
最后三个参数是:数据库名,数据库用户名,数据库密码。
5、配置agent:修改/opt/cm-5.11.1/etc/cloudera-scm-agent/config.ini
文件修改server_host为主节点主机名。
6、每台服务器上执行命令创建scm用户
# useradd --system --home=/opt/cm-5.11.1/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
7、将Agent同步到其他节点
# scp -r /opt/cm-5.11.1 centos72:/opt
# scp -r /opt/cm-5.11.1 centos96:/opt
8、主节点中创建parcel-repo仓库目录
# mkdir -p /opt/cloudera/parcel-repo
# chown cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo
# cp CDH-5.11.1-1.cdh5.11.1.p0.4-el7.parcel CDH-5.11.1-1.cdh5.11.1.p0.4-el7.parcel.sha manifest.json /opt/cloudera/parcel-repo
注意:其中CDH-5.11.1-1.cdh5.11.1.p0.4-el7.parcel.sha1 后缀要把1去掉
Clouder-Manager将CDHs从主节点的/opt/cloudera/parcel-repo目录中抽取出来,分发解压激活到各个节点的/opt/cloudera/parcels目录中
9、执行相应的脚本,设置自启动,并启动服务。
主节点启动 :
# cp /opt/cm-5.11.1/etc/init.d/cloudera-scm-server /etc/init.d/cloudera-scm-server
# /opt/cm-5.11.1/etc/init.d/cloudera-scm-server start
# chkconfig cloudera-scm-server on
同时为了保证在每次服务器重启的时候都能启动cloudera-scm-server,应该在开机启动脚本/etc/rc.local
中加入命令:service cloudera-scm-server restart
所有节点(包括主节点)启动 :
# cp /opt/cm-5.11.1/etc/init.d/cloudera-scm-agent /etc/init.d/cloudera-scm-agent
# chkconfig cloudera-scm-agent on
# /opt/cm-5.11.1/etc/init.d/cloudera-scm-agent start
同上,开机启动脚本/etc/rc.local
中加入命令:service cloudera-scm-agent restart
注意:
A、pstree: command not found:解决方法
# yum -y install psmisc
10、启动成功后输入 centos74:7180即可进入Cloudera Manager运维平台界面,初始密码为 admin/admin.
(可能CM启动较久,需要一点时间才能进入) 进入后按照提示即可安装集群以及相应组件。
如若安装hive组件且使用Mysql类型的数据仓库,那么需要为hive增加MySQL connector
cp mysql-connector-java-5.1.42-bin.jar /opt/cloudera/parcels/CDH/lib/hive/lib/mysql-connector-java.jar
CM配置
由于机器集群已经安装好,下面借用了参考地址中的图片说明CM的配置。
1、一开始是进入登录界面,输入admin/admin即可登录。
2、选择部署的版本。
可以看到,现在的免费版本没有节点个数的限制了。
3、继续下一步,选择安装的CM的版本。
4、当各个Agent节点正常启动后,会展示每个节点的安装情况。耐心等待安装完即可。
5、安装检查中可能提示以下问题
按照上面的提示、解决方法如下:
# sysctl -w vm.swappiness=10
# echo "vm.swappiness=10" >>/etc/sysctl.conf
# echo never > /sys/kernel/mm/transparent_hugepage/defrag
# echo never > /sys/kernel/mm/transparent_hugepage/enabled
6、选择需要安装服务的主机
7、选择要安装的服务,这里选择所有服务 。
角色分配
8、数据库设置选择
注意:
A、数据库不能打开GITD模式,CDH貌似不支持
B、如果出现了数据库连接不上,或者无法识别数据库连接,检查安装下面两个
rpm -ivh bigtop-utils-0.7.0+cdh5.11.1+0-1.cdh5.11.1.p0.6.src.rpm
yum install -y python-lxml mw_ssl_code
参考地址:http://blog.csdn.net/shushugood/article/details/76686062
下载的地址:http://archive.cloudera.com/cdh5/redhat/7/x86_64/cdh/5.11.1/SRPMS/
9、集群审核,这里都默认的
10、开始安装
注意:
A、找不到JAVA_HOME:可进入:http://192.168.2.74:7180/cmf/hardware/hosts
在主机->所有主机->配置->高级,中设置java的路径的
参考:官方文档地址
B:Hive version information not found.
界面内hive->配置中
hive.metastore.schema.verification 设置为false 去掉勾选。
11、下一步,配置完成