由于本人原来都是采用在线安装方式,使用公司港台服务器代理,速度还是很可观的。不过最近要求在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官方给出:
现在java已经卸载干净,我们上oracle官网,下载我们所需的java版本:
http://www.oracle.com/technetwork/java/javase/downloads/index.html
然后安装我们的java:
至此,java环境准备完毕。
配置SSH
一般centos 7默认安装了openssh,我们在wm001上创建密匙,这里需要说明一下,根据官网说明:
我们使用root用户创建密匙(所有机器):
所以我们要在每台机器的hosts文件中加入其余机器的信息,我们现在只在wm001中加入,稍后会写相应的脚本来传递到各个机器上。在wm001上改为如下:
127.0.0.1localhost
::1localhost
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默认不安装,所以此时我们需要安装一下:
然后我们运行脚本:
显示成功,我们测试一下:
安装配置MysqL
然后安装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' |
防火墙等设置:
首先官方文档中描述:
[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/ |
接下来我们要在@H_853_502@所有的机器上配置主机的名字:
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 |
没有问题,数据库已经成功创建。
启动Cloudera Manager
现在我们开始启动cloudera manager,首先在wm001上启动server:
/opt/cm-5.10.0/etc/init.d/cloudera-scm-serverstart
我们在浏览器查看:
http://192.168.75.128:7180
出现如下图所示证明安装成功,默认账号密码都是admin:
登陆,我们进入到如下界面,先@H_853_502@不要着急点击继续:
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 |
如上错误信息也就说明了用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,目前他不够完善导致的,不过目前可以通过修改脚本而不用改动机器,个人认为该问题不算集群风险。