安装集群为内网环境(自己练手用的),一些安装文件通过U盘拷贝。准备3台生产机器,每台机器运行内存8G(官方推荐),硬盘大小为100G
参数 | 值 | 说明 |
---|---|---|
虚拟机名称 | nn,dn1,dn2 | 19.168.229.[150/151/152] |
虚拟机个数 | 3台 | 个数最少3个,且最好为奇数 |
内存 | 20G/4G | 主节点20G子节点4G |
磁盘 | 300G | 三台相同 |
系统 | CentOS-7-x86_64-DVD-1708.iso | 三台相同 |
CDH版本 | CDH-6.2.1 | CDH目前支持100台免费支持 |
系统
CentOS-7-x86_64-DVD-1708.iso
cm
cloudera-manager-agent-6.2.1-1426065.el7.x86_64.rpm
cloudera-manager-daemons-6.2.1-1426065.el7.x86_64.rpm
cloudera-manager-server-6.2.1-1426065.el7.x86_64.rpm
cloudera-manager-server-db-2-6.2.1-1426065.el7.x86_64.rpm
enterprise-debuginfo-6.2.1-1426065.el7.x86_64.rpm
jdk
oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm
ASC文件
allkeys.asc
CDH文件
CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel
CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel.sha1
manifest.json
JDBC驱动
mysql-connector-java-5.1.47.tar.gz
Mysql
MySQL-5.6.27-1.linux_glibc2.5.x86_64.rpm-bundle.tar
系统下载地址:http://mirrors.163.com/centos/7/isos/x86_64/
cm架包和jdk下载地址:https://archive.cloudera.com/cm6/6.2.1/redhat7/yum/RPMS/x86_64/
ASC文件下载地址:https://archive.cloudera.com/cm6/6.2.1/
CDH文件下载地址:https://archive.cloudera.com/cdh6/6.2.1/parcels/
JDBC驱动下载地址:https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.47.tar.gz
Mysql下载地址:https://downloads.mysql.com/archives/community/
输入如下命令,开始配置ip
vi /etc/sysconfig/netwok-scripts/ifcfg-*
进入文件后配置静态IP添加或者修改配置如下
添加配置参数
IPADDR=192.168.229.150/151/152
NETMASK=255.255.255.0
GATEWAY=192.168.229.2
DNS1=114.114.114.114
上面的配置是添加的ip地址,子网掩码,网关和DNS
修改配置参数
ONBOOT=yes
BOOTPROTO=static
机器重启生效和 机器IP地址获取方式由动态变为静态 static=>> dhcp
重启network
service network restart
检测是否能ping通其他内网机器,若无法ping通,查看ESXI配置,是否是桥接模式且宿主机器网络是否联通。
执行如下操作修改主机名称
vi /etc/hostname 或者
vi /etc/sysconfig/network
填写想要设定的主机名称即可,查看主机名称
hostname
配置hosts的目的在于CDH能够通过主机名称或者别名登陆其他机器。
vi /etc/hosts
我的配置如下
192.168.229.150 nn
192.168.229.151 dn1
192.168.229.152 dn2
CDH运行过程中,可能会因为防火墙的原因,会有特殊的问题,建议关闭防火墙,如果不能关闭,那需要逐条配置端口规则。
systemctl stop firewalld
systemctl disable firewalld
mariadb 是centeOS 7 自带的数据库,这里卸载是因为会跟mysql的部分功能产生冲突,如果你的CM的管理要用mariadb 或者已经安装了其他的数据库软件,那么这步跳过。
rpm -qa |grep mariadb
yum remove mariadb* -y
上面两步依次是检查是否安装了mariadb和卸载mariadb
首先查看 SELinux功能是否开启。
getenforce
如果显示Permissive 或者 Disabled 该步骤直接跳过,如果是enforcing ,进行下一步
vi /etc/selinux/config
将SELINUX=enforcing改为 SELINUX= disabled或者在外面输入
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
离线安装CDH依赖文件太多太多,导致安装很困难,我们可以找一台可以联网的机器,安装一个虚拟机,装上相同的操作系统,什么其他的软件都不要安装,如果你的内网环境rpm的时候,需要什么依赖,你就直接在可以联网的机器上执行,执行的下面的命令
yum install --downloadonly --downloaddir=./你的软件 你的软件
然后就会只下载,不安装,通过U盘拷贝到内网环境 执行
rpm -ivh ./*.rpm --nodeps --force
这条命令中 --nodeps 是不检查依赖 --force是覆盖安装,安装即可。
如果集群可以连接网络使用如下指令
yum install -y bind-utils libxslt cyrus-sasl-plain cyrus-sasl-gssapi portmap fuse-libs /lib/lsb/init-functions httpd mod_ssl openssl-devel python-psycopg2 MySQL-python fuse ntp perl perl-Module-Install.noarch
以上操作是在每个节点上运行进行搭建
在一个节点上运行
ssh-keygen -t rsa
分发密钥到所有节点
ssh-copy-id ip(需要分发节点的具体ip)
输入该节点的密码即可成功
验证:ssh root@节点名称 登陆成功不输入密码代表配置成功
(注:配置的第一个节点以后在配置第二个节点时不用再生成密钥,直接分发即可)
CDH集群的所有机器都需要时钟同步,时间差距需要在10分钟以内。在集群中找一台机器当时钟同步的server ,其他机器直接从这个server上同步时间。
修改系统时间
timedatectl set-ntp no
timedatectl set-time "2020-06-18 16:41:15"
timedatectl set-timezone Asia/Shanghai
date
上面的操作解释关闭ntp、设置时间 、设置时区和查看时间
配置时钟同步server
vi /etc/ntp.conf
对应修改
restrict 192.168.229.2 mask 255.255.255.0 nomodify notrap
server 127.127.1.0
fudge 127.127.1.0 stratum 10
上面的操作解释
第一行:允许内网其他机器同步时间;
第二行:外部时间服务器不可用时,以本地时间作为时间服务
注释以下内容
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
重启ntp 服务,关闭chronyd服务,ntp设置开机启动和同步时间
service ntpd restart
systemctl disable chronyd.service
systemctl enable ntpd.service
ntpstat
修改时区和对应的配置文件
timedatectl set-timezone Asia/Shanghai
vi /etc/ntp.conf
修改内容如下
server 192.168.229.150
restrict 192.168.229.150 nomodify notrap noquery
上面的操作解释第二行:写server端的IP;第二行:允许上层时间服务器主动修改本机时间
注释以下内容
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
执行
ntpdate -u 192.168.229.150
service ntpd restart
systemctl disable chronyd.service
systemctl enable ntpd.service
ntpstat
上面的操作解释
第一行:强制同步时间到server;
第二行:重启时钟同步服务
第三行:禁用chronyd服务;
第四行:开机启动;
第五行:查看同步状态
如果同步状态展示中,显示了ntp server的信息,表示同步成功,如果没有,那就等一会儿再执行看看
安装mysql之前确认两件事
1、卸载mariadb数据库
rpm -qa | grep mariadb
yum remove -y mariadb*
2、安装这两个依赖perl, perl-Module-Install.noarch
解压文件
tar xvf MySQL-5.6.27-1.linux_glibc2.5.x86_64.rpm-bundle.tar
安装文件
rpm -ivh MySQL-*.rpm
复制配置文件并修改
cp /usr/share/mysql/my-default.cnf /etc/my.cnf
vi /etc/my.cnf
在[mysqld]后添加
default-storage-engine = innodb
innodb_file_per_table
collation-server = utf8_general_ci
init-connect = 'SET NAMES utf8'
character-set-server = utf8
以上配置好后进行初始化mysql
/usr/bin/mysql_install_db
cat /root/.mysql_secret
service mysql start
/usr/bin/mysql_secure_installation
上面的操作解释
第一行:初始化mysql;
第二行:查看MySQL初始密码;
第一行:开启mysql的服务;
第二行:进行MySQL的格式化;
运行mysql_secure_installation后会按顺序执行几个设置:
1、为root用户设置密码
2、删除匿名账号
3、取消root用户远程登录
4、删除test库和对test库的访问权限
5、刷新授权表使修改生效
进入mysql :
mysql -uroot -p123456
使用mysql数据库:
use mysql
查看user表:
select host,user from user;
将user表中host选项只剩下localhost哪一行数据。
要一行一行的删除 语句:
delete from user where host='::1';
然后输入:
update user set host='%';
查看是否修改
select user,host from user;
创建数据库,为以后的集群做准备:
create database hive DEFAULT CHARACTER SET utf8;
create user 'hive' identified by 'hive';
grant all on hive.* TO 'hive'@'%' with grant option;
create database amon DEFAULT CHARACTER SET utf8;
create user 'amon' identified by 'amon';
grant all on amon.* TO 'amon'@'%' with grant option;
create database rman DEFAULT CHARACTER SET utf8;
create user 'rman' identified by 'rman';
grant all on rman.* TO 'rman'@'%' with grant option;
create database oozie DEFAULT CHARACTER SET utf8;
create user 'oozie' identified by 'oozie';
grant all on oozie.* TO 'oozie'@'%' with grant option;
create database hue DEFAULT CHARACTER SET utf8;
create user 'hue' identified by 'hue';
grant all on hue.* TO 'hue'@'%' with grant option;
create database naud DEFAULT CHARACTER SET utf8;
create user 'naud' identified by 'naud';
grant all on naud.* TO 'naud'@'%' with grant option;
create database nmet DEFAULT CHARACTER SET utf8;
create user 'nmet' identified by 'nmet';
grant all on nmet.* TO 'nmet'@'%' with grant option;
刷新权限
flush privileges;
将mysql服务设成开机启动
chkconfig mysql on
创建之前确保httpd,createrepo已下载没有下载执行下面的指令
yum install -y httpd
yum install -y createrepo
开启http服务
service httpd start
进入/var/www/html/中创建cm6和cdh6文件夹
如上面两个图所示将文件放入
进入cm6中输入
createrepo .
创建源文件(以下的每个节点都要做)
cat >> /etc/yum.repos.d/cm6.repo << EOF
[cm6.repo-local]
name=cm6.repo-local
baseurl=http://nn/cm6
enabled=1
gpgcheck=0
EOF
删除或者屏蔽CenteOS 自带的源,因为你无法访问外网,不删除会报错
rm -rf /etc/yum.repos.d/Centos*
或者
mkdir -p /etc/yum.repos.d/centos
mv /etc/yum.repos.d/CentOS-* /etc/yum.repos.d/centos
清理缓存的源并验证
yum clean all
yum repolist
设为开机启动
systemctl enable httpd
本地yum源中有jdk的包,所以直接安装即可
yum install -y oracle-j2sdk1.8
配置java的环境变量的脚本方便省事
#! /bin/bash
echo 进入解压文件创建软连接
cd /usr/java/
ln -s jdk1.8* jdk8
echo 软连接创建成功
echo 开始配置环境
cd jdk8/
javahome=`pwd`
echo '' >> /etc/profile
echo '# JAVA_HOME' >> /etc/profile
echo export JAVA_HOME=$javahome >> /etc/profile
echo export PATH=\$JAVA_HOME/bin:\$PATH >> /etc/profile
source /etc/profile
echo 配置环境成功,请按回车进行验证
read k
java -version
创建驱动的文件夹并安装mysql的JDBC驱动
mkdir -p /usr/share/java/
cp mysql-connector-java-5.1.47-bin.jar /usr/share/java/mysql-connector-java.jar
安装服务
yum install -y cloudera-manager-daemons
yum install -y cloudera-manager-server
yum install -y cloudera-manager-agent
移动paracel包到parcel-repo
在安装服务后会自动生成/opt/cloulera/parcel-repo目录,将parcel移动到此目录,如果不复制的化,机器会尝试从网上下载。
mv CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel* /opt/cloudera/parcel-repo
mv manifest.json /opt/cloudera/parcel-repo/
将sha1结尾的文件改为sha结尾
mv /opt/cloudera/parcel-repo/CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel.sha1 /opt/cloudera/parcel-repo/CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel.sha
修改权限
chown -R cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo/
确定server主机
sed -i 's/server_host=localhost/server_host=nn/g' /etc/cloudera-scm-agent/config.ini
对应MySQL创建cm表
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql -h nn -uroot -p123456 --scm-host nn scm scm scm
安装服务
yum install -y cloudera-manager-daemons
yum install -y cloudera-manager-agent
确定server主机
sed -i 's/server_host=localhost/server_host=nn/g' /etc/cloudera-scm-agent/config.ini
systemctl start cloudera-scm-server
systemctl start cloudera-scm-agent
后面的配置可以参考https://www.cnblogs.com/yaowentao/p/12300437.html
基本上是傻瓜式安装。
我参考的网站
1、 https://blog.csdn.net/u010514380/article/details/88083139?utm_source=app
2、 https://www.cnblogs.com/yyy-blog/p/10697234.html
3、 https://blog.csdn.net/sinat_28007043/article/details/92840860
4、 https://www.cnblogs.com/swordfall/p/10816797.html
5、 https://www.cnblogs.com/mylovelulu/p/10384732.html
6、 https://www.cnblogs.com/yaowentao/p/12296329.html
7、https://www.cnblogs.com/yaowentao/p/12300437.html
本文内容为个人理解,如有错误,还请指出。