一、架构设计
配置对内存最好的要求是16G,4G,4G;第一台机器内存要大一些
系统centos7.6
CentOS-7-x86_64-DVD-2003.iso
cdh5.14.0
mysql5.7.19
jdk-8u121-linux-x64.rpm
mysql-connector-java-5.1.47.jar
- 安装包下载:
链接:https://pan.baidu.com/s/1hWyd478XgiZE_bS03ui0TQ
提取码:1qaz
192.168.50.111 cdh01.irc.com cdh01 17.1GB 70GB 2CPU
192.168.50.112 cdh02.irc.com cdh02 4.6GB 70GB 2CPU
192.168.50.113 cdh03.irc.com cdh03 4.6GB 70GB 2CPU - 修改网络
三台虚拟机分别修改对应静态ip,并重启
vi /etc/sysconfig/network-scripts/ifcfg-ens32
TYPE=“Ethernet”
PROXY_METHOD=“none”
BROWSER_ONLY=“no”
BOOTPROTO=“static” # 修改静态
DEFROUTE=“yes”
IPV4_FAILURE_FATAL=“no”
#IPV6INIT=“yes”
#IPV6_AUTOCONF=“yes”
#IPV6_DEFROUTE=“yes”
#IPV6_FAILURE_FATAL=“no”
#IPV6_ADDR_GEN_MODE=“stable-privacy”
NAME=“ens32”
UUID=“0fd5fd8f-819d-49de-8e85-fe6c0a686267”
DEVICE=“ens32”
ONBOOT=“yes” # 修改启动
IPADDR=“192.168.50.113” # 修改IP
NETMASK=“255.255.255.0” # 修改子网掩码
PREFIX=“24”
GATEWAY=“192.168.50.2” # 修改网关
DNS1=“114.114.114.114” # 修改DNS
#IPV6_PRIVACY=“no”
systemctl restart network
-
增加磁盘空间
每台机器增加20G数据,挂载在/下面,操作文档:
https://www.yuque.com/docs/share/86f9cc5d-3a52-4f7f-97dd-16e1cf899987?# 《centos7 挂载未分配的硬盘空间》
二、准备环境安装 -
安装一些常用指令(所有节点)
yum -y install vim wget net-tools telnet -
关闭防火墙(所有节点)
systemctl stop firewalld.service && systemctl disable firewalld.service -
关闭SELinux(所有节点)
sed -i ‘s#SELINUX=enforcing#SELINUX=disabled#g’ /etc/selinux/config
setenforce 0 -
安装ssh(所有节点)
cdh01节点配置/etc/hosts
vim /etc/hosts
192.168.50.111 cdh01.irc.com cdh01
192.168.50.112 cdh02.irc.com cdh02
192.168.50.113 cdh03.irc.com cdh03
发送/etc/hosts到cdh02,cdh03节点
for((i=2;i<=3;i++));do scp /etc/hosts cdh0${i}:/etc/ ;done
在cdh01,cdh2,cdh03分别做
ssh-keygen -t rsa
cd ~/.ssh
ssh-copy-id cdh01
ssh-copy-id cdh02
ssh-copy-id cdh03
测试ssh,从cdh01跳转到其他机器:ssh cdh01 -
上传文件安装包(cdh01)
在cdh01上创建以下目录
mkdir /root/cloudera
mkdir /root/cloudera/RPM
mkdir /root/cloudera/mysql5.7
mkdir /root/cloudera/parcels
上传mysql有关至/root/cloudera/mysql5.7
上传 cm至/root/cloudera/RPM下(安装cm6.3.2时还需要上传个allkeys.asc包,不然会报不能复制文件)
上传cdh安装包至 /root/cloudera/parcels 下
上传系统镜像及jdk至 /root/cloudera 下
- 安装JDK(所有节点)
将cdh01上的jdk的rpm包发送到其它几台机器上
for((i=2;i<=3;i++));do scp /root/cloudera/jdk-8u121-linux-x64.rpm cdh0${i}:/opt/ ;done
分别在每台机器的jdk目录下安装jdk
rpm -ivh jdk-8u121-linux-x64.rpm
配置环境变量,在/etc/profile增加
vim /etc/profile
#jdk配置
export JAVA_HOME=/usr/java/default
export PATH=
J
A
V
A
H
O
M
E
/
b
i
n
:
JAVA_HOME/bin:
JAVAHOME/bin:PATH
export CLASSPATH=.:
J
A
V
A
H
O
M
E
/
l
i
b
/
d
t
.
j
a
r
:
JAVA_HOME/lib/dt.jar:
JAVAHOME/lib/dt.jar:JAVA_HOME/lib/tools.jar
使配置的环境变量更新
source /etc/profile
验证安装
java -version
echo $JAVA_HOME
-
增加mysql连接jdbc驱动(所有节点)
每台机器创建/usr/share/java目录
mkdir /usr/share/java
将mysql-connector-java-5.1.47-bin.jar放到/usr/share/java下,并建立软链接
mv mysql-connector-java-5.1.47-bin.jar /usr/share/java/
cd /usr/share/java/
ln -s mysql-connector-java-5.1.47-bin.jar mysql-connector-java.jar -
安装mysql(cdh01)
mysql安装在cdh01上,mysql安装文档见:https://www.yuque.com/docs/share/01e2b8e0-dbf8-4b8c-b3fa-53616bb96b1e?# 《Linux下离线安装mysql5.7.27》
安装完过后,建立CM和Hive需要的表
进入mysql:mysql -uroot -p123456
create database metastore default character set utf8;
CREATE USER ‘hive’@‘%’ IDENTIFIED BY ‘hive’;
GRANT ALL PRIVILEGES ON metastore. * TO ‘hive’@‘%’;
create database cm default character set utf8;
CREATE USER ‘cm’@‘%’ IDENTIFIED BY ‘cmdemo’;
GRANT ALL PRIVILEGES ON cm. * TO ‘cm’@‘%’;
create database am default character set utf8;
CREATE USER ‘am’@‘%’ IDENTIFIED BY ‘amdemo’;
GRANT ALL PRIVILEGES ON am. * TO ‘am’@‘%’;
create database rm default character set utf8;
CREATE USER ‘rm’@‘%’ IDENTIFIED BY ‘rmdemo’;
GRANT ALL PRIVILEGES ON rm. * TO ‘rm’@‘%’;
create database hue default character set utf8;
CREATE USER ‘hue’@‘%’ IDENTIFIED BY ‘huedemo’;
GRANT ALL PRIVILEGES ON hue. * TO ‘hue’@‘%’;
create database oozie default character set utf8;
CREATE USER ‘oozie’@‘%’ IDENTIFIED BY ‘oozie’;
GRANT ALL PRIVILEGES ON oozie. * TO ‘oozie’@‘%’;
create database sentry default character set utf8;
CREATE USER ‘sentry’@‘%’ IDENTIFIED BY ‘sentry’;
GRANT ALL PRIVILEGES ON sentry. * TO ‘sentry’@‘%’;
create database kudu default character set utf8;
CREATE USER ‘kudu’@‘%’ IDENTIFIED BY ‘kudu’;
GRANT ALL PRIVILEGES ON kudu. * TO ‘kudu’@‘%’;
FLUSH PRIVILEGES;
exit;
9. ntp集群时钟同步(所有节点)
https://my.oschina.net/longkingxu/blog/3012553
9.1 服务器端配置(cdh01)
yum install ntp
timedatectl set-timezone Asia/Shanghai
cdh01服务器用自己做时钟同步,其他服务器连接到cdh01服务器做时钟同步。
systemctl start ntpd && systemctl enable ntpd
[root@cdh01 cloudera]# vim /etc/ntp.conf
在 /ntp.conf 中定义的 server 都不可用时,将使用 local 时间作为 ntp 服务提供给 ntp 客户端。建议配置,否则 ntp 服务器无法与公网 ntp 服务器同步时,其客户端也会无法同步
修改
restrict 192.168.50.11 nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict ::1
Hosts on local network are less restricted.
restrict 192.168.50.2 mask 255.255.255.0 nomodify notrap
Use public servers from the pool.ntp.org project.
Please consider joining the pool (http://www.pool.ntp.org/join.html).
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server 127.127.1.0
Fudge 127.127.1.0 stratum 10
重启ntpd服务
systemctl restart ntpd
[root@cdh01 cloudera]# ntpdate cdh01.irc.com 同步时钟
[root@cdh01 cloudera]# systemctl status ntpd
9.2 客户端配置(所有客户节点)
yum install ntp
timedatectl set-timezone Asia/Shanghai
systemctl start ntpd && systemctl enable ntpd
[root@cdh03 ~]# vim /etc/ntp.conf 示例
restrict cdh01.irc.com nomodify notrap noquery 允许时钟服务器修改本地时间
[root@cdh03 ~]# systemctl restart ntpd
[root@cdh03 ~]# ntpdate cdh01.irc.com 同步时间
[root@cdh03 ~]# crontab -e
*/5 * * * * /sbin/ntpdate -u cdh01.irc.com 每5分钟同步一次时间
[root@cdh03 ~]#hwclock -w 同步本地时间到BIOS
在shell窗口中同时向所有窗口发送date命令,查看时间是否同步
内网中ntp更新不了时间,采用了这种方式
sudo date -s “$(wget -S “https://www.baidu.com/” 2>&1 | grep -E ‘1[dD]ate:’ | sed 's/2[dD]ate:[[:space:]]*//’ | head -1l | awk ‘{print $1, $3, $2, $5 ,“GMT”, $4 }’ | sed ‘s/,//’)”
- 挂载操作系统repo(cdh01)
挂载操作系统iso文件
mkdir /media/DVD1
mount -o loop /root/cloudera/CentOS-7-x86_64-DVD-2003.iso /media/DVD1/
查看/media/DVD1/下挂载的系统
- 安装http服务(cdh01)
安装httpd服务
yum -y install httpd
启动并设置开机自启httpd服务
systemctl start httpd && systemctl enable httpd
- 安装依赖包(所有节点)
在root 权限下,选择全部主机窗口同时安装一下依赖包
yum -y install bind-utils chkconfig cyrus-sasl-gssapi cyrus-sasl-plain fuse fuse-libs gcc libxslt mod_ssl MySQL-python openssl openssl-devel perl portmap postgresql-server psmisc python-devel python-psycopg2 python-setuptools sed sqlite swig zlib
13. 制作repo(cdh01)
13.1 系统镜像的repo
13.1.1 拓展知识:(在安装的时候不需要这步)
这里因为前面第10步操作后,有点麻烦了(实际上不麻烦,要是直接挂载到centos下去,一关机重启就会报错,集群会搭建失败),所以把挂载的/media/DVD1/目录给先解除挂载,然后挂载到/var/www/html/centos下去
解除挂载:
umount /root/cloudera/CentOS-7-x86_64-DVD-2003.iso /media/DVD1/
如果报umount: /media/DVD1:目标忙,则执行
fuser -mv /media/DVD1/
查看到使用的pid,kill掉,再查看fuser -mv /media/DVD1/,无使用的pid,再执行解除挂载命令
umount /root/cloudera/CentOS-7-x86_64-DVD-2003.iso /media/DVD1/
[root@ cdh01 ~]# mkdir /var/www/html/centos
[root@ cdh01 ~]# mount -o loop /root/cloudera/CentOS-7-x86_64-DVD-2003.iso /var/www/html/centos
13.1.2 系统镜像的repo制作
本地镜像:
[root@ cdh01 ~]# yum repolist
[root@ cdh01 ~]# scp -r /media/DVD1/* /var/www/html/centos/
[root@ cdh01 ~]# vim /etc/yum.repos.d/local_os.repo
[local_iso]
name=CentOS-$releasever - Media
baseurl=file:///media/DVD1
gpgcheck=0
enabled=1
远端镜像:
[root@ cdh01 ~]# vi /etc/yum.repos.d/centos.repo
[centos]
baseurl=http://cdh01/centos/
gpgcheck=1
gpgkey=http://cdh01/centos/RPM-GPG-KEY-CentOS-7
列出你所有的yum repo
[root@ cdh01 ~]# yum repolist
13.2 CM的repo(cdh001)
将Cloudera Manager安装需要的rpm包放到需要的目录下,能通过http访问到,再在RPM 目录下执行createrepo命令生成rpm元数据。
[root@cdh01 cloudera]# mv /root/cloudera/RPM /var/www/html/cloudera/
[root@cdh01 cloudera]# mv /root/cloudera/parcels/ /var/www/html/cloudera/
[root@cdh01 cloudera]# cd /var/www/html/cloudera/RPM
[root@cdh01 RPM]# yum -y install createrepo
[root@cdh01 RPM]# createrepo .
制作ClouderaManager的repo源
[root@cdh01 RPM]# vim /etc/yum.repos.d/cm.repo
[cm_repo]
name = cm_repo
baseurl = http://cdh01/cloudera/RPM
enable = true
gpgcheck = false
[root@cdh01 RPM]# yum repolist
将centos.repo,cm.repo发送到其它客户节点
[root@cdh01 RPM]# for((i=2;i<=3;i++));do scp /etc/yum.repos.d/cm.repo cdh0
i
:
/
e
t
c
/
y
u
m
.
r
e
p
o
s
.
d
/
;
s
c
p
/
e
t
c
/
y
u
m
.
r
e
p
o
s
.
d
/
c
e
n
t
o
s
.
r
e
p
o
c
d
h
0
{i}:/etc/yum.repos.d/ ;scp /etc/yum.repos.d/centos.repo cdh0
i:/etc/yum.repos.d/;scp/etc/yum.repos.d/centos.repocdh0{i}:/etc/yum.repos.d/ ;done
- 修改系统参数(每个节点)
14.1 禁用swap(所有节点)
[root@cdh01 RPM]# sysctl vm.swappiness=10
[root@cdh01 RPM]# echo ‘vm.swappiness=10’ >> /etc/sysctl.conf
[root@cdh01 RPM]# echo 10 > /proc/sys/vm/swappiness
14.2 禁用透明页(所有节点)
[root@cdh01 RPM]# echo never > /sys/kernel/mm/transparent_hugepage/defrag
[root@cdh01 RPM]# echo never > /sys/kernel/mm/transparent_hugepage/enabled
[root@cdh01 RPM]# echo ‘echo never > /sys/kernel/mm/transparent_hugepage/defrag’ >> /etc/rc.local
[root@cdh01 RPM]# echo ‘echo never > /sys/kernel/mm/transparent_hugepage/enabled’ >> /etc/rc.local
三、安装CM服务
3.1 安装Cloudera Manager Server(cdh01)
通过yum安装ClouderaManager Server
[root@cdh01 ~]# yum -y install cloudera-manager-server
初始化数据库
[root@cdh01 ~]# /usr/share/cmf/schema/scm_prepare_database.sh mysql cm cm cmdemo
● cdh6初始化为 /opt/cloudera/cm/schema/scm_prepare_database.sh mysql cm cm cmdemo
启动ClouderaManager Server
[root@cdh01 ~]# systemctl start cloudera-scm-server
通过http://cdh01:7180/cmf/login访问CM,记得在访问的window上配置host,cdh01
检查端口是否监听
netstat -lnpt | grep 7180
3.2. 快照备份
对每个节点备份快照,以免发生错误无法返回
3.3 检查各项服务
因为上面关机备份过快照,有些服务可能已经关闭了,所以再次检查下
[root@cdh01 ~]# systemctl status ntpd
[root@cdh01 ~]# systemctl status httpd
[root@cdh01 ~]# service mysql status
[root@cdh01 ~]# systemctl status cloudera-scm-server