本文将介绍Centos7.2离线安装CDH和Cloudera Manager过程,软件版本如下表1-1所示:
NO. | 软件名称 | 版本 |
---|---|---|
1 | 操作系统 | Centos7.2 |
2 | JDK | jdk-11.0.1_linux-x64 |
3 | Clouder Manager | 5.15.0 |
4 | CDH | 5.15.0 |
5 | 数据库 | MariaDB |
本次安装共4台服务器,服务器配置及用途如下表1-2所示:
NO. | 机器名称 | 内网 | IP 核/内存/硬盘 | 用途 |
---|---|---|---|---|
1 | mater | 192.168.8.5 | 32C/64G/500GB | CM,Mysql主 |
2 | slave1 | 192.168.8.6 | 32C/64G/500GB | AG,slave1 |
3 | slave2 | 192.168.8.7 | 32C/64G/500GB | AG,slave2 |
4 | slave3 | 192.168.8.8 | 32C/64G/500GB | AG,slave3 |
本部分是讲述,安装过程的checklist,也就是安装步骤总览,如表1-3所示:
NO. | 类别 | 项目 | 当前进度 |
---|---|---|---|
1 | 资源 | 校核操作系统 | Centos7.2 64 位 |
2 | 资源 | 资源下载 | Jdk+cm+cdh |
3 | Linux | Hostname-Hosts | 互ping |
4 | Linux | Net-tools | 能够使用ifconfig和netstat |
5 | Linux | 防火墙,selinux | 关闭成功 |
6 | Linux | NTP对时 | 全主时间硬件更新 |
7 | Linux | SSH免密 | SSH(master对其他) |
8 | Linux | Swappiness小于10 | 修改成功 |
9 | Linux | 文件句柄改大 | |
10 | Linux | 透明大页面关闭 | 修改成功 |
11 | Soft | 依赖包 | 安装成功 |
12 | Soft | Jdk | 安装成功 |
13 | Soft | MySQL | root#root, navicat连接成功 |
14 | CM-资源 | JDBC,CM,CDH | 移到/data/cdh |
15 | CM-资源 | 解压,传包 | 包含Mysql-jar |
16 | CM-安装 | Linux用户创建 | 完成 |
17 | CM-安装 | CDH-数据库初始化 | Navicat查看 |
18 | CM-安装 | Parcel目录 | 主从完成 |
19 | CM-安装 | 配置 | 修改config.ini |
20 | CDH-基本 | 基本组件 | 安装完成 |
JDK版本:jdk-11.0.1_linux-x64
jdk-11.0.1_linux-x64_bin.tar.gz
下载地址:
http://download.oracle.com/otn-pub/java/jdk/11.0.1+13/90cf5d8f270a4347a95050320eef3fb7/jdk-11.0.1_linux-x64_bin.tar.gz
scala-2.11.8.rpm
下载地址:
https://downloads.lightbend.com/scala/2.11.8/scala-2.11.8.rpm
CM版本:5.15.0
cloudera-manager-centos7-cm5.15.0_x86_64.tar.gz
下载地址:
http://archive-primary.cloudera.com/cm5/cm/5/cloudera-manager-centos7-cm5.15.0_x86_64.tar.gz
CDH版本:5.15.0,
CDH-5.15.0-1.cdh5.15.0.p0.21-el7.parcel
CDH-5.15.0-1.cdh5.15.0.p0.21-el7.parcel.sha1
下载地址:
http://archive-primary.cloudera.com/cdh5/parcels/5.15.0/CDH-5.15.0-1.cdh5.15.0.p0.21-el7.parcel
http://archive-primary.cloudera.com/cdh5/parcels/5.15.0/CDH-5.15.0-1.cdh5.15.0.p0.21-el7.parcel.sha1
下载地址:
http://archive-primary.cloudera.com/cdh5/parcels/5.15.0/manifest.json
备注:另存为文件即可
jar包版本:5.1.43,
mysql-connector-java-5.1.43.jar
下载地址:
http://central.maven.org/maven2/mysql/mysql-connector-java/5.1.43/mysql-connector-java-5.1.43.jar
第一个节点修改信息如下,其他节点分别修改为slave1/slave2/slave3
hostnamectl set-hostname master //设置机器名
hostname // 查看本机名
这种方式,在Centos7中可以永久性改变主机名称。
需要确保hostname唯一,同一个CDH集群内不能存在两个hostname相同的节点,否
则会出现异常;另外,hostname不能包含特殊字符,比如“_”,否则安装Cloudera
Manager Server时会报找不到主机的异常;如果hostname包含字母,建议全部使用小写
字母。
操作系统默认是通过/etc/hosts文件进行IP地址的解析,主要是定义主机名和IP地址的映射
关系,如果没配置DNS,集群所有节点都要有至少包含本集群所有节点的hosts文件
所有节点均修改/etc/hosts文件,新增如下IP与主机名的对照关系
vim /etc/hosts
内容都改为:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.8.5 master
192.168.8.6 slave1
192.168.8.7 slave2
192.168.8.8 slave3
需要在所有的节点上执行,因为涉及到的端口太多了,临时关闭防火墙是为了安装起来更方便,安装完毕后可以根据需要设置防火墙策略,保证集群安全。
需要确保集群内所有节点能够互相访问,通常情况下,会永久关闭防火墙。如果企业在安全方面要求较为严格的话,比如银行、运营商,可能需要启用主机防火墙,配置相应的防火墙策略,只开放某些机器对某些必要端口的访问权限,比如ssh服务的22端口,agent的7190端口。
防火墙常用命令:
systemctl status firewalld.service(查询防火墙状态)
systemctl stop firewalld.service (关闭防火墙)
systemctl start firewalld.service (开启防火墙)
systemctl disable firewalld.service (禁止firewall开机启动)
service sshd restart
重启SSH
rpm -qa | grep openssh
检查SSH是否安装成功,如果出现下面的信息:
openssh-server-6.6.1p1-22.el7.x86_64
openssh-clients-6.6.1p1-22.el7.x86_64
openssh-6.6.1p1-22.el7.x86_64
再执行命令:
rpm -qa | grep rsync
如果出现以下信息:
rsync-3.0.6-9.e16.x86_64
说明SSH安装成功。
在主节点即master上执行
ssh-keygen -t rsa
#遇到提示回车即可,最后显示图形为公匙的指纹加密
ssh-copy-id -i ~/.ssh/id_rsa.pub root@master
ssh-copy-id -i ~/.ssh/id_rsa.pub root@slave1
ssh-copy-id -i ~/.ssh/id_rsa.pub root@slave2
ssh-copy-id -i ~/.ssh/id_rsa.pub root@slave3
将公匙发至从节点的slave1、slave2、slave3用户
注意:对于完全分布来说,只在主节点配置SSH无密码链接即可,之后把公匙发至从节点
ssh master
ssh slave1
ssh slave2
ssh slave3
如果没有出现输入密码提示则表示安装成功,执行这条命令后会远程登录从节点,返回主节点需执行exit
若按照上面步骤执行任然不成功,有可能是/home/root/.ssh文件夹的权限问题。以root用户执行
chmod 700 /home/root/.ssh
chmod 700 /home/root/.ssh/authorized_keys
SELinux 主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则)
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
关闭linux SELINUX安全内核
setenforce 0 (临时生效)
修改 /etc/selinux/config 下的 SELINUX=disabled (重启后永久生效)
vi /etc/selinux/config
内容增加(修改):
SELINUX=disabled
重启后生效:
reboot
查看SELINUX 是否关闭:
sestatus
(在Centos7中遇到SELINUX无法关闭的问题,重新启动机器恢复正常)
为避免安装过程中出现的异常问题,首先调整Linux内核参数。
设置swappiness
控制换出运行时内存的相对权重,Cloudera 建议将 swappiness 设置为 10:
查看swappiness
cat /proc/sys/vm/swappiness
永久性修改,执行下面两条命令
sysctl -w vm.swappiness=10
echo vm.swappiness = 10 >> /etc/sysctl.conf
自CentOS6版本开始引入了Transparent Huge Pages(THP),从CentOS7版本开始,该特性默认就会启用。尽管THP的本意是为提升内存的性能,不过某些数据库厂商还是建议直接关闭THP,否则可能会导致性能出现下降。
首先查看透明大页是否启用,[always] never表示已启用,always [never]表示已禁用:
cat /sys/kernel/mm/transparent_hugepage/defrag
[always] madvise never
cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
以上状态就说明是启用的。
临时关闭(重启机器会变回默认开启状态):
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
永久关闭:
编辑/etc/rc.d/rc.local
vim /etc/rc.d/rc.local
在文件后添加下面内容:
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
保存退出,然后赋予rc.local文件执行权限:
chmod +x /etc/rc.d/rc.local
重启系统,以后再检查THP状态,显示状态被禁用了。
reboot
(此处博主未成功设置,使用中貌似不影响)
部署分布式的Hadoop集群,都必须要做时钟同步,统一集群时间。CDH目前支持ntp和chrony两种时钟同步服务,任选一种进行时钟同步配置即可。如果未配置时钟同步,CM界面会有告警提示,并且可能会导致某些依赖时钟同步的组件异常退出或者无法启动,比如Zookeeper和Kudu,甚至会影响CDH集成的某些服务,比如Kerberos,Kerberos的认证机制包含时间戳,也依赖集群时钟同步,有兴趣可自行了解。
将主节点设置为时间校准根服务器,从节点以主节点进行时间同步
主节点: vim /etc/ntp.conf 修改内容如下:
driftfile /var/lib/ntp/drift
restrict 127.0.0.1
restrict -6 ::1
restrict default nomodify notrap noquery
server 127.127.1.0
fudge 127.127.1.0 stratum 10
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
从节点: vim /etc/ntp.conf 修改内容如下:
driftfile /var/lib/ntp/drift
restrict 127.0.0.1
restrict -6 ::1
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
server slave1
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
所有节点启动服务并添加自动启动:
service ntpd start
chkconfig ntpd on
使用watch ntpq -p检查同步状态
ntpq -p 或 ntpstat
yum install -y chkconfig python bind-utils psmisc libxslt zlib sqlite cyrus-sasl-plain cyrus-sasl-gssapi fuse fuse-libs redhat-lsb mod_ssl unzip
注意这里加了一个mod_ssl用来解决hue问题,unzip是livy解压用的。
yum -y install lrzsz //为了上传下载方便,安装这个软件
创建目录
mkdir /usr/java
下载安装包jdk-11.0.1_linux-x64_bin.tar.gz到 /usr/java 目录下
CentOS系统一般自带OpenJdk,需要卸载掉自带的OpenJdk,使用
rpm -qa | grep java
查询java相关的包,使用
rpm -e –nodeps +包名 // 强制卸载掉
进入目录,安装oralce JDK
cd /usr/java
tar zxvf jdk-11.0.1_linux-x64_bin.tar.gz #jdk
rpm -ivh scala-2.11.8.rpm #scala
配置JAVA_HOME环境变量:
修改/etc/profile文件配置环境变量, 执行命令:
vi /etc/profile
在profile文件最后,输入下面内容,保存并退出。
export JAVA_HOME=/usr/java/jdk-11.0.1
export PATH=$PATH:$JAVA_HOME/bin
或者使用:
echo "export JAVA_HOME=/usr/java/jdk-11.0.1">>/etc/profile
echo "export PATH=\$PATH:\$JAVA_HOME/bin">>/etc/profile
执行下面命令,让配置生效
source /etc/profile //使修改立即生效
echo $PATH //查看PATH值
echo $JAVA_HOME //查看JAVA_HOME值
CDH目前支持四种数据库,分别是PostgreSQL、Mysql、Mariadb以及Oracle,其中PostgreSQL不建议用于生产集群,安装数据库后,一般要做初始化操作,主要是设置root密码,允许用户远程登录之类的,然后需要进入数据库,创建CM和CDH组件相关的数据库及用户,并授予相关用户权,用于存储相关组件的数据,比如Oozie、Hive的MetaStore,Navigator的Nas,Nav等等。安装JDBC驱动的目的是依赖数据库的保证相关组件能够和Mysql/Mariadb数据库建立正常的通信,不过CDH并不支持Mariadb的JDBC驱动,所以,不管安装Mysql或是Mariadb数据库,都是安装的Mysql的JDBC驱动,默认安装路径是/usr/share/java。
yum install mariadb*
如有安装不成功的就执行下面两条
yum install -y chkconfig python bind-utils psmisc libxslt zlib sqlite cyrus-sasl-plain cyrus-sasl-gssapi fuse fuse-libs redhat-lsb mod_ssl unzip
yum install deltarpm
启动mariadb
systemctl start mariadb
查看mariadb状态
systemctl status mariadb
mysql_secure_installation
首先是设置密码,会提示先输入密码(博主设置密码root)
Enter current password for root (enter for none):<–初次运行直接回车设置密码
Set root password? [Y/n] <– 是否设置root用户密码,输入y并回车或直接回车
New password: <– 设置root用户的密码
Re-enter new password: <– 再输入一次你设置的密码
其他配置(是否禁止root远程登录,输入 “n” 回车)
Remove anonymous users? [Y/n] <– 是否删除匿名用户,回车
Disallow root login remotely? [Y/n] <–是否禁止root远程登录,n回车,
Remove test database and access to it? [Y/n] <– 是否删除test数据库,回车
Reload privilege tables now? [Y/n] <– 是否重新加载权限表,回车
初始化MariaDB完成,接下来测试登录
mysql -uroot -p
输入密码root
创建目录
mkdir /data
mkdir /data/cdh
移动以下文件到/data/cdh
CDH-5.15.0-1.cdh5.15.0.p0.21-el7.parcel
CDH-5.15.0-1.cdh5.15.0.p0.21-el7.parcel.sha1
cloudera-manager-centos7-cm5.15.0_x86_64.tar.gz
manifest.json
mysql-connector-java-5.1.43.jar
在所有节点将CM解压到/opt/目录:
tar -zxvf /data/cdh/cloudera-manager-centos7-cm5.15.0_x86_64.tar.gz -C /opt/
查看解压结果
ls /opt/
cloudera cm-5.15.0
在所有节点上执行:
删除用户
userdel cloudera-scm
新增用户
useradd --system --home=/opt/cm-5.15.0/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
在所有节点上:
如果没有/usr/share/java/目录,则创建
mkdir /usr/share
mkdir /usr/share/java/
cp /data/cdh/mysql-connector-java-5.1.43.jar /usr/share/java/mysql-connector-java.jar
在主节点上:
将mysql JDBC jar 包拷贝到 /opt/cm-5.15.0/share/cmf/lib/ 目录
cp /data/cdh/mysql-connector-java-5.1.43.jar /opt/cm-5.15.0/share/cmf/lib/
在主节点上:
mysql -h127.0.0.1 -uroot -p
加参数-h127.0.0.1 指定本机方式,否则可能不允许执行grant
Enter password: \输入数据库密码
在MariaDB [(none)]>命令状态输入下面脚本:
create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database activity_monitor DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database service_monitor DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database report_manager DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database host_monitor DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database cloudera_navigator DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database scm DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
grant all on *.* to root@"%" Identified by "root";
flush privileges;
exit;
初始化CM,执行下面脚本
/opt/cm-5.15.0/share/cmf/schema/scm_prepare_database.sh mysql -h master -uroot -proot –scm-host master scm root root
或者
cd opt/cm-5.15.0/share/cmf/schema //进入目录
./scm_prepare_database.sh -h master -P 3306 mysql scm root root
注意:参数分别是
-h master 安装节点
-P 3306 端口号
mysql 数据库类型
scm scm
root 用户
root 密码
在主节点上:
创建目录/opt/cloudera/parcel-repo,执行:
mkdir -p /opt/cloudera/parcel-repo
chown cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo
进入软件包目录
cd /data/cdh
拷贝三个文件到/opt/cloudera/parcel-repo/目录
cp CDH-5.15.0-1.cdh5.15.0.p0.21-el7.parcel CDH-5.15.0-1.cdh5.15.0.p0.21-el7.parcel.sha1 manifest.json /opt/cloudera/parcel-repo/
进入/opt/cloudera/parcel-repo/目录
cd /opt/cloudera/parcel-repo/
修改文件名
mv CDH-5.15.0-1.cdh5.15.0.p0.21-el7.parcel.sha1 CDH-5.15.0-1.cdh5.15.0.p0.21-el7.parcel.sha
Agent从节点
Agent节点创建目录/opt/cloudera/parcels,执行:
mkdir -p /opt/cloudera/parcels
chown cloudera-scm:cloudera-scm /opt/cloudera/parcels
修改/opt/cm-5.15.0/etc/cloudera-scm-agent/config.ini文件:
vim /opt/cm-5.15.0/etc/cloudera-scm-agent/config.ini
将config.ini server_host=localhost 内容改为server_host=192.168.8.5
在主节点上,启动cloudera-scm-server:
/opt/cm-5.15.0/etc/init.d/cloudera-scm-server start
启动过程较慢,可通过/opt/cm-5.15.0/log/cloudera-scm-server日志,查看启动过程。
在所有节点上,启动cloudera-scm-agent:
/opt/cm-5.15.0/etc/init.d/cloudera-scm-agent start
登录CM管理界面,使用地址: http://192.168.8.5:7180/
默认用户密码为admin/admin
选择【当前管理的主机】中可以看到所有启动了CM Agent的服务器,并成功连接CM Server的服务器, 选择需要安装的服务器,点击继续:
如果这里没有Parcel可供选择,请检查 4.5,并重启CM Server
在这一步,CM 会将parcel解压,并分发,安装到每一台选择的服务器中,如图:
选择角色分配:
按照第 4 步角色规划:HDFS DataNode选择所有主机
ZooKeeper按照建议(应选择大于3个并为单数的主机): 选择所有主机
其它根据需要更改,注意角色均衡和性能:
集群数据库设置:
根据4.4创建的数据库,填写正确的数据库及用户,密码,然后测试连接:
如果有数据库不存在的,则按第12步新建数据库即可
集群数据存储目录设置,根据需要设置各组件数据存储目录:
登陆进CM管理界面,可以检查集群各组件运行情况,如:
注意:刚刚配置完成肯定界面会有各种不良或者异常,这个在后面慢慢调试即可!
界面关闭Cluster
界面关闭Cloudera Management Service
命令行启动cm(agent会自动启动)
/opt/cm-5.15.0/etc/init.d/cloudera-scm-server start
界面启动Cloudera Management Service
参考资料:https://blog.csdn.net/qq1226317595/article/details/81281149
参考资料:https://blog.csdn.net/qq1226317595/article/details/81282607
参考资料:https://blog.csdn.net/qq1226317595/article/details/81281149
参考资料:https://blog.csdn.net/weixin_39461487/article/details/79013661
参考资料:道森CDH 5.5.0 - 安装文档
如有帮助,欢迎点赞评论 !