前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Centos7离线安装Cloudera Manager 5.14.1

Centos7离线安装Cloudera Manager 5.14.1

作者头像
全科
发布2018-08-15 11:02:06
3.6K0
发布2018-08-15 11:02:06
举报
文章被收录于专栏:全栈架构全栈架构

简介

如果是新手,请严格按照步骤来做。当然还有其他安装方式,这里讲的方式比较适合测试使用。

内容

版本

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账号的用户,里面包含所有的安装包和数据包

代码语言:javascript
复制
链接: https://pan.baidu.com/s/1JC-vpYH7SWBwju9C8DkVPw 密码: 26v8

官方下载

这是一个漫长的过程,试过才知道爽。

下载CM和jdk软件包

访问:http://archive.cloudera.com/cm5/redhat/7/x8664/cm/5.14.1/RPMS/x8664/

把上面的所有rpm包都下载回来本地,下载速度慢可以使用 axel多线程下载,如果没有装 axel,也可以使用 wget-b后台下载

我的相关下载都放在 /data/soft下,我的Cloudera Manager 5.14.1的下载放在 /data/soft/cm5.14.1,所以新建目录并进入目录:

代码语言:javascript
复制
mkdir -p /data/soft/cm5.14.1/cm-and-jdk

cd /data/soft/cm5.14.1/cm-and-jdk
代码语言:javascript
复制
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

代码语言:javascript
复制
cd /data/soft/cm5.14.1/

wget http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/cloudera-manager.repo

下载rpm仓库文件

代码语言:javascript
复制
wget http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/cloudera-manager.repo

下载parcel

这个比较大,放下服务器慢慢下吧

代码语言:javascript
复制
mkdir -p /data/soft/cm5.14.1/parcel

cd /data/soft/cm5.14.1/parcel
代码语言:javascript
复制
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

代码语言:javascript
复制
hostnamectl --static set-hostname master
代码语言:javascript
复制
hostnamectl --static set-hostname slave01
代码语言:javascript
复制
hostnamectl --static set-hostname slave02

修改hosts:

代码语言:javascript
复制
vim /etc/hosts

根据自己的3台服务器IP地址,在最后面增加:

代码语言:javascript
复制
192.168.254.130 master
192.168.254.210 slave01
192.168.254.211 slave02

重启机器

代码语言:javascript
复制
reboot

关闭防火墙和selinux

针对所有节点操作

关闭防火墙

代码语言:javascript
复制
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)

关闭selinux:

代码语言:javascript
复制
vim /etc/selinux/config

找到SELINUX改为:

代码语言:javascript
复制
SELINUX=disabled

ssh无密码登录

针对所有节点操作

先在master上执行:

代码语言:javascript
复制
ssh-keygen -t rsa   #一路回车到完成

ssh-copy-id -i ~/.ssh/id_rsa.pub root@master   #将公钥拷贝到本机的authorized_keys上

再在其他节点分别执行以下命令:

代码语言:javascript
复制
ssh-keygen -t rsa   #一路回车到完成

ssh-copy-id -i ~/.ssh/id_rsa.pub root@master  

#注意此处不变,将公钥拷贝到master的authorized_keys上

在master上,将authorized_keys分发到其他节点服务器:

代码语言:javascript
复制
scp ~/.ssh/authorized_keys root@slave01:~/.ssh/

scp ~/.ssh/authorized_keys root@slave02:~/.ssh/

安装ntp时间同步软件

所有节点时间一致非常重要,要不然启动Cloudera Manager服务后,后台会报错。

所有节点执行:

代码语言:javascript
复制
yum install ntp -y

安装完成后,阿里云的服务器会自动使用阿里云的ntp服务器进行同步,故可不再进行下面的配置,直接进入2.6节,若其他没有统一ntp服务器进行同步的,则还需要以下设置:

将master设置为主服务器(在master节点操作):

代码语言:javascript
复制
vim /etc/ntp.conf

内容如下:

代码语言:javascript
复制
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服务:

代码语言:javascript
复制
systemctl ntpd restart

查看同步状态:

代码语言:javascript
复制
netstat -tlunp | grep ntp

所有子节点ntp加入开机启动:

代码语言:javascript
复制
systemctl enable ntpd

设置slave到master 的同步(在slave节点操作):

代码语言:javascript
复制
vim /etc/ntp.conf

内容如下:

代码语言:javascript
复制
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服务:

代码语言:javascript
复制
systemctl ntpd restart

手动同步:

代码语言:javascript
复制
ntpdate -u master

所有节点重启服务器:

代码语言:javascript
复制
reboot

分配安装文件

主节点和子节点分别需要的文件整理如下:

主节点master,所需文件:

代码语言:javascript
复制
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,所需文件:

代码语言:javascript
复制
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,把版本号加上

代码语言:javascript
复制
[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 #如果列出的不是待安装的版本,执行下面命令重试

代码语言:javascript
复制
yum clean allyum list | grep cloudera

切换到cm-and-jdk目录下,执行

代码语言:javascript
复制
yum localinstall --nogpgcheck *.rpm

设置java路径:

代码语言:javascript
复制
vi /etc/profile

在该文件末尾添加以下行

代码语言:javascript
复制
JAVA_HOME=/usr/java/jdk1.7.0_67-cloudera
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH

检查安装:

代码语言:javascript
复制
java -version

下面针对master节点操作

进入cloudera-manager-installer.bin文件目录,给bin文件赋予可执行权限:

代码语言:javascript
复制
chmod +x ./cloudera-manager-installer.bin

运行:

代码语言:javascript
复制
./cloudera-manager-installer.bin --skip_repo_package=1

如果提示需要删除配置文件,则删除该文件

代码语言:javascript
复制
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文件夹中

代码语言:javascript
复制
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和日志目录:

代码语言:javascript
复制
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(重要)

代码语言:javascript
复制
/etc/init.d/cloudera-scm-server restart

重启速度较慢,约1分钟后访问 http://192.168.254.130:7180/ 登陆,账号密码 admin 选择免费版本,一路next开始安装。

基本默认就行

在为CDH集群安装指定主机的时候写

代码语言:javascript
复制
master
slave01
slave02

这里需要填写我们集群定义的ip或者服务器名称(包括安装CM的主机本身),点击搜索,即可加载出所有主机。全选所有主机,并继续。

这里会出现我们之前cp过去的CDH版本,选择并继续。

如果之前的操作没有问题,这里将会很快完成

在选择安装的服务组合的时候,选择自己需要的,如果不知道,全部安装就行

这里是最激动人心的时候

随便找台机器测试一下spark:

代码语言:javascript
复制
spark-shell

激动的敲了一个:

CDH启动与关闭

CM Portal 地址:

http://master:7180/cmf/home

关闭步骤:

在CM portal上关闭 cluster

在所有节点关闭CM agent:

代码语言:javascript
复制
service cloudera-scm-agent stop

在master节点关闭CM server:

代码语言:javascript
复制
service cloudera-scm-server stop

启动步骤:

在所有节点启动CM agent:

代码语言:javascript
复制
service cloudera-scm-agent start

在master节点启动CM server:

代码语言:javascript
复制
service cloudera-scm-server start

在CM portal上启动 cluster

查看启动日志:

代码语言:javascript
复制
/var/log/cloudera-scm-server/cloudera-scm-server.log

如果是3台机器一般会出现错误:

在CM console中将副本设为2:

代码语言:javascript
复制
dfs.replication=2

在所有的节点命令行执行:

代码语言:javascript
复制
hadoop fs -setrep 2 /

安装要点:

  • 仔细,认真,严格按照步骤
  • 常见问题:网络,防火墙等主机设置
  • 碰到问题:查看日志&官网&百度
代码语言:javascript
复制
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启动后将会打出一条日志:

代码语言:javascript
复制
SearchRepositoryManager-0:com.cloudera.server.web.cmf.search.components.SearchRepositoryManager: Finished constructing repo:2017-09-27T16:19:00.763Z

安装CDH在拷贝parcel的时候发生异常: Exhaustedavailable authentication methods

后来发现原来是因为ssh的root用户被我设置为禁止远程登录;而CDH页面向导中我还配置的用root用户登录

之后发现拷贝异常,总是联网去下载agent包,但是agent都已经在各个节点了;后来发现agent的启动是失败的(在开始的步骤中能够被自动发现的都不需要装agent,需要通过手动输入IP来进行发现的需要装agent,怎么装?联网),报错显示: ProtocolError:<ProtocolErrorfor127.0.0.1/RPC2:401Unauthorized>;在网上搜索了一下,如下处理:

代码语言:javascript
复制
sudo ps -ef | grep supervisord

kill -9 PID

sudo ./cloudera-scm-agent restart

未完,重启后发现:

代码语言:javascript
复制
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

代码语言:javascript
复制
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拷贝到该目录下,问题解决

参考:

  • https://www.linuxidc.com/Linux/2018-03/151491.htm
  • https://blog.csdn.net/czk740960212/article/details/80484671
  • https://blog.csdn.net/chenhai201/article/details/78856007
  • https://www.cnblogs.com/xiashiwendao/p/7260302.html
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-08-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 全栈架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 下载软件包和数据包
    • 百度云盘下载
      • 官方下载
        • 下载CM和jdk软件包
        • 下载cloudera-manager安装文件
        • 下载rpm仓库文件
        • 下载parcel
    • 服务器环境准备
      • 修改hostname及hosts
        • 关闭防火墙和selinux
          • ssh无密码登录
            • 安装ntp时间同步软件
              • 将master设置为主服务器(在master节点操作):
              • 设置slave到master 的同步(在slave节点操作):
            • 分配安装文件
            • 安装Cloudera Manager
              • 安装 cm-and-jdk
                • 验证repo文件是否起效
                • 切换到cm-and-jdk目录下,执行
                • 设置java路径:
                • 检查安装:
              • 安装CDH
                • 制作本地parcel
            • CDH启动与关闭
            • 安装要点:
            相关产品与服务
            专用宿主机
            专用宿主机(CVM Dedicated Host,CDH)提供用户独享的物理服务器资源,满足您资源独享、资源物理隔离、安全、合规需求。专用宿主机搭载了腾讯云虚拟化系统,购买之后,您可在其上灵活创建、管理多个自定义规格的云服务器实例,自主规划物理资源的使用。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档