环境
名称 | 版本 |
---|---|
操作系统 | CentOS 6.5 |
java | jdk1.8 |
cloudera-management | cloudera-manager-el6-cm5.7.1 |
CDH | 5.7.1 |
前期准备
在启动CDH之前,请确认以下工作都已完成
-
软件包预安装(包含主机和从机)
# 安装所需的包和库文件yum groupinstall -y 'Development Tools'
yum install -y numactl* libxslt* zlib* openssl* sqlite* net-tools ntp psmisc tree vim
-
关闭防火墙(包含主机和从机)
# 关闭防火墙
service iptables stop
# 关闭防火墙开机自启动
chkconfig iptables off
# 查看iptables所有项是否为off
chkconfig --list iptables
-
配置hosts(包含主机和从机)
# 编辑hosts文件
vi /etc/hosts
# 在行尾根据实际情况添加如下内容
例如,我有一台主机(master)和三台从机(slave1,slave2,slave3)
172.23.1.61 master
172.23.1.62 slave1
172.23.1.63 slave2
172.23.1.64 slave3
-
关闭selinux(包含主机和从机)
# 编辑config文件
vi /etc/selinux/config
# 修改SELINUX的值
SELINUX=enforcing ===> SELINUX=disabled
-
禁用大页面和修改内存交换值(包含主机和从机)
- 禁用大页面
# 编辑开机自启动文件rc.local
vi /etc/rc.d/rc.local
# 在行尾写入如下内容
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
# 需知
CentOS7中rc.local的权限被降低了,需要手动修改文件的权限,否则开机后命令不生效
chmod +x /etc/rc.d/rc.local
- 修改内存交换值
# 需知
CentOS6和CentOS7修改的方法是不一样的
# CentOS6
vi /etc/sysctl.conf
在行尾写入如下内容
vm.swappiness=0
# CentOS7
vi /usr/lib/tuned/virtual-guest/tuned.conf
修改vm.swappiness的值
vm.swappiness = 30 ===> vm.swappiness = 0
# 备注
find / -name *.conf -type f -exec grep "vm.swappiness" {} +
-
重启系统,检查防火墙/hosts/selinux/大页面/内存交换是否生效(包含主机和从机)
# 防火墙
[root@master ~]# service iptables status
iptables: Firewall is not running.
# selinux
[root@master ~]# sestatus
SELinux status: disabled
# hosts
[root@master ~]# <=== '@'后面变为对应的master/slave1/slave2/...即可
# 大页面
[root@master ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
[root@master ~]# cat /sys/kernel/mm/transparent_hugepage/defrag
always madvise [never]
# 内存交换
[root@master ~]# cat /proc/sys/vm/swappiness
0
-
配置ssh无密钥连接(包含主机和从机)
# 生成ssh密钥,
[root@localhost ~]# ssh-keygen -t rsa
输入如上命令,然后按三次回车
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
93:d0:41:c9:b8:41:4d:88:01:c7:c2:f4:7e:25:4a:86 root@localhost.localdomain
The key's randomart image is:
+--[ RSA 2048]----+
| oooo+.B+. |
| o+o +.+. |
| E.+ ooo |
| + ..+ . |
| o . S |
| . . |
| |
| |
| |
+-----------------+
# 将公钥复制到本机和其他主机
[root@master ~]# ssh-copy-id slave1
如上命令需要对集群中的所有主机名执行一次,包含本身
The authenticity of host 'master (172.23.1.65)' can't be established.
RSA key fingerprint is 10:01:b9:60:ba:84:d1:fe:d5:34:70:a4:a0:34:d2:6a.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'master,172.23.1.65' (RSA) to the list of known hosts.
root@master's password:
Now try logging into the machine, with "ssh 'master'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
# 测试无密连接
[root@master ~]# ssh slave1
Last login: Tue Feb 27 15:21:34 2018 from 172.21.1.201
# Ctrl+D退出ssh连接
[root@slave1 ~]# logout
Connection to slave1 closed.
如上操作需要在所有主机之间进行验证
-
配置jdk环境变量(包含主机和从机)
cm默认回去
/usr/java
目录寻找jdk,如果如果不存在,则新建一个,然后将jdk解压到该文件夹# 配置环境变量
vi /etc/profile
# 在行尾写入如下内容
export JAVA_HOME=/usr/java/jdk1.8.0_152/
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$PATH:$JAVA_HOME/bin
# 使环境变量生效
source /etc/profile
# 测试java是否配置成功
[root@master ~]# java -version
java version "1.8.0_152"
Java(TM) SE Runtime Environment (build 1.8.0_152-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.152-b16, mixed mode)
-
安装mysql(主机)
安装mysql之前检查之前是否安装有mysql
rpm -qa|grep mysql # 查看是否有mysql包
rpm -e --nodeps mysql-libs # 删除该包(例,centos7为mariadb-libs)
mysql6.5基础所需的包为
client
/devel
/server
,将三个包放一起然后执行以下命令rpm -ivh MySQL-*
启动mysql
service mysql start
安装完成后用初始的随机密码登录并修改密码,初始的随即密码保存在
/root/.mysql_secret
mysql -uroot -pyZ3PplFeSgK8dTHV # 用初始密码登录(例)
set password=password('ceshi123'); # 修改初始密码
退出后重新进入mysql并执行以下命令
use mysql # 切换到mysql数据库
update user set password=password('ceshi123') where user='root'; # 设置所有'root'账户的密码 update user set host='%' where user='root' and host='localhost'; # 开启远程连接
update user set password_expired='N' where user='root'; # 设置密码永不过期
flush privileges; # 使以上修改生效
提前建立
oozie
和hive
的数据库create database oozie;
create database hive;
-
文件解压(主机)
解压
cloudera-manager-el6-cm5.7.1_x86_64.tar.gz
到/opt
目录 -
编辑config文件(主机)
编辑
/opt/cm-5.7.1/etc/cloudera-scm-agent/config.ini
文件,按如下内容进行修改server_host=localhost ===> server_host=master
-
复制mysql-connector(主机)
将
mysql-connector-java-5.1.45-bin.jar
文件复制到/opt/cm-5.7.1/share/cmf/lib/
目录 -
新建用户(包含主机和从机))
sudo useradd --system --home=/opt/cm-5.7.1/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
-
初始化数据库(需要jdbc)(主机)
/opt/cm-5.7.1/share/cmf/schema/scm_prepare_database.sh mysql cm -hlocalhost -uroot -pceshi123 --scm-host localhost scm scm scm
注:出现'log4j'报错可以忽略
复制文件到从机(主机) -
scp -r /opt/* slave1:/opt # 将opt目录下的所有文件复制到从机,如有多台从机则依次执行
scp -r /usr/java slave1:/usr/ # 将java复制到从机上,如有多台从机则依次执行
scp /etc/profile slave1:/etc/ # 将配置文件复制到从机上,如有多台从机则依次执行
复制完成后执行
source /etc/profile
-
提升读写权限(主机)
将
/var/lib
目录赋予其他用户读写的权限chmod o+w -R /var/lib/
-
配置ntp服务器(包含主机和从机)
-
ntp安装
yum install -y ntp # 安装ntp
chkconfig --add ntpd # 添加ntpd服务到启动项
chkconfig ntpd on # 设置ntpd开机启动
-
ntp配置
vi /etc/ntp.conf # 编辑ntp配置文件,并修改如下内容
-
主机配置
# Hosts on local network are less restricted.
# 允许内网其他机器同步时间
restrict 192.168.18.0 mask 255.255.255.0 nomodify notrap
# Use public servers from the pool.ntp.org project.
# 配置ntp服务器
server ntp1.aliyun.com
server ntp2.aliyun.com
server ntp3.aliyun.com
server ntp4.aliyun.com
server ntp5.aliyun.com
# allow update time by the upper server
# 允许上层时间服务器主动修改本机时间
restrict ntp1.aliyun.com nomodify notrap noquery
restrict ntp2.aliyun.com nomodify notrap noquery
restrict ntp3.aliyun.com nomodify notrap noquery
# 外部时间服务器不可用时,以本地时间作为时间服务
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
-
从机配置
# 配置ntp服务器的ip
server 192.168.18.90
# 允许上层服务器主动修改本机时间
restrict 192.168.18.90 nomodify notrap noquery
# 外部服务器不可用时,以本地时间作为时间服务
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
-
-
-
判断ntpd同步(通常ntpd自动同步需要5-30分钟不等的时间)
-
主机测试
如果ntp server出现ip地址,则同步成功
[root@master ~]# ntpstat
synchronised to NTP server (120.25.115.19) at stratum 3
time correct to within 41 ms
polling server every 1024 s
从机测试 -
如果ntp server出现主机的ip地址,则同步成功
[root@slave1 ~]# ntpstat
synchronised to NTP server (172.23.1.61) at stratum 4
time correct to within 57 ms
polling server every 1024 s
ntp相关操作
service ntpd start/stop/restart # 启动/停止/重新启动ntpd服务
ntpstat # 查看当前ntpd同步状态
ntpdate -u ntp1.aliyun.com # 手动同步时间
hwclock -w # 手动同步时间后写入硬件
-
-
放入cloudera版本文件(主机)
将如下三个文件放入
/opt/cloudera/parcel-repo
文件夹中CDH-5.7.1-1.cdh5.7.1.p0.11-el6.parcel
CDH-5.7.1-1.cdh5.7.1.p0.11-el6.parcel.sha
manifest.json
-
启动master和slaves
-
主机需要启动
agent
和server
/opt/cm-5.7.1/etc/init.d/cloudera-scm-server start
/opt/cm-5.7.1/etc/init.d/cloudera-scm-agent start
-
从机只需要启动
agent
/opt/cm-5.7.1/etc/init.d/cloudera-scm-agent start
-
-
检查7180端口是否启动(主机)
[root@master CDH-CentOS6-5.7.1]# netstat -nutlp|grep 7180
tcp 0 0 0.0.0.0:7180 0.0.0.0:* LISTEN 1669/java
如果出现如上内容的话,就可以打开浏览器进入安装页面了,如
172.23.1.60:7180
网页配置
- 主界面,帐号
admin
,密码admin
-
-
- 协议,勾选同意,点击继续
-
- 版本选择,选择免费,点击继续
-
- 点击继续
- 勾选创建的有主机,点击继续
-
- 选择版本,选择我们5.7.1的版本,点击继续
-
- 安装,解压,激活过程,完成后点击继续
-
添加mysql连接使用的jar包
回到后台,将
mysql-connector-java-5.1.45-bin.jar
包复制到以下两个路径/var/lib/oozie
/opt/cloudera/parcels/CDH-5.7.1-1.cdh5.7.1.p0.11/lib/hive/lib/
-
安全检查,点击继续
- 选择需要安装的服务,根据实际需求进行选择,这里我们选择全部,点击继续
- 选择每台主机对应的角色,这里我们保持默认,点击继续
- 为hive和oozie选择对应的数据库,因为之前我们提前创建了这两个数据库,所有这里填写mysql数据库的帐号密码即可,输入完成后可以点击测试连接进行验证,验证通过后,点击继续
- 服务参数配置界面,保持默认即可,点击继续
- 安装界面,这里过程比较久,等它自动跑完所有选择即可,完成后点击继续
- 下图就是安装完成后cloudera manager的主界面,关于cloudera如何使用会在后续文档中逐渐补充
参考网站
https://www.cloudera.com/documentation/enterprise/5-7-x.html # 官方5.7.1参考文档
http://archive.cloudera.com/cdh5/parcels/latest/ # CDH-parcels安装包下载地址
http://archive.cloudera.com/cm5/cm/5/ # cm安装包下载地址