2019独角兽企业重金招聘Python工程师标准>>>
CDH5.15安装指南
1.集群规划
CDH (Cloudera's Distribution, including Apache Hadoop),是Hadoop众多分支中的一种,由Cloudera维护,基于稳定版本的Apache Hadoop构建,并集成了很多补丁,可直接用于生产环境。
Cloudera Manager则是为了便于在集群中进行Hadoop等大数据处理相关的服务安装和监控管理的组件,对集群中主机、Hadoop、Hive、Spark等服务的安装配置管理做了极大简化。
本文安装选择全离线安装方式,主机6台,系统版本CentOS6.7。具体配置如图所示:
2.环境准备
2.1 配置hosts
(1)在每台机器上修改hostname
#查看当前host
hostname
#临时修改hostname,重启后无效
hostname uat2
#在此处永久修改
vim /etc/sysconfig/network
NETWORKING=yes
#修改主机名
HOSTNAME=uat2.hadoop.feidai.com
(2)修改每台机器的hosts文件
vim /etc/hosts
#添加以下主机列表
172.16.100.217 uat1.hadoop.feidai.com uat1
172.16.100.218 uat2.hadoop.feidai.com uat2
172.16.100.219 uat3.hadoop.feidai.com uat3
172.16.100.220 uat4.hadoop.feidai.com uat4
172.16.100.221 uat5.hadoop.feidai.com uat5
172.16.100.222 uat6.hadoop.feidai.com uat6
2.2 关闭防火墙和selinux
在每台机器上进行关闭防火墙和禁用SELINUX服务操作
service iptables start #启动防火墙
service iptables status #查看防火墙的状态
service iptables stop #关闭防火墙
chkconfig iptables off #防止服务器重启开启防火墙
sestatus –v #查看selinux 的状态
##关闭 selinux
vim /etc/selinux/config
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
2.3 免密登录配置
在主节点上,设置SHH无密码登录。此处选择uat6作为主节点。
#在主节点上执行
ssh-keygen -t rsa #一路回车,生成无密码的密钥对。
#将公钥添加到认证文件中
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
#并设置authorized_keys的访问权限:
chmod 600 ~/.ssh/authorized_keys。
#scp文件到所有从节点:
scp ~/.ssh/authorized_keys root@uat2:~/.ssh/
之后在主节点上用ssh 主机名的方式就能免密登录主机了。
2.4 挂载系统镜像
在每台机器上挂载系统镜像并配置在yum源中
#创建系统镜像的挂载目录
mkdir -pv /mnt/cdrom
#挂载系统镜像
mount -o loop /home/CentOS-6.7-x86_64-bin-DVD1.iso /mnt/cdrom
##新建系统镜像的 yum 源
vim /etc/yum.repos.d/os.repo
#添加本地os yum源
[os.repo]
name=os.repo
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=0
yum repolist #配置完后通过yum命令检查是否配置成功
yum源列表截图
2.5 安装HTTPD服务
在集群中选择一台主机安装HTTPD服务(此处选择UAT2主机),用于之后的Yum源配置以及CM包配置,将下载好的包放在暴露的HTTP资源目录下,通过http请求能下载到包文件。
yum clean all #清理yum 的缓存
yum repolist all #查看已有的yum源
yum info httpd #查看http的yum源的详细信息
yum install -y httpd #yum 安装httpd 服务
service httpd start #启动httpd 服务
chkconfig --level 2345 httpd on #添加开机启动服务
*linux apache默认目录在:/var/www/html
通过访问安装了服务的主机80端口,可以看到下面的内容,表示安装成功
2.6 开启ntpd授时服务
在每台机器上安装ntpd服务,保证时间的同步
#yum源安装ntp
yum install -y ntp
#修改配置文件
vim /etc/ntp.conf
server uat2 iburst #目标服务器网络位置 uat2
#server 1.centos.pool.ntp.org iburst #注释掉
#server 2.centos.pool.ntp.org iburst #注释掉
#server 3.centos.pool.ntp.org iburst #注释掉
systemctl start ntpd.service #启动服务
systemctl enable ntpd.service #设置为开机启动
systemctl status ntpd.service #查看运行状态
配置完成后,在每台机器上执行date命令,查看时间是否同步成功。
2.7 配置远程yum 源
在2.5小节安装httpd服务的时候,把httpd服务安装到了uat2上,一方面是为了配置本节中的远程yum源。将下载好的包放到http默认访问目录中,通过yum配置文件指定URL,便达到了远程yum源的功能。
下面将下载好的包放到uat2的相应的目录中去(mysql、cm、cdh)。
/var/www/html/mariadb10.0.14
/var/www/html/cm5150
/var/www/html/cdh5150
然后在每台机器上配置好远程yum源的地址,注意httpd服务是安装在uat2中的。Uat2的IP为172.16.100.218
#配置mariadb的 yum 源
vim /etc/yum.repos.d/mariadb.repo
#添加以下内容
[mariadb]"
name = http://172.16.100.218/mariadb10.0.14
baseurl = h
enabled=1
gpgcheck=0
#配置 cm 的 yum 源
vim /etc/yum.repos.d/cm.repo
#添加以下内容
[cm]
name = Cloudera Manager
baseurl = http://172.16.100.218/cm5150
enabled=1
gpgcheck=0
#配置cdh的yum源
vim /etc/yum.repos.d/cdh.repo
#添加以下内容
[cdh]
name = CDH
baseurl = http://172.16.100.218/cdh5150
enabled=1
gpgcheck=0
配置好远程yum源后,在每台机器输入命令yum repolist 查看是否配置成功,在下图中红框的列表上出现了对应的yum源,说明配置成功。
此处yum源的配置主要作用是为了接下来Mysql的安装、cloudera-manager组件的安装,所以必须确保yum源中有相应的安装包。
#检查是否有相应的包文件
yum info MariaDB-server
yum info cloudera-manager-server
yum info cloudera-manager-agent
yum info cloudera-manager-daemons
2.8 安装mysql并创建相关的库
在上一小节中,配置好了mysql的远程yum源,那么通过yum install命令即可安装mysql服务。
选择一台机器作为mysql的服务端,进行服务端的安装,这里选择Uat2作为server
#安装服务端 仅需要在uat2上安装
yum install -y MariaDB-server
#其它服务器安装客户端
yum install -y MariaDB-client
#修改服务端配置文件:不区分大小写 以及 utf8字符集
vim /etc/my.cnf.d/server.cnf
[mysqld]
lower_case_table_names=1
character_set_server = utf8
#启动mysql 服务
service mysql start
启动mysql服务成功后,要设置root账户的密码。
#第一次可无密登录
mysql -uroot
#执行以下sql语句进行初始密码的设置
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY '123456' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost'IDENTIFIED BY '123456' WITH GRANT OPTION;
flush privileges;
创建cdh相关的库
create database hive DEFAULT CHARSET utf8;
create database amon DEFAULT CHARSET utf8;
create database hue DEFAULT CHARSET utf8;
create database oozie default charset utf8;
create database activity_monitor default charset utf8;
create database reports_manager default charset utf8;
创建相关的用户并赋予库操作权限和外网访问权限
#创建相关用户
use mysql;
insert into user(Host,User,Password) values("%","hive",password("hive"));
insert into user(Host,User,Password) values("%","amon",password("amon"));
insert into user(Host,User,Password) values("%","hue",password("hue"));
insert into user(Host,User,Password) values("%","oozie",password("oozie"));
insert into user(Host,User,Password) values("%","activity_monitor",password("activity_monitor"));
insert into user(Host,User,Password) values("%","reports_manager",password("reports_manager"));
#赋予权限
GRANT ALL PRIVILEGES ON *.* TO 'cmf'@'%'IDENTIFIED BY '123456' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'cmf'@'localhost'IDENTIFIED BY '123456' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%'IDENTIFIED BY 'hive' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'hive'@'localhost'IDENTIFIED BY 'hive' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'hue'@'%'IDENTIFIED BY 'hue' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'hue'@'localhost'IDENTIFIED BY 'hue' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'amon'@'%'IDENTIFIED BY 'amon' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'amon'@'localhost'IDENTIFIED BY 'amon' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'oozie'@'%'IDENTIFIED BY 'oozie' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'oozie'@'localhost'IDENTIFIED BY 'oozie' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'activity_monitor'@'%'IDENTIFIED BY 'activity_monitor' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'activity_monitor'@'localhost'IDENTIFIED BY 'activity_monitor' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'reports_manager'@'%'IDENTIFIED BY 'reports_manager' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'reports_manager'@'localhost'IDENTIFIED BY 'reports_manager' WITH GRANT OPTION;
#刷新
flush privileges;
#查看用户权限
show grants for hue;
2.10 安装JDK
此处安装jdk1.7版本,先查看本机是否有安装其它版本的jdk,若有,则先卸载。
在每台机器上安装jdk
#查看是否安装有jdk
rpm -qa|grep jdk
#卸载相关jdk
rpm -e --nodeps 上步骤搜索出的包全名
#安装jdk1.7
yum install -y oracle-j2sdk1.7
2.11 安装cloudera-manager组件
选择一台主机安装server端,此处选择Uat6作为server端
在全部主机中安装agent和daemons
#在uat6上安装server端
yum install -y cloudera-manager-server
#所有主机上安装agent和daemons
yum install -y cloudera-manager-agent cloudera-manager-daemons
在安装了server端的机器上(此处是uat6),修改数据库配置文件
#在安装了server的机器上
vim /etc/cloudera-scm-server/db.properties
com.cloudera.cmf.db.type=mysql
com.cloudera.cmf.db.host=172.16.100.218
com.cloudera.cmf.db.name=cmf
com.cloudera.cmf.db.user=cmf
com.cloudera.cmf.db.setupType=EXTERNAL
com.cloudera.cmf.db.password=123456
#设置开机自启
chkconfig --level 2345 cloudera-scm-server on
在安装了agent的机器上(每台机器),修改指向的server端host和ip
vim /etc/cloudera-scm-agent/config.ini
[General]
# Hostname of the CM server.
server_host=uat6
# Port that the CM server is listening on.
server_port=7182
#设置开机自启
chkconfig --level 2345 cloudera-scm-agent on
在cm server端配置好mysql的连接驱动,并初始化cmf数据库
ln –s /usr/java/mysql-connector-java-5.1.42-bin.jar /usr/share/java/mysql-connector-java.jar
#初始化CMF数据库
/usr/share/cmf/schema/scm_prepare_database.sh mysql -h 172.16.100.218 -uroot -p123456 --scm-host 172.16.100.218 cmf cmf 123456
#启动服务
service cloudera-scm-server start #在server端执行
service cloudera-scm-agent start #在每台机器上执行
#查看日志
less /var/log/cloudera-scm-server/cloudera-scm-server.log
启动server和agent成功后,访问http://uat6:7180,进行下一步的CDH配置。
3.CDH安装配置
3.1 集群配置及初始化服务安装
在上一章中,安装好了CM server和CM agent后,即可访问http://uat6:7180进入到CM的web管理页面,初始化账户是admin,密码admin。
第一次登陆后,会提示部署哪一个版本,此处选择数据集线器试用版。
勾选安装条款,然后继续
指定主机操作中,在输入框内输入所有主机的host列表,点击搜索。
搜索后会出现所有主机的列表,全选后点击继续
离线安装是使用parcel方式,在第二章的2.5小节中,安装httpd的目的之一在于将parcel包以url的形式暴露出来,在此页面上填写URL后,会自动列出检测出的最新版本的CDH安装包。
填写本地parcel目录和存储库路径,以及远程parcel存储库
选择识别出的版本以及agent暴露的URL地址
此处在第二章环境准备中已经安装好了JDK,所以不勾选。
不勾选单用户模式
输入集群主机的登录密码
等待拷贝与安装
在集群设置中,按需选择安装服务组合,此处勾选自定义服务,自由勾选初始化安装的服务,没有勾选的服务在cm安装完成后还可以已添加服务的方式添加进来。
按集群规划分配相应的组件角色
此处的数据库设置中,因为在第二章的2.8小节已经配置好初始化的一些数据库和用户密码,此处仅需填入之前创建的库名,用户名和密码,点击测试连接即可。
集群参数配置,按照规划配置
配置完成后,cm会启动全部配置的组件
3.2 CDH集成Kafka
3.2.1 安装包下载
在CDH官网中关于Kafka的安装和升级中已经说到,在CDH中,Kafka作为一个分布式的parcel,单独出来作为parcel分发安装包。只要我们把分离开的kafka的服务描述jar包和服务parcel包下载了,就可以实现完美集成了。
注意集成之前请阅读官方文档,特别是版本支持方面。
查看kafka与CDH版本对应:
https://www.cloudera.com/documentation/enterprise/release-notes/topics/rn_consolidated_pcm.html#pcm_kafka
我们的CDH是5.15的所以选择3.1的版本。
3.2.1.1 下载Parcel
下载网址:http://archive.cloudera.com/kafka/parcels/latest/
到这个网址下载你需要的kafka的parcel版本(下载图示红框中的三个文件,并将.sha1后缀的文件名改成.sha)。我们的虚拟机是Centos6的,下载对应的版本,其版本对应如下
打开刚刚下载好的manifest.json文件,找到这个版本对应的hash值,将其复制到.sha 文件中去,替换掉原来的hash值。
然后将这三个文件,拷贝到服务器cdh的/opt/cloudera/parcel-repo目录下。如果有相同的文件,即manifest.json,只需将之前的重命名即可。
3.2.1.2 下载CSD
网址:http://archive.cloudera.com/csds/kafka/
上传下载好的CSD包KAFKA-1.2.0.jar,到服务器CDH目录下,路径为/opt/cloudera/csd。
3.2.2 激活并添加服务
选择CM主页 -> Hosts -> parcel -> 检查新parcel -> 配置 -> 激活
激活完安装包后,在添加服务页面进行Kafka服务的添加即可。
在CM的集群监控界面,点击操作中的添加服务操作
选择安装Broker的主机和KM的主机
3.2.3 安装常见问题
3.2.3.1 填写Destination Brokers List
若添加了Kafka MirrorMaker,则可填写其所在节点构成的列表,若未添加Kafka MirrorMaker,可填写任意服务器即可,如下:master:9092;salve1:9092;salve2:9092
3.2.3.2 填写Source Brokers List
填写Kafka Broker所在节点构成的列表(用逗号分隔),如下master:9092;salve1:9092;salve2:9092
3.2.3.3 启动时出现内存溢出错误(java.lang.OutOfMemoryError:Javaheapspace)
解决方法:
主页服务列表 -> kafka -> 配置 -> Kafka-Broker -> Java Heap Size of Broker 修改参数到256以上即可。
3.2.3.4启动kafka mirrormaker的时候报错:whitelist must be specified when using new consumer in mirror maker
解决方法:
点击cm集群管理页面--kafka--instances--kafka mirrormaker--然后搜索Whitelist,然后提示mirrormaker default group,把刚才分配的时候设置的添加进去。在分配kafka生产环境是怎么分配的,这里就怎么填。
3.3 CDH-HDFS高可用配置
点击CM主页的HDFS服务进入服务监控主页,点击操作按钮,选择下拉列表的启用HA按钮开始配置HA HDFS。
填写nameservice
等待运行完成后。在原HDFS界面的实例列表就可以看到新加的HA组件
3.4 常见问题
3.4.1 cloudemanager安装时出现ProtocolError: 问题解决方法
CLOUDEMANAGER安装时出现:
PROTOCOLERROR:
解决办法:
#杀死supervisord进程
ps -ef | grep supervisord
kill -9
sudo service cloudera-scm-agent restart