共计 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
再次启动,没有问题,继续
完成
正文完
发表至: linux
2019-08-03