Centos7离线安装Cloudera Manager 5.14.1

Stella981
• 阅读 634

简介

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

内容

版本

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

Centos7离线安装Cloudera Manager 5.14.1

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

Centos7离线安装Cloudera Manager 5.14.1

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

Centos7离线安装Cloudera Manager 5.14.1

Centos7离线安装Cloudera Manager 5.14.1

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

Centos7离线安装Cloudera Manager 5.14.1

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

Centos7离线安装Cloudera Manager 5.14.1

这里是最激动人心的时候

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

spark-shell

Centos7离线安装Cloudera Manager 5.14.1

激动的敲了一个:

Centos7离线安装Cloudera Manager 5.14.1

CDH启动与关闭

CM Portal 地址:

http://master:7180/cmf/home

关闭步骤:

在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拷贝到该目录下,问题解决

欢迎关注公众号《全栈架构》

Centos7离线安装Cloudera Manager 5.14.1

全栈有风险,菜鸟需谨慎

参考:

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
9个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这