CDH集群搭建
这篇文档将着重介绍Cloudera管理器域CDH的安装,并基于以下假设:
操作系统版本: centos 6.5
MySQL数据库版本: 5.6.24
CM版本: CM 5.12.1
CDH版本: CDH 5.10.1
采用 root 对集群进行部署
本文适合电脑内存16G以上的,安装的是纯正的CDH,不是三个节点的,纯正四节点。建议配置主节点3G内存,从节点1.5G内存,硬盘大小建议单节点配置20G以上,CDH版本比apache吃内存和硬盘,请准备好再安装
1.CentOS-6.5-x86_64-bin-DVD1.iso 下载
2.安装CentOS
这个可以看下面写的虚拟机搭建:
虚拟机搭建
要不查看下面的链接:
https://blog.csdn.net/weixin_44161678/article/details/85724973
1、准备工作:
1)新建centos 6.x虚拟机,然后克隆3台(需要完整克隆,具体如何克隆,自行百度,这里不做过多说明) 以3台克隆机器中的其中一台为例,进行网络的配置
vi /etc/sysconfig/network-scripts/ifcfg-eth0
1). 克隆后上面标红的需要修改,也可以按照我这样配置
2).HWADDR克隆机最好在设置里找到这台机的mac地址在这里面进行修改
3).按照图中的内容进行添加或者修改,ONBOOT=yes,表示开机自启动,需要改为yes,BOOTPROTO这个主要是网络配置模式的修改,如果新安装的虚拟机默认是dhcp,表示动态获取ip,这对于后面配置集群是非常麻烦的,所以我们需要将其修改为static或者none都是表示配置静态ip模式,并且添加IPADDR,这个我们可以自己配置ip地址.
2)进行修改主机名
在 root 账号下用命令
vi /etc/sysconfig/network
或者如果配置了 hadoop账号 sudo 权限,则在 hadoop 登录情况下使用命令:sudo vi /etc/sysconfig/network
3) 然后使用service network restart 重启下网络,然后使用ifconfig或者ip a 查看ip是否修改成功.如果出现下图错误,那么使用reboot重启虚拟机,便可解决此问题
4) 关闭防火墙(3台克隆机同时操作)
临时关闭: service iptables stop 永久关闭: chkconfig iptables off
- 关闭Selinux
临时关闭 setenforce 0 修改配置文件/etc/selinux/config(重启生效) 将SELINUX=enforcing 改为SELINUX=disabled sed -i 's#enforcing#disabled#g' /etc/selinux/config
-
目前可以操作以下命令是否可以连通网络
ping baidu.com
如果在这个地方,出现了宿主机ping不通虚拟机或者是网络不可达的情况,或者虚拟机ping不通宿主机,请自行百度吧解决吧,就不描述太多了
- 配置host文件
vi /etc/hosts 根据自己的ip 进行相应配置
为了以后,我们使用谷歌或者其他浏览器访问域名也可以,那么我们需要对windows中的hosts文件进行配置
打开C:\Windows\System32\drivers\etc下的hosts文件,进行相应的配置
- 也可以更新下yum 源
更新yum源(使用阿里云镜像源)
--第一步:备份你的原镜像文件,以免出错后可以恢复
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
-- 第二步:下载新的CentOS-Base.repo 到/etc/yum.repos.d/
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
-- 第三步:清空yum缓存
yum clean all
-- 第四步:生成缓存
yum makecache
3.安装JDK(3台克隆机同时操作)
-
卸载现有JDK(其实有时候 也没什么影响)
查询是否安装Java软件: rpm -qa | grep java 如果安装的版本低于1.7,卸载该JDK: rpm -e 软件包 查看JDK安装路径: which java
-
创建两个目录,主要是存放tar包
mkdir /opt/module
mkdir /opt/software
- 上传文件
将jdk-8u40-linux-x64.gz上传至/opt/software,关于上传有两种方法,一种是使用yum install lrzsz -y或者windows下载WinSCP软件,之前做过测试,WinSCP上传下载的速度大约是rzsz的十倍左右.各有利弊,如果使用rzsz,可以直接将上传的资料直接拖到远程连接工具就可以,非常方便,下载的话直接使用 sz 需要下载的文件 就可以了
- 解压JDK和配置环境变量
tar -zxvf jdk-8u144-linux-x64.tar.gz -C /opt/module/
pwd #可以获取当前路径这里查看jdk当前安装路径
/opt/module/jdk1.8.0_40
vi /etc/profile #在profile文件末尾添加JDK路径
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_40
export PATH=$PATH:$JAVA_HOME/bin
# 刷新环境变量让修改后的文件生效
source /etc/profile
- 测试JDK是否安装成功
java -version
4.配置免密登陆
cd ~
1>生成公钥和私钥
ssh-keygen -t rsa 一路回车就好
2> 将公钥拷贝到要免密登录的目标机器上
ssh-copy-id CDH11
ssh-copy-id CDH12
ssh-copy-id CDH13
ssh-copy-id CDH14
5.时间同步(必须root用户)
-
检查ntp是否安装
rpm -qa|grep ntp
-
修改ntp配置文件
[root@CDH11 hadoop]# vi /etc/ntp.conf修改1(授权192.168.1.0网段上的所有机器可以从这台机器上查询和同步时间) #restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap为 restrict 192.168.80.0 mask 255.255.255.0 nomodify notrap ip地址根据自己的网段进行配置 修改2(集群在局域网中,不使用其他的网络时间) 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 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 添加3(当该节点丢失网络连接,依然可以作为时间服务器为集群中的其他节点提供时间同步) server 127.127.1.0 fudge 127.127.1.0 stratum 10
-
修改/etc/sysconfig/ntpd 文件
[root@CDH11 hadoop]# vim /etc/sysconfig/ntpd 增加内容如下(让硬件时间与系统时间一起同步) SYNC_HWCLOCK=yes
-
重新启动ntpd
[root@CDH11 hadoop]# service ntpd status ntpd 已停 [root@CDH11 hadoop]# service ntpd start 正在启动 ntpd: [确定]
-
设置ntpd服务开机启动:
[root@CDH11 hadoop]# chkconfig ntpd on
-
其他机器配置(必须root用户)
(1)在其他机器配置10分钟与时间服务器同步一次 [root@CDH12 hadoop]# crontab -e 编写定时任务如下:(测试可以调整时间为1分钟同步一回) */10 * * * * /usr/sbin/ntpdate CDH11 (2)修改任意机器时间 [root@CDH11 hadoop]# date -s "2017-4-11 11:11:11" (3)十分钟后查看机器是否与时间服务器同步 [root@CDH12 hadoop]# date
6.安装mysql
- 查看mysql是否安装,如果安装了,卸载mysql
rpm -qa|grep mysql
rpm -e --nodeps xxx
- 安装mysql服务端
rpm -ivh MySQL-server-5.5.28-1.linux2.6.x86_64.rpm - 查看mysql状态并启动mysql
service mysql status
service mysql start - 安装mysql客户端
rpm -ivh MySQL-5.5.28-1.linux2.6.x86_64.rpm - 链接mysql,并修改密码(我这个版本安装出来是无密码)
mysql -uroot -p
SET PASSWORD=PASSWORD(‘root’);
6) 退出mysql,使用修改后的密码重新登录mysql,并做相关操作
登录mysql
mysql -uroot -proot
使用mysql数据库
use mysql;
查询user表
select User,Host,Password from user;
修改user表,把Host表内容修改为%
update user set host=’%’ where host=‘localhost’;
删除root用户的其他host
刷新权限并退出
7.CM安装部署
CM下载地址: http://archive.cloudera.com/cm5/cm/5/
- 上传cloudera-manager-el6-cm5.12.1_x86_64.tar.gz到/opt/software并解压
# 创建/opt/module/cloudera-manager目录
mkdir /opt/module/cloudera-manager
tar -zxvf /opt/software/cloudera-manager-el6-cm5.12.1_x86_64.tar.gz -C /opt/module/cloudera-manager/
- 创建用户cloudera-scm
# 所有节点执行
useradd --system --home=/opt/module/cloudera-manager/cm-5.12.1/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
# --system 创建一个系统账户
# --home 指定用户登入时的主目录,替换系统默认值/home/<用户名>
# --no-create-home 不要 创建 用户的 主目录
# --shell 用户的登录 shell 名
# --comment 用户的描述信息
- 配置CM Agent
3.1.修改 config.ini 文件
vi /opt/module/cloudera-manager/cm-5.12.1/etc/cloudera-scm-agent/config.ini
- 配置CM的数据库
拷贝mysql jar文件到目录 /usr/share/java/
注意: jar包名称要修改为mysql-connector-java.jar
mv mysql-connector-java-5.1.27-bin.jar mysql-connector-java.jar
# 在mysql中创建cm库
/opt/module/cloudera-manager/cm-5.12.1/share/cmf/schema/scm_prepare_database.sh mysql cm -h CDH11 -uroot -proot --scm-host CDH11 scm scm scm
#-u:Database username 我这是mysql
#-p:Database Password
# mysql:数据库用的是mysql,如果安装过程中用的oracle,那么该参数就应该改为oracle。
# cm:表示在mysql数据库中创建cm database
# -h:Database host 表示安装数据库的主机名,所以我指定了CDH11
#--scm-host CDH11 :CMS的主机,一般是和mysql安装的主机是在同一个主机上。
# 最后三个参数 scm scm scm 是:数据库名,数据库用户名,数据库密码。
出现以下图片所示,就说明操作成功
- 分发cloudera-manage到另3台机上
scp -r /opt/module/cloudera-manager/ CDH12:/opt/module/
scp -r /opt/module/cloudera-manager/ CDH13:/opt/module/
scp -r /opt/module/cloudera-manager/ CDH14:/opt/module/
CDH离线库下载地址:http://archive.cloudera.com/cdh5/parcels
- 创建Parcel-repo 目录
主节点创建目录/opt/cloudera/parcel-repo(我这是CDH11)
创建Cloudera Manager默认存放离线库的地址
mkdir -p /opt/cloudera/parcel-repo
并赋予parcel-repo所有者权限
chown cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo/
[root@CDH11 software]# cp CDH-5.10.2-1.cdh5.10.2.p0.5-el6.parcel manifest.json /opt/cloudera/parcel-repo/
[root@CDH11 software]# mv CDH-5.10.2-1.cdh5.10.2.p0.5-el6.parcel.sha1 CDH-5.10.2-1.cdh5.10.2.p0.5-el6.parcel.sha
[root@CDH11 software]# cp CDH-5.10.2-1.cdh5.10.2.p0.5-el6.parcel.sha /opt/cloudera/parcel-repo/
在Agent 节点(CDH11,CDH12,CDH13,CDH14)创建目录/opt/cloudera/parcels
[root@CDH12 software]# mkdir -p /opt/cloudera/parcels
[root@CDH13 software]# chown cloudera-scm:cloudera-scm /opt/cloudera/parcels
-
分发Parcel-repo
scp -r /opt/cloudera/ CDH12:/opt/ scp -r /opt/cloudera/ CDH13:/opt/ scp -r /opt/cloudera/ CDH14:/opt/ 注意:parcel-repo的所属主是不是cloudera-scm,如果不是,使用以下代码进行修改 ==chown cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo/==
8.启动和关闭CM Server&Agent 服务
启动服务:
服务主节点:CDH11启动Server
[root@CDH11 cloudera]# /opt/module/cloudera-manager/cm-5.12.1/etc/init.d/cloudera-scm-server start
Starting cloudera-scm-server: [确定]
工作节点: CDH11\CDH12\CDH13\CDH14
# 其余节点同时执行
[root@CDH11 cloudera]# /opt/module/cloudera-manager/cm-5.12.1/etc/init.d/cloudera-scm-agent start
关闭服务:
服务主节点:CDH11
[root@CDH11 init.d]# /opt/module/cloudera-manager/cm-5.12.1/etc/init.d/cloudera-scm-server stop
停止 cloudera-scm-server: [确定]
工作节点:CDH11\CDH12\CDH13\CDH14
[root@CDH11 init.d]# /opt/module/cloudera-manager/cm-5.12.1/etc/init.d/cloudera-scm-agent stop
Stopping cloudera-scm-agent: [确定]
9.访问
1.访问http://CDH11:7180,(用户名、密码:admin)
2.Cloudera Manager界面操作 (账号密码都是admin)
自定义服务中,我们先只选择HDFS,hive和yarn三个
继续下一步进行数据库的配置
进入管理界面–就算安装完毕了