离线搭建CDH6X图解教程

6次阅读

共计 8268 个字符,预计需要花费 21 分钟才能阅读完成。

前言

最近大数据井喷式爆发,很多公司都是从零开始,需要搭建大数据平台,很多公司选择了用 CDH 搭建大数据平台,CDH 相对于手动搭建来说,他有安装升级方便,自动下载以来软件包,与 hadoop 生态系统包自动匹配等优点

环境准备

系统环境 CentOS7

见前面文章:服务器 CentOS 7.X 系统安装配置图解教程(虚拟机通用)https://segmentfault.com/a/1190000019815245?share_user=1030000019541827

ssh 免登录设置

见前面的文章:ssh 配置免密登录手动版和脚本版
https://segmentfault.com/a/1190000019919600?share_user=1030000019541827

关闭防火墙

CentOS7 防火墙命令
firewall-cmd --state                 查看防火墙
systemctl stop firewalld.service     关闭防火墙
systemctl disable firewalld.service  永久关闭防火墙

关闭 selinux

setenforce 0(临时生效)修改 /etc/selinux/config 下的 SELINUX=disabled(重启后永久生效)

手动时钟同步

因为离线环境,没装 ntp 所以使用手动的方法进行时钟同步
xshell 有发送命令到所有会话,发送到三台机器时间就统一了,很方便
重启失效修改系统时间命令:date -s "2019-08-3 11:14:00"

重启不失效的修改系统时间的命令:date -s "2019-08-3 11:16:00" && hwclock --systohc 

yum 源仓库配置

见前面的文章:创建 yum 源仓库和其他服务器指向 yum 源仓库 (局域网 yum 源仓库) 图解教程
https://segmentfault.com/a/1190000019906869?share_user=1030000019541827

安装包准备

CM6 RPM 官网:https://archive.cloudera.com/cm6/6.0.1/redhat7/yum/RPMS/x86_64/
需要下载该链接下的所有 RPM 文件
然后放入 /upload/cloudera-repos/ 文件夹下,将 jdk 文件(oracle-j2sdk1.8-1.8.0+update141-1.x86_64.rpm)单独拿出来随便放一个目录我们后面单独装 jdk,我是放入了 opt 目录下

ASC 文件:https://archive.cloudera.com/cm6/6.0.1/allkeys.asc
同时还需要下载一个 asc 文件,同样保存到 cloudera-repos 目录下

要求使用 5.1.26 以上版本的 jdbc 驱动,mysql-connector-java-5.1.47.tar.gz
https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.47.tar.gz

CDH6 Parcels:https://archive.cloudera.com/cdh6/6.0.1/parcels/
需要下载 CDH-6.0.1-1.cdh6.0.1.p0.590678-el7.parcel 和 manifest.json 这两个文件

mysql 安装包下载
https://dev.mysql.com/downloads/mysql/
根据系统版本下载 

回头会整理把所有的打包上传到网盘方便大家统一下载

安装

配置 JDK 环境

cd /opt     (我是将 jdk 放入了 opt 目录,具体进入哪个目录看 jdk 的 rpm 文件放在了哪里)

rpm -ivh oracle-j2sdk1.8-1.8.0+update141-1.x86_64.rpm

cd /usr/java 用 ll 进行查看会发现有个 jdk1.8.0_141-cloudera 文件

然后配置 java 环境变量
vim /etc/profile(新装的 CentOS7 系统可能没有 vim 命令,我习惯了 vim 所以提前安装了,可以用 vi 或者安装 vim 工具)在文件末尾添加
export JAVA_HOME=/usr/java/jdk1.8.0_141-cloudera
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile
java -version

环境配置成功

配置 Cloudera Manager yum 库

安装 httpd 和 createrepo
yum -y install httpd createrepo

启动 httpd 服务并设置开机自启动:systemctl start httpd
systemctl enable httpd

然后进入到前面准备好的存放 Cloudera Manager RPM 包的目录 cloudera-repos 下:cd /upload/cloudera-repos/
生成 RPM 元数据:createrepo .
提示:createrpo 点  后面有个点

然后将 cloudera-repos 目录移动到 httpd 的 html 目录下:mv cloudera-repos /var/www/html/
确保可以通过浏览器查看到这些 RPM 包:

接着在 Cloudera Manager Server 主机上创建 cm6 的 repo 文件(三台机器):cd /etc/yum.repos.d
vim cloudera-manager.repo

添加如下内容:

[cloudera-manager]
name=Cloudera Manager 6.0.1
baseurl=http://192.168.66.61/cloudera-repos/
gpgcheck=0
enabled=1
保存,退出, 然后执行 yum clean all && yum makecache 命令:安装 Cloudera Manager Server

安装 Cloudera Manager Server

这一步只需要在 CM Server 节点上操作。执行下面的命令:yum install cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server

会在 opt 目录下生成 cloudera 文件夹

Cloudera Manager Server 安装完成后,进入到本地 Parcel 存储库目录:cd /opt/cloudera/parcel-repo
将第一部分下载的 CDH Parcel 文件(CDH-6.0.1-1.cdh6.0.1.p0.590678-el7.parcel 和 manifest.json)上传至该目录下,然后执行命令生成 sha 文件:
sha1sum CDH-6.0.1-1.cdh6.0.1.p0.590678-el7.parcel | awk '{print $1}' > CDH-6.0.1-1.cdh6.0.1.p0.590678-el7.parcel.sha
然后执行下面的命令修改文件所有者:chown -R cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo/*
最终 /opt/cloudera/parcel-repo 目录内容如下:

配置 mysql jdbc 驱动

在所有节点,从前面下载好的 mysql-connector-java-5.1.47.tar.gz 包中解压出 mysql-connector-java-5.1.47-bin.jar 文件,将 mysql-connector-java-5.1.47-bin.jar 文件上传至 CM Server 节点上的 /usr/share/java/ 目录下并重命名为 mysql-connector-java.jar(如果 /usr/share/java/ 目录不存在,需要手动创建):tar -zxvf mysql-connector-java-5.1.47.tar.gz
mkdir -p /usr/share/java/
cp mysql-connector-java-5.1.47-bin.jar /usr/share/java/mysql-connector-java.jar

Mysql 安装

安装新版 mysql 前,需将系统自带的 mariadb-lib 卸载
[root@node1 java]# rpm -qa|grep mariadb
mariadb-libs-5.5.44-2.el7.centos.x86_64
[root@node1 java]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7.centos.x86_64
[root@node1 java]# rpm -qa|grep mariadb

解压安装包:新建一个目录将安装包上传到该目录下然后解压
tar -xvf mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar 

解压后的目录如下图所示

开始安装

①mysql-community-common-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-common-5.7.26-1.el7.x86_64.rpm

②mysql-community-libs-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.26-1.el7.x86_64.rpm

③mysql-community-client-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.26-1.el7.x86_64.rpm

④mysql-community-server-5.7.26-1.el7.x86_64.rpm
在安装之前需要检查 libaio 是否,我这个是已经有了,若没有需要在网上下载
[root@node1 mysql]# rpm -qa|grep libaio
libaio-0.3.109-13.el7.x86_64
[root@node1 mysql]# 

安装 server
rpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm
发现报错说缺少 net-tools 依赖

如果联网可以安装依赖,此时我们暂时不理强制安装,命令如下
rpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm --force --nodeps

初始化数据库
// 初始化,执行生会在 /var/log/mysqld.log 生成随机密码
[root@node1 mysql]# mysqld --initialize
[root@node1 log]# cat /var/log/mysqld.log 

更改 mysql 数据库目录的所属用户及其所属组
chown mysql:mysql /var/lib/mysql -R
启动 mysql:systemctl start mysqld.service
查看 mysql:systemctl status mysqld.service

登录到 mysql,更改 root 用户的密码
查看初始密码:grep 'temporary password' /var/log/mysqld.log
可以发现与上面生成的密码完全一致,这个命令更直白方便一点

登录:mysql -uroot -p
复制密码输入

更改密码为 123456789
set password=password('123456789');

退出,重新登录查看密码修改是否有问题
mysql -uroot -p123456789   

创建 CDH 所需要的数据库

根据所需要安装的服务参照下表创建对应的数据库以及数据库用户,数据库必须使用 utf8 编码,创建数据库时要记录好用户名及对应密码:
服务名                                 数据库名     用户名
Cloudera Manager Server                scm         scm
Activity Monitor                       amon        amon
Reports Manager                        rman        rman
Hue                                    hue         hue
Hive Metastore Server                  metastore   hive
Sentry Server                          sentry      sentry
Cloudera Navigator Audit Server        nav         nav
Cloudera Navigator Metadata Server     navms       navms
先创建 4 个数据库及对应用户,操作步骤如下

mysql> CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)

mysql> CREATE DATABASE amon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)

mysql> CREATE DATABASE rman DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)

mysql> CREATE DATABASE metastore DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)

然后为数据库授权设置密码并 FLUSH
mysql> GRANT ALL ON scm.* TO 'scm'@'%' IDENTIFIED BY '123456789';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> GRANT ALL ON amon.* TO 'amon'@'%' IDENTIFIED BY '123456789';
Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> GRANT ALL ON rman.* TO 'rman'@'%' IDENTIFIED BY '123456789';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> GRANT ALL ON metastore.* TO 'hive'@'%' IDENTIFIED BY '123456789';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

查看授权是否正确
mysql> SHOW GRANTS FOR 'scm'@'%';
+----------------------------------------------+
| Grants for scm@%                             |
+----------------------------------------------+
| GRANT USAGE ON *.* TO 'scm'@'%'              |
| GRANT ALL PRIVILEGES ON `scm`.* TO 'scm'@'%' |
+----------------------------------------------+
2 rows in set (0.00 sec)

mysql> SHOW GRANTS FOR 'amon'@'%';
+------------------------------------------------+
| Grants for amon@%                              |
+------------------------------------------------+
| GRANT USAGE ON *.* TO 'amon'@'%'               |
| GRANT ALL PRIVILEGES ON `amon`.* TO 'amon'@'%' |
+------------------------------------------------+
2 rows in set (0.00 sec)

mysql> SHOW GRANTS FOR 'rman'@'%';
+------------------------------------------------+
| Grants for rman@%                              |
+------------------------------------------------+
| GRANT USAGE ON *.* TO 'rman'@'%'               |
| GRANT ALL PRIVILEGES ON `rman`.* TO 'rman'@'%' |
+------------------------------------------------+
2 rows in set (0.00 sec)

mysql> SHOW GRANTS FOR 'hive'@'%';
+-----------------------------------------------------+
| Grants for hive@%                                   |
+-----------------------------------------------------+
| GRANT USAGE ON *.* TO 'hive'@'%'                    |
| GRANT ALL PRIVILEGES ON `metastore`.* TO 'hive'@'%' |
+-----------------------------------------------------+
2 rows in set (0.00 sec)

设置 Cloudera Manager 数据库

Cloudera Manager Server 包含一个配置数据库的脚本。mysql 数据库与 CM Server 是同一台主机时命令为
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm root
不同台时命令为:/opt/cloudera/cm/schema/scm_prepare_database.sh mysql -h192.168.31.249 --scm-host 192.168.31.245 scm root

安装 CDH 节点

启动 Cloudera Manager Server 服务
systemctl start cloudera-scm-server

然后等待 Cloudera Manager Server 启动,可能需要稍等一会儿,可以通过命令
tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log 去监控服务启动状态。当看到 INFO WebServerImpl:com.cloudera.server.cmf.WebServerImpl: Started Jetty server. 日志打印出来后,说明服务启动成功,可以通过浏览器访问 Cloudera Manager WEB 界面了。

访问 Cloudera Manager WEB 界面开始配置

打开浏览器,访问地址:http://192.168.66.61:7180,默认账号和密码都为 admin:

登录欢迎界面,点击继续

接受许可条款,点击继续

我选的是免费版,然后点击继续

群集安装

欢迎界面点击继续

输入主机名开始搜索,选择三个主机点击继续

选择自定义存储库,用我们配置的 CDH 仓库

JDK 我们安装过了,此处不要勾选,不用再次安装

输入三台主机的 root 密码,统一一个密码

上面点击继续会自动安装 自动跳到 parcel 自用继续安装

检查主机正确性
根据提示修改没有配置准确的配置

更改 linux swappiness
查看你的系统里面的 swappiness cat /proc/sys/vm/swappiness
临时修改 swappiness 值为 10  sysctl vm.swappiness=10
永久修改 vim /etc/sysctl.conf  添加 vm.swappiness=10

禁用透明界面大压缩
根据提示运行运行“echo never > /sys/kernel/mm/transparent_hugepage/defrag”和“echo never > /sys/kernel/mm/transparent_hugepage/enabled”添加命令到 rc.local vim /etc/rc.local

再次检查

群集设置

选择自定义服务,勾选自己需要的业务

分配服务的节点

验证数据库,点击继续

审核更改目录,这里我选择默认的了

创建 /tmp 目录报错

解决方法 su - hdfs

再次启动,没有问题,继续

完成

正文完
 0