简介
如果是新手,请严格按照步骤来做。当然还有其他安装方式,这里讲的方式比较适合测试使用。
内容
版本
CentOS
7 64位
JDK
1.7
Cloudera Manager
5.14.1
本次安装一共使用3台服务器,主要用户测试。
服务名
内网IP
用途
master
192.168.254.130
主,按照CM
slave01
192.168.254.210
从
slave02
192.168.254.211
从
可以搭建三台虚拟机,其中master内存在8G以上,slave内存在4G以上,每个虚机的硬盘空间100G+
下载软件包和数据包
我这里提供两种下载方式:
在下载的时候可以先把服务器基础环境准备好
百度云盘下载
推荐百度云超级VIP账号的用户,里面包含所有的安装包和数据包
链接: https://pan.baidu.com/s/1JC-vpYH7SWBwju9C8DkVPw 密码: 26v8
官方下载
这是一个漫长的过程,试过才知道爽。
下载CM和jdk软件包
访问:http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.14.1/RPMS/x86_64/
把上面的所有rpm包都下载回来本地,下载速度慢可以使用axel
多线程下载,如果没有装axel
,也可以使用 wget -b
后台下载
我的相关下载都放在 /data/soft
下,我的Cloudera Manager 5.14.1的下载放在 /data/soft/cm5.14.1
,所以新建目录并进入目录:
mkdir -p /data/soft/cm5.14.1/cm-and-jdk
cd /data/soft/cm5.14.1/cm-and-jdk
wget -b http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.14.1/RPMS/x86_64/cloudera-manager-agent-5.14.1-1.cm5141.p0.1.el7.x86_64.rpm
wget -b http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.14.1/RPMS/x86_64/cloudera-manager-daemons-5.14.1-1.cm5141.p0.1.el7.x86_64.rpm
wget -b http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.14.1/RPMS/x86_64/cloudera-manager-server-5.14.1-1.cm5141.p0.1.el7.x86_64.rpm
wget -b http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.14.1/RPMS/x86_64/cloudera-manager-server-db-2-5.14.1-1.cm5141.p0.1.el7.x86_64.rpm
wget -b http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.14.1/RPMS/x86_64/enterprise-debuginfo-5.14.1-1.cm5141.p0.1.el7.x86_64.rpm
wget -b http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.14.1/RPMS/x86_64/jdk-6u31-linux-amd64.rpm
wget -b http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.14.1/RPMS/x86_64/oracle-j2sdk1.7-1.7.0+update67-1.x86_64.rpm
下载cloudera-manager安装文件
访问:http://archive.cloudera.com/cm5/installer/5.14.1/
下载cloudera-manager-installer.bin
cd /data/soft/cm5.14.1/
wget http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/cloudera-manager.repo
下载rpm仓库文件
wget http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/cloudera-manager.repo
下载parcel
这个比较大,放下服务器慢慢下吧
mkdir -p /data/soft/cm5.14.1/parcel
cd /data/soft/cm5.14.1/parcel
wget -b http://archive.cloudera.com/cdh5/parcels/5.14.0.24/CDH-5.14.0-1.cdh5.14.0.p0.24-el7.parcel
wget -b http://archive.cloudera.com/cdh5/parcels/5.14.0.24/CDH-5.14.0-1.cdh5.14.0.p0.24-el7.parcel.sha1
服务器环境准备
修改hostname及hosts
针对所有节点操作
为了便于安装过程中对各个服务器的访问更易区分、更便捷,我们需要分别对各个服务器修改hostname及hosts
hostnamectl --static set-hostname master
hostnamectl --static set-hostname slave01
hostnamectl --static set-hostname slave02
修改hosts:
vim /etc/hosts
根据自己的3台服务器IP地址,在最后面增加:
192.168.254.130 master
192.168.254.210 slave01
192.168.254.211 slave02
重启机器
reboot
关闭防火墙和selinux
针对所有节点操作
关闭防火墙
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
关闭selinux:
vim /etc/selinux/config
找到SELINUX改为:
SELINUX=disabled
ssh无密码登录
针对所有节点操作
先在master上执行:
ssh-keygen -t rsa #一路回车到完成
ssh-copy-id -i ~/.ssh/id_rsa.pub root@master #将公钥拷贝到本机的authorized_keys上
再在其他节点分别执行以下命令:
ssh-keygen -t rsa #一路回车到完成
ssh-copy-id -i ~/.ssh/id_rsa.pub root@master
#注意此处不变,将公钥拷贝到master的authorized_keys上
在master上,将authorized_keys分发到其他节点服务器:
scp ~/.ssh/authorized_keys root@slave01:~/.ssh/
scp ~/.ssh/authorized_keys root@slave02:~/.ssh/
安装ntp时间同步软件
所有节点时间一致非常重要,要不然启动Cloudera Manager服务后,后台会报错。
所有节点执行:
yum install ntp -y
安装完成后,阿里云的服务器会自动使用阿里云的ntp服务器进行同步,故可不再进行下面的配置,直接进入2.6节,若其他没有统一ntp服务器进行同步的,则还需要以下设置:
将master设置为主服务器(在master节点操作):
vim /etc/ntp.conf
内容如下:
driftfile /var/lib/ntp/ntp.drift #草稿文件
# 允许内网其他机器同步时间
restrict 192.168.137.0 mask 255.255.255.0 nomodify notrap
# Use public servers from the pool.ntp.org project.
# 中国这边最活跃的时间服务器 : [http://www.pool.ntp.org/zone/cn](http://www.pool.ntp.org/zone/cn)
server 210.72.145.44 perfer # 中国国家受时中心
server 202.112.10.36 # 1.cn.pool.ntp.org
server 59.124.196.83 # 0.asia.pool.ntp.org
# allow update time by the upper server
# 允许上层时间服务器主动修改本机时间
restrict 210.72.145.44 nomodify notrap noquery
restrict 202.112.10.36 nomodify notrap noquery
restrict 59.124.196.83 nomodify notrap noquery
# 外部时间服务器不可用时,以本地时间作为时间服务
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
重启ntpd服务:
systemctl ntpd restart
查看同步状态:
netstat -tlunp | grep ntp
所有子节点ntp加入开机启动:
systemctl enable ntpd
设置slave到master 的同步(在slave节点操作):
vim /etc/ntp.conf
内容如下:
driftfile /var/lib/ntp/ntp.drift # 草稿文件
statsdir /var/log/ntpstats/
statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable
# 让NTP Server为内网的ntp服务器
server 192.168.137.110
fudge 192.168.137.110 stratum 5
# 不允许来自公网上ipv4和ipv6客户端的访问
restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
# Local users may interrogate the ntp server more closely.
restrict 127.0.0.1
restrict ::1
重启ntpd服务:
systemctl ntpd restart
手动同步:
ntpdate -u master
所有节点重启服务器:
reboot
分配安装文件
主节点和子节点分别需要的文件整理如下:
主节点master,所需文件:
cloudera-manager-agent-5.14.1-1.cm5141.p0.2.el7.x86_64.rpm
cloudera-manager-daemons-5.14.1-1.cm5141.p0.2.el7.x86_64.rpm
cloudera-manager-server-5.14.1-1.cm5141.p0.2.el7.x86_64.rpm
cloudera-manager-server-db-2-5.14.1-1.cm5141.p0.2.el7.x86_64.rpm
enterprise-debuginfo-5.14.1-1.cm5141.p0.2.el7.x86_64.rpm
cloudera-manager-installer.bin
cloudera-manager.repo
CDH-5.14.1-1.cdh5.14.1.p0.2-el7.parcel
CDH-5.14.1-1.cdh5.14.1.p0.2-el7.parcel.sha1
从节点slave01、slave02,所需文件:
cloudera-manager-agent-5.14.1-1.cm5141.p0.2.el7.x86_64.rpm
cloudera-manager-daemons-5.14.1-1.cm5141.p0.2.el7.x86_64.rpm
cloudera-manager.repo
使用scp
命令分配所需要的安装文件
安装Cloudera Manager
至此,所有设置完成。开始Cloudera Manager安装吧!
安装 cm-and-jdk
针对所有节点操作
修改仓库文件cloudera-manager.repo,把版本号加上
[cloudera-manager]
name = Cloudera Manager
baseurl = https://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.14.1/ #主要改这里的版本号
gpgkey = https://archive.cloudera.com/redhat/cdh/RPM-GPG-KEY-cloudera
gpgcheck = 1
验证repo文件是否起效
yum list | grep cloudera #如果列出的不是待安装的版本,执行下面命令重试
yum clean allyum list | grep cloudera
切换到cm-and-jdk目录下,执行
yum localinstall --nogpgcheck *.rpm
设置java路径:
vi /etc/profile
在该文件末尾添加以下行
JAVA_HOME=/usr/java/jdk1.7.0_67-cloudera
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH
检查安装:
java -version
下面针对master节点操作
进入cloudera-manager-installer.bin文件目录,给bin文件赋予可执行权限:
chmod +x ./cloudera-manager-installer.bin
运行:
./cloudera-manager-installer.bin --skip_repo_package=1
如果提示需要删除配置文件,则删除该文件
rm -rf /etc/cloudera-scm-server/db.properties
相同配置下顺利安装时间在1分钟内即可完成。 然后我们在web浏览器访问 http://192.168.254.130:7180/,看是否能打开页面即可,先不要进行登录操作。
注意:chd server服务器启动需要一些时间,等1分钟左右。
如果能访问,那证明 cloudera manager安装正常。
安装CDH
制作本地parcel
前面完成cloudera manager安装之后master会在/opt目录下生成cloudera文件夹,将之前下载好的CDH-*文件移动到parcel-repo文件夹中
cp CDH-5.14.0-1.cdh5.14.0.p0.24-el7.parcel /opt/cloudera/parcel-repo/
cp CDH-5.14.0-1.cdh5.14.0.p0.24-el7.parcel.sha1 /opt/cloudera/parcel-repo/CDH-5.14.0-1.cdh5.14.0.p0.24-el7.parcel.sha #注意这里有重命名
将cloudera manager的用户授权给/opt和日志目录:
chown -R cloudera-scm.cloudera-scm /var/lib/cloudera-scm-server
chown cloudera-scm.cloudera-scm /opt -R
chown cloudera-scm.cloudera-scm /var/log/cloudera-scm-agent -R
重启cloudera-scm-server(重要)
/etc/init.d/cloudera-scm-server restart
重启速度较慢,约1分钟后访问 http://192.168.254.130:7180/ 登陆,账号密码 admin 选择免费版本,一路next开始安装。
基本默认就行
在为CDH集群安装指定主机的时候写
master
slave01
slave02
这里需要填写我们集群定义的ip或者服务器名称(包括安装CM的主机本身),点击搜索,即可加载出所有主机。全选所有主机,并继续。
这里会出现我们之前cp过去的CDH版本,选择并继续。
如果之前的操作没有问题,这里将会很快完成
在选择安装的服务组合的时候,选择自己需要的,如果不知道,全部安装就行
这里是最激动人心的时候
随便找台机器测试一下spark:
spark-shell
激动的敲了一个:
CDH启动与关闭
CM Portal 地址:
关闭步骤:
在CM portal上关闭 cluster
在所有节点关闭CM agent:
service cloudera-scm-agent stop
在master节点关闭CM server:
service cloudera-scm-server stop
启动步骤:
在所有节点启动CM agent:
service cloudera-scm-agent start
在master节点启动CM server:
service cloudera-scm-server start
在CM portal上启动 cluster
查看启动日志:
/var/log/cloudera-scm-server/cloudera-scm-server.log
如果是3台机器一般会出现错误:
在CM console中将副本设为2:
dfs.replication=2
在所有的节点命令行执行:
hadoop fs -setrep 2 /
安装要点:
仔细,认真,严格按照步骤
常见问题:网络,防火墙等主机设置
碰到问题:查看日志&官网&百度
cloudera JDBC Driver com.mysql.jdbc.Driver not found.
将oracle的mysql的jar包放置到/usr/share/java/mysql-connector-java.jar路径下即可,注意修改jar包名称;
切记除了要下载parcel文件之外,还有manifest.json文件,否则在选择安装版本界面,cloudera无法识别parcel的版本。
还有需要对于sha1文件进行改名:*.parcel.sha1 -> *.parcel.sha
为什么CDH的安装页面显示无法发现CDH ?
之前一直怀疑是流程步骤有问题,其实流程本身没有问题,问题发生在流程的实施节点上:cdh文件损坏了;本来1.5G的大小,当时只有50M,我不记得原因了,但是太坑了。
我想到了权限问题;但是忽略了文件损坏问题:sha就是干这个用的,当时应该考虑到使用sha来校验一下文件。
如果cloudera发现能够正常发现parcel,在server启动后将会打出一条日志:
SearchRepositoryManager-0:com.cloudera.server.web.cmf.search.components.SearchRepositoryManager: Finished constructing repo:2017-09-27T16:19:00.763Z
安装CDH在拷贝parcel的时候发生异常:Exhausted available authentication methods
;
后来发现原来是因为ssh的root用户被我设置为禁止远程登录;而CDH页面向导中我还配置的用root用户登录
之后发现拷贝异常,总是联网去下载agent包,但是agent都已经在各个节点了;后来发现agent的启动是失败的(在开始的步骤中能够被自动发现的都不需要装agent,需要通过手动输入IP来进行发现的需要装agent,怎么装?联网),报错显示:ProtocolError: <ProtocolError for 127.0.0.1/RPC2: 401 Unauthorized>
;在网上搜索了一下,如下处理:
sudo ps -ef | grep supervisord
kill -9 PID
sudo ./cloudera-scm-agent restart
未完,重启后发现:
Error, CM server guid updated, expected d6c22714-0175-4a40-ace6-db92b7417a40, received 613b2c09-88f6-41fe-9424-41601be40310
原来还需要将cm/lib/cloudera-scm-agent/
下面的cm_guid
进行清除;这一点让我想到了cloudera数据迁移的时候需要做的事情,需要将同目录下的uuid进行删除;
在安装的过程中还有一个问题一直困扰我,就是僵尸agent,在agent经历如上的问题后,在自动发现的列表中有一些僵尸agent,会看到同hostname的多台机器,有一个是正常通信,有的则是Unkonwn,无法删掉,因为不勾选,那么正常通信的也不会勾选上。反正后来我改了一下hosts文件,莫名其妙的在勾选列表中消失了,但是遗憾的是正常通信的也没了。安装成功后,在Hosts页面才看到这些僵尸agent,此时再delete可以正常删除。
Skipping start command because all roles are started or decommissioned or on decommissioned host.
cloudera的server停止后要稍等一会在启动,因为释放内存需要一段时间;如果停止后立即就启动将会发生一种情况,内存没有释放完,JVM的内存大量释放和JVM的大量使用将会导致JVM频繁的进行回收和释放,导致JVM Pause以及World Stop
JAVA_HOME is not set and Java could not be found
具体原因不太清楚,最小化安装了一个centos7,发现没有jdk,不解。
在clouderea中添加了一个host,然后添加了一个spark nodemanager的角色,然后就悲剧了,总是抱JAVA_HOME is not set and Java could not be found的异常;即使手动拷贝了一个jdk1.8到上面,profile也配置了,仍然不好用。不解。
再看日志的时候,发现安装程序(cloudera的安装程序)将会到几个固定的地方查找,选一个,然后将jdk拷贝到该目录下,问题解决
欢迎关注公众号《全栈架构》
全栈有风险,菜鸟需谨慎
参考: