此篇文章主要介绍了CDH在centos 6.x下的安装,在centos 7 版本中的安装以后会推出.
这篇文档将着重介绍Cloudera管理器域CDH的安装,并基于以下假设:
>>操作系统版本: centos 6.8
>>MySQL数据库版本: 5.6.24
>>CM版本: CM 5.12.1
>>CDH版本: CDH 5.12.1
>>采用root对集群进行部署
1、准备工作:
0)新建centos 6.x虚拟机,然后克隆3台(需要完整克隆,具体如何克隆,自行百度,这里不做过多说明)
以3台克隆机器中的其中一台为例,进行网络的配置
1> vi /etc/udev/rules.d/70-persistent-net.rules
敲dd将含有eth0的一行删除,并使用shift+$跳到文章末尾,将eth1改为eth0
2> 并复制ATTR中的引号中的内容
3> 保存退出后,vi /etc/sysconfig/network-scripts/ifcfg-eth0,将刚刚复制的内容粘贴到此文件下的HWADDR(先把之前的删除),并且
按照图中的内容进行添加或者修改,ONBOOT=yes,表示开机自启动,需要改为yes,BOOTPROTO这个主要是网络配置模式的修改,如果新安装的虚拟机默认是dhcp,表示动态获取ip,这对于后面配置集群是非常麻烦的,所以我们需要将其修改为static或者none都是表示配置静态ip模式,并且添加IPADDR,这个我们可以自己配置ip地址.
然后使用service network restart 重启下网络,然后使用ifconfig或者ip a 查看ip是否修改成功.如果出现下图错误,那么使用reboot重启虚拟机,便可解决此问题
另外两台克隆的虚拟机按照以上操作做一次.
1)关闭防火墙(3台克隆机同时操作)
临时关闭:
service iptables stop
永久关闭:
chkconfig iptables off
1.5)关闭Selinux
临时关闭
setenforce 0
修改配置文件/etc/selinux/config(重启生效)
将SELINUX=enforcing 改为SELINUX=disabled
sed -i 's#enforcing#disabled#g' /etc/selinux/config
2)设置主机名(每台克隆机,设置不通的主机名)
vi /etc/sysconfig/network 根据自己的配置修改hostname,这个需要重启虚拟机才会生效
3)配置DNS(3台克隆机同时操作)
vi /etc/resolv.conf 添加:nameserver 8.8.8.8 或者nameserver 网关地址
然后ping baidu.com 看是否有回应
如果在这个地方,出现了宿主机ping不通虚拟机,或者虚拟机ping不通宿主机,请自行百度吧,这里我也不想做过多描述.如果实在有问题加最下面的qq群寻求答案吧.
4)配置host文件(3台克隆机同时操作)
vi /etc/hosts 根据自己的ip 进行相应配置
配置完之后,可以在同一台机器上ping 不同的域名,查看是否有响应.
表明配置成功
为了以后,我们使用谷歌或者其他浏览器访问域名也可以,那么我们需要对windows中的hosts文件进行配置
打开C:\Windows\System32\drivers\etc下的hosts文件,进行相应的配置
5)更新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
6) 安装JDK(3台克隆机同时操作)
1>卸载现有JDK
查询是否安装Java软件:
rpm -qa | grep java
如果安装的版本低于1.7,卸载该JDK:
rpm -e 软件包
查看JDK安装路径:
which java
2>创建两个目录,主要是存放tar包
mkdir /opt/module
mkdir /opt/software
3> 将jdk-8u144-linux-x64.tar.gz上传至/opt/software,关于上传有两种方法,一种是使用yum install lrzsz -y或者windows下载WinSCP软件,之前做过测试,WinSCP上传下载的速度大约是rzsz的十倍左右.各有利弊,如果使用rzsz,可以直接将上传的资料直接拖到远程连接工具就可以,非常方便,下载的话直接使用 sz 需要下载的文件 就可以了
4>解压JDK
tar -zxvf jdk-8u144-linux-x64.tar.gz -C /opt/module/
5> 配置JDK环境变量
(1)先获取JDK路径
# pwd
/opt/module/jdk1.8.0_144
(2)打开/etc/profile文件
vi /etc/profile 在profile文件末尾添加JDK路径
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin
(3)保存后退出
:wq
(4)让修改后的文件生效
source /etc/profile
6> 测试JDK是否安装成功
java -version
出现上图所示,则表示JDK配置成功
7)配置免密登陆 (只在CDH101上操作)
cd ~
1>生成公钥和私钥
ssh-keygen -t rsa 一路回车就好
2> 将公钥拷贝到要免密登录的目标机器上
ssh-copy-id CDH101
ssh-copy-id CDH102
ssh-copy-id CDH103
8)在CDH101上安装mysql,配置相应的用户权限(也可以使用yum安装mysql)
1>查看mysql是否安装,如果安装了,卸载mysql
rpm -qa|grep mysql
rpm -e --nodeps xx
2>安装mysql服务端
rpm -ivh MySQL-server-5.6.24-1.el6.x86_64.rpm
3>查看产生的随机密码
cat /root/.mysql_secret 找个位置复制,为下面修改mysql密码做准备
4>查看mysql状态并启动mysql
service mysql status
service mysql start
5>安装mysql客户端
rpm -ivh MySQL-client-5.6.24-1.el6.x86_64.rpm
6>链接mysql,并修改密码
mysql -uroot -ptxj5IaUyV2Pw1tI5
SET PASSWORD=PASSWORD('000000');
7)退出mysql,使用修改后的密码重新登录mysql,并做相关操作
登录mysql
mysql -uroot -p000000
使用mysql数据库
use mysql;
查询user表
select User,Host,Password from user;
修改user表,把Host表内容修改为%
update user set host='%' where host='localhost';
删除root用户的其他host
刷新权限并退出
9)下载第三方依赖
yum -y install chkconfig python bind-utils psmisc libxslt zlib sqlite cyrus-sasl-plain cyrus-sasl-gssapi fuse fuse-libs redhat-lsb
如果不下载这些依赖,使用cdh安装的时候会报各种各样的错误.
10) 时钟同步(必须root用户)
(1)检查ntp是否安装
[root@hadoop102 桌面]# rpm -qa|grep ntp
ntp-4.2.6p5-10.el6.centos.x86_64
fontpackages-filesystem-1.41-1.1.el6.noarch
ntpdate-4.2.6p5-10.el6.centos.x86_64
(2)修改ntp配置文件
[root@hadoop102 桌面]# vi /etc/ntp.conf
修改内容如下
a)修改1(授权192.168.1.0网段上的所有机器可以从这台机器上查询和同步时间)
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap为
restrict 192.168.10.0 mask 255.255.255.0 nomodify notrap
ip地址根据自己的网段进行配置
b)修改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
c)添加3(当该节点丢失网络连接,依然可以作为时间服务器为集群中的其他节点提供时间同步)
server 127.127.1.0
fudge 127.127.1.0 stratum 10
(3)修改/etc/sysconfig/ntpd 文件
[root@hadoop102 桌面]# vim /etc/sysconfig/ntpd
增加内容如下(让硬件时间与系统时间一起同步)
SYNC_HWCLOCK=yes
(4)重新启动ntpd
[root@hadoop102 桌面]# service ntpd status
ntpd 已停
[root@hadoop102 桌面]# service ntpd start
正在启动 ntpd: [确定]
(5)设置ntpd服务开机启动:
[root@hadoop102 桌面]# chkconfig ntpd on
2. 其他机器配置(必须root用户)
(1)在其他机器配置10分钟与时间服务器同步一次
[root@hadoop103桌面]# crontab -e
编写定时任务如下:
*/10 * * * * /usr/sbin/ntpdate hadoop102
(2)修改任意机器时间
[root@hadoop103桌面]# date -s "2017-9-11 11:11:11"
(3)十分钟后查看机器是否与时间服务器同步
[root@hadoop103桌面]# date
说明:测试的时候可以将10分钟调整为1分钟,节省时间。
2、CM安装部署
CM下载地址:http://archive.cloudera.com/cm5/cm/5/
离线库下载地址:http://archive.cloudera.com/cdh5/parcels
2.1)上传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/
2.2)创建用户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 用户的描述信息
注意:
Cloudera Manager默认用户为cloudera-scm,创建具有此名称的用户是最简单的方法。 安装完成后,将自动使用此用户。
2.3)配置CM Agent
修改文件/opt/module/cloudera-manage/cm-5.12.1/etc/cloudera-scm-agent/ config.ini
vim /opt/module/cloudera-manage/cm-5.12.1/etc/cloudera-scm-agent/config.ini
server_host=CDH101
2.4)配置CM的数据库
1>拷贝mysql jar文件到目录 /usr/share/java/
mkdir /usr/share/java/
cp /opt/software/mysql-connector-java-5.1.27/mysql-connector-java-5.1.27-bin.jar /usr/share/java
mv mysql-connector-java-5.1.27-bin.jar mysql-connector-java.jar
• 注意jar包名称要修改为mysql-connector-java.jar
2>在mysql中创建cm库
/opt/module/cloudera-manager/cm-5.12.1/share/cmf/schema/scm_prepare_database.sh mysql cm -hCDH101 -uroot -p000000 --scm-host CDH101 scm scm scm
注解:
-u:Database username
-p:Database Password
mysql:数据库用的是mysql,如果安装过程中用的oracle,那么该参数就应该改为oracle。
cm:表示在mysql数据库中创建cm database
-h:Database host 表示安装数据库的主机名 (我是在在CDH101上安装的MySQL数据库,所以我指定了CDH101)
--scm-host CDH101 :CMS的主机,一般是和mysql安装的主机是在同一个主机上。
最后三个参数是:数据库名,数据库用户名,数据库密码。
执行完创建cm库的命令后,只有当看到All done, your SCM database is configured correctly!这句话时,表明命令操作是成功的.在执行这行命令后,会遇到很多问题,最常见到的是用户权限问题,这个自行百度吧,或者查看我的另一篇博客:安装CDH过程中所遇到的问题整理
2.5)分发cloudera-manage(在CDH101上执行命令,时间会稍长)
scp -r /opt/module/cloudera-manager/ CDH102:/opt/module/
scp -r /opt/module/cloudera-manager/ CDH103:/opt/module/
2.6)创建Parcel-repo 目录
1> Servre 节点创建目录/opt/cloudera/parcel-repo(server节点就是CDH101节点)
创建Cloudera Manager默认存放离线库的地址
mkdir -p /opt/cloudera/parcel-repo
并赋予parcel-repo所有者权限
chown cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo/
2> 拷贝下载文件到/opt/cloudera/parcel-repo
[root@CDH101 software]# cp CDH-5.12.1-1.cdh5.12.1.p0.3-el6.parcel manifest.json /opt/cloudera/parcel-repo/
[root@CDH101 software]# mv CDH-5.12.1-1.cdh5.12.1.p0.3-el6.parcel.sha1 CDH-5.12.1-1.cdh5.12.1.p0.3-el6.parcel.sha
[root@CDH101 software]# cp CDH-5.12.1-1.cdh5.12.1.p0.3-el6.parcel.sha /opt/cloudera/parcel-repo/
3> 在Agent 节点(CDH102,CDH103,CDH104)创建目录/opt/cloudera/parcels
mkdir -p /opt/cloudera/parcels
chown cloudera-scm:cloudera-scm /opt/cloudera/parcels
2.7)分发Parcel-repo
scp -r /opt/cloudera/ CDH102:/opt/
scp -r /opt/cloudera/ CDH103:/opt/
注意:
当scp之后,需要查看CDH102和CDH103上的parcel-repo的所属主是不是cloudera-scm,如果不是,则使用chown cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo/进行修改
2.8)启动和关闭CM Server&Agent 服务
服务节点:CDH101
[root@CDH101 cloudera]# /opt/module/cloudera-manager/cm-5.12.1/etc/init.d/cloudera-scm-server start
Starting cloudera-scm-server: [确定]
工作节点:CDH101\CDH102\CDH103
/opt/module/cloudera-manager/cm-5.12.1/etc/init.d/cloudera-scm-agent start (三个节点同时执行)
注意:启动过程非常慢,Manager 启动成功需要等待一段时间,过程中会在数据库中创建对应的表需要耗费一些时间。
一段时间过后,可以使用下列命令查看7180端口是否已经启动: netstat -anp | grep 7180 如果查看被占用则表示安装成功了!!!
[root@CDH101 init.d]# netstat -anp | grep 7180
tcp 0 0 0.0.0.0:7180 0.0.0.0:* LISTEN 5498/java
2.9)访问
访问http://CDH101:7180,(用户名、密码:admin)
这个地方注意,需要在windows的hosts文件中配置ip地址和域名
关闭服务:
服务节点:CDH101
[root@CDH101 init.d]# /opt/module/cloudera-manager/cm-5.12.1/etc/init.d/cloudera-scm-server stop
停止 cloudera-scm-server: [确定]
工作节点:CDH101\CDH102\CDH103
[root@CDH101 init.d]# /opt/module/cloudera-manager/cm-5.12.1/etc/init.d/cloudera-scm-agent stop
Stopping cloudera-scm-agent: [确定]
3、Cloudera Manager界面操作
用户和密码都是admin,
具体解决方案见上面的准备操作中的时钟同步操作。
版本汇总如下:
自定义服务中,我们先只选择HDFS,hive和yarn三个组件
继续下一步开始进行数据库的配置
接下来开始安装,直到显示集群安装成功.
安装成功后进入home管理界面
至此,CDH集群已经全部安装完毕
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
用人品去感动别人,用改变去影响别人,用状态去燃烧别人,用行动去带动别人,用阳光去照耀别人,用坚持去赢得别人,要求自己每天都去做与目标有关的事情,哪怕每天只进步一点点,坚持下来你就是最优秀卓越的!欢迎大家加入大数据交流群:725967421 一起交流,一起进步!!
---------------------------------------------------------------------------------------------------------------------------------------------------------------------