CDH (Cloudera's Distribution, including Apache Hadoop),是Hadoop众多分支中的一种,由Cloudera维护,基于稳定版本的Apache Hadoop构建,并集成了不少补丁,可直接用于生产环境。html
Cloudera Manager则是为了便于在集群中进行Hadoop等大数据处理相关的服务安装和监控管理的组件,对集群中主机、Hadoop、Hive、Spark等服务的安装配置管理作了极大简化。java
本文安装选择全离线安装方式,主机6台,系统版本CentOS6.7。具体配置如图所示:node
(1)在每台机器上修改hostnamemysql
#查看当前host
hostname
#临时修改hostname,重启后无效
hostname uat2
#在此处永久修改
vim /etc/sysconfig/network
NETWORKING=yes
#修改主机名
HOSTNAME=uat2.hadoop.feidai.com
(2)修改每台机器的hosts文件linux
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
在每台机器上进行关闭防火墙和禁用SELINUX服务操做web
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
在主节点上,设置SHH无密码登陆。此处选择uat6做为主节点。sql
#在主节点上执行
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 主机名的方式就能免密登陆主机了。数据库
在每台机器上挂载系统镜像并配置在yum源中apache
#建立系统镜像的挂载目录
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源列表截图json
在集群中选择一台主机安装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端口,能够看到下面的内容,表示安装成功
在每台机器上安装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.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
在上一小节中,配置好了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;
此处安装jdk1.7版本,先查看本机是否有安装其它版本的jdk,如有,则先卸载。
在每台机器上安装jdk
#查看是否安装有jdk
rpm -qa|grep jdk
#卸载相关jdk
rpm -e --nodeps 上步骤搜索出的包全名
#安装jdk1.7
yum install -y oracle-j2sdk1.7
选择一台主机安装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配置。
在上一章中,安装好了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会启动所有配置的组件
在CDH官网中关于Kafka的安装和升级中已经说到,在CDH中,Kafka做为一个分布式的parcel,单独出来做为parcel分发安装包。只要咱们把分离开的kafka的服务描述jar包和服务parcel包下载了,就能够实现完美集成了。
注意集成以前请阅读官方文档,特别是版本支持方面。
查看kafka与CDH版本对应:
咱们的CDH是5.15的因此选择3.1的版本。
下载网址:http://archive.cloudera.com/kafka/parcels/latest/
到这个网址下载你须要的kafka的parcel版本(下载图示红框中的三个文件,并将.sha1后缀的文件名改为.sha)。咱们的虚拟机是Centos6的,下载对应的版本,其版本对应以下
打开刚刚下载好的manifest.json文件,找到这个版本对应的hash值,将其复制到.sha 文件中去,替换掉原来的hash值。
而后将这三个文件,拷贝到服务器cdh的/opt/cloudera/parcel-repo目录下。若是有相同的文件,即manifest.json,只需将以前的重命名便可。
网址:http://archive.cloudera.com/csds/kafka/
上传下载好的CSD包KAFKA-1.2.0.jar,到服务器CDH目录下,路径为/opt/cloudera/csd。
选择CM主页 -> Hosts -> parcel -> 检查新parcel -> 配置 -> 激活
激活完安装包后,在添加服务页面进行Kafka服务的添加便可。
在CM的集群监控界面,点击操做中的添加服务操做
选择安装Broker的主机和KM的主机
若添加了Kafka MirrorMaker,则可填写其所在节点构成的列表,若未添加Kafka MirrorMaker,可填写任意服务器便可,以下:master:9092;salve1:9092;salve2:9092
填写Kafka Broker所在节点构成的列表(用逗号分隔),以下master:9092;salve1:9092;salve2:9092
解决方法:
主页服务列表 -> kafka -> 配置 -> Kafka-Broker -> Java Heap Size of Broker 修改参数到256以上便可。
解决方法:
点击cm集群管理页面--kafka--instances--kafka mirrormaker--而后搜索Whitelist,而后提示mirrormaker default group,把刚才分配的时候设置的添加进去。在分配kafka生产环境是怎么分配的,这里就怎么填。
点击CM主页的HDFS服务进入服务监控主页,点击操做按钮,选择下拉列表的启用HA按钮开始配置HA HDFS。
填写nameservice
等待运行完成后。在原HDFS界面的实例列表就能够看到新加的HA组件
CLOUDEMANAGER安装时出现:
PROTOCOLERROR: <PROTOCOLERROR FOR 127.0.0.1/RPC2: 401 UNAUTHORIZED>
解决办法:
#杀死supervisord进程
ps -ef | grep supervisord
kill -9 <processID>
sudo service cloudera-scm-agent restart