CDH在Centos 7离线安装

由于本人原来都是采用在线安装方式,使用公司港台服务器代理,速度还是很可观的。不过最近要求在Centos 7上离线安装,有点坑,网上的很多都是抄来抄去,安装到一半可能就走不下去,这里是本人亲测,遇到的问题都一一说明并且解决掉。这里趟了一遍,希望对读者有帮助。不说废话,进入主题:

Cloudera官网给出三种安装方式,我们采用PathC,使用下载好的包进行安装。我这里只使用本地虚拟机来进行安装说明:


机器本身环境配置(所有机器):

设置本身机器ip

首先查看自身机器网卡,我用的NAT方式:

[root@localhost Desktop]# ifconfig


那么看到eno16777736为我们的外部网卡,我们接下来修改他的ip:

[root@localhost Desktop]# vi/etc/sysconfig/network-scripts/ifcfg-eno16777736

我们会看到如下:


然后我们改为静态ip:


此处的网关需要查看自己网段的网关。然后我们重启网路:

[root@localhostDesktop]# systemctl restart network

再次查看网络:

[root@localhost Desktop]# ifconfig


没有问题,已经成功。


更改DNS

如果我们现在运行如下命令会发现我们不识别baidu:

[root@localhost Desktop]# ping www.baidu.com

ping: unknown host www.baidu.com


这说明我们的DNS没有设置好,修改相应配置:

[root@localhost Desktop]# vi /etc/resolv.conf

正常里面是空的,加入:

nameserver 8.8.8.8

nameserver 8.8.4.4

保存退出,然后重启网络然后尝试:


更改成功


更改主机名字(看自己意愿,我假设分别是wm001,wm002,wm003):

接下来我们更改主机名字。首先我们输入如下命令,查看本机主机名字:



我们需要更改名字:

[root@localhost Desktop]# vi /etc/hostname
然后把原来名字去掉,改为:

wm001

保存退出,再次查看:




更改yum源:

Yum原本的源都在国外,更新特别浪费时间,我们改为阿里源:

首先我们将原来的源进行备份:

[root@localhost Desktop]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup


接下来我们用阿里源进行替换:

[root@localhost Desktop]# wget -O/etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

接下来我们makecache一下,然后更新包:

[root@localhost Desktop]# yum makecache

[root@localhost Desktop]# yum update

过程可能会很长,y输入然后一直继续。

至此,yum源更新完毕。


Cloudera 安装开始:

Cloudera manager 选择

首先考虑到我们集群中所用的为Centos 7,所以Cloudera Manager我选的为最新版本:

Cloudera Manager 5.10.0,主要是根据官网文档选择,下载地址为:

http://archive.cloudera.com/cm5/repo-as-tarball/

如下贴出该版本支持的Centos 各系统:


CDH选择

由于我们的cloudera manager已经选择了,所以CDH版本也可以确定:

CDH-5.10.0-1.cdh5.10.0.p0.41-el7.parcel,至于4或者5都可以:

下载地址为:http://archive.cloudera.com/cdh5/

  

JDK选择

官网给出:

所以不管java的版本是1.7还是1.8,只要符合上述要求即可。Centos 7自带java,我们查看一下版本:


Cloudera官方给出:


所以我们需要卸载本机自带的openJDK,安装我们自己的JDK到/usr/java/目录下。我们进行如下操作:

首先我们查看安装的Java并且卸载该java(所有机器):


现在java已经卸载干净,我们上oracle官网,下载我们所需的java版本:

http://www.oracle.com/technetwork/java/javase/downloads/index.html

然后安装我们的java:


可以看到,我们安装的java被安装到了/usr/java目录下,并且创建了一个latest链接文件,然后我们把java的目录放到环境中去:


至此,java环境准备完毕。


配置SSH

一般centos 7默认安装了openssh,我们在wm001上创建密匙,这里需要说明一下,根据官网说明:


我们使用root用户创建密匙(所有机器):


接着我们需要修改hosts文件,依据Cloudera官网:


所以我们要在每台机器的hosts文件中加入其余机器的信息,我们现在只在wm001中加入,稍后会写相应的脚本来传递到各个机器上。在wm001上改为如下:

127.0.0.1  localhost

::1        localhost

192.168.75.128 wm001

192.168.75.129 wm002

192.168.75.130 wm003

然后我们在wm001上创建文件autossh.sh脚本,然后编辑:

#!/bin/bash

# 注意此处用于主机已经生成了ssh-key

password='moon'

auto_ssh(){

 /usr/bin/expect <<-EOF

set time 30

spawn ssh-copy-id -i $HOME/.ssh/id_rsa.pub$1

expect {

"*yes/no" { send"yes\r"; exp_continue }

"*password:" { send"$password\r" }

}

expect eof

EOF

}

for i in $@;do

 auto_ssh $i

done

## 至此所有互信已经完成,接下来开始复制host文件

for i in $@;do

 scp/etc/hosts root@$i:/etc/hosts

 #scp/shellscripts/hello root@$i:/usr/local

done


脚本中的password是各机器root用户登陆密码。

然后我们赋予可执行权限:

由于脚本使用了expect包,而centos默认不安装,所以此时我们需要安装一下:


然后我们运行脚本:


显示成功,我们测试一下:


如上说明我们已经把各机器ssh成功,并且hosts文件我们也已经拷贝成功。

至此,SSH配置完毕。


安装配置MYSQL

根据官网所述:


我们需要一个外部数据库来存储集群的信息,我们使用mysql。版本我们采用:5.6,包采用:

mysql-community-release-el7-5.noarch.rpm。因为根据官方,5.6是支持的:


下载地址为:http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

然后我们开始安装mysql的rpm包,此处注意,我们只在wm001上安装:


然后我们更新yum:


然后安装mysql-server:


之所以我们不直接使用yum是因为centos7 不提供mysql的版本,所以需要我们手动下载导入:


接下来设置mysql开机启动:

[root@wm001 ~]# systemctl enable mysqld.service

然后启动mysql:

[root@wm001 ~]# systemctl start mysqld

接下来,设置root用户密码:

[root@wm001 ~]# mysqladmin -u root password 'wordemotion'


防火墙等设置:

首先官方文档中描述:


这里建议关闭防火墙,如果非要开启的话,官网有个对照,各个核心控件所需开启的端口,手动开启即可。
关闭SELinux:

[root@wm001 ~]#  systemctl stop firewalld.service

[root@wm001 ~]# vim /etc/selinux/config



NTP设置

由于机器都是虚拟机,时间相同,不设置。此跳过。(安装公司集群时,务必设置)


Cloudera Manager 安装

现在我们要正式开始安装cloudera manger了,首先把我们事先下载好的cloudera manager上传到各个机器:


然后我们把文件解压到/opt目录下(每台机器都如此):

tar -zxvf cloudera-manager-centos7-cm5.10.0_x86_64.tar.gz -C  /opt/

接下来我们要在所有的机器上配置主机的名字:

vim /opt/cm-5.10.0/etc/cloudera-scm-agent/config.ini




接下来我们要在所有机器上创建用户,具体原因如官方解释:


运行命令如下:

useradd --system --home-dir /opt/cm-5.10.0/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm

接下来我们要为cloudera manager建立数据库,不过在此之前我们需要下载msyql数据库驱动下载地址:http://dev.mysql.com/downloads/connector/j/

我们解压把文件上传到/opt/cm-5.10.0/share/cmf/lib/目录下:

cp mysql-connector-java-5.1.40-bin.jar /opt/cm-5.10.0/share/cmf/lib/

 

scp   mysql-connector-java-5.1.40-bin.jar wm002:/opt/cm-5.10.0/share/cmf/lib/

 

这样之后我们开始创建库,cm给了脚本自动创建数据库等,所以我们只需要运行该脚本即可:

/opt/cm-5.10.0/share/cmf/schema/scm_prepare_database.sh mysql cm -hlocalhost -uroot -pwordemotion --scm-host localhost scm word@emotion


其中wordemotion 是数据库的root用户密码,而后面的word@emotion是新的用户scm的密码。

 

现在按照原理数据库应该已经有了该库,我们查看一下:


没有问题,数据库已经成功创建。


启动Cloudera Manager


现在我们开始启动cloudera manager,首先在wm001上启动server:

/opt/cm-5.10.0/etc/init.d/cloudera-scm-serverstart


然后我们在所有机器上启动agent

/opt/cm-5.10.0/etc/init.d/cloudera-scm-agentstart


我们在wm001上查看相应端口是已经打开,出现如图所示证明已经打开:

我们在浏览器查看:

http://192.168.75.128:7180

出现如下图所示证明安装成功,默认账号密码都是admin:


登陆,我们进入到如下界面,先不要着急点击继续


CDH安装

我们在下载CDH的时候会有相对应的sha文件,我们这里是:

CDH-5.10.0-1.cdh5.10.0.p0.41-el7.parcel.sha1

我们需要重命名该文件为:

CDH-5.10.0-1.cdh5.10.0.p0.41-el7.parcel.sha

然后把

CDH-5.10.0-1.cdh5.10.0.p0.41-el7.parcel与上面的sha文件一起放入到/opt/cloudera/parcel-repo/目录下(只是主机如此操作):

mv CDH-5.10.0-1.cdh5.10.0.p0.41-el7.parcel /opt/cloudera/parcel-repo/

继续Cloudera Manager安装

 我们在刚才的网页选择接受然后继续:


这里我们选择免费版,一般中小型公司都选择免费版,完全能够解决绝大多数业务所需。继续:


继续:


在这里我们能够看到三个主机,这也就说明只要我们的所有agent成功启动的话,我们就可以在这里看到所有的机器。

选中所有机器继续:


保持默认,继续:


到了此页面我发现集群卡住不动。

发现此问题我首先想到的是去看日志:

路径是:/opt/cm-5.10.0/log/cloudera-scm-agent

[root@wm001 cloudera-scm-agent]# tail -n 300 cloudera-scm-agent.log

我们发现确实agent发生错误,错误如下:


如上错误信息也就说明了用split去切分的时候,字段>4个,所以报错。

我追踪脚本找到报错位置:


然后我们找到调用的位置:


注释详细的说明了该方法是用update-alternatives找到指定名字的所有alternatives。那么我不知道具体要找的是哪个名字,但是我知道指定有一个名字用空格切分长度大于4。去国外的网站也查了,很多人遇到这个问题,使用如下脚本进行定位:



那么我们定位到了是因为这个包造成的。那么两种方案:


一种是把这个包卸载:

alternatives --display libjavaplugin.so.x86_64

alternatives --remove libjavaplugin.so.x86_64 /usr/lib64/IcedTeaPlugin.so

一种是更改此脚本文件,关闭server和agent,重新启动:


/opt/cm-5.10.0/etc/init.d/cloudera-scm-agent stop(所有机器)

/opt/cm-5.10.0/etc/init.d/cloudera-scm-stop stop

先把原来的脚本进行备份:

cp  /opt/cm-5.10.0/lib64/cmf/agent/build/env/lib/python2.7/site-packages/cmf-5.10.0-py2.7.egg/cmf/client_configs.py ./client_configs.py.bak

然后把该脚本覆盖老脚本,同时发往各个机器:

scp  client_configs.py  wm002:/opt/cm-5.10.0/lib64/cmf/agent/build/env/lib/python2.7/site-packages/cmf-5.10.0-py2.7.egg/cmf/client_configs.py

这样之后我们启动server和agent:

/opt/cm-5.10.0/etc/init.d/cloudera-scm-server start

/opt/cm-5.10.0/etc/init.d/cloudera-scm-agent start

然后我们打开网页,依照之前的操作到上次卡住的地方,如今已经能够正常运行了,我们等待一段时间即可:


等待时间可能会偏长,等全部成功如下图时,继续:


这时需要等待一段时间:


出现如图所示时,点击完成:


当下面的内核出现的时候,我们选择自定义(hdfs,spark,yarn,zookeeper),根据需求自定义,我这里只是演示而已:


后我们点击继续:

下面的页面一般建议默认文件夹,最后的zk如果机器充裕的话建议三个,我这三台机器配置较差,就用了一个,然后我们继续:


出现如下页面时,我们等待审核:


然后默认路径继续:


然后集群开始为我们启动各个组件,时间随着机器配置而定,如果机器配置很烂的话,很有可能会启动失败。

启动成功后我们继续如下图:


然后点击完成:


然后我们进入到管理界面,途中的警告是因为我磁盘和内存太小导致的,不影响使用,我们集群CPU和IO的监控也已经为我们启动。


至此,我们的生产模式离线安装成功完成。

【注】:最后出现的问题个人感觉可能是centos版本导致的,我的虚拟机就是centos 7.0,是不在cdh支持的列表中的,所以出现了那个问题。同样也有可能我们使用的最新的Cloudera Manager,目前他不够完善导致的,不过目前可以通过修改脚本而不用改动机器,个人认为该问题不算集群风险。




猜你喜欢

转载自blog.csdn.net/qq_23660243/article/details/60870527