Centos7.5离线搭建CDH6.3
Contents
环境: centos 7.5,CDH 6.3
本文是在Centos7.5下完全离线部署CDH6
公司的CDH为5.X版本,CDH5和CDH6的差异还是有些的。之前搭建过CDH5,但每次多多少少会遇到一些问题,所以这次搭建记录一下。
官方文档地址:cloudera
参考资料:blog
1.搭建前的环境准备
环境要求
操作系统
-
软件依赖 • Python 2.7+,不支持Python 3(安装HUE需要)
• perl
• python-psycopg2 2.5.4+(安装HUE需要)
• iproute package ○ RHEL7:iproute-3.10 ○ RHEL6:iproute-2.6
说明:通常这部分依赖环境操作系统已经自带,不需要手动安装。
系统版本
• RHEL系列:6.10,6.9,6.8,7.2,7.3,7.4,7.5
• SELS:12 SP3,12 SP2
• Ubuntu系列:16.04 LTS
文件系统
• ext3
• ext4
• XFS
• S3
Kudu仅支持ext4和XFS文件系统,不支持NFS和NAS存储。
文件访问记录
Cloudera建议禁用该项功能,可以提升磁盘性能。
配置/etc/fstab文件:/dev/sdb1 /data1 ext4 defaults,noatime 0 0
不重启即生效命令:mount -o remount /data1
nproc配置:
配置文件位置/etc/security/limits.conf,Cloudera Manager通常会自动配置该文件,但是该项配置可能会被/etc/security/limits.d/目录下的文件覆盖掉。确保nproc限制设置的足够高,比如65536或者262144。
数据库要求
Cloudera Manager和CDH内置嵌入式PostgreSQL数据库,用于非生产环境。生产环境不支持PostgreSQL数据库,必须为集群配置专用外部数据库。
注意:
• 数据库需要使用UTF8编码。对于MySQL和MariaDB,必须使用UTF8编码,而不是utf8mb4;
• 对于MySQL5.7,必须要额外安装MySQL-shared-compat或者MySQL-shared包
版本要求:
• MySQL:5.7
• MariaDB:5.5,10.0
• PostgreSQL:8.4,9.2,9.4
• Oracle:12C
Java要求
仅支持Oracle 64位JDK8,不支持JDK7,JDK9。
版本要求:最低要求1.8u31,推荐1.8u74,1.8u91,1.8u102,1.8u111,1.8u121,1.8u131,1.8u162
网络以及安全要求
• CDH不支持IPv6,操作系统必须要禁用IPv6
• 集群主机必须正确配置/etc/hosts文件
○ 应该包含集群中所有主机的主机名和对应IP地址
○ 不能含有大写主机名
○ 不能有重复的IP地址
• SELinux不得阻止Cloudera Manager或者CDH的操作
• 防火墙必须被禁用或者放开CDH集群所使用的端口
• 对于RHEL或者CENTOS,/etc/sysconfig/network文件中必须包含正确的主机名
浏览器要求
• Chrome:63+
• Firefox:59+
• Safari
• IE:11+
• Edge:41+
所使用的端口:
官方文档介绍:CDH集群端口占用列表
组件版本
|
|
安装之前
网络相关配置
• 设置唯一主机名:hostnamectl set-hostname new-hostname
• 配置/etc/hosts
• 检测主机名与IP是否正确对应
禁用防火墙
• 停止防火墙:systemctl stop firewalld
• 关闭防火墙开机自启动:systemctl disable firewalld
设置SELinux执行模式
1. 检查SELinux模式:getenforce,如果输出permissive或者disabled,你可以跳过该步骤,如果输出enforcing,则需要继续下面的操作步骤。
2. 编辑/etc/selinux/config(在某些操作系统可能是/etc/sysconfig/selinux)文件,将SELINUX=enforcing修改为SELINUX=permissive,保存该文件。
3. 重启操作系统生效或者执行:setenforce 0临时禁用SELinux。
4. 当CDH安装部署完成之后,可以重新启用SELinux,修改SELinux配置文件,然后执行:setenforce 1命令。
配置局域网内yum源
安装Cloudera Manager需要很多依赖包,强烈建议搭建一个局域网内yum源,在集群中某一个节点上部署即可。 可参考我之前的文章:CentOS7下使用FTP搭建局域网内Yum源 配置NTP服务
集群中所有节点的时间必须要保持同步,可以选择集群中其中一个节点作为ntp服务端,其余节点作为客户端。
• 安装ntp软件:yum -y install ntp
• 配置ntp服务端/etc/ntp.conf
• 配置ntp客户端/etc/ntp.conf
• 启动ntp服务:systemctl start ntpd
• 配置开机自启动:systemctl enable ntpd
• 同步客户端时间与服务端时间相同:ntpdate -u <ntp-server>
具体配置说明可参考我之前的文章:环境准备-配置ntp时间同步 安装jdk8 集群所有节点都要安装。 可参考我之前的文章:环境准备-JDK1.8安装 安装mysql5.7 只需要在集群中某一个节点上安装即可。 可参考我之前的文章:CentOS7下使用RPM安装MySQL5.7 集群性能优化相关配置 集群所有节点都需要进行这些配置。 可参考我之前的文章:CDH6集群性能调优(操作系统层面) 环境准备部分完毕
来自 https://www.staroon.dev/2018/12/01/CDH6BeforeInstall/
- CDH6需要java 1.8版本
- 需要安装Mysql
1.添加host /etc/hosts Eric1 192.168.2.10 2,禁用防火墙 Systemctl stop firewalld 关闭开机自启 Systemctl disalbe firewalld
安装NTP 集群中所有节点的时间必须要保持同步,可以选择集群中其中一个节点作为ntp服务端,其余节点作为客户端。 • 安装ntp软件:yum -y install ntp • 配置ntp服务端/etc/ntp.conf • 配置ntp客户端/etc/ntp.conf • 启动ntp服务:systemctl start ntpd • 配置开机自启动:systemctl enable ntpd • 同步客户端时间与服务端时间相同:ntpdate -u
来自 https://www.staroon.dev/2018/12/01/CDH6BeforeInstall/
安装java1.8 1.安装java环境 环境存放到 cd /opt/ 下载 wget https://repo.huaweicloud.com/java/jdk/8u202-b08/jdk-8u202-linux-x64.tar.gz (这里是用华为的镜像地址下载,oracle需要登陆账号) 解压到指定目录 tar -zxvf jdk-8u202-linux-x64.tar.gz vim ~/.bashrc 添加环境变量如下 export JAVA_HOME=/opt/jdk1.8.0_202 ## 这里要注意目录要换成自己解压的jdk 目录 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH 立即生效 source ~/.bashr 验证 java -version
安装数据库 yum install mariadb-server -y systemctl start mariadb #启动MariaDB systemctl stop mariadb #停止MariaDB systemctl restart mariadb #重启MariaDB systemctl enable mariadb #设置开机启动
这里安装maridb
数据库配置 CDH官方给的有一份推荐的MySQL的配置内容:
|
|
下载CM6 RPM包 https://archive.cloudera.com/cm6/6.3.1/redhat7/yum/RPMS/x86_64/ 下载以下四个包放在 自己新建的/opt/cloudera-repos
cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm 2019-10-11 08:42 9.00MB cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm 2019-10-11 08:42 1.00GB cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm 2019-10-11 08:42 11.00KB cloudera-manager-server-db-2-6.3.1-1466458.el7.x86_64.rpm 2019-10-11 08:42 10.00KB oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm 2019-10-11 08:42 176.00MB
配置Cloudera Manager yum库 注意:不要尝试使用FTP搭建CM的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 .
[root@bogon cloudera-repos]# createrepo . Spawning worker 0 with 1 pkgs Spawning worker 1 with 1 pkgs Spawning worker 2 with 1 pkgs Spawning worker 3 with 1 pkgs Workers Finished Saving Primary metadata Saving file lists metadata Saving other metadata Generating sqlite DBs Sqlite DBs complete
然后将cloudera-repos目录移动到httpd的html目录下: mv cloudera-repos /var/www/html/ 确保可以通过浏览器查看到这些RPM包
http://192.168.2.106/cloudera-repos/
接着在Cloudera Manager Server主机上创建cm6的repo文件(要把哪个节点作为Cloudera Manager Server节点,就在这个节点上创建repo文件): cd /etc/yum.repos.d vim cloudera-manager.repo 添加如下内容:
1. [cloudera-manager]
2. name=Cloudera Manager 6.0.1
3. baseurl=http://cdh601/cloudera-repos/
4. gpgcheck=0
5. enabled=1
保存,退出,然后执行yum clean all && yum makecache命令:
[root@bogon yum.repos.d]# yum clean all && yum makecache
已加载插件:fastestmirror
正在清理软件源: base cloudera-manager extras updates
Cleaning up everything
Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos
Cleaning up list of fastest mirrors
已加载插件:fastestmirror
base | 3.6 kB 00:00:00
cloudera-manager | 2.9 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
(1/13): cloudera-manager/filelists_db | 102 kB 00:00:00
(2/13): cloudera-manager/primary_db | 6.5 kB 00:00:00
(3/13): cloudera-manager/other_db | 864 B 00:00:00
(4/13): base/7/x86_64/group_gz | 165 kB 00:00:00
(5/13): extras/7/x86_64/primary_db | 153 kB 00:00:01
(6/13): extras/7/x86_64/other_db | 100 kB 00:00:00
(7/13): base/7/x86_64/other_db | 2.6 MB 00:00:02
(8/13): extras/7/x86_64/filelists_db | 207 kB 00:00:02
(9/13): updates/7/x86_64/other_db | 368 kB 00:00:00
(10/13): updates/7/x86_64/primary_db | 5.9 MB 00:00:07
(11/13): updates/7/x86_64/filelists_db | 3.3 MB 00:00:07
(12/13): base/7/x86_64/filelists_db | 7.3 MB 00:00:14
(13/13): base/7/x86_64/primary_db | 6.0 MB 00:01:01
Determining fastest mirrors
- base: mirror.lzu.edu.cn
- extras: mirror.lzu.edu.cn
- updates: mirror.bit.edu.cn 元数据缓存已建立
安装CM yum install cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server
配置本地Parcel存储库 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配置 /etc/my.cnf
启动mysql 配置开机自启
systemctl start mariadb #启动MariaDB systemctl enable mariadb
查看端口 安装netstat yum install net-tools
配置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
来自 https://www.staroon.dev/2018/12/01/CDH6Install/
创建CDH所需要的数据库 根据所需要安装的服务参照下表创建对应的数据库以及数据库用户,数据库必须使用utf8编码,创建数据库时要记录好用户名及对应密码:
我这里就先创建4个数据库及对应用户: CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; CREATE DATABASE amon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; CREATE DATABASE rman DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; CREATE DATABASE oozie DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; CREATE DATABASE hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE metastore DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; GRANT ALL ON scm.* TO ‘scm’@'%’ IDENTIFIED BY ‘scm’; GRANT ALL ON amon.* TO ‘amon’@'%’ IDENTIFIED BY ‘amon’; GRANT ALL ON rman.* TO ‘rman’@'%’ IDENTIFIED BY ‘rman’; GRANT ALL ON metastore.* TO ‘hive’@'%’ IDENTIFIED BY ‘hive’;
GRANT ALL ON oozie.* TO ‘oozie’@'%’ IDENTIFIED BY ‘oozie’; GRANT ALL ON hue.* TO ‘hue’@'%’ IDENTIFIED BY ‘hue’;
FLUSH PRIVILEGES;
SHOW GRANTS FOR ‘scm’@'%'; SHOW GRANTS FOR ‘amon’@'%'; SHOW GRANTS FOR ‘rman’@'%'; SHOW GRANTS FOR ‘hive’@'%';
来自 https://www.staroon.dev/2018/12/01/CDH6Install/
设置Cloudera Manager 数据库 Cloudera Manager Server包含一个配置数据库的脚本。 • mysql数据库与CM Server是同一台主机 执行命令:/opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm
mysql数据库与CM Server不在同一台主机上 执行命令:/opt/cloudera/cm/schema/scm_prepare_database.sh mysql -h –scm-host scm scm
来自 https://www.staroon.dev/2018/12/01/CDH6Install/
[root@eric1 schema]# /opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm Enter SCM password: JAVA_HOME=/opt/jdk1.8.0_202 Verifying that we can write to /etc/cloudera-scm-server Creating SCM configuration file in /etc/cloudera-scm-server Executing: /opt/jdk1.8.0_202/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 Unable to login using supplied username/password. [ main] DbCommandExecutor ERROR Error when connecting to database. java.sql.SQLException: Access denied for user ‘scm’@‘localhost’ (using password: YES) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:965)[mysql-connector-java.jar:5.1.47]
安装CDH节点 启动Cloudera Manager Server服务 systemctl start cloudera-scm-server
wget http://192.168.1.171/cloudera-repos/oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm rpm -ivh oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm
export JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera ## 这里要注意目录要换成自己解压的jdk 目录 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH
然后等待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界面了。
查看本地端口 netstat
访问Cloudera Manager WEB界面 打开浏览器,访问地址:http://<server_host>:7180,默认账号和密码都为admin:
来自 https://www.staroon.dev/2018/12/01/CDH6Install/
选择安装的机器。
rm /usr/bin/host
因为只有一台机器这里选择基础安装
自定义角色分配,因为只有一台,这里按照默认来,将必须组件分到一台上面
将之前讲好的mysql数据库信息填进去。
等待设置成功
由于只有一台机器。中间因为GC,导致步骤失败多次,多试几遍就好