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出错
注: 为了方便这一次专门的演示,选择去阿里云租三台服务器 按量付费。按量付费的好处: 便宜!
官网: 阿里云-计算,为了无法计算的价值
首先注册账号,之后点击控制台
点击费用-充值-Emmmmm充钱。。
学习时间很长因为按量付费, 所以充值了一百元。如果说只想搭建一次就行了。因为按量付费,最多最多10-15就够了。
充值过后单机创建实例
选择按量付费,不要选择其他的付费方式,然后选择一个属于自己所在的地域, 或者距离近的地域 这样网络带宽不会有很大延迟, 因为不同的地域之间的内网不通,所以在地域选择的时候不要选择随机分配。
学习的过程中选择满足CDH最低配的就可以, 2vCPU和 8G的内存。之后在规格参考价中选择费用最少的0.55元/时、之后在购买集群数量的地方,集群学习的话最少是三台,所以选择三台、选择镜像为Centos7 7.2 64位的配置、硬盘40G默认不动、 下一步
带宽计算在使用流量或者固定带宽没有什么区别。默认就可以 下一步
自定义密码 我设置为Bigdata666 之后实例名和主机名这个地方写一个没有后缀的实例名、主机名, 然后点击有序后缀。”有序后缀从001开始”
注意: 这里可以看到我的一个错误,我忘记写主机名了,可以在这里设置,也可以到后面在设置静态主机名。都可以。下一步
确认订单 确认计费方式是否为按量付费、镜像是否为Centos7、区域是否在同一个区域、登录方式和实例名称记得都确认一下、最后勾上服务、单机创建实例。
注: 因为我是租的服务器,所以我直接是root,如果是公司环境,是普通用户,切记一定要有sudo免密
首先在根目录创建cdh文件夹并赋权来临时存放我们的安装包
[root@hadoop01 /]# mkdir /cdh
[root@hadoop01 /]# chmod 777 /cdh/
链接:https://pan.baidu.com/s/1oJxEqKtqzgBTo8IZhtJFsA
提取码:1q3q
之后打开上方XFTP将所需安装包拖入/cdh文件夹,只需要在hadoop01操作即可
注意:这里可以看到我显示上传的CM安装包为: cloudera-manager-centos7-cm5.12.1_x86_64.tar.gz
这是tar包,本来想是tar部署,但是后来改用rpm包部署,所以在下载到本地的时候可以忽略这个tar包,下载cm5.12.1-centos7.tar.gz这个和其他包即可!!
上传完成:
CDH有三种安装方式: rpm包、bin包、tar包。
bin包安装方式很少人使用,会在linux界面弹出来窗口一直下一步,如果网络不好的话会有各种各样问题,[一键安装,会使用默认的postgresql数据库,在联网的情况下会自动下载相关软件进行安装,生产环境不推荐]
tar包也就是我最开始上穿上去的包, tar包安装的缺点是例如我们所需要的一系列依赖包他可能没有给我们下载上。后面会出现各种各样问题 [主要是在做版本升级的时候比较麻烦,另外tar安装的位置每个人都可能不同,对维护有一定的影响]
rpm包他会装当前这个包自己所依赖的rpm包,很大程度上杜绝了系统环境缺包的可能性。
建议: 如果访问不了外网,tar包部署,可以访问外网,rpm部署--[其实不管什么环境,都推荐rpm部署]
包裹文件 下载的时候注意 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/
内网IP:
172.16.255.154 hadoop01
172.16.255.155 hadoop02
172.16.255.153 hadoop03
修改服务器Host文件及修改
[root@hadoop01 /]# vim /etc/hosts
在host配置完成之后可以在随意主机 去ping任意一台服务器,看互相能不能PING通
查看主机名:
[root@hadoop01 cdh]# hostnamectl
[root@hadoop01 cdh]# hostname
[root@hadoop01 cdh]# cat /etc/hosts
这个时候会发现 已经修改了主机名 但是在命令行查看的时候还是原来的主机名。原因在租阿里服务器的时候已经解释,我在自定义密码那一页忘记写主机名。那么这个时候要修改。
Cenots7 要使用这个命令来修改:
hostnamectl set-hostname hadoop01
hostnamectl set-hostname hadoop02
hostnamectl set-hostname hadoop03
或者第二种办法:
去阿里云控制台,在实例列表中进入实例, 在实例详情中点击更多, 点击修改实例属性, 修改为自己主机名,三台都要操作, 我的分别是hadoop01 02 03。然后必须在阿里控制台点击重启-强制重启-接受验证码-重启之后即可
重启之后可以看到 主机名设置成功
注意: 需要在所有节点上执行, 因为涉及到的端口太多了, 临时关闭防火墙是为了安装起来更方便,安装完毕之后可以根据需要设置防火墙策略,保证集群安全。
阿里云服务器的防火墙是默认关闭的。但是他有Web防火墙,也就是说我们浏览器访问CDH某一个组件的web界面的时候 必须先去云主机控制台将端口放开, 后续讲解操作。
Centos7 防火墙关闭:
systemctl stop firewalld
禁用
systemctl disable firewalld
可以看防火墙规则:
iptables -L
清空:
iptables -F
注意: 三台都要执行
安全策略,将他disabled 禁用 三台都要做,然后重启机器 重启生效
[root@hadoop01 cdh]# vim /etc/selinux/config
SELINUX=disabled
重启生效!
验证时间是否同步: date
阿里服务器默认时间同步 下面操作可以不用做 但是如果是非云主机 要进行下面操作, 云主机虽然不用但是也可以进行操作熟悉一下
时区设置: timedatectl --help 查看帮助
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
第一个看: Local time: Sat 2019-07-27 15:30:26 CST
本地时间 CST 亚洲上海 一般看CST是否是亚洲上海
第二个看: Time zone: Asia/Shanghai (CST, +0800)
是否是亚洲上海,一般就看这两个指标,如果不是亚洲上海的,想设置成亚洲上海的话
timedatectl list-timezones 回车
这里面是所有的列表:
设置成亚洲上海的话:
[root@hadoop01 cdh]# timedatectl set-timezone Asia/Shanghai
时钟同步的话可以,手动安装NTP, 三台一起输入:
[root@hadoop01 cdh]# yum install -y ntp
安装完之后选择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
再下面添加 最后一位是0
restrict 172.16.255.0 mask 255.255.255.0 nomodify notrap
保存之后启动服务
[root@hadoop01 cdh]# systemctl start ntpd
[root@hadoop01 cdh]# systemctl status ntpd
active (running)状态为启动成功
可以通过ntpq -p 去验证
[root@hadoop01 cdh]# ntpq -p
Offset 为0.000 可以知道他与本地的相差0.000秒 说明和本地物理时间同步
客户端做同步 先使用 systemctl status ntpd 命令
可以看到 第二台的NTP服务是开启的, 如果开启他是通过网络来时间同步的,所以要把它关闭
[root@hadoop02 /]# systemctl stop ntpd
[root@hadoop02 /]# systemctl disable ntpd
第二台与第一台做关联
[root@hadoop02 /]# /usr/sbin/ntpdate hadoop01
27 Jul 15:58:50 ntpdate[2228]: adjust time server 172.16.255.154 offset -0.045928 sec
第三台同样与第一台做关联的时候也要先关闭
[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 与第一台做关联
将时间同步语句加入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中也是同样操作
此处不使用功能ntpdate定时同步也可以,使用ntpd服务自动同步。
注意:
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*
分发 将再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/
查看:
然后三台统一进入到cdh文件夹下 创建/usr/java文件夹, 这是jdk默认目录,尽量不要修改 然后解压到指定目录
[root@hadoop01cdh]# mkdir /usr/java
[root@hadoop01cdh ]# tar -zxvf jdk-8u91-linux-x64.tar.gz -C /usr/java/
查看:
赋权: chown -R root:root /usr/java/jdk1.8.0_91/
环境变量配置 三台都要做
vim /etc/profile
再最下面添加
#jdk
export JAVA_HOME=/usr/java/jdk1.8.0_91
export PATH=$JAVA_HOME/bin:$PATH
保存退出
注意:之后刷新环境变量
source /etc/profile
Java -version 检查一下。
如果上百台机器的或可以让运维做镜像模板然后分发。
配置 hadoop01对 hadoop01、hadoop02、hadoop03三台服务器免密登陆
生成 公钥和私钥:
[root@hadoop01 ~]# ssh-keygen -t rsa
然后敲三个回车 就会生成两个文件 id_rsa(私钥) id_rsa.pub(公钥) 将公钥Copy到免密登陆的目标机器上。
发送自己的公钥到 自己和其他节点
ssh-copy-id hadoop01
ssh-copy-id hadoop02
在 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
之后可以互相ssh 查看是否成功
在不重启服务器的情况下可以执行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
[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
# 查看操作系统系统语言
echo $LANG
如果不是:en_US.UTF-8的话需要修改。
# 修改操作系统系统语言
vim /etc/sysconfig/i18n
LANG="en_US.UTF-8"
#解压到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/
#进入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
注意这个时候粘贴的操作不要用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
[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)
## 如果报错用户mysqladmin存在,请执行usermod的以下命令
#[root@hadoop01 local]# usermod -u 514 -g dba -G root -d /usr/local/mysql mysqladmin
copy 环境变量配置文件至mysqladmin用户的home目录中,为了以下步骤配置个人环境变量
[root@hadoop01 local]# cp /etc/skel/.* /usr/local/mysql
[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
保存之后可以切换到mysqladmin用户,查看一下
[root@hadoop01 local]# su - mysqladmin
#su是切换用户存取权限,但是没有获得环境变量,所以PATH没有被带入;su -是完全的切换用户,可以获得环境变量
#这个时候切换过来的mysqladmin用户 带有 当前主机名:当前用户:当前路径 #至于为什么请看刚才配置的环境变量最后一行
hadoop01:mysqladmin:/usr/local/mysql:>cd../
hadoop01:mysqladmin:/usr/local:>exit;
[root@hadoop01 local]#
[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
[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是否开启
否则报错: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
在初始化时如果加上 –initial-insecure,则会创建空密码的 root@localhost 账号,否则会创建带密码的 root@localhost 账号,密码直接写在 log-error 日志文件中, 在5.6版本中是放在 ~/.mysql_secret 文件里, 更加隐蔽, 不熟悉的话可能会无所适从
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 ..
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
重启:
hadoop01:mysqladmin:/usr/local/mysql:> service mysql restart
hadoop01:mysqladmin:/usr/local/mysql:>service mysql status
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>
#重置密码 修改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
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>
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>
可以看到mysql的默认字符集是latin1, 至于为什么不是utf-8可以看一下官网:
MySQL :: MySQL 5.7 Reference Manual :: 10.10.2 West European Character Sets
如果想修改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结尾的项不用修改。
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;
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
这个时候 如果用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>
因为没有设置环境变量
设置一下:
#mysql
export MYSQL_HOME=/usr/local/mysql
export PATH=$MYSQL_HOME/bin:$PATH
source /etc/profile
[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>
[root@hadoop01 /]# rpm -qa | grep httpd
[root@hadoop01 /]#
[root@hadoop01 /]# yum install 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: 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.
[root@hadoop01 /] vim /etc/httpd/conf/httpd.conf
按一下 : 冒号 然后输入 set number 回车 可以显示行号
修改119行: DocumentRoot "/var/www/"
找到 129行,添加:
"/var/www/html"> AllowOverride None
Require all granted
Options Indexes FollowSymLinks
找到 285行 在AddType application/x-gzip .gz .tgz 后面添加 .parcel 注意空格
解释:
: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.
创建挂载文件并且挂载
[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/
查看:
[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]#
[root@hadoop01 /]# yum install createrepo
[root@hadoop01 /]# createrepo /var/www/html/cm
[root@hadoop01 /]# mkdir /etc/yum.repos.d/backup
[root@hadoop01 /]# mv /etc/yum.repos.d/*.repo* /etc/yum.repos.d/backup
[root@hadoop01 /]# vim /etc/yum.repos.d/cm.repo
[base]
name=hadoop01
enable=true
baseurl=http://hadoop01/html/cm
gpgcheck=false
解释:
第一行 标签
第二行名字
enable 是否启用这个yum源
url是这个yum源里面文件所在的位置
gpg是完整性检测,可以不用检测 就是false
[root@hadoop01 /]# yum clean all && yum makecache
[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
...
两个节点同时执行。
#创建所需文件夹并备份
$ sudo mkdir /etc/yum.repos.d/backup
$ sudo cp /etc/yum.repos.d/*.repo* /etc/yum.repos.d/backup
图中写错了,是cp 不是mv 剪切 三台都需执行
#配置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
# yum清理缓存
$ yum clean all && yum makecache
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror
...
Determining fastest mirrors
之后可以去网页验证 前提开放默认80端口
http://hadoop01/html/
如果打开了端口不能访问80端口, 先检查windows主机防火墙是否关闭, 之后再CMD中
telnet 公网IP 80 来检查本地是否可访问80端口
如果不行, 去windows得hosts文件中配置IP主机名映射。
去网页验证首先打开默认80端口
也可以打开之后要用的7180端口
因为我们是租的阿里服务,所以去阿里控制台开启:
开启阿里云服务器端口_360新知
CDH服务启动后,会默认使用很多的端口,在这里不一一描述,具体使用情况请参考官方文档:https://www.cloudera.com/documentation/enterprise/6/6.2/topics/cm_ig_ports.html
[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
如果Pyt'hon版本在2.6以下 配置HA会有问题
[root@hadoop01 java]# python --version
Python 2.7.5
如果我们是通过网络下载的包裹文件,里面涵盖了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
查看是否一样,一样代表这是官网发布的正式版
创建和官网一样的目录
[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
可以去网页查看。
http://hadoop01/html/cm5/redhat/5/x86_64/cm/5.12.1/RPMS/x86_64/
[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
[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/
这一步相当于我初始化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
注意:如果我们不是用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
[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
01欢迎使用 Cloudera Manager。您想要部署哪一个版本? - Cloudera Manag
02为 CDH 群集安装指定主机。 - Cloudera Manager
将自己的内网IP填进去, 因为写外网IP,烧钱。。
03为 CDH 群集安装指定主机。 - Cloudera Manager
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可以不填
5.JDK安装选项(不勾选)
6.启用单用户模式(不启用)
7.提供SSH登录凭据
8.正在安装 这一步如果有问题,看下方排错集锦
9.正在安装选定Parcel(安装前,将安装包下载到opt%cloudera%parcel-repo文件夹下,否则根据带宽慢慢download)
10检查主机准确性
11检查主机准确性--warnings
12.选择您要在集群上安装的CDH5服务 选择自定义
13 集群分配
14 数据库设置:
15 数据存储路径设置, 练习使用默认就可以
查看 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
[root@hadoop01 /]# yum clean all && yum makecache
报错:http://hadoop01/html/cm/repodata/repomd.xml:[Errno 14] HTTP Error 404 - Not Found
最后一行的url找不到 检查cm.repo 中baseurl
集群安装,安装失败后以在3主机上卸载
页面不要关闭。查看详情,退回上一步一步一步排查。检查hosts文件以及主机名, 页面不要关,退回上几步依次排查
详情显示:
无法安装cloudera-manager-agent包。
Error: No matching Packages to list
可以看到是本地Centos yum源有问题, 首先再主节点 yum list | grep openssl-devel
什么都没有, 在执行yum repolist
可以看到
就2个repos 一个base 一个cloudera manager。
原因是因为我在3.23.5图中将CentOS的repo放在了 backup文件夹中, 将他们挪出来
之后清理缓存
yum clean all && yum makecache
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 然后重试。
在卡住的主机上,删除/tmp文件夹中的所有scm_prepare_node.开头的文件,清空yum缓存,然后重启主机。
cd /tmp
rm -rf scm_prepare_node.* yum clean all reboot
IncorrectVersionException: Unexpected version of storage directory /data/dfs
删除NameNode节点的/data/dfs文件夹,重新添加主机。
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
Error:正在连接NameNode的名称目录是否为空,尽在为空时格式化HDFS
解决办法:需要在namenode和所有的datanode上执行rm -rf /def
8.安装失败