CDH5x离线安装+解决报错教程

                               CDH5x离线安装+解决报错教程

本章为 云服务器CDH5.12.1基于HTTP离线源完全搭建。

前言

CDH 集成了 Apache Hadoop 中各种相关组件,提供的 CM 服务提高了我们对于集群管理与安装的便捷性。温故而知新,在学习与使用的过程中也经常踩坑,所以做一些相关的总结,以下内容皆为个人理解的内容并非标准,如有异议之处,望指出。

Cloudera、CM、CDH介绍:Cloudera | The hybrid data company

官方安装指南: Cloudera Installation Guide | 5.12.x | Cloudera Documentation

CM的四大功能:

1.管理:对集群进行管理,如添加、删除节点等操作。
2.监控:监控集群的健康情况,对设置的各种指标和系统运行情况进行全面监控。
3.诊断:对集群出现的问题进行诊断,对出现的问题给出建议解决方案。
4.集成:对hadoop的多组件进行整合。

CDH其实主要就是CM+parcels(自己的服务),安装时默认安装了postgresql用来存储cloudera manager运行所需要的状态,但是一般生产环境使用外部数据库,在本文章中使用VM的原数据库为MySQL。

 环境: 按量租阿里云三台服务器 CDH最低要求配置 2核8G

目录

一:租服务器

1.1注册账号

1.2充值

1.3创建实例

1.4.基础配置

二:Xshell远程连接

三:环境准备

3.1创建安装文件夹

3.2 上传安装包

3.3 CDH离线安装方式区别:

3.4对应所需软件包解释:

3.5修改Host文件 内网IP

3.6修改主机名

3.7关闭防火墙

3.8 Selinux关闭。

3.9时区 重要!

3.10 JDK配置 三台都需要配置。

3.11 SSH免密钥

3.12 修改swappiness  三台都需修改

3.13修改hugepage  三台都需修改

3.14修改操作系统语言 

3.15离线安装Mysql 5.7 重要

1.解压及创建目录

2.编辑my.cnf

3.创建用户组及用户

4.copy 环境变量配置

5.配置环境变量

6.赋权限和用户组

7.配置服务及开机自启动

8.安装libaio及安装mysql的初始db

9.查看临时密码

10.启动

11.登录及修改用户密码

12.重启

13更改字符集:

3.16事先创建CDH所需 DB用户

3.17准备Mysql jdbc jar 包

3.18 root登陆mysql

3.19 设置mysql可以远程连接

3.20. http服务配置

3.20.1.检查

3.20.2.下载

3.20.3.启动http服务

3.20.4.修改配置

3.21 挂载文件

3.22 安装createrepo 创建cdh包的yum

3.23配置yum源

3.23.1 备份以前的yum源

3.23.2  建立yum源

3.23.3 建立yum缓存

3.23.4 本地yum源验证

3.23.5 其他节点配置。

3.24:开放端口

3.25:安装必要的软件(重要)

3.26 检查Python

3.27检查⽂件的hash⼀致性

四:安装CDH

4.1 创建与官网相同目录并解压

4.2安装cloudera-manager

4.3将cdh的parcel文件放到cm的parcle仓库内,并修改文件所属

4.4 修改cloudera-scm-server端和mysql的连接

4.5创建SCM用户。

4.6启动服务

5.页面操作

运维操作:

报错集锦

1.建立YUM缓存报错

2.集群安装失败

3.安装过程中遇到以下提示

4. 安装过程一直卡在"正在获取安装锁"

5.安装完毕后NameNode格式化失败,报一下错误

6. Hive启动失败:

7. 重装HDFS出错


一:租服务器

注: 为了方便这一次专门的演示,选择去阿里云租三台服务器 按量付费。按量付费的好处: 便宜!

1.1注册账号

官网: 阿里云-计算,为了无法计算的价值

首先注册账号,之后点击控制台

CDH5x离线安装+解决报错教程_第1张图片

1.2充值

点击费用-充值-Emmmmm充钱。。

学习时间很长因为按量付费, 所以充值了一百元。如果说只想搭建一次就行了。因为按量付费,最多最多10-15就够了。

CDH5x离线安装+解决报错教程_第2张图片

1.3创建实例

充值过后单机创建实例

CDH5x离线安装+解决报错教程_第3张图片

1.4.基础配置

选择按量付费,不要选择其他的付费方式,然后选择一个属于自己所在的地域, 或者距离近的地域 这样网络带宽不会有很大延迟, 因为不同的地域之间的内网不通,所以在地域选择的时候不要选择随机分配。

CDH5x离线安装+解决报错教程_第4张图片

学习的过程中选择满足CDH最低配的就可以, 2vCPU和 8G的内存。之后在规格参考价中选择费用最少的0.55元/时、之后在购买集群数量的地方,集群学习的话最少是三台,所以选择三台、选择镜像为Centos7  7.2 64位的配置、硬盘40G默认不动、 下一步

CDH5x离线安装+解决报错教程_第5张图片

带宽计算在使用流量或者固定带宽没有什么区别。默认就可以  下一步

CDH5x离线安装+解决报错教程_第6张图片

自定义密码 我设置为Bigdata666 之后实例名和主机名这个地方写一个没有后缀的实例名、主机名, 然后点击有序后缀。”有序后缀从001开始” 

注意: 这里可以看到我的一个错误,我忘记写主机名了,可以在这里设置,也可以到后面在设置静态主机名。都可以。下一步

CDH5x离线安装+解决报错教程_第7张图片

默认不动CDH5x离线安装+解决报错教程_第8张图片

确认订单 确认计费方式是否为按量付费、镜像是否为Centos7、区域是否在同一个区域、登录方式和实例名称记得都确认一下、最后勾上服务、单机创建实例。

CDH5x离线安装+解决报错教程_第9张图片

CDH5x离线安装+解决报错教程_第10张图片

二:Xshell远程连接

CDH5x离线安装+解决报错教程_第11张图片

CDH5x离线安装+解决报错教程_第12张图片

三:环境准备

: 因为我是租的服务器,所以我直接是root,如果是公司环境,是普通用户,切记一定要有sudo免密

3.1创建安装文件夹

首先在根目录创建cdh文件夹并赋权来临时存放我们的安装包

[root@hadoop01 /]# mkdir /cdh

[root@hadoop01 /]# chmod 777 /cdh/

3.2 上传安装包

链接:https://pan.baidu.com/s/1oJxEqKtqzgBTo8IZhtJFsA

提取码:1q3q

之后打开上方XFTP将所需安装包拖入/cdh文件夹,只需要在hadoop01操作即可

CDH5x离线安装+解决报错教程_第13张图片

注意:这里可以看到我显示上传的CM安装包为: cloudera-manager-centos7-cm5.12.1_x86_64.tar.gz

这是tar包,本来想是tar部署,但是后来改用rpm包部署,所以在下载到本地的时候可以忽略这个tar包,下载cm5.12.1-centos7.tar.gz这个和其他包即可!!

上传完成:

CDH5x离线安装+解决报错教程_第14张图片

3.3 CDH离线安装方式区别:

CDH有三种安装方式: rpm包、bin包、tar包。

bin包安装方式很少人使用,会在linux界面弹出来窗口一直下一步,如果网络不好的话会有各种各样问题,[一键安装,会使用默认的postgresql数据库,在联网的情况下会自动下载相关软件进行安装,生产环境不推荐]

tar包也就是我最开始上穿上去的包, tar包安装的缺点是例如我们所需要的一系列依赖包他可能没有给我们下载上。后面会出现各种各样问题 [主要是在做版本升级的时候比较麻烦,另外tar安装的位置每个人都可能不同,对维护有一定的影响]

rpm包他会装当前这个包自己所依赖的rpm包,很大程度上杜绝了系统环境缺包的可能性。

建议: 如果访问不了外网,tar包部署,可以访问外网,rpm部署--[其实不管什么环境,都推荐rpm部署]

3.4对应所需软件包解释:

包裹文件 下载的时候注意 el7为centos7 el6为centos6

CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel

CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha1manifest.json

manifest.json

官方下载地址:https://archive.cloudera.com/cdh5/parcels/5.12.1/

tar官方地址

cloudera-manager-centos7-cm5.12.1_x86_64.tar.gz

http://archive.cloudera.com/cm5/cm/5/

rpm官方下载地址,两个链接都是(本次搭建使用)

cm5.12.1-centos7.tar.gz

http://archive.cloudera.com/cm5/redhat/5/x86_64/cm/5.12.1/RPMS/x86_64/

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

JDK,安装包,使用手动安装。 一定是用Oracle JDK 不使用自带的Open JDK[CDH5.16和6.1以

后的版本支持OpenJDK]

jdk-8u91-linux-x64.tar.gz

原因:linux自带的Open JDK和JDK有什么区别_linux自带jdk为什么不建议使用_小志的博客的博客-CSDN博客

Mysql安装部署所需安装包。

mysql-5.7.11-linux-glibc2.5-x86_64.tar.gz

Mysql连接的connector驱动 可以直接通过Maven官网去下载 不必去oracle官网去下载

mysql-connector-java-5.1.47.jar

其余parcels地址: 本地搭建不使用

parcel包中存储了hadoop体系的服务,例如HDFS、HIVE、HBASE等等, 但是像KAFKA这些,被单拎了出来,所以如果要配置这些服务,就要单独下载他们的parcel包。

http://archive.cloudera.com/kafka/parcels/
http://archive.cloudera.com/impala/parcels/latest/
http://archive.cloudera.com/search/parcels/latest/
http://archive.cloudera.com/accumulo-c5/parcels/latest/
http://archive.cloudera.com/spark/parcels/latest/
http://archive.cloudera.com/accumulo/parcels/1.4/
http://archive.cloudera.com/sqoop-connectors/parcels/latest
http://archive.cloudera.com/navigator-keytrustee5/parcels/latest/

3.5修改Host文件 内网IP

内网IP:

172.16.255.154 hadoop01

172.16.255.155 hadoop02

172.16.255.153 hadoop03

 修改服务器Host文件及修改

CDH5x离线安装+解决报错教程_第15张图片

CDH5x离线安装+解决报错教程_第16张图片

[root@hadoop01 /]#  vim /etc/hosts

CDH5x离线安装+解决报错教程_第17张图片

CDH5x离线安装+解决报错教程_第18张图片

在host配置完成之后可以在随意主机 去ping任意一台服务器,看互相能不能PING通

CDH5x离线安装+解决报错教程_第19张图片

3.6修改主机名

查看主机名:

[root@hadoop01 cdh]#  hostnamectl

[root@hadoop01 cdh]#  hostname

[root@hadoop01 cdh]#  cat /etc/hosts

CDH5x离线安装+解决报错教程_第20张图片

这个时候会发现 已经修改了主机名 但是在命令行查看的时候还是原来的主机名。原因在租阿里服务器的时候已经解释,我在自定义密码那一页忘记写主机名。那么这个时候要修改。

Cenots7 要使用这个命令来修改:

hostnamectl set-hostname hadoop01

hostnamectl set-hostname hadoop02

hostnamectl set-hostname hadoop03

或者第二种办法:

去阿里云控制台,在实例列表中进入实例, 在实例详情中点击更多, 点击修改实例属性, 修改为自己主机名,三台都要操作, 我的分别是hadoop01 02 03。然后必须在阿里控制台点击重启-强制重启-接受验证码-重启之后即可

CDH5x离线安装+解决报错教程_第21张图片

重启之后可以看到 主机名设置成功

CDH5x离线安装+解决报错教程_第22张图片

3.7关闭防火墙

注意: 需要在所有节点上执行, 因为涉及到的端口太多了, 临时关闭防火墙是为了安装起来更方便,安装完毕之后可以根据需要设置防火墙策略,保证集群安全。

阿里云服务器的防火墙是默认关闭的。但是他有Web防火墙,也就是说我们浏览器访问CDH某一个组件的web界面的时候 必须先去云主机控制台将端口放开, 后续讲解操作。

Centos7 防火墙关闭:

systemctl stop firewalld

禁用

systemctl disable firewalld

可以看防火墙规则:

iptables -L

清空:

iptables -F

注意: 三台都要执行

CDH5x离线安装+解决报错教程_第23张图片

3.8 Selinux关闭。

安全策略,将他disabled 禁用 三台都要做,然后重启机器 重启生效

[root@hadoop01 cdh]# vim /etc/selinux/config

SELINUX=disabled  

CDH5x离线安装+解决报错教程_第24张图片

重启生效!

3.9时区 重要!

验证时间是否同步:  date

阿里服务器默认时间同步  下面操作可以不用做 但是如果是非云主机 要进行下面操作, 云主机虽然不用但是也可以进行操作熟悉一下

CDH5x离线安装+解决报错教程_第25张图片

时区设置:  timedatectl --help  查看帮助

CDH5x离线安装+解决报错教程_第26张图片

status                            Show current time settings  查看状态

set-time TIME               Set system time          设置时间

set-timezone ZONE      Set system time zone      设置timezone时区

list-timezones                Show known time zones    当前机器上所知道的时间时区有哪些

set-local-rtc BOOL        Control whether RTC is in local time 控制RTC本地的时间(默认是将你的硬件和本地时间调成一致)

set-ntp BOOL                Control whether NTP is enabled   NTP时间服务是否要启动

输入:

[root@hadoop01 /]# Timedatectl

Local time: Sat 2019-07-27 15:30:26 CST

Universal time: Sat 2019-07-27 07:30:26 UTC

RTC time: Sat 2019-07-27 15:30:26

Time zone: Asia/Shanghai (CST, +0800)

NTP enabled: yes

NTP synchronized: yes

RTC in local TZ: yes

DST active: n/a

CDH5x离线安装+解决报错教程_第27张图片

第一个看: Local time: Sat 2019-07-27 15:30:26 CST

本地时间 CST 亚洲上海  一般看CST是否是亚洲上海

第二个看: Time zone: Asia/Shanghai (CST, +0800)

是否是亚洲上海,一般就看这两个指标,如果不是亚洲上海的,想设置成亚洲上海的话

timedatectl list-timezones  回车

这里面是所有的列表:

CDH5x离线安装+解决报错教程_第28张图片

设置成亚洲上海的话:

[root@hadoop01 cdh]#   timedatectl set-timezone Asia/Shanghai
 

时钟同步的话可以,手动安装NTP, 三台一起输入:

[root@hadoop01 cdh]#  yum install -y ntp  

CDH5x离线安装+解决报错教程_第29张图片

安装完之后选择hadoop01时间同步作为主节点  hadoop02--03到时间同步的从节点。 也就是说01是什么时间 02 03 就是什么时间

在hadoop01节点输入: vim /etc/ntp.conf 

添加: 

#time

server 0.asia.pool.ntp.org

server 1.asia.pool.ntp.org

server 2.asia.pool.ntp.org

server 3.asia.pool.ntp.org

这个是通过外网来时钟同步,如果不能访问外网,可以使用本地时间,在添加一句话

server 127.127.1.0 iburst local clock

然后再设置允许那个网段的机器来时钟同步。可以再阿里控制台看到我们是172.16.255

CDH5x离线安装+解决报错教程_第30张图片

再下面添加 最后一位是0

restrict 172.16.255.0 mask 255.255.255.0 nomodify notrap

CDH5x离线安装+解决报错教程_第31张图片

保存之后启动服务

[root@hadoop01 cdh]#   systemctl start ntpd

[root@hadoop01 cdh]#   systemctl status ntpd

  active (running)状态为启动成功

可以通过ntpq -p 去验证

[root@hadoop01 cdh]#   ntpq -p

CDH5x离线安装+解决报错教程_第32张图片

Offset 为0.000 可以知道他与本地的相差0.000秒 说明和本地物理时间同步

客户端做同步 先使用 systemctl status ntpd 命令

可以看到 第二台的NTP服务是开启的,  如果开启他是通过网络来时间同步的,所以要把它关闭

CDH5x离线安装+解决报错教程_第33张图片

[root@hadoop02 /]#  systemctl stop ntpd

[root@hadoop02 /]#  systemctl disable  ntpd

CDH5x离线安装+解决报错教程_第34张图片

第二台与第一台做关联

[root@hadoop02 /]# /usr/sbin/ntpdate hadoop01

27 Jul 15:58:50 ntpdate[2228]: adjust time server 172.16.255.154 offset -0.045928 sec

CDH5x离线安装+解决报错教程_第35张图片

第三台同样与第一台做关联的时候也要先关闭

[root@hadoop03 /]#  systemctl status ntpd  查看状态

[root@hadoop03 /]#  systemctl stop ntpd    停止

[root@hadoop03/]#  systemctl disable ntpd  禁用

[root@hadoop03 /]#  systemctl status ntpd   查看状态

[root@hadoop03 /]#  /usr/sbin/ntpdate hadoop01   与第一台做关联

CDH5x离线安装+解决报错教程_第36张图片

将时间同步语句加入crontab中, 让hadoop02在每天凌晨与hadoop1同步一次

crontab -e 去编辑

[root@hadoop02 /]#  crontab -e

00 01 * * * /usr/sbin/ntpdate hadoop01

然后保存

crontab -l 查看

[root@hadoop02 /]# crontab -l

00 00 * * * /usr/sbin/ntpdate hadoop01

注: 在hadoop03中也是同样操作

CDH5x离线安装+解决报错教程_第37张图片

此处不使用功能ntpdate定时同步也可以,使用ntpd服务自动同步。

3.10 JDK配置 三台都需要配置。

注意:

1. 尽量用root用户或者sudo 来做 普通用户会有问题

2. JDK默认路径是 /usr/java

3. 解压之后的用户及用户组的修正 一定要是root

4. 卸载自带JDK

[root@hadoop01 /]#  java -version

然后 rpm -qa | grep jdk 查看有没有jdk安装包

[root@hadoop01 /]#   rpm -qa | grep jdk

我这里已经没有了,如果有的话,使用这个命令卸载

yum -y remove java*openjdk* 

CDH5x离线安装+解决报错教程_第38张图片

分发  将再hadoop01的jdk安装包分发到另外两台节点

[root@hadoop01 /]#  scp /cdh/jdk-8u91-linux-x64.tar.gz hadoop02:/cdh/

[root@hadoop01 /]#  scp /cdh/jdk-8u91-linux-x64.tar.gz hadoop03:/cdh/

CDH5x离线安装+解决报错教程_第39张图片

查看:

CDH5x离线安装+解决报错教程_第40张图片

然后三台统一进入到cdh文件夹下 创建/usr/java文件夹, 这是jdk默认目录,尽量不要修改  然后解压到指定目录

[root@hadoop01cdh]#  mkdir /usr/java 

[root@hadoop01cdh ]#   tar -zxvf jdk-8u91-linux-x64.tar.gz -C /usr/java/

CDH5x离线安装+解决报错教程_第41张图片

查看: 

CDH5x离线安装+解决报错教程_第42张图片

赋权: chown -R root:root /usr/java/jdk1.8.0_91/

CDH5x离线安装+解决报错教程_第43张图片

环境变量配置 三台都要做

vim /etc/profile

再最下面添加

#jdk

export JAVA_HOME=/usr/java/jdk1.8.0_91

export PATH=$JAVA_HOME/bin:$PATH

保存退出

注意:之后刷新环境变量

source /etc/profile

CDH5x离线安装+解决报错教程_第44张图片

Java -version 检查一下。

如果上百台机器的或可以让运维做镜像模板然后分发。

3.11 SSH免密钥

配置 hadoop01对 hadoop01、hadoop02、hadoop03三台服务器免密登陆

生成 公钥和私钥:

[root@hadoop01 ~]# ssh-keygen -t rsa

然后敲三个回车 就会生成两个文件 id_rsa(私钥)  id_rsa.pub(公钥) 将公钥Copy到免密登陆的目标机器上。

CDH5x离线安装+解决报错教程_第45张图片

发送自己的公钥到 自己和其他节点

ssh-copy-id hadoop01

ssh-copy-id hadoop02

ssh-copy-id hadoop03CDH5x离线安装+解决报错教程_第46张图片

在 hadoop02 和hadoop03节点上同样 使用命令:  ssh-keygen -t rsa

[root@hadoop02 ~]# ssh-keygen -t rsa

ssh-copy-id hadoop01

ssh-copy-id hadoop02

ssh-copy-id hadoop03

[root@hadoop03 ~]# ssh-keygen -t rsa

ssh-copy-id hadoop01

ssh-copy-id hadoop02

ssh-copy-id hadoop03

查看

cat authorized_keys

CDH5x离线安装+解决报错教程_第47张图片

之后可以互相ssh 查看是否成功

CDH5x离线安装+解决报错教程_第48张图片

3.12 修改swappiness  三台都需修改

在不重启服务器的情况下可以执行sysctl -p来立刻应用参数。

[root@hadoop01 .ssh]# cat /etc/sysctl.conf

[root@hadoop01 .ssh]# echo vm.swappiness = 1 >> /etc/sysctl.conf

[root@hadoop01 .ssh]# cat /etc/sysctl.conf

CDH5x离线安装+解决报错教程_第49张图片

3.13修改hugepage  三台都需修改

[root@hadoop01 /]#  chmod +x /etc/rc.d/rc.local

[root@hadoop01 /]#  vim /etc/rc.d/rc.local

将下述内容添加至文件结尾部分

echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

CDH5x离线安装+解决报错教程_第50张图片

3.14修改操作系统语言 

# 查看操作系统系统语言

echo $LANG

如果不是:en_US.UTF-8的话需要修改。

# 修改操作系统系统语言

vim /etc/sysconfig/i18n

LANG="en_US.UTF-8"

3.15离线安装Mysql 5.7 重要

1.解压及创建目录

#解压到mysql默认目录 /usr/local/

[root@hadoop01/]# cd cdh/

[root@hadoop01 cdh]# tar -zxvf mysql-5.7.11-linux-glibc2.5-x86_64.tar.gz -C /usr/local/

CDH5x离线安装+解决报错教程_第51张图片

#进入local目录 重命名

[root@hadoop01 /]# cd /usr/local/

[root@hadoop01 local]# mv mysql-5.7.11-linux-glibc2.5-x86_64  mysql

#创建临时目录

[root@hadoop01 local]# mkdir mysql/arch mysql/data mysql/tmp

2.编辑my.cnf

注意这个时候粘贴的操作不要用vim了,用vi, 至于为什么可以试一下

[root@hadoop01 local]#  vi /etc/my.cnf

[client]

port            = 3306

socket          = /usr/local/mysql/data/mysql.sock

default-character-set=utf8mb4

[mysqld]

port            = 3306

socket          = /usr/local/mysql/data/mysql.sock

skip-slave-start

skip-external-locking

key_buffer_size = 256M

sort_buffer_size = 2M

read_buffer_size = 2M

read_rnd_buffer_size = 4M

query_cache_size= 32M

max_allowed_packet = 16M

myisam_sort_buffer_size=128M

tmp_table_size=32M

table_open_cache = 512

thread_cache_size = 8

wait_timeout = 86400

interactive_timeout = 86400

max_connections = 600

# Try number of CPU's*2 for thread_concurrency

#thread_concurrency = 32

#isolation level and default engine

default-storage-engine = INNODB

transaction-isolation = READ-COMMITTED

server-id  = 1739

basedir     = /usr/local/mysql

datadir     = /usr/local/mysql/data

pid-file     = /usr/local/mysql/data/hostname.pid

#open performance schema

log-warnings

sysdate-is-now

binlog_format = ROW

log_bin_trust_function_creators=1

log-error  = /usr/local/mysql/data/hostname.err

log-bin = /usr/local/mysql/arch/mysql-bin

expire_logs_days = 7

innodb_write_io_threads=16

relay-log  = /usr/local/mysql/relay_log/relay-log

relay-log-index = /usr/local/mysql/relay_log/relay-log.index

relay_log_info_file= /usr/local/mysql/relay_log/relay-log.info

log_slave_updates=1

gtid_mode=OFF

enforce_gtid_consistency=OFF

# slave

slave-parallel-type=LOGICAL_CLOCK

slave-parallel-workers=4

master_info_repository=TABLE

relay_log_info_repository=TABLE

relay_log_recovery=ON

#other logs

#general_log =1

#general_log_file  = /usr/local/mysql/data/general_log.err

#slow_query_log=1

#slow_query_log_file=/usr/local/mysql/data/slow_log.err

#for replication slave

sync_binlog = 500

#for innodb options

innodb_data_home_dir = /usr/local/mysql/data/

innodb_data_file_path = ibdata1:1G;ibdata2:1G:autoextend

innodb_log_group_home_dir = /usr/local/mysql/arch

innodb_log_files_in_group = 4

innodb_log_file_size = 1G

innodb_log_buffer_size = 200M

#根据生产需要,调整pool size 如果时生产的话根据自己的生产量调 

innodb_buffer_pool_size = 2G

#innodb_additional_mem_pool_size = 50M #deprecated in 5.6

tmpdir = /usr/local/mysql/tmp

innodb_lock_wait_timeout = 1000

#innodb_thread_concurrency = 0

innodb_flush_log_at_trx_commit = 2

innodb_locks_unsafe_for_binlog=1

#innodb io features: add for mysql5.5.8

performance_schema

innodb_read_io_threads=4

innodb-write-io-threads=4

innodb-io-capacity=200

#purge threads change default(0) to 1 for purge

innodb_purge_threads=1

innodb_use_native_aio=on

#case-sensitive file names and separate tablespace

innodb_file_per_table = 1

lower_case_table_names=1

[mysqldump]

quick

max_allowed_packet = 128M

[mysql]

no-auto-rehash

default-character-set=utf8mb4

[mysqlhotcopy]

interactive-timeout

[myisamchk]

key_buffer_size = 256M

sort_buffer_size = 256M

read_buffer = 2M

write_buffer = 2M

3.创建用户组及用户

[root@hadoop01 local]#  groupadd -g 101 dba

[root@hadoop01 local]#  useradd -u 514 -g dba -G root -d /usr/local/mysql mysqladmin

[root@hadoop01 local]#  id mysqladmin

uid=514(mysqladmin) gid=101(dba) groups=101(dba),0(root)

CDH5x离线安装+解决报错教程_第52张图片

## 如果报错用户mysqladmin存在,请执行usermod的以下命令

#[root@hadoop01 local]# usermod -u 514 -g dba -G root -d /usr/local/mysql mysqladmin

4.copy 环境变量配置

copy 环境变量配置文件至mysqladmin用户的home目录中,为了以下步骤配置个人环境变量

[root@hadoop01 local]# cp /etc/skel/.* /usr/local/mysql

CDH5x离线安装+解决报错教程_第53张图片

5.配置环境变量

[root@hadoop01 local]#  vi mysql/.bash_profile

把最后三行删除,添加:

# .bash_profile

# Get the aliases and functions

if [ -f ~/.bashrc ]; then

        . ~/.bashrc

fi

# User specific environment and startup programs

export MYSQL_BASE=/usr/local/mysql

export PATH=${MYSQL_BASE}/bin:$PATH

unset USERNAME

#stty erase ^H

set umask to 022

umask 022

PS1=`uname -n`":"'$USER'":"'$PWD'":>"; export PS1

## end

CDH5x离线安装+解决报错教程_第54张图片

保存之后可以切换到mysqladmin用户,查看一下

[root@hadoop01 local]# su - mysqladmin

#su是切换用户存取权限,但是没有获得环境变量,所以PATH没有被带入;su -是完全的切换用户,可以获得环境变量

#这个时候切换过来的mysqladmin用户 带有 当前主机名:当前用户:当前路径    #至于为什么请看刚才配置的环境变量最后一行

hadoop01:mysqladmin:/usr/local/mysql:>cd../

hadoop01:mysqladmin:/usr/local:>exit;

[root@hadoop01 local]#

CDH5x离线安装+解决报错教程_第55张图片

6.赋权限和用户组

[root@hadoop01 local]# chown  mysqladmin:dba /etc/my.cnf

[root@hadoop01 local]# chmod  640 /etc/my.cnf  

[root@hadoop01 local]# chown -R mysqladmin:dba /usr/local/mysql

[root@hadoop01 local]# chmod -R 755 /usr/local/mysql

7.配置服务及开机自启动

[root@hadoop01 local]# cd /usr/local/mysql

#将服务文件拷贝到init.d下,并重命名为mysql

[root@hadoop01 mysql]# cp support-files/mysql.server  /etc/rc.d/init.d/mysql

#赋予可执行权限

[root@hadoop01 mysql]# chmod +x /etc/rc.d/init.d/mysql

#删除服务

[root@hadoop01 mysql]# chkconfig --del mysql

#添加服务

[root@hadoop01 mysql]# chkconfig --add mysql

[root@hadoop01 mysql]# chkconfig --level 345 mysql on

[root@hadoop01 mysql]# chkconfig --list   #查看345是否开启

CDH5x离线安装+解决报错教程_第56张图片

8.安装libaio及安装mysql的初始db

否则报错:bin/mysqld: error while loading shared libraries: libaio.so.1: cannot: cannot open shared object file:  No such file or directory

[root@hadoop01 mysql]# yum -y install libaio

#切换到mysqladmin用户来操作

[root@hadoop01 mysql]# sudo su - mysqladmin

#初始化:

hadoop01:mysqladmin:/usr/local/mysql:>  bin/mysqld \

--defaults-file=/etc/my.cnf \

--user=mysqladmin \

--basedir=/usr/local/mysql/ \

--datadir=/usr/local/mysql/data/ \

--initialize

CDH5x离线安装+解决报错教程_第57张图片

在初始化时如果加上 –initial-insecure,则会创建空密码的 root@localhost 账号,否则会创建带密码的 root@localhost 账号,密码直接写在 log-error 日志文件中, 在5.6版本中是放在 ~/.mysql_secret 文件里, 更加隐蔽, 不熟悉的话可能会无所适从

9.查看临时密码

hadoop01:mysqladmin:/usr/local/mysql:> cd data

hadoop01:mysqladmin:/usr/local/mysql/data:> cat hostname.err | grep password

2019-07-27 T02:15:29.439671Z 1 [Note] A temporary password is generated for root@localhost: a%ZeWtVFf80*  #这个就是临时密码  把他拷贝到其他地方先保存下来

hadoop01:mysqladmin:/usr/local/mysql/data:> cd ..

CDH5x离线安装+解决报错教程_第58张图片

10.启动

hadoop01:mysqladmin:/usr/local/mysql:>  /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf &

两个回车

查看进程:

hadoop01:mysqladmin:/usr/local/mysql:> ps -ef |grep mysql

通过进程查端口号   netstat -nlp|grep 进程号 可以看到时3306端口

[root@hadoop01 mysql]#  netstat -nlp|grep 3306

CDH5x离线安装+解决报错教程_第59张图片

重启:

hadoop01:mysqladmin:/usr/local/mysql:> service mysql restart

hadoop01:mysqladmin:/usr/local/mysql:>service mysql status

CDH5x离线安装+解决报错教程_第60张图片

11.登录及修改用户密码

hadoop01:mysqladmin:/usr/local/mysql:>mysql -uroot -p'a%ZeWtVFf80*'

mysql: [Warning] Using a password on the command line interface can be insecure.

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 2

Server version: 5.7.11-log

.......

mysql>

CDH5x离线安装+解决报错教程_第61张图片

#重置密码 修改localhost这个账号的密码

mysql> alter user root@localhost identified by 'mysqldba';

Query OK, 0 rows affected (0.05 sec)

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'mysqldba' ;

Query OK, 0 rows affected, 1 warning (0.02 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

mysql> exit;

Bye  

CDH5x离线安装+解决报错教程_第62张图片

12.重启

hadoop01:mysqladmin:/usr/local/mysql:> service mysql restart

hadoop01:mysqladmin:/usr/local/mysql:>mysql -uroot -pmysqldba

mysql: [Warning] Using a password on the command line interface can be insecure.

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 2

...

mysql>

CDH5x离线安装+解决报错教程_第63张图片

13更改字符集:

mysql> show databases;

mysql> show create database mysql;

+----------+------------------------------------------------------------------+

| Database | Create Database                                                  |

+----------+------------------------------------------------------------------+

| mysql    | CREATE DATABASE `mysql` /*!40100 DEFAULT CHARACTER SET latin1 */ |

+----------+------------------------------------------------------------------+

1 row in set (0.00 sec)

mysql>

CDH5x离线安装+解决报错教程_第64张图片

可以看到mysql的默认字符集是latin1, 至于为什么不是utf-8可以看一下官网:

MySQL :: MySQL 5.7 Reference Manual :: 10.10.2 West European Character Sets

CDH5x离线安装+解决报错教程_第65张图片

如果想修改mysql默认字符集可以根据这篇文章进行修改。

MySQL字符集设置及字符转换(latin1转utf8)_mysql character_set_server latin1 改 utf8_luckninjya的博客-CSDN博客

或者:

执行命令 mysql -uroot -p,根据提示输入root用户密码,然后通过命令“show variables like ‘character%’”查看数据的编码,将不是utf8格式的编码想,修改为utf8。

set character_set_database=utf8;

set character_set_server=utf8;

注意:filesystem结尾的项不用修改。

3.16事先创建CDH所需 DB用户

CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

GRANT ALL ON scm.* TO 'scm'@'%' IDENTIFIED BY 'mysqldba';

GRANT ALL ON scm.* TO 'scm'@'localhost' IDENTIFIED BY 'mysqldba';

CREATE DATABASE amon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

GRANT ALL ON amon.* TO 'amon'@'%' IDENTIFIED BY 'mysqldba';

GRANT ALL ON amon.* TO 'amon'@'localhost' IDENTIFIED BY 'mysqldba';

CREATE DATABASE rman DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

GRANT ALL ON rman.* TO 'rman'@'%' IDENTIFIED BY 'mysqldba';

GRANT ALL ON rman.* TO 'rman'@'localhost' IDENTIFIED BY 'mysqldba';

CREATE DATABASE hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

GRANT ALL ON hue.* TO 'hue'@'%' IDENTIFIED BY 'mysqldba';

GRANT ALL ON hue.* TO 'hue'@'localhost' IDENTIFIED BY 'mysqldba';

CREATE DATABASE sentry DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

GRANT ALL ON sentry.* TO 'sentry'@'%' IDENTIFIED BY 'mysqldba';

GRANT ALL ON sentry.* TO 'sentry'@'localhost' IDENTIFIED BY 'mysqldba';

CREATE DATABASE nav DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

GRANT ALL ON nav.* TO 'nav'@'%' IDENTIFIED BY 'mysqldba';

GRANT ALL ON nav.* TO 'nav'@'localhost' IDENTIFIED BY 'mysqldba';

CREATE DATABASE navms DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

GRANT ALL ON navms.* TO 'navms'@'%' IDENTIFIED BY 'mysqldba';

GRANT ALL ON navms.* TO 'navms'@'localhost' IDENTIFIED BY 'mysqldba';

CREATE DATABASE metastore DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

GRANT ALL ON metastore.* TO 'hive'@'%' IDENTIFIED BY 'mysqldba';

GRANT ALL ON metastore.* TO 'hive'@'localhost' IDENTIFIED BY 'mysqldba';

CREATE DATABASE oozie DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

GRANT ALL ON oozie.* TO 'oozie'@'%' IDENTIFIED BY 'mysqldba';

GRANT ALL ON oozie.* TO 'oozie'@'localhost' IDENTIFIED BY 'mysqldba';

flush privileges;

CDH5x离线安装+解决报错教程_第66张图片

3.17准备Mysql jdbc jar 包

CDH和Mysql之间连接所需Mysql的connector驱动

提前创建文件夹

[root@hadoop01 /]# mkdir -p /usr/share/java

[root@hadoop01 /]# cp /cdh/mysql-connector-java-5.1.47.jar /usr/share/java/mysql-connector-java.jar

一定要注意要重命名去掉版本号,不然不会被识别

因为我们刚才创建的cmf amon需要的库的进程都要部署在hadoop01节点上, 那么这个节点就要jdbc的jar包

赋值权限:

[root@hadoop01 java]# chmod 777 /usr/share/java/mysql-connector-java.jar

CDH5x离线安装+解决报错教程_第67张图片

3.18 root登陆mysql

这个时候 如果用root用户登陆mysql的话 会报错除非安装mysql-client否则必须要 mysqladmin用户进行登陆

[root@hadoop01 java]#  mysql -u root -p

-bash: mysql: command not found

[root@hadoop01 java]#

[root@hadoop01 java]# su - mysqladmin

Last login: Sat Jul 27 20:05:20 CST 2019 on pts/11

hadoop01:mysqladmin:/usr/local/mysql:>

hadoop01:mysqladmin:/usr/local/mysql:>mysql -u root -p

Enter password:

mysql>

CDH5x离线安装+解决报错教程_第68张图片

因为没有设置环境变量

CDH5x离线安装+解决报错教程_第69张图片

设置一下:

#mysql

export MYSQL_HOME=/usr/local/mysql

export PATH=$MYSQL_HOME/bin:$PATH

source /etc/profile

3.19 设置mysql可以远程连接

[root@hadoop01 /]#  mysql -u root -p

Enter password: mysqldba

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'hadoop01'

    -> IDENTIFIED BY 'mysqldba' WITH GRANT OPTION;

Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql>

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'hadoop02'

    -> IDENTIFIED BY 'mysqldba' WITH GRANT OPTION;

Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql>

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'hadoop03'

    -> IDENTIFIED BY 'mysqldba' WITH GRANT OPTION;

Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql>

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'47.98.35.251' IDENTIFIED BY

    ->  'mysqldba' WITH GRANT OPTION;

Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql>

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'47.96.117.226' IDENTIFIED BY

    ->  'mysqldba' WITH GRANT OPTION;

Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql>

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'47.99.40.96' IDENTIFIED BY

    ->  'mysqldba' WITH GRANT OPTION;

Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql>

mysql>

mysql> FLUSH PRIVILEGES;

Query OK, 0 rows affected (0.00 sec)

最终效果为:

mysql> use mysql;

Database changed

mysql>

mysql> select host,user from user;

+---------------+-----------+

| host      | user      |

+---------------+-----------+

| %        | amon     |

| %        | cmf        |

| %        | root        |

| 47.96.117.226 | root    | 

| 47.98.35.251  | root    |

| 47.99.40.96   | root     |

| hadoop01    | root       |

| hadoop02    | root       |

| hadoop0     | root        | 

| localhost     | mysql.sys |

| localhost     | root        |

+---------------+-----------+

11 rows in set (0.00 sec)

mysql>

CDH5x离线安装+解决报错教程_第70张图片

3.20. http服务配置

3.20.1.检查

[root@hadoop01 /]# rpm -qa | grep httpd

[root@hadoop01 /]#

3.20.2.下载

[root@hadoop01 /]# yum install httpd

.........

3.20.3.启动http服务

[root@hadoop01 /]# systemctl status httpd

● httpd.service - The Apache HTTP Server

Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)

 Active: inactive (dead)

Docs: man:httpd(8)

 man:apachectl(8)

[root@hadoop01 /]# systemctl start httpd

[root@hadoop01 /]# systemctl status httpd

● httpd.service - The Apache HTTP Server

   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)

   Active: active (running) since Sat 2019-07-27 23:46:43 CST; 5s ago

     Docs: man:httpd(8)

           man:apachectl(8)

 Main PID: 4592 (httpd)

   Status: "Processing requests..."

   CGroup: /system.slice/httpd.service

           ├─4592 /usr/sbin/httpd -DFOREGROUND

           ├─4593 /usr/sbin/httpd -DFOREGROUND

           ├─4594 /usr/sbin/httpd -DFOREGROUND

           ├─4595 /usr/sbin/httpd -DFOREGROUND

           ├─4596 /usr/sbin/httpd -DFOREGROUND

           └─4597 /usr/sbin/httpd -DFOREGROUND

Jul 27 23:46:43 hadoop01 systemd[1]: Starting The Apache HTTP Server...

Jul 27 23:46:43 hadoop01 httpd[4592]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.16.255.154. Set the 'ServerName' directive globally to suppress this message

Jul 27 23:46:43 hadoop01 systemd[1]: Started The Apache HTTP Server.

3.20.4.修改配置

[root@hadoop01 /]  vim /etc/httpd/conf/httpd.conf 

按一下 : 冒号 然后输入 set number 回车 可以显示行号

CDH5x离线安装+解决报错教程_第71张图片

修改119行: DocumentRoot "/var/www/"

找到 129行,添加:

"/var/www/html">

AllowOverride None

Require all granted

Options Indexes FollowSymLinks

CDH5x离线安装+解决报错教程_第72张图片

找到 285行 在AddType application/x-gzip .gz .tgz 后面添加  .parcel  注意空格

CDH5x离线安装+解决报错教程_第73张图片

解释:

CDH5x离线安装+解决报错教程_第74张图片

:wq 保存退出

重启http服务:

重启http服务:

[root@hadoop01 /]# service httpd restart

Redirecting to /bin/systemctl restart  httpd.service

[root@hadoop01 /]# service httpd status 查看状态

[root@hadoop01 /]# systemctl enable httpd  开机自启动

Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.

CDH5x离线安装+解决报错教程_第75张图片

3.21 挂载文件

创建挂载文件并且挂载

[root@hadoop01 /]cd /cdh

注意: 这里直接mv重命名把后面的1去掉,如果有1 的话代表文件下载未完全。会重新下载

[root@hadoop01 cdh/]mv CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha1 CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha

[root@hadoop01 /] cd /

[root@hadoop01 /]# mkdir -p /var/www/html

[root@hadoop01 /]# mkdir -p /var/www/html/cdh

[root@hadoop01 /]# mkdir -p /var/www/html/cm

[root@hadoop01 /]# cp /cdh/manifest.json  /var/www/html/cdh/

[root@hadoop01 /]# cp /cdh/CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha1 /var/www/html/cdh/

[root@hadoop01 /]# cp /cdh/CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel /var/www/html/cdh/

查看:

CDH5x离线安装+解决报错教程_第76张图片

[root@hadoop01 /]# cd /var/www/html/

[root@hadoop01 html]# ll

total 8

drwxr-xr-x 2 root root 4096 Jul 28 03:36 cdh

drwxr-xr-x 2 root root 4096 Jul 28 03:40 cm

[root@hadoop01 html]# ll

cdh/ cm/  

[root@hadoop01 html]# ll ./cdh/

total 1663420

-rw-r--r-- 1 root root 1703261939 Jul 28 03:36 CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel

-rw-r--r-- 1 root root         41 Jul 28 03:36 CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha1

-rw-r--r-- 1 root root      65621 Jul 28 03:35 manifest.json

[root@hadoop01 html]#

3.22 安装createrepo 创建cdh包的yum

[root@hadoop01 /]#  yum install createrepo

[root@hadoop01 /]#  createrepo /var/www/html/cm

3.23配置yum源

3.23.1 备份以前的yum源

[root@hadoop01 /]#  mkdir /etc/yum.repos.d/backup

[root@hadoop01 /]#  mv /etc/yum.repos.d/*.repo* /etc/yum.repos.d/backup

3.23.2  建立yum源

[root@hadoop01 /]#  vim /etc/yum.repos.d/cm.repo

[base]

name=hadoop01

enable=true

baseurl=http://hadoop01/html/cm

gpgcheck=false

CDH5x离线安装+解决报错教程_第77张图片

解释: 

第一行 标签

第二行名字

enable 是否启用这个yum源

url是这个yum源里面文件所在的位置

gpg是完整性检测,可以不用检测 就是false

3.23.3 建立yum缓存

[root@hadoop01 /]#  yum clean all && yum makecache

3.23.4 本地yum源验证

[root@hadoop01 /]# yum list

Failed to set locale, defaulting to C

Loaded plugins: fastestmirror

Loading mirror speeds from cached hostfile

Installed Packages

GeoIP.x86_64

1.5.0-11.el7

 @base

MySQL-python.x86_64

1.2.5-1.el7

 @base

NetworkManager.x86_64

...

3.23.5 其他节点配置。

两个节点同时执行。

#创建所需文件夹并备份

$ sudo mkdir /etc/yum.repos.d/backup

$ sudo cp /etc/yum.repos.d/*.repo* /etc/yum.repos.d/backup

图中写错了,是cp 不是mv 剪切  三台都需执行

CDH5x离线安装+解决报错教程_第78张图片

#配置yum服务器

$ sudo vim /etc/yum.repos.d/cm.repo

[base]

name=cm-server

enable=true

baseurl=http://yum服务器域名或者IP/html/cm

gpgcheck=false

$ ll /etc/yum.repos.d/

drwxr-xr-x  2 root root 4096 Aug 19 13:53 backup
-rw-------  1 root root 1260 Aug 16 18:30 CentOS-Base.repo
-rw-r--r--. 1 root root 1309 Nov 23  2018 CentOS-CR.repo
-rw-r--r--. 1 root root  649 Nov 23  2018 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root  314 Nov 23  2018 CentOS-fasttrack.repo
-rw-r--r--. 1 root root  630 Nov 23  2018 CentOS-Media.repo
-rw-r--r--. 1 root root 1331 Nov 23  2018 CentOS-Sources.repo
-rw-r--r--. 1 root root 5701 Nov 23  2018 CentOS-Vault.repo
-rw-r--r--  1 root root  128 Aug 19 13:54 cloudera-manager.repo
-rw-r--r--  1 root root   83 Aug 19 12:16 cm.repo
-rw-------  1 root root  670 Aug 16 18:30 epel.repo

CDH5x离线安装+解决报错教程_第79张图片

# yum清理缓存

$ yum clean all && yum makecache

Failed to set locale, defaulting to C

Loaded plugins: fastestmirror

...

Determining fastest mirrors

CDH5x离线安装+解决报错教程_第80张图片

之后可以去网页验证 前提开放默认80端口

http://hadoop01/html/

如果打开了端口不能访问80端口, 先检查windows主机防火墙是否关闭, 之后再CMD中 

telnet 公网IP 80    来检查本地是否可访问80端口

如果不行, 去windows得hosts文件中配置IP主机名映射。

3.24:开放端口

去网页验证首先打开默认80端口

也可以打开之后要用的7180端口

因为我们是租的阿里服务,所以去阿里控制台开启:

开启阿里云服务器端口_360新知

CDH服务启动后,会默认使用很多的端口,在这里不一一描述,具体使用情况请参考官方文档:https://www.cloudera.com/documentation/enterprise/6/6.2/topics/cm_ig_ports.html

3.25:安装必要的软件(重要)

[root@hadoop01 ~]# yum install bind-utils psmisc libxslt cyrus-sasl-plain cyrus-sasl-gssapi fuse portmap fuse-libs httpd mod_ssl openssl-devel Python-psycopg2 redhat-lsb-core python-psycopg2 MySQL-python –y

3.26 检查Python

如果Pyt'hon版本在2.6以下  配置HA会有问题

[root@hadoop01 java]# python --version

Python 2.7.5

3.27检查⽂件的hash⼀致性

如果我们是通过网络下载的包裹文件,里面涵盖了hdfs、yarn等等所以要校验有没有损坏

[root@hadoop01 /]cd /var/www/html/cdh/

[root@hadoop01 cdh]# sha1sum CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel

62ec2b8013e3d5d404ebc21e6ada46da8e146807  CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel

[root@hadoop01 cdh]#

[root@hadoop01 cdh]#

[root@hadoop01 cdh]# cat CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha

62ec2b8013e3d5d404ebc21e6ada46da8e146807

查看是否一样,一样代表这是官网发布的正式版

CDH5x离线安装+解决报错教程_第81张图片

四:安装CDH

4.1 创建与官网相同目录并解压

创建和官网一样的目录

[root@hadoop01 /]#cd  /

[root@hadoop01 /]# cd /var/www/html

[root@hadoop01 /]mkdir -p cm5/redhat/5/x86_64/

[root@hadoop01 /]#cd /cdh

[root@hadoop01cdh]# tar-zxvf cm5.12.1-centos7.tar.gz -C /var/www/html/cm5/redhat/5/x86_64/

[root@hadoop01cdh]# cd /var/www/html/cm5/redhat/5/x86_64/cm/5/RPMS/x86_64

[root@hadoop01 x86_64]#  cp ./* /var/www/html/cm

CDH5x离线安装+解决报错教程_第82张图片

可以去网页查看。

http://hadoop01/html/cm5/redhat/5/x86_64/cm/5.12.1/RPMS/x86_64/

CDH5x离线安装+解决报错教程_第83张图片

4.2安装cloudera-manager

[root@hadoop01cdh] cd /var/www/html/cm5/redhat/5/x86_64/cm/5.12.1/RPMS/x86_64/

[root@hadoop01cdh] yum install cloudera-manager-daemons-5.12.1-1.cm5121.p0.6.el7.x86_64.rpm

[root@hadoop01cdh] yum install cloudera-manager-server-5.12.1-1.cm5121.p0.6.el7.x86_64.rpm

CDH5x离线安装+解决报错教程_第84张图片

4.3将cdh的parcel文件放到cm的parcle仓库内,并修改文件所属

[root@hadoop01 /]# ll /opt/cloudera/

total 8

drwxr-xr-x 2 cloudera-scm cloudera-scm 4096 Aug 18  2017  csd

drwxr-xr-x 2 cloudera-scm cloudera-scm 4096 Aug 18  2017  parcel-repo

[root@hadoop01 /]#

[root@hadoop01 /]#

[root@hadoop01 /]# ll /var/www/html/cdh/

total 1663420

-rw-r--r-- 1 root root 1703261939 Jul 28 03:36 CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel

-rw-r--r-- 1 root root         41 Jul 28 03:36 CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha

-rw-r--r-- 1 root root      65621 Jul 28 03:35 manifest.json

[root@hadoop01 /]#

[root@hadoop01 /]#

[root@hadoop01 /]# cp /var/www/html/cdh/* -r /opt/cloudera/parcel-repo/

[root@hadoop01 /]#

[root@hadoop01 /]#

[root@hadoop01 /]# chown -R cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo/CDH5x离线安装+解决报错教程_第85张图片

4.4 修改cloudera-scm-server端和mysql的连接

这一步相当于我初始化CM的数据库

两种方法:效果一样

一: 直接编辑 /etc/cloudera-scm-server/db.properties的文件

[root@hadoop01 /]# cd /etc/cloudera-scm-server/

[root@master cloudera-scm-server]#  vim db.properties

com.cloudera.cmf.db.type=mysql

com.cloudera.cmf.db.host=localhost

com.cloudera.cmf.db.name=scm

com.cloudera.cmf.db.user=scm

com.cloudera.cmf.db.setupType=EXTERNAL

com.cloudera.cmf.db.password=mysqldba

二:

[root@hadoop01 /]#useradd --system --home=/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm

4.5创建SCM用户。

注意:如果我们不是用tar包安装的话,它不会自己创建用户,就需要手动创建,如果它自动创建了用户,我们是不需要按照这个方式添加用户的。

格式: /usr/share/cmf/schema/scm_prepare_database.sh mysql -h [mysql ip地址,建议用域名,不要用id或者localhost] -u[mysql用户名] -p[mysql密码] --scm-host 127.0.0.1 [cdh manager的数据库名称] [连接cdh manager数据库的用户名] [cdh manager数据的密码]

如果mysql服务和Cloudera Manger服务在同一台服务器,执行以下脚本

/usr/share/cmf/schema/scm_prepare_database.sh mysql scm scm

或者

/usr/share/cmf/schema/scm_prepare_database.sh mysql -uroot -proot123 scm scm scm

看到一下输出则表示成功:

JAVA_HOME=/usr/java/jdk1.8.0_141-cloudera

Verifying that we can write to /etc/cloudera-scm-server

Creating SCM configuration file in /etc/cloudera-scm-server

Executing:/usr/java/jdk1.8.0_141-cloudera/bin/java -cp /usr/share/java/mysql-connector-java.jar:/usr/share/java/oracle-connector-java.jar:/usr/share/java/postgresql-connector-java.jar:/opt/cloudera/cm/schema/../lib/* com.cloudera.enterprise.dbutil.DbCommandExecutor/etc/cloudera-scm-server/db.properties com.cloudera.cmf.db.

[main] DbCommandExecutor   INFO Successfully connected to database.

All done, your SCM database is configured correctly!

如果mysql服务和Cloudera Manager服务不在同一台服务器上,执行以下脚本:

/usr/share/cmf/schema/scm_prepare_database.sh mysql -h hadoop01 --scm-host hadoop01 scm scm

CDH5x离线安装+解决报错教程_第86张图片

4.6启动服务

[root@hadoop01 /]# service cloudera-scm-server start

另起窗口,查看日志:

[root@hadoop01 /]# tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log

没有报错的话一般过了一到两分钟之后去登陆, 一定要耐心等待一到两分钟

http://hadoop01:7180/

账号密码:admin/admin

5.页面操作

CDH5x离线安装+解决报错教程_第87张图片

CDH5x离线安装+解决报错教程_第88张图片

01欢迎使用 Cloudera Manager。您想要部署哪一个版本? - Cloudera Manag

CDH5x离线安装+解决报错教程_第89张图片

02为 CDH 群集安装指定主机。 - Cloudera Manager

将自己的内网IP填进去, 因为写外网IP,烧钱。。

CDH5x离线安装+解决报错教程_第90张图片

03为 CDH 群集安装指定主机。 - Cloudera Manager

CDH5x离线安装+解决报错教程_第91张图片

4.选择存储库

解释:

1.单击更多选项,在弹出的界面中,在”远程”Parcel存储库URL的右侧地址。

2删除多余的url,只保留一个,然后替换为自己的本地httP路径下的cdh路径

也就是我们存放paecel文件的地方,我的是  http://hadoop01/html/cdh/  然后稍微等一下,页面会自动刷新一下。

3.然后会看到多余的CDH版本已经不再只有我们自己版本的,证明读取到了我们parcles文件。然后选中我们的版本

出现 选择其他parcal 选择无。

4.之后选择自定义存储库,将我们cm的路径粘贴上去(图中贴错了,按照我下图中的来)

http://hadoop01/html/cm5/redhat/5/x86_64/cm/5/

5.自定义GPG主要URL可以不填

CDH5x离线安装+解决报错教程_第92张图片

CDH5x离线安装+解决报错教程_第93张图片

5.JDK安装选项(不勾选)

CDH5x离线安装+解决报错教程_第94张图片

6.启用单用户模式(不启用)

CDH5x离线安装+解决报错教程_第95张图片

7.提供SSH登录凭据

CDH5x离线安装+解决报错教程_第96张图片

8.正在安装 这一步如果有问题,看下方排错集锦

CDH5x离线安装+解决报错教程_第97张图片

CDH5x离线安装+解决报错教程_第98张图片

9.正在安装选定Parcel(安装前,将安装包下载到opt%cloudera%parcel-repo文件夹下,否则根据带宽慢慢download)

CDH5x离线安装+解决报错教程_第99张图片

CDH5x离线安装+解决报错教程_第100张图片

10检查主机准确性

CDH5x离线安装+解决报错教程_第101张图片

11检查主机准确性--warnings

CDH5x离线安装+解决报错教程_第102张图片

12.选择您要在集群上安装的CDH5服务 选择自定义

CDH5x离线安装+解决报错教程_第103张图片

13 集群分配

CDH5x离线安装+解决报错教程_第104张图片

14 数据库设置:

CDH5x离线安装+解决报错教程_第105张图片

15 数据存储路径设置, 练习使用默认就可以

16.这一步拼人品CDH5x离线安装+解决报错教程_第106张图片

CDH5x离线安装+解决报错教程_第107张图片

运维操作:

查看 server和agent状态

 service cloudera-scm-server status

 service cloudera-scm-agent status

停止

 service cloudera-scm-server stop

 service cloudera-scm-agent stop

启动

 service cloudera-scm-server start

 service cloudera-scm-agent start

报错集锦

1.建立YUM缓存报错

[root@hadoop01 /]#  yum clean all && yum makecache

报错:http://hadoop01/html/cm/repodata/repomd.xml:[Errno 14] HTTP Error 404 - Not Found

CDH5x离线安装+解决报错教程_第108张图片

最后一行的url找不到 检查cm.repo 中baseurl

2.集群安装失败

集群安装,安装失败后以在3主机上卸载

CDH5x离线安装+解决报错教程_第109张图片

页面不要关闭。查看详情,退回上一步一步一步排查。检查hosts文件以及主机名, 页面不要关,退回上几步依次排查

详情显示:

无法安装cloudera-manager-agent包。

Error: No matching Packages to list

CDH5x离线安装+解决报错教程_第110张图片

CDH5x离线安装+解决报错教程_第111张图片

CDH5x离线安装+解决报错教程_第112张图片

可以看到是本地Centos yum源有问题, 首先再主节点 yum list | grep openssl-devel

CDH5x离线安装+解决报错教程_第113张图片

什么都没有, 在执行yum repolist

CDH5x离线安装+解决报错教程_第114张图片

可以看到
就2个repos 一个base 一个cloudera manager。
原因是因为我在3.23.5图中将CentOS的repo放在了 backup文件夹中, 将他们挪出来

CDH5x离线安装+解决报错教程_第115张图片

之后清理缓存
yum clean all && yum makecache

CDH5x离线安装+解决报错教程_第116张图片

三台全部同样操作。

CDH5x离线安装+解决报错教程_第117张图片

3.安装过程中遇到以下提示

Detecting Cloudera Manager Server... Detecting Cloudera Manager Server... BEGIN host -t PTR 192.168.1.198 198.1.168.192.in-addr.arpa domain name pointer localhost. END (0) using localhost as scm server hostname BEGIN which python /usr/bin/python END (0) BEGIN python -c 'import socket; import sys; s = socket.socket(socket.AF_INET); s.settimeout(5.0); s.connect((sys.argv[1], int(sys.argv[2]))); s.close();' localhost 7182 Traceback (most recent call last): File "", line 1, in File "", line 1, in connect socket.error: [Errno 111] Connection refused END (1) could not contact scm server at localhost:7182, giving up waiting for rollback request 在失败的主机上,终端执行

mv /usr/bin/host /usr/bin/host.bak 然后重试。

4. 安装过程一直卡在"正在获取安装锁"

在卡住的主机上,删除/tmp文件夹中的所有scm_prepare_node.开头的文件,清空yum缓存,然后重启主机。

cd /tmp

 rm -rf scm_prepare_node.* yum clean all reboot

5.安装完毕后NameNode格式化失败,报一下错误

IncorrectVersionException: Unexpected version of storage directory /data/dfs

删除NameNode节点的/data/dfs文件夹,重新添加主机。

6. Hive启动失败:

org.apache.hadoop.hive.metastore.HiveMetaException: Failed to load driver

Underlying cause: java.lang.ClassNotFoundException : com.mysql.jdbc.Driver

org.apache.hadoop.hive.metastore.HiveMetaException: Failed to load driver

at

org.apache.hadoop.hive.metastore.tools.HiveSchemaHelper.getConnectionToMetasto

re(HiveSchemaHelper.java:79)

at

org.apache.hive.beeline.HiveSchemaTool.getConnectionToMetastore(HiveSchemaTool

.java:142)

at

org.apache.hive.beeline.HiveSchemaTool.testConnectionToMetastore(HiveSchemaToo

l.java:449)

at org.apache.hive.beeline.HiveSchemaTool.doInit(HiveSchemaTool.java:555)

at org.apache.hive.beeline.HiveSchemaTool.doInit(HiveSchemaTool.java:541)

at org.apache.hive.beeline.HiveSchemaTool.main(HiveSchemaTool.java:1137)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at org.apache.hadoop.util.RunJar.main(RunJar.java:227)

Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

at java.net.URLClassLoader.findClass(URLClassLoader.java:381)

at java.lang.ClassLoader.loadClass(ClassLoader.java:424)

at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)

at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

at java.lang.Class.forName0(Native Method)

at java.lang.Class.forName(Class.java:264)

at

org.apache.hadoop.hive.metastore.tools.HiveSchemaHelper.getConnectionToMetasto

re(HiveSchemaHelper.java:70)

... 11 more

*** schemaTool failed ***

缺少jar包:

cp /usr/share/java/mysql-connector-java-5.1.44-bin.jar /opt/cloudera/parcels/CDH/lib/hive/lib

7. 重装HDFS出错

Error:正在连接NameNode的名称目录是否为空,尽在为空时格式化HDFS 
解决办法:需要在namenode和所有的datanode上执行 rm -rf /def

8.安装失败

你可能感兴趣的:(大数据,Linux,CDH安装,CDH基于http搭建,cdh5.12.1,linux,cloudera)