本文主要讲述安装部署CDH集群的前置准备工作以及个人的一些理解。
安装部署CDH集群的前置准备通常包括以下步骤:
1. 安装操作系统并配置IP地址
2. 更改主机名及hosts文件
3. 关闭防火墙
4. 关闭SELinux
5. 配置操作系统的Repo源
6. 配置时钟同步
7. 安装数据库并初始化
8. 安装Mysql的JDBC驱动
9. 创建并配置Cloudera Manager的Repo源
10.安装Oracle JDK
11.安装并初始化Cloudera Manager
下面将分别阐述个人对于以上步骤的一些理解。
文章目录结构:
1. 文档编写目的
2. 安装操作系统并配置IP地址
3. 更改主机名及hosts文件
4. 关闭防火墙
5. 关闭SELinux
6. 配置操作系统的Repo源
7. 配置时钟同步
8. 安装数据库并初始化
9. 安装Mysql的JDBC驱动
10.创建并配置Cloudera Manager的Repo源
11.安装Oracle JDK
12.安装并初始化Cloudera Manager
13.总结
这一步可以参考我之前写的文章《如何在HP dl380 Gen9服务器上安装Redhat 7.2并配置软RAID》、《如何为Hadoop集群服务器绑定双万兆网卡》
需要确保集群服务器之间网络互通,Hadoop不支持IP v6,所以需要关闭IP v6相关服务。如果做了bond,IP地址对应的是bond0绑定的地址。
需要确保hostname唯一,同一个CDH集群内不能存在两个hostname相同的节点,否则会出现异常;另外,hostname不能包含特殊字符,比如“_”,否则安装Cloudera Manager Server时会报找不到主机的异常;如果hostname包含字母,建议全部使用小写字母。
操作系统默认是通过/etc/hosts文件进行IP地址的解析,主要是定义主机名和IP地址的映射关系,如果没配置DNS,集群所有节点都要有至少包含本集群所有节点的hosts文件。
需要确保集群内所有节点能够互相访问,通常情况下,会永久关闭防火墙。如果企业在安全方面要求较为严格的话,比如银行、运营商,可能需要启用主机防火墙,配置相应的防火墙策略,只开放某些机器对某些必要端口的访问权限,比如ssh服务的22端口,agent的7190端口。
SELinux 主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则)
SELinux 有三种工作模式,分别是:
1. enforcing:强制模式。违反 SELinux 规则的行为将被阻止并记录到日志中。
2. permissive:宽容模式。违反 SELinux 规则的行为只会记录到日志中。一般为调试用。
3. disabled:关闭 SELinux。
SELinux 工作模式可以在/etc/selinux/config 中设定。
如果想从 disabled 切换到 enforcing 或者 permissive 的话,需要重启系统。反过来也一样。
enforcing 和 permissive 模式可以通过 setenforce 1|0 命令快速切换,该命令是临时生效,所以如果要永久关闭SELinux,需要同时更改/etc/selinux/config文件内容并执行“setenforce 0”命令。
更多关于SELinux的知识,可参考:
https://baijiahao.baidu.com/s?id=1590170088632157084&wfr=spider&for=pc
1、在线安装,集群所有机器能够访问外网,确认Repo源正常后,可跳过这一步骤。
2、离线安装,需要在CM节点挂载操作系统版本相同的镜像,部署Web Server配置http形式的Repo源并拷贝到集群所有节点,确保集群其他节点能够正常访问,当然,不一定非要在CM节点,只要在集群能够访问的任一节点部署都行。
这一步骤主要是为安装后续的rpm包做准备,包括ntp的包,安装ClouderaManager相关的rpm包以及其底层依赖的rpm包。
部署分布式的Hadoop集群,都必须要做时钟同步,统一集群时间。CDH目前支持ntp和chrony两种时钟同步服务,任选一种进行时钟同步配置即可。如果未配置时钟同步,CM界面会有告警提示,并且可能会导致某些依赖时钟同步的组件异常退出或者无法启动,比如Zookeeper和Kudu,甚至会影响CDH集成的某些服务,比如Kerberos,Kerberos的认证机制包含时间戳,也依赖集群时钟同步,有兴趣可自行了解。
CDH目前支持四种数据库,分别是PostgreSQL、Mysql、Mariadb以及Oracle,其中PostgreSQL不建议用于生产集群,安装数据库后,一般要做初始化操作,主要是设置root密码,允许用户远程登录之类的,然后需要进入数据库,创建CM和CDH组件相关的数据库及用户,并授予相关用户权,用于存储相关组件的数据,比如Oozie、Hive的MetaStore,Navigator的Nas,Nav等等。
我安装比较多的是Mysql和Mariadb,后面以介绍这两类数据库为主。我会专门写一篇相关的文章,请持续关注。
安装JDBC驱动的目的是依赖数据库的保证相关组件能够和Mysql/Mariadb数据库建立正常的通信,不过CDH并不支持Mariadb的JDBC驱动,所以,不管安装Mysql或是Mariadb数据库,都是安装的Mysql的JDBC驱动,默认安装路径是/usr/share/java。
1、在线安装,此步骤可跳过,只要配置好CM的Repo源即可。
2、离线安装,在Cloudera官网下载CM的rpm包,下载地址:http://archive.cloudera.com/cm5/
下载完成后上传到CM节点,使用yum执行如下命令:“yum-y install createrepo”,等待安装完成,然后进入放置CM的rpm包的目录下,执行“createrepo .”,创建本地Repo源,然后配置CM的Repo源并拷贝到集群所有节点。
在CM节点上安装Oracle JDK,下载的CM的rpm包里面已经包含了OracleJDK,所以配置好CM的Repo源可以直接用yum安装,需要注意的是,CDH并不支持openjdk,所以,如果操作系统默认使用openjdk的话,建议将openjdk卸载或者调整jdk的优先级,让操作系统默认使用Oracle JDK。
安装Cloudera Manager的rpm包,对应包名为“cloudera-manager-server”,安装完成后需要运行脚本进行初始化操作:
/usr/share/cmf/schema/scm_prepare_database.sh mysql cm cm password -h bigdata32 |
---|
红色字体部分需要依据实际情况修改,“mysql”对应的是数据库类型,Mariadb和Mysql都是使用mysql,第一个“cm”是CM的数据库名,第二个“cm”是CM数据库对应的用户名,“password”是CM数据库的密码,“-h”参数选填,如果数据库部署在CM节点以外的机器上,需要通过-h参数指定数据库所在服务器。
以上就是安装部署CDH集群前置准备的内容,时间原因,写得比较粗糙,后续会对相关内容进一步细化,请持续关注!