完全离线搭建CDH5.15.1

完全离线搭建CDH5.15.1

一.说明
1.1 操作系统:
CentOS-7-x86_64-DVD-1511.iso

1.2 JDK版本:
jdk-8u162-linux-x64.rpm

1.3 CDH所需安装包及版本说明:
CDH-5.15.1-1.cdh5.15.1.p0.4-el7.parcel
CDH-5.15.1-1.cdh5.15.1.p0.4-el7.parcel.sha1
cloudera-manager-centos7-cm5.15.1_x86_64.tar.gz
manifest.json

1.4 mysql离线安装包:
mysql-5.7.23-1.el7.x86_64.rpm-bundle.tar
mysql-connector-java-5.1.43.jar

1.5 yum源安装包
CentOS-7-x86_64-Everything-1511.is

在这里插入图片描述

CDH下载目录:
http://archive.cloudera.com/cdh5/parcels/5.15.1.4/

Cloudera Manager下载目录
https://www.cloudera.com/downloads/manager/5-15-1.html

CHD5相关的Parcel包放到主节点的/opt/cloudera/parcel-repo/目录中
CDH-5.15.1-1.cdh5.15.1.p0.4-el7.parcel.sha1重命名CDH-5.15.1-1.cdh5.15.1.p0.4-el7.parcel.sha,这点必须注意,否则,系统会重新下载CDH-5.15.1-1.cdh5.15.1.p0.4-el7.parcel文件

二.环境搭建
2.1 网络配置(所有节点)
vi /etc/sysconfig/network 修改hostname:
NETWORKING=yes
HOSTNAME=cdh01

vi /etc/hosts ,修改ip与主机名的对应关系
192.168.101.71 cdh01
192.168.101.72 cdh02
192.168.101.73 cdh03
192.168.101.74 cdh04

2.2 SSH免密码登录
生成密钥:ssh-keygen –t rsa
一直使用默认

发送密钥到cdh01, cdh02,cdh03,cdh04注意也要发送秘钥给本机:
ssh-copy-id root@cdh01

2.3 关闭防火墙
更改防火墙配置
依次执行命令如下:

systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld

2.4 关闭SELINUX
vim /etc/sysconfig/selinux
将SELINUX=enforcing改为SELINUX=disabled

查看SELINUX状态:
使用命令:getenforce
SELinux status: enabled(enabled:开启;disabled:关闭)

2.5 安装jdk
2.5.1 卸载centos自带的jdk:
查看:rpm -qa | grep java
卸载:rpm -e --nodeps java***
在这里插入图片描述

rpm -qa | grep java
rpm -e --nodeps java-1.7.0-openjdk-1.7.0.91-2.6.2.3.el7.x86_64
rpm -e --nodeps javassist-3.16.1-10.el7.noarch
rpm -e --nodeps java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64
rpm -e --nodeps java-1.6.0-openjdk-1.6.0.36-1.13.8.1.el7_1.x86_64
rpm -e --nodeps javamail-1.4.6-8.el7.noarch
rpm -e --nodeps nuxwdog-client-java-1.0.3-2.el7.x86_64
rpm -e --nodeps libvirt-java-0.4.9-4.el7.noarch
rpm -e --nodeps tzdata-java-2015g-1.el7.noarch
rpm -e --nodeps javapackages-tools-3.4.1-11.el7.noarch
rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.91-2.6.2.3.el7.x86_64
rpm -e --nodeps java-1.7.0-openjdk-devel-1.7.0.91-2.6.2.3.el7.x86_64
rpm -e --nodeps python-javapackages-3.4.1-11.el7.noarch
rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.65-3.b17.el7.x86_64
rpm -e --nodeps libvirt-java-devel-0.4.9-4.el7.noarch
rpm -e --nodeps java-1.8.0-openjdk-devel-1.8.0.65-3.b17.el7.x86_64
rpm -e --nodeps java-1.6.0-openjdk-devel-1.6.0.36-1.13.8.1.el7_1.x86_64

上传文件 rz –be 文件名称
2.5.2 配置jdk
解压安装: rpm -ivh jdk-8u162-linux-x64.rpm
配置环境变量: echo “JAVA_HOME=/usr/java/latest/”>> /etc/environment

在这里插入图片描述

生效:
source /etc/profile
查看版本
java -version
javac -version

2.6 搭建集群公共yum源
选择其中一台服务器搭建集群公共yum源;这里以cdh04节点为例
2.6.1安装httpd
(如果先下载好了httpd的rpm包也可以直接在搭建的节点上直接安装,不用再搭建本地yum源下载httpd,注意版本)

先搭建本地yum源安装httpd

  1. 挂载:mount /etc/app/CentOS-7-x86_64-Everything-1511.iso /var/yumRepo
  2. cd /etc/yum.repos.d/
  3. mv CentOS-Base.repo centos7.repo 其他repo文件删除
  4. vim /etc/yum.repos.d/centos7.repo
    [base]
    name=centos7
    baseurl=file:///var/yumRepo
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    enabled=1

baseurl=file:///etc/app 该路径为CentOS-7-x86_64-Everything-1511.iso本地文件路径

  1. yum makecache
    yum -list
  2. 安装httpd: yum -y install httpd
  3. 启动:systemctl start httpd.service
  4. 查看状态:systemctl status httpd.service
  5. 开机自启:systemctl enable httpd.service
  6. 然后通过浏览器访问测试,如下图

在这里插入图片描述

2.6.2 挂载,搭建公共yum源
8. 创建centos7目录:mkdir /var/www/html/centos7
9. 挂载:mount /etc/app/CentOS-7-x86_64-Everything-1511.iso /var/www/html/centos7
(/var/www/html为httpd生成目录)
10. 开机自启:
echo “mount /etc/app/CentOS-7-x86_64-Everything-1511.iso /var/www/html/centos7”>> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local

4.vim /etc/yum.repos.d/centos7.repo
[base]
name=centos7
baseurl=http://cdh04/centos7/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
5 .然后再通过浏览器访问测试http://cdh04/centos7/ ,如下图
在这里插入图片描述

备注:yum下载不安装命令
yum install –downloadonly –downloaddir=/home/mod_ssl mod_ssl

2.7 设置ntp
2.7.1 修改系统时间如果时间不对
[root@10-121-2-96 opt]# timedatectl set-ntp no
[root@10-121-2-96 opt]# timedatectl set-time “2018-07-05 15:06:00”
[root@10-121-2-96opt]# timedatectl set-timezone Asia/Shanghai
[root@10-121-2-96 opt]# date
Fri Jul 5 15:06:16 CST 2018

2.7.2 yum安装ntp:
yum -y install ntpd
2.7.3 ntp服务端搭建
在这里插入图片描述

2.7.4 ntp客户端设置
在这里插入图片描述

如果有ntp服务器就不用再搭建ntp服务器

2.8 mysql安装

2.8.1 删除原有的mariadb,不然mysql装不进去
mariadb-libs-5.5.52-1.el7.x86_64
rpm -qa|grep mariadb
[root@cdh01 opt]# rpm -e --nodeps mariadb-devel-5.5.44-2.el7.centos.x86_64
[root@cdh01 opt]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7.centos.x86_64
[root@cdh01 opt]# rpm -e --nodeps mariadb-server-5.5.44-2.el7.centos.x86_64
[root@cdh01 opt]# rpm -e --nodeps mariadb-5.5.44-2.el7.centos.x86_64
2.8.2 离线安装mysql的rpm包
在https://dev.mysql.com/downloads/mysql/选择为Red Hat Enterprise Linux 7 / Oracle Linux7 ,把os的版本选择为all。
直接下载mysql-5.7.23-1.el7.x86_64.rpm-bundle.tar,所有的rpm包都在里面
rpm -ivh mysql-community-common-5.7.23-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.23-1.el7.x86_64.rpm
rpm -ivh mysql-community-devel-5.7.23-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.23-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.23-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.23-1.el7.x86_64.rpm
至此,mysql5.7所有文件安装完毕,接下来就是开启服务测试了。
rpm -e --nodeps mysql-community-common-5.7.23-1.el7.x86_64.rpm
rpm -e --nodeps mysql-community-libs-5.7.23-1.el7.x86_64.rpm
rpm -e --nodeps mysql-community-devel-5.7.23-1.el7.x86_64.rpm
rpm -e --nodeps mysql-community-libs-compat-5.7.23-1.el7.x86_64.rpm
rpm -e --nodeps mysql-community-client-5.7.23-1.el7.x86_64.rpm
rpm -e --nodeps mysql-community-server-5.7.23-1.el7.x86_64.rpm

2.8.3 配置mysql

  1. 首先关闭mysql服务:
    service mysqld stop

  2. 然后修改配置文件:
    vim /etc/my.cnf

接下来加入代码即可空密码登录mysql:
Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
skip-grant-tables #添加这句话,这时候登入mysql就不需要密码

default-storage-engine = innodb
innodb_file_per_table
collation-server = utf8_general_ci
init-connect = ‘SET NAMES utf8’
character-set-server = utf8

  1. 开启mysql服务:
    service mysqld start

  2. .空密码登录mysql:
    mysql -u root -p #输入命令回车进入,出现输入密码提示直接回车

2.8.4 设置mysql密码:
mysql> update mysql.user set authentication_string=password(‘rooLiu@123’),host=’%’ where user=‘root’;
mysql> flush privileges; #更新权限
Query OK, 0 rows affected (0.00 sec)
mysql>flush privileges; #更新权限
mysql>quit; #退出

service mysqld stop # 停止mysql服务, 恢复mysql配置
vim /etc/my.cnf #修改配置文件
Disabling symbolic-links is recommended toprevent assorted security risks
//# skip-grant-tables # 注释掉这句话
symbolic-links=0

service mysqld start # 启动mysql服务
mysql -uroot -p # 输入新密码登录

问题:navicat远程访问,密码过期。
Error:1862-your password has expired,…
终端执行以下sql解决—设置密码不过期
alter user ‘root’@’%’ identified by ‘rooLiu@123’, ‘root’@’%’ password expire never;
2.8.5 设置mysql开机自启:
systemctl enable mysqld

2.8.6添加mysql驱动 (每个节点都要添加)
( LINUX下执行)拷贝mysql-connector-java-5.1.43.tar到 /usr/share/java/mysql-connector-java.jar (如果不存在,需要创建)
(版本号要去掉)

2.8.7添加权限:
mysql -u root -p rooLiu@123
GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘rooLiu@123’ WITH GRANT OPTION;
flush privileges;
重启mysql服务即可使用。

2.8.8创建数据库:依次执行命令(MYSQL下执行)

create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database monitor DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

2.8.9赋远程访问权限
use mysql;
update user set host=’%’ where user=‘root’;
ERROR 1062 (23000): Duplicate entry ‘%-root’ for key ‘PRIMARY’ 不予理会
flush privileges;

三.安装Cloudera-Manager
3.1 安装配置CM

3.1.1 解压cm tar包到指定目录
tar -xvf cloudera-manager-centos7-cm5.15.1_x86_64.tar.gz -C /opt

3.1.2 创建cloudera-scm用户
useradd --system --home=/opt/cm-5.15.1/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment “Cloudera SCM User” cloudera-scm

3.1.3 在主节点创建cloudera-manager-server的本地元数据保存目录
mkdir /var/cloudera-scm-server
chown cloudera-scm:cloudera-scm /var/cloudera-scm-server

3.1.4 配置从节点agent指向主节点服务器

  1. vim /opt/cm-5.15.1/etc/cloudera-scm-agent/config.ini
    将server_host改为CMS所在的主机名即cdh01

  2. 建立数据库:将下载好的mysql-connector-java-5.1.43.jar
    放到/opt/cm-5.15.0/share/cmf/lib
    (注意去掉版本号)

3.1.5同步解压配置的CM文件到其他节点
将解压后的cloudera-manager-centos7-cm5.15.1_x86_64.tar.gz 的两个文件拷贝到其他节 点的相同路径上,包括第4步修改后的config.ini
scp -r /opt/cloudera cm-5.15.1 root@cdh02:/opt

3.1.6将资源文件拷贝到parce-repo文件下
cp CDH-5.15.1-1.cdh5.15.1.p0.4-el7.parcelCDH-5.15.1-1.cdh5.15.1.p0.4-el7.parcel.sha
manifest.json /opt/cloudera/parcel-repo
( 注意:其中CDH-5.11.1-1.cdh5.11.1.p0.18-el5.parcel.sha1 后缀要把1去掉 )

3.1.7 所有节点创建parcels目录
mkdir -p /opt/cloudera/parcels
chown cloudera-scm:cloudera-scm /opt/cloudera/parcels

3.1.8 初始化数据库

  1. 在mysql数据库下执行以下命令,给操作的用户向下授权的权限。
    use mysql;
    GRANT ALL PRIVILEGES ON . TO ‘root’@‘cdh01’ IDENTIFIED BY ‘rooLiu@123’ WITH GRANT OPTION;
    flush privileges;

  2. /opt/cm-5.15.1/share/cmf/schema/scm_prepare_database.sh mysql -hcdh01-uroot -p --scm-host cdh01 scmdbn scmdbu scmdbp


说明:这个脚本就是用来创建和配置CMS需要的数据库的脚本。各参数是指:
mysql:数据库用的是mysql,如果安装过程中用的oracle,那么该参数就应该改为oracle。
-hmaster:数据库建立在hadoop1主机上面。也就是主节点上面。
-uroot:root身份运行mysql。-123456:mysql的root密码是***。
–scm-host master:CMS的主机,一般是和mysql安装的主机是在同一个主机上。
最后三个参数是:数据库名,数据库用户名,数据库密码

问题描述:没有权限
在这里插入图片描述

执行:
use mysql;
GRANT ALL PRIVILEGES ON . TO ‘root’@‘cdh01’ IDENTIFIED BY ‘rooLiu@123’ WITH GRANT OPTION;
flush privileges;

问题2:密码强度修改 强 或者 弱
在这里插入图片描述

执行:
密码强度改弱
set global validate_password_policy=0
set global validate_password_length=3
3.1.9 配置节点启动全局变量命令

  1. 配置主节点CLOUDERA SCM SERVER 启动全局变量
    执行命令如下:
    cp /opt/cm-5.15.1/etc/init.d/cloudera-scm-server /etc/init.d
    修改变量路径
    vim /etc/init.d/cloudera-scm-server
    将CMF_DEFAULTS=${CMF_DEFAULTS:-/etc/default}改为=/opt/cm-5.15.1/etc/default

  2. 配置从节点CLOUDERA SCM AGAENT 启动全局变量
    cp /opt/cm-5.15.1/etc/init.d/cloudera-scm-agent /etc/init.d
    修改变量路径
    vim /etc/init.d/cloudera-scm-agent
    将CMF_DEFAULTS=${CMF_DEFAULTS:-/etc/default}改为=/opt/cm-5.15.1/etc/default

  3. 启动server 和agent

service cloudera-scm-server start
service cloudera-scm-server on

service cloudera-scm-agent start
chkconfig cloudera-scm-agent on #开机自启

问题:数据库初始化时失败
在这里插入图片描述

解决方法:在mysql数据库下执行以下命令,给操作的用户向下授权的权限。

GRANT ALL PRIVILEGES ON . TO ‘root’@‘cdh01’ IDENTIFIED BY’1234’ WITH GRANT OPTION;

重启mysql服务:service mysqld restart

四.CDH集群安装
4.1配置集群主机
ClouderaManager浏览器默认管理账号:
http://cdh01:7180
User:admin
Password:admin
首次登陆进入集群安装向导:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

第一个警告:
Cloudera 建议将 /proc/sys/vm/swappiness 设置为 10。当前设置为 60。使用 sysctl 命令在运行时更改该设置并编辑 /etc/sysctl.conf 以在重启后保存该设置。
echo 10 > /proc/sys/vm/swappiness
这样操作重启机器还是还原,要永久改变
vim /etc/sysctl.conf
vm.swappiness=10

第二个警告,提示执行命令:
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
执行完毕,重启后,警告依然,暂时不处理

4.2 安装服务
在这里插入图片描述

注意:这里开始,所有的服务,既可以通过下述自助来安装一系列服务;也可以手动在CM管理页面一个一个添加
之前安装时选择一次性安装一系列服务,由于没有新建hue数据库导致hue服务安装不上,所以后面选择一个一个安装,在前期搭建环境时这样更好,起码出现问题可以锁定是哪个服务。

4.3 分步安装服务步骤为:
点击页面上Cloudera MANAGER,回到主节点页面
在这里插入图片描述

出现cluster1群集1,点击下拉,选择“添加服务”

在这里插入图片描述
在这里插入图片描述

HDFS,Hive, HUE,Oozie, YARN, ZOOKEEPER是核心Hadoop的几个服务,分别安装,由于这些节点存在依赖关系,需注意先后顺序(当然,安装时CM会警告),顺序是:
Zookeeper, hdfs, yarn, hive, oozie, hue

注意:在安装hive, hue和oozie时,要将MySQL驱动jar拷贝到相应位置
CM
第一步:
cp /etc/app/mysql/mysql-connector-java.jar
/opt/cloudera/parcels/CDH-5.15.1-1.cdh5.15.1.p0.4/lib/hive/lib

cp /etc/app/mysql/mysql-connector-java.jar /var/lib/oozie

第二步:
scp -r /etc/app/mysql/mysql-connector-java.jar
root@cdh02: /opt/cloudera/parcels/CDH-5.15.1-1.cdh5.15.1.p0.4/lib/hive/lib

scp -r /etc/app/mysql/mysql-connector-java.jar root@cdh02:/var/lib/oozie

依次发送给其他节点

按需安装完服务后,可在集群界面(即Cloudera MANAGER)看一下集群的状况 这里写图片描述

o 绿色:良好
o 黄色:运行不良
o 红色:存在问题
4.4 查看日志
CM虽然配置麻烦,但日志齐全,每个操作,都能找到相应的运行日志,日志对于配合、调试和查看任务进度都有很大的帮助
在这里插入图片描述

五.Q&A
5.1 hdfs
1, Hadoop Datanode节点无法启动(All directories in dfs.data.dir are invalid)
这是data目录没有权限
解决:chmod -R 777 dfs

  1. 执行 hadoop jar时候 输出目录可能需要手动添加和设置权限,否则执行时候会提示
    NFS service is already running on this host. Please stop the NFS service running on this host before attempting to start the NFS Gateway role
    解决:
    service nfs stop
    service nfs status

3.Permission denied: user=root, access=WRITE, inode="/":hdfs:supergroup:drwxr-xr-x
权限问题,需要修改目标操作的权限,或者修改操作的用户。
可以用 hdfs dfs -ls / 查看各个目录的所属用户
解决:如果目录或文件所属用户不对,需要修改: hdfs dfs -chown -R user:group 目标文件
5.2 hive
1,Version information not found
解决:
打开页面>hive.metastore.schema.verification 设置为false 去掉勾选

2,javax.jdo.JDODataStoreException: Required table missing : “VERSION” in Catalog “” Schema “”. DataNucleus requires this table to perform its persistence operations. Either your MetaData is incorrect, or you need to enable “datanucleus.autoCreateTables”
解决:
打开页面>datanucleus.autoCreateSchema 设置为true就是勾选就可以
5.3 hue
1,Unexpected error. Unable to verify database connection
查看日志报错是:ImportError: libxslt.so.1: cannot open shared object file: No such file or directory
原因是centos缺少库文件,执行如下命令即可
解决:
yum install krb5-devel cyrus-sasl-gssapi cyrus-sasl-deve libxml2-devel libxslt-devel mysql mysql-devel openldap-devel python-devel python-simplejson sqlite-devel
5.4 mysql驱动使用总结
使用到mysql驱动的几处:

  1. /usr/share/java
  2. /opt/cm-5.15.0/share/cmf/lib
  3. /opt/cloudera/parcels/CDH-5.15.0-1.cdh5.15.0.p0.21/lib/hive/lib
  4. /var/lib/oozie

注意:各个节点都要有,且去除版本号(mysql-connector-java.jar)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

unix_sky

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值