前言
最近在公司搭建了一个 CDH 测试环境集群,从官网得知 CDH 在 6.3.3 版本开始不再提供免费版本了,于是选择了 6.2.x 版本进行安装,这里记录一下正确的离线安装
步骤,避免下次安装时又踩坑。
CM 和 CDH 简介
在安装之前先要理清一下 CM(Cloudera Manager)和 CDH(Cloudera Distribution Hadoop)的区别。
- CDH
CDH 是由 Cloudera 公司发行的一套 hadoop 软件包,里面包含了hadoop、hdfs、yarn、hive、spark
等等一系列稳定的
、版本兼容的
大数据套件。 - CM
CM 也是 Cloudera 公司开发的一套用于管理和监控 CDH 集群的软件,只要通过 CM 提供的 web 管理页面操作就可以轻松的管理和监控 CDH 集群环境。
当然也可以手动使用 CDH 来搭建集群,在服务器数量较少的情况下还可以接受,但是试想下如果集群有上百台或上千台机器,每个机器都手动安装,这是人做的事吗?
安装前准备
注:不知道什么时候开始CDH官网已经把离线下载资源入口都关掉了,不过好在我之前下载的文件都还在,现在分享到
google driver
里了,链接:https://drive.google.com/drive/folders/1KZLRvYeSeygmPkoJWsNhQvLK4MgPiR5D?usp=sharing
服务器
准备好 N 台服务器,我这里用了 3 台机器,分别如下:
IP | CPU | 内存 | 硬盘 | 系统 |
---|---|---|---|---|
192.168.200.135 | 4 核 | 16G | 50G | CentOS7 |
192.168.200.136 | 4 核 | 16G | 50G | CentOS7 |
192.168.200.137 | 4 核 | 16G | 50G | CentOS7 |
注
:所有机器的 root 用户登录密码要保持一致
域名设置
为三台机器设置好对应的域名,并在hosts
中做好对应的 IP 解析。
IP | 域名 |
---|---|
192.168.200.135 | master.cdh |
192.168.200.136 | node1.cdh |
192.168.200.137 | node2.cdh |
修改所有机器的/etc/hosts
文件,在后面加入以下内容:
1 | 192.168.200.135 master.cdh |
分别设置机器的主机名,执行以下命令
- 192.168.200.135
1
hostnamectl set-hostname master.cdh
- 192.168.200.136
1
hostnamectl set-hostname node1.cdh
- 192.168.200.137
1
hostnamectl set-hostname node2.cdh
关闭防火墙和 SELinux
关闭所有机器的防火墙和 SELinux,执行以下命令:
- 关闭防火墙
1
2systemctl stop firewalld
systemctl disable firewalld - 关闭 SELinux
编辑/etc/selinux/config
文件,将SELINUX=enforcing
修改为SELINUX=permissive
。
执行命令setenforce 0
临时生效,或者重启机器永久生效。
搭建本地 yum 源
在master
节点上搭建本地源用于离线安装CM
- 使用
httpd
作为本地源服务1
2yum install -y httpd
systemctl start httpd 下载 CM 离线包
1
wget https://archive.cloudera.com/cm6/6.2.1/repo-as-tarball/cm6.2.1-redhat7.tar.gz
下载慢的话可以用
ProxeeDown
或者IDM
这类高并发下载器进行下载,再复制到master
节点。
还是下载不动的话只能挂梯子下了。解压到对应目录
1
2mkdir -p /var/www/html/cloudera-repos/cm6
tar xvfz cm6.2.1-redhat7.tar.gz -C /var/www/html/cloudera-repos/cm6 --strip-components=1验证
浏览器访问http://master.cdh/cloudera-repos/cm6
,安装成功的话可以看到下图:源配置
只需要在master.cdh
节点上配置即可1
touch vi /etc/yum.repos.d/cloudera-repo.repo
在文件中写入以下内容:
1
2
3
4
5[cloudera-repo]
name=cloudera-repo
baseurl=http://master.cdh/cloudera-repos/cm6
enabled=1
gpgcheck=0
安装 JDK
在所有机器
上安装好 jdk,这里我安装的是openjdk1.8
1 | yum install -y java-1.8.0-openjdk-devel |
安装 CM
在master
节点安装 CM
1 | yum install -y cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server |
之前配置好了本地 yum 源,现在通过 yum 安装 CM 会非常的快,直接使用本地的包
安装 MariaDB
在master
节点上安装一个数据库,这里我安装的是MariaDB
1 | yum install -y mariadb-server |
修改数据库配置文件/etc/my.cnf
,使用官方提供的配置进行替换:
1 | [mysqld] |
启动数据库
1 | systemctl start mariadb |
初始化数据库
1 | /usr/bin/mysql_secure_installatio |
初始化root
用户密码和其它一些选项
1 | [...] |
下载 jdbc 驱动
在master
节点上下载,因为 Maria 兼容 MySql ,所以直接下载 mysql 的 jdbc 驱动就行
1 | wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.46.tar.gz |
创建数据库
登录 DB 并创建对应的数据库和用户,用于后续 CM 程序使用
1 | mysql -u root -p |
执行语句
1 | CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; |
确认是否创建成功
1 | MariaDB [(none)]> SHOW DATABASES; |
设置 CM 数据库
官方提供了一个脚本用于初始化 CM 相关的数据,执行如下命令:
1 | /opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm |
执行完成
1 | /opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm |
下载 CDH 离线包
这里要注意的是,根据不同的操作系统需要下载对应的包,浏览器访问https://archive.cloudera.com/cdh6/6.2.1/parcels可以看到所有包,由于我这里用的是CentOS7
,所以选择下载CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel
。
- 下载
1 | wget https://archive.cloudera.com/cdh6/6.2.1/parcels/CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel |
下载慢的话参考上一步的解决办法,下载完成后将文件复制到/opt/cloudera/parcel-repo
目录
- 复制到
/opt/cloudera/parcel-repo
目录
1 | mkdir -p /opt/cloudera/parcel-repo |
- 生成
sha1
签名文件
1 | sha1sum CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel | awk '{ print $1 }' > CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel.sha |
- 修改目录所属用户
1 | chown -R cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo/* |
- 目录最终如下
1 | ls -l /opt/cloudera/parcel-repo/ |
启动 CM 服务
在master
节点上运行以下命令:
1 | systemctl start cloudera-scm-server |
观察日志输出,当看到Started Jetty server.
时表示服务已经启动成功了
1 | tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log |
访问 CM 控制台
浏览器访问http://master.cdh:7180
,账号密码统一为admin
。
开始安装
然后等到安装完成就行了,最终结果如下: