CDH6.3.1安装

1,014 阅读9分钟

这是我参与8月更文挑战的第26天,活动详情查看:8月更文挑战

 CDH6.3.1安装遇到很多问题,我想主要是由于条件有限,毕竟自己的电脑内存不如专业集群的内存大(如果是内存和硬盘充足,有些是可以避免的,甚至不会出现报错的情况),这里就介绍一下我用VMware安装的虚机中搭建CDH集群的辛酸历程。为了避免多次、重复安装不成功,所以需要具备以下条件:
1.    内存要足够大
我的电脑内存是8G:
使用虚拟机安装
Cloudare server:4G
Cloudare agent:分别为1G
电脑最后很卡,而且内存98%。
官方推荐最小内存为10G,所以最好还是听从官方的建议。
2.    安装的系统Centos7.7,这里我就不写VMware安装centos的操作步骤了。

3.    ClouderaManager介绍:
3.1 ClouderaManager的概念
简单来说,Cloudera Manager是一个拥有集群自动化安装、中心化管理、集群监控、报警功能的一个工具(软件),使得安装集群从几天的时间缩短在几个小时内,运维人员从数十人降低到几人以内,极大的提高集群管理的效率。

3.2 ClouderaManager的功能
1)    管理:对集群进行管理,如添加、删除节点等操作。
2)    监控:监控集群的健康情况,对设置的各种指标和系统运行情况进行全面监控。
3)    诊断:对集群出现的问题进行诊断,对出现的问题给出建议解决方案。
4)    集成:多组件进行整合。

3.3    ClouderaManager的架构

1)    Server:负责软件安装、配置,启动和停止服务,管理服务运行的群集。
2)    Agent:安装在每台主机上。负责启动和停止的过程,配置,监控主机。
3)    Management Service:由一组执行各种监控,警报和报告功能角色的服务。
4)    Database:存储配置和监视信息。
5)    Cloudera Repository:软件由Cloudera 管理分布存储库。(有点类似Maven的中心仓库)
6)    Clients:是用于与服务器进行交互的接口(API和Admin Console)

1.1    安装前准备
1.1.1     网络配置【所有节点】

修改hostname
在每个节点上执行hostname [主机名]
配置网络

vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=manager   #【每个节点改成相应的hostname】
NETWORKING_IPV6=no
PEERNTP=no

保存退出
重启网络服务

service network restart

配置hosts(可用ifconfig查看ip)

vim /etc/hosts
192.168.102.131 manager
192.168.102.132 node1
192.168.102.133 node2

1.1.2     设置ssh免密登陆【所有节点】
生成无密码的密钥对

ssh-keygen -t rsa

一路回车
将公钥添加到本地认证文件中

cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys

设置authorized_keys的访问权限

chmod 600 /root/.ssh/authorized_keys

**以上步骤先在每个节点上先执行一遍,然后执行下面操作
将每个节点上生成的id_rsa.pub复制到其他所有节点并添加到它们的认证文件中
比如:manager上生成的id_rsa.pub,复制到node1和node2上

scp /root/.ssh/id_rsa.pub node1:/root/(manager上执行)
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys(在node1上执行)
scp /root/.ssh/id_rsa.pub node2:/root/(manager上执行)
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys(在node2上执行)

其余节点类似操作
验证是否配置免密登录成功:

ssh root@node2

看是否需要输入密码
1.1.3     安装Oracle的JDK【所有节点】
如果CentOS装有OpenJDK,卸载之,CDH6需要使用Oracle的JDK,我这里使用jdk 1.8。 
卸载自带的OpenJDK
使用rpm -qa  |  grep java查询java相关的包
使用rpm -qa  |  grep openjdk  |  xargs rpm -e --nodeps卸载之
安装oracle jdk
采用的tar.gz包安装,解压压缩包jre-8u181-linux-x64.tar.gz,并且将解压的到的文件夹jre1.8.0_181复制到/usr/java/jdk1.8(该目录是Cloudera Manager查找JAVA_HOME的一个路径)

tar zxvf jre-8u181-linux-x64.tar.gz
mkdir -p /usr/java/jdk1.8
mv jre1.8.0_181/* /usr/java/jdk1.8
rmdir jre1.8.0_181
chown -R root:root /usr/java/jdk1.8

配置环境变量

vi /etc/profile
将以下内容添加到profile
export JAVA_HOME=/usr/java/jdk1.8
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
然后刷新
source /etc/profile

1.1.4     关闭防火墙和SELinux 【所有节点】
注意: 需要在所有的节点上执行,因为涉及到的端口太多了,临时关闭防火墙是为了安装起来更方便,安装完毕后可以根据需要设置防火墙策略,保证集群安全。 
关闭防火墙
CentOS 7.0默认使用的是firewall作为防火墙

查看防火墙状态
firewall-cmd --state
停止firewall
systemctl stop firewalld


禁止firewall开机启动

systemctl disable firewalld


关闭SELINUX
setenforce 0 (临时生效)  
修改 /etc/selinux/config 下的 SELINUX=disabled (重启后永久生效)

1.1.5  安装配置MySQL5.7【主节点】

卸载已有的mysql-libs
rpm -qa | grep mysql
rpm -qa | grep maria

rpm -e --nodeps 【包名】
安装mysql
创建/usr/mysql
mkdir /usr/mysql

上传tar.gz包到/usr/mysql
rz或者使用winscp工具

解压:
tar -zxvf mysql-5.7.11-linux-glibc2.5-x86_64.tar.gz

移动并重命名:
mv mysql-5.7.11-linux-glibc2.5-x86_64 mysql-5.7.11

创建mysql用户组和用户并修改权限
groupadd mysql
useradd -r -g mysql mysql


​​

 创建数据目录并赋予权限

mkdir -p  /home/data/mysql                    #创建目录

chown mysql:mysql -R /home/data/mysql         #赋予权限

配置my.cnf

vim /etc/my.cnf
内容如下
[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/mysql/mysql-5.7.11
datadir=/home/data/mysql
socket=/tmp/mysql.sock
log-error=/home/data/mysql/mysql.err
pid-file=/home/data/mysql/mysql.pid
#character config
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true

初始化数据库

进入mysql的bin目录
cd /usr/mysql/mysql-5.7.11/bin/
初始化
./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/mysql/mysql-5.7.11/ --datadir=/home/data/mysql/ --user=mysql --initialize


查看密码

cat /home/data/mysql/mysql.err | more | grep password


启动mysql,并更改root 密码

先将mysql.server放置到/etc/init.d/mysql中

cp /usr/mysql/mysql-5.7.11/support-files/mysql.server /etc/init.d/mysql

#启动!!!

service mysql start

ps -ef|grep mysql

到这里说明mysql已经安装成功了!!

下面修改密码

首先登录mysql,前面的那个是随机生成的。

./mysql -u root -p   #bin目录下

再执行下面三步操作,然后重新登录。

SET PASSWORD = PASSWORD('123456');

ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;

FLUSH PRIVILEGES;

这时候你如果使用远程连接……你会发现你无法连接。(防火墙要关闭)

这里主要执行下面三个命令(先登录数据库)

use mysql                                            #访问mysql库

update user set host = '%' where user = 'root';      #使root能再任何host访问

FLUSH PRIVILEGES;                                    #刷新

如果不希望每次都到bin目录下使用mysql命令则执行以下命令

ln -s  /usr/mysql/mysql-5.7.11/bin/mysql  /usr/bin

mysql创建数据库cmf、amon

create database amon DEFAULT CHARACTER set utf8;

create database cmf DEFAULT CHARACTER set utf8;

grant all privileges on cmf.* to 'cmf'@'%' identified by '123456';

grant all privileges on amon.* to 'amon'@'%' identified by '123456';

flush privileges;

创建/usr/share/java目录

mkdir -p /usr/share/java

把mysql-connector-java的jar拷贝到该目录下:

cp mysql-connector-java-5.1.47.jar /usr/share/java/mysql-connector-java.jar

设置开机启动

先将/usr/mysql/mysql-5.7.11/support-files/ 文件夹下的mysql.server文件复制到 /etc/rc.d/init.d/ 目录下mysqld

命令: cp /usr/mysql/mysql-5.7.11/support-files/mysql.server /etc/rc.d/init.d/mysqld

赋予可执行权限:chmod +x /etc/rc.d/init.d/mysqld

开机启动:chkconfig mysqld on

查看服务列表:  chkconfig --list

看到3、4、5状态为开或者为 on 则表示成功。如果是 关或者 off 则执行一下:chkconfig --level 345 mysqld on

1.1.6    配置NTP(Network Time Protocol)服务【所有节点】
集群中所有主机必须保持时间同步,如果时间相差较大会引起各种问题。 具体思路如下: master节点作为ntp服务器与外界对时中心同步时间,随后对所有slave节点提供时间同步服务。所有slave节点以master节点为基础同步时间。
修改时区【所有节点】
时区的信息存在/usr/share/zoneinfo/下面,本机的时区信息存在/etc/localtime

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

或者
查看一下当前时区:

timedatectl

查看一共有哪些时区:

timedatectl list-timezones

如果不是shanghai时区,设置成shanghai时区:

timedatectl set-timezone Asia/Shanghai

所有节点安装相关组件

yum install -y ntp
开机启动:systemctl enable ntpd.service

【主节点ntpserver配置】

vim /etc/ntp.conf
server 127.127.1.0 iburst local clock
restrict 192.168.102.0 mask 255.255.255.0 nomodify notrap 
开启ntp:systemctl start ntpd
查看状态:systemctl status ntpd


校验一下:ntpq –p

【slave节点ntp客户端配置】

关闭ntp:systemctl stop ntpd
禁用ntp:systemctl disable ntpd
与主节点同步时间:ntpdate manager


在slaver节点上创建定时任务:

crontab –e
* * * * * /usr/sbin/ntpdate manager

1.2    安装Cloudera Manager
1.2.1    解压cloudera manager

tar -zxvf cm6.3.1-redhat7.tar.gz


目录:/usr/cdh/cm6.3.1/RPMS/x86_64的文件:

cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm
cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm
cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm
cloudera-manager-server-db-2-6.3.1-1466458.el7.x86_64.rpm(这个是官方postgresql,不要这个)
enterprise-debuginfo-6.3.1-1466458.el7.x86_64.rpm
oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm

其中manager节点(既有server又有agent):
Server需要安装的:

cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm
cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm
cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm


安装rpm包,不安装依赖:

rpm -ivh cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm --nodeps --force
rpm -ivh cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm --nodeps --force
rpm -ivh cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm --nodeps --force


​​

 修改文件:

cd /etc/cloudera-scm-server/
vim db.properties


注意:com.cloudera.cmf.db.setupType一定要改成EXTERNAL,这是一个坑。
查看日志:cd /var/log/cloudera-scm-server/

启动cloudera-scm-server:

service cloudera-scm-server start
查看日志:cd /var/log/cloudera-scm-server/
tai –F cloudera-scm-server.log

初始化数据,大概需要1~2分钟,出现7180端口皆大欢喜:

访问7180的web界面:到这里,先不要动!!!!!!!!!!

修改/etc/cloudera-scm-agent/config.ini

vim config.ini


启动cloudera-scm-agent:

service cloudera-scm-agent start

node1、node2节点:
Agent需要安装的:

cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm
cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm
安装rpm包,不安装依赖:
rpm -ivh cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm --nodeps --force
rpm -ivh cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm --nodeps --force


修改/etc/cloudera-scm-agent/config.ini

vim config.ini


启动cloudera-scm-agent:

service cloudera-scm-agent start
查看cloudera-scm-agent状态:
service cloudera-scm-agent status


现在可以登录7180界面了: 输入用户名和密码都是:admin 我们选择免费版本的。

为CDH集群安装指定主机

选择存储库:parcel

这里我们使用http的方式:
[root@manager cdh]# yum install -y httpd

[root@manager cdh]# mkdir /var/www/html/cdh6_parcel
把CDH-6.3.1-1.cdh6.3.1.p0.1470567-el7.parcel、CDH-6.3.1-1.cdh6.3.1.p0.1470567-el7.parcel.sha1(注意,这里一定要重命名为CDH-6.3.1-1.cdh6.3.1.p0.1470567-el7.parcel.sha,因为不这样重命名,它会认为我们的parcel包不完成,会重新下载)、manifest.json移动到/var/www/html/cdh6_parcel目录下。
[root@manager cdh]# ll
[root@manager cdh]# mv CDH-6.3.1-1.cdh6.3.1.p0.1470567-el7.parcel /var/www/html/cdh6_parcel/
[root@manager cdh]# mv CDH-6.3.1-1.cdh6.3.1.p0.1470567-el7.parcel.sha1 /var/www/html/cdh6_parcel/CDH-6.3.1-1.cdh6.3.1.p0.1470567-el7.parcel.sha
[root@manager cdh]# mv manifest.json /var/www/html/cdh6_parcel/


[root@manager cdh]# service httpd start

访问:http://manager/cdh6_parcel/

点击“更多选项”,远程parcel存储库URL这里删除的只剩一条,把刚才我们创建的http地址添加进去

​​

这里注意:http://manager/cdh6_parcel/不是https://manager/cdh6_parcel/,

然后点击右下角的保存更改,刚才的页面就会自动刷新,如下图:

勾选CDH-6.3.1-1.cdh6.3.1.p0.1470567,然后继续

等待安装parcels,成功后的界面:

Inspect Network Performance(检查网络性能)

出现了感叹号,点击“显示检查器结果”,如下:

1.    Cloudera 建议将 /proc/sys/vm/swappiness 设置为 10。当前设置为 30。使用 sysctl 命令在运行时更改该设置并编辑 /etc/sysctl.conf 以在重启后保存该设置。您可以继续进行安装,但可能会遇到问题,Cloudera Manager 报告您的主机由于交换运行状况不佳。以下主机受到影响:
解决办法:

三台节点上运行:echo 'vm.swappiness=10'>> /etc/sysctl.conf
立即生效:sysctl –p

2.    已启用透明大页面压缩,可能会导致重大性能问题
三台节点分别执行:

echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled

然后,点击重新运行:

再次查看“显示检查器结果”,如下图:这里的这个先不用管,忽略即可

我们选择下图红色框内的(我已经了解了,让我继续安装吧),继续安装

点击继续,选择要安装的服务,自定义服务:自己决定安装什么,比如安装:HDFS,勾选上就行

自定义服务分配

数据库设置:

1.    因为内存少,所以会遇到下面问题:

command aborted because of exception:Command timed-out after 90 seconds
hdfs/hdfs.sh ["mkdir","/tmp","hdfs","superfgroup","1777"]

上面的命令超时。
解决办法:
再次重试,就可以通过了。
假如遇到其他问题,可以通过角色日志查看问题原因。
2.    CDH部署集群报错:fail to format namenode
手动格式化namenode
问题原因
是由于之前初始化 namenode 在 /dfs/nn 留下了残留数据(失效数据),从而影响再次初始化
解决方法
清空残留数据后,重新初始化

namenode节点:
rm -rf /dfs/nn
datanode节点:
rm -rf /dfs/dn

由于我的只是namenode节点有问题,所以只需:rm -rf /dfs/nn

最终运行全部通过(注意这里的时间5月28日1:43凌晨,lz是下班后边安装边写的文档)

点击完成即可。
CloudareManager界面:

安装完CDH就可以安装其他组件了,比如impala、kudu、Kafka等,以后会更新其他组件相关内容,敬请期待!