一、基础环境
1.1软件环境
| 软件名称 | 版本 |
|-操作系统-|-Centos7.4 64 位-|
| JDK | jdk-8u192-linux-x64 |
| Clouder Manager| 5.15.0 |
| CDH | 5.15.0 |
| 数据库 | Mysql 5.6 |
| JDBC | mysql-connector-java-5.1.43.jar |
1.2配置规划
本次安装共1台服务器,在一台服务器上模拟三台虚拟机,服务器配置及用途如下:
| CentosA | 192.168.10.70 | 6Gb/300Gb | 主,CM,MysqlDB |
| CentosB | 192.168.10.71 | 4Gb/100Gb | 从 |
| CentosC | 192.168.10.72 | 4Gb/100Gb | 从 |
1.3修改机器名(所有节点)
- 修改机器名称
hostnamectl set-hostname xxx //设置机器名
hostname // 查看本机名
2)每个节点机器上都要配置hosts
vi /etc/hosts
内容都改为:
127.0.0.1 localhost //建议保留此行
192.168.10.70 CentosA
192.168.10.71 CentosB
192.168.10.72 CentosC
1.4设置防火墙
防火墙常用命令
firewall-cmd --state(查询防火墙状态)
#systemctl stop firewalld.service (关闭防火墙)
#systemctl start firewalld.service (开启防火墙)
#systemctl disable firewalld.service (禁止firewall开机启动)
注意:需要在所有节点上设置防火墙
1.5配置SSH免密登录
在主节点上执行命令:
#cd~ //进入到 根目录
ssh-keygen -t rsa
回车四次,生成密钥对
执行完这个命令后,会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)将公钥拷贝到要免密登陆的目标机器上
ssh-copy-id localhost
注意:生成密钥后,要在本机和另外两台机上分别配置免密登录(这里我截图截错了应该有台机为CentosA)
1.6.关闭SELINUX(所有节点)
关闭linux SELINUX安全内核
#setenforce 0 (临时生效)
修改 /etc/selinux/config 下的 SELINUX=disabled (重启后永久生效)
vi /etc/selinux/config
内容增加:
SELINUX=disabled
重启后生效:
reboot
查看SELINUX 是否关闭:
sestatus
1.7.修改Linux内核参数(所有节点)
1)设置swappiness,控制换出运行时内存的相对权重,Cloudera 建议将 swappiness 设置为 10:
//查看swappiness
#cat /proc/sys/vm/swappiness
//永久性修改,执行下面两条命令
#sysctl -w vm.swappiness=10
#echo vm.swappiness = 10 >> /etc/sysctl.conf
2)关闭透明大页面:
首先查看透明大页是否启用,[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
vi /etc/rc.d/rc.local
//在文件后添加下面内容:
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabledfi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defragfi
保存退出,然后赋予rc.local文件执行权限:
chmod +x /etc/rc.d/rc.local
重启系统,以后再检查THP状态,显示状态被禁用了。
3)修改文件句柄数:
修改系统文件句柄数限制:
//查看文件句柄数,显示1024,显然太小
ulimit -n
1024
//修改限制
#vi /etc/security/limits.conf
//在文件后加入下面内容:
- soft nofile 100000
- hard nofile 100000
修改后需要重启机器。
1.8.配置NTP服务
集群中所有主机必须保持时间同步,如果时间相差较大会引起各种问题。 具体建设过程如下:
所有节点安装相关组件:
yum install -y ntp
NTP服务端(主节点):
1)查找时间同步服务器http://www.pool.ntp.org/zone/asia:
打开网址,内容如下:
2)编辑 /etc/ntp.conf:
vi /etc/ntp.conf
//在文件中输入上面网页内容:
server 0.asia.pool.ntp.org
server 1.asia.pool.ntp.org
server 2.asia.pool.ntp.org
server 3.asia.pool.ntp.org
3)启动ntp服务:
systemctl start ntpd
4)配置开机启动:
systemctl enable ntpd.service
注意:如果ntpd 开机启动失效,有可能是因为安装了chronyd 并且是开机自启状态,所以导致ntpd开机自启失败。
查看 chronyd设置状态
#systemctl status chronyd
显示如下:
以上表明,chronyd显示为开机启动状态。
将chronyd设为禁用状态:
systemctl disable chronyd.service
此时,NTP的服务开机自启动完成!
5)检查是否设置成功:
#ntpq -p
//更新时间
#timedatectl
NTP客户端(所有从节点):
6)远程客户端时间同步测试
date
#ntpdate 172.16.3.168
7)设置定时任务开机启动
//设置开机启动
systemctl enable crond.service
//查看状态
#systemctl status crond
1.9.安装oracle JDK1.8 (所有节点)
CentOS系统一般自带OpenJdk,需要卸载掉自带的OpenJdk,使用
rpm -qa | grep java
下面安装oralce JDK
#tar -zxvf jdk-8u192-linux-x64
配置JAVA_HOME环境变量:
修改/etc/profile文件配置环境变量, 执行命令:
#vi /etc/profile
在profile文件最后,输入下面内容,保存并退出。
执行下面命令,让配置生效
#source /etc/profile //使修改立即生效
echo $PATH //查看PATH值
echo $JAVA_HOME //查看JAVA_HOME值
1.10.Mysql安装(主节点)
到官网https://dev.mysql.com/downloads/file/?id=482460选择对应安装包:
1)解压安装包
tar -xvf mysql-5.6.43-linux-glibc2.12-x86_64.tar.gz
2)重命名解压包
#mv mysql-5.6.43-linux-glibc2.12-x86_64.tar.gz/ mysql
3)添加mysql的用户组和用户
检查是否有mysql的用户组和用户
groups mysql
如果没有泽添加用户组和用户
groupadd mysql
useradd -r -g mysql mysql
如果有想删除的用户组和用户
userdel -f 用户名
4)进入mysql更改目录权限
cd mysql/
chown -R mysql:mysql ./
5)执行安装脚本
./scripts/mysql_install_db --user=mysql
如果安装脚本执行出现如下错误
则需要安装autoconf库
yum -y install autoconf
安装完成后需要当前目录拥有者为root用户,修改data目录拥有者为mysql
chown -R root:root ./
chown -R mysql:mysql data
6)修改MySQL初始密码
1、先启动mysql进程
./support-files/mysql.server start
2.如果启动报如下错误
则需要在/var/log目录下建立mariadb
mkdir mariadb
在mkdir下建立mariadb.log并赋权限
touch mariadb.log
chmod 777 mariadb.log
2.mysql进程启动之后修改密码
./bin/mysqladmin -u root -h localhost.localdomain password ‘123456’
4.密码修改后可登陆mysql
./bin/mysql -h127.0.0.1 -uroot -p123456
7)上述为mysql本地连接,mysql远程连接的命令
grant all privileges on . to root@’%’ identified by ‘root’;
flush privileges;
2.安装CM
2.1在主节点上解压安装
cloudera manager的目录默认位置在/opt下,解压:tar xzvf cloudera-manager*.tar.gz
为Cloudera Manager 5建立数据库
首先需要去MySql的官网下载JDBC驱动,http://dev.mysql.com/downloads/connector/j/,解压后,找到mysql-connector-java-5.1.43.bin.jar,放到/opt/cm-5.15.0/share/cmf/lib/中。
在主节点初始化CM5的数据库:
/opt/cm-5.15.0/share/cmf/schema/scm_prepare_database.sh mysql cm -hlocalhost -uroot -pxxxx --scm-host localhost scm scm scm
Agent配置
修改/opt/cm-5.1.3/etc/cloudera-scm-agent/config.ini中的server_host为主节点的主机名。
同步Agent到其他节点
scp -r /opt/cm-5.15.0 CentosB:/opt/
在所有节点创建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
准备Parcels,用以安装CDH5
将CHD5相关的Parcel包放到主节点的/opt/cloudera/parcel-repo/目录中(parcel-repo需要手动创建)。
相关的文件如下:
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
最后将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.sha1,这点必须注意,否则,系统会重新下载CDH-5.15.0-1.cdh5.15.0.p0.21-el7.parcel文件。
相关启动脚本(注意,在启动脚本时,在主节点上启动server和agent,在从节点上启动agent即可)
通过/opt/cm-5.15.0/etc/init.d/cloudera-scm-server start启动服务端。
通过/opt/cm-5.15.0/etc/init.d/cloudera-scm-agent start启动Agent服务。
我们启动的其实是个service脚本,需要停止服务将以上的start参数改为stop就可以了,重启是restart。
3.安装CDH
地址:http://主节点IP:7180,用户名、密码:admin
接受协议:
选择CM版本
本文档选择Cloudera Express免费版。
3.1.指定主机
在搜索主机名和IP地址框输入ip,这里输入的内容支持正则表达式。输入后点【搜索】按钮,出现机器列表:
选择“当前管理的主机“选择项卡,点【继续】。
3.2.选择CDH版本
这里需要选择制作本地源时的版本,如果选择别的版本的就会去官网下载,那样安装速度会很慢。
点【继续】按钮,进入安装界面。
确保全部通过验证
接下来是选择安装服务:
角色分配,根据实际需求和服务器进行分配(也可以选择默认)
数据库配置(这里配置数据库需要在mysql中建立数据库),完成后点击继续
集群配置(本文采取默认配置)
开始安装
安装完成