原创

Centos6安装大数据集群(CDH5)

温馨提示:
本文最后更新于 2019年08月01日,已超过 1,943 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

1 集群规划

【注意】:至少三台节点,主节点至少6G内存,另外两台至少4G内存,否则安装CDH5会因为运行环境不达标会报各种错误。

master、slave1、slave2

2 资源环境准备

Linux安装包CentOS-6.5-x86_64-minimal

MySQL的jarmysql-connector-java-5.1.28

JDKoracle-j2sdk1.7-1.7.0+update67-1.x86_64

cloudera manager

            **cloudera agent**:`cloudera-manager-agent-5.11.0-1.cm5110.p0.101.el6.x86_64`。

            **cloudera daemons**:`cloudera-manager-daemons-5.11.0-1.cm5110.p0.101.el6.x86_64`。

            **cloudera server**:`cloudera-manager-server-5.11.0-1.cm5110.p0.101.el6.x86_64`、`cloudera-manager-server-db-2-5.11.0-1.cm5110.p0.101.el6.x86_64`。

parcelCDH-5.11.0-1.cdh5.11.0.p0.34-el6.parcelCDH-5.11.0-1.cdh5.11.0.p0.34-el6.parcel.shamanifest.json

3 Linux系统环境准备

3.1 安装Centos6.5

3.2 配置网络

3.2.1 命令

vi /etc/sysconfig/network-scripts/ifcfg-eth0
cat /etc/sysconfig/network-scripts/ifcfg-eth0
###内容如下
DEVICE=eth0
HWADDR=00:0C:29:DA:27:3E
TYPE=Ethernet
UUID=de566494-8f5d-417a-a08c-161611f3749e
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
###自行切换
###master:192.168.200.121
###slave1:192.168.200.122
###slave2:192.168.200.123
IPADDR=192.168.200.121
NETMASK=255.255.255.0
GATEWAY=192.168.200.2
DNS1=8.8.8.8

3.2.2 重启网卡

service network restart

3.2.3 ping外网测试

ping www.liuzhaopo.top

3.2.4 配置Ip与主机名映射

3.2.4.1 编辑hosts命令
vi /etc/hosts
cat /etc/hosts
###添加
192.168.200.121        master
192.168.200.122        slave1
192.168.200.123        slave2
3.2.4.2 禁用IPv6
echo "alias net-pf-10 off" >> /etc/modprobe.d/dist.conf
echo "alias ipv6 off" >> /etc/modprobe.d/dist.conf

3.3 关闭防火墙和SELinux

###暂时关闭
service iptables stop
###永久性关闭
chkconfig iptables off
vi /etc/sysconfig/selinux
###将SELINUX改为disabled
SELINUX=disabled

3.4 设置文件打开数量和用户最大进程数

###查看文件打开数量
ulimit -a 
###查看用户最大进程数
ulimit -u
vi /etc/security/limits.conf
###增加以下内容:
* soft nofile 65535
* hard nofile 65535
* soft nproc 32000
* hard nproc 32000

3.5 yum源跟换和添加

3.5.1 更换yum 源为163

cd /etc/yum.repos.d

yum install -y wget

rename .repo .repo.bak *

wget http://mirrors.163.com/.help/CentOS6-Base-163.repo

yum clean all

yum makecache

yum install -y lrzsz

3.5.2 添加cloudera-manager.repo源 【所有节点都要】

cd /etc/yum.repos.d/

vi cloudera-manager.repo
###添加以下内容后保存退出
[cloudera-manager]
# Packages for Cloudera Manager, Version 5, on RedHat or CentOS 6 x86_64                 
name=Cloudera Manager
baseurl=https://archive.cloudera.com/cm5/redhat/6/x86_64/cm/5/
gpgkey =https://archive.cloudera.com/cm5/redhat/6/x86_64/cm/RPM-GPG-KEY-cloudera    
gpgcheck = 1

3.6 安装JDK

卸载Centos自带的JDK

sudo rpm -qa|grep jdk 或 sudo rpm -qa|grep java
sudo rpm -e --nodeps xxx yyy zzz

3.6.1 安装JDK命令

yum install -y oracle-j2sdk1.7

3.6.2 配置环境变量

vi /etc/profile
###在文件的末尾添加一下内容
#JAVA_HOME
export JAVA_HOME=/usr/java/jdk1.7.0_67-cloudera
export PATH=$PATH:$JAVA_HOME/bin

3.6.3 生效环境变量

echo "JAVA_HOME=/usr/java/jdk1.7.0_67-cloudera" >> /etc/environment

source /etc/profile

3.6.4 降低对硬盘的缓存

###/proc/sys/vm/swappiness设置为0,修改swap空间的swappiness
echo "vm.swappiness=0"  >> /etc/sysctl.conf

3.7 集群时间同步

全部节点:

#全部节点安装ntp
rpm -qa |grep ntpd
###没有安装ntp,则需要安装此服务
yum install -y ntp

master:

vi /etc/ntp.conf
###去掉这个注释,将地址改成网段地址
restrict 192.168.200.0 mask 255.255.255.0 nomodify notrap
###注释掉这几个
#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
vi /etc/sysconfig/ntpd
###加入下面一句话,用于配置boot时间和系统时间同步
SYNC_HWCLOCK=yes
service ntpd start
service ntpd status
chkconfig ntpd on
chkconfig --list |grep ntpd

slave1、slave2

输入 crontab -e 命令进入编辑状态,然后输入一下内容(该任务保存在目录/var/spool/cron 下,必须用root用户才能看到  )
* * * * * /usr/sbin/ntpdate master

3.8 配置免密登录

******配置主机之间的免密ssh登陆
假如 master  要登陆  slave1、slave2
在master上操作:
首先生成密钥对,命令如下:
ssh-keygen   (提示时,直接回车即可)        
将生产的秘钥copy到master上,命令如下
ssh-copy-id   master
ssh-copy-id   slave1
ssh-copy-id   slave2
如果出现 ssh-copy-id: command not found 需要执行该命令(yum -y install openssh-clients)

4 cdh安装

4.1 安装MySQL

注意:MySQL安装在master节点上。

4.1.1 查看CentOS自带mysql是否已安装

yum list installed | grep mysql

4.1.2 卸载自带的MySQL

若有自带安装的mysql,如何卸载CentOS系统自带mysql数据库?
输入:yum -y remove mysql-libs.x86_64,若有多个依赖文件则依次卸载。
当结果显示为Complete!即卸载完毕。

4.1.3 查看yum库上的MySQL版本信息

查看yum库上的mysql版本信息(CentOS系统需要正常连接网络)。
输入:sudo yum list | grep mysql 或 sudo yum -y list mysql*

4.1.4 使用yum安装MySQL数据库

使用yum安装mysql数据库。
输入:yum -y install mysql-server mysql mysql-devel ,命令将:mysql-server、mysql、mysql-devel都安装好,当结果显示为“Complete!”即安装完毕。
注:安装mysql只是安装了数据库,只有安装mysql-server才相当于安装了客户端。

4.1.5 设置MySQL开机自启

chkconfig mysqld on

4.1.6 启动MySQL

service mysqld start

4.1.7 修改MySQL密码

安装好mysql是没有密码的,需要进行设置,进入msyql将密码修改为你自己的,我这里将密码修改成root
输入:mysql -uroot

mysql> use mysql; 
mysql> update user set password=password('root') where user='root' and host='localhost'; 
mysql> flush privileges;

4.1.8 验证密码是否修改成功

###能够进入mysql的shell界面,代表成功。
mysql -uroot -proot

4.1.9 修改MySQL的访问权限

输入:mysql -uroot -proot

mysql> grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;

mysql> flush privileges;

4.2.0 创建表cdh相关默认数据库

输入命令;mysql -uroot -proot  进入mysql,执行以下sql建库语句        
mysql> create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
mysql> create database reports DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
mysql> create database navigatoraudit DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
mysql> create database navigatormetadata DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

4.2 在主节点【master】Cloudera Manager Server

4.2.1 在线安装

yum install cloudera-manager-daemons cloudera-manager-server

4.2.2 离线安装

资源下载地址:https://archive.cloudera.com/cm5/redhat/6/x86_64/cm/5/

上传三个server的资源包到master节点上
cloudera-manager-server-5.11.0-1.cm5110.p0.101.el6.x86_64.rpm 
cloudera-manager-server-db-2-5.11.0-1.cm5110.p0.101.el6.x86_64.rpm 
cloudera-manager-daemons-5.11.0-1.cm5110.p0.101.el6.x86_64.rpm

4.2.2.1 安装

yum  install -y postgresql-server

rpm -ivh cloudera-manager-daemons-5.11.0-1.cm5110.p0.101.el6.x86_64.rpm 

rpm -ivh cloudera-manager-server-5.11.0-1.cm5110.p0.101.el6.x86_64.rpm 

rpm -ivh cloudera-manager-server-db-2-5.11.0-1.cm5110.p0.101.el6.x86_64.rpm

4.3 MySQL驱动

把驱动jar包拷贝到master节点去。

拷贝mysql的连接驱动【mysql-connector-java-5.1.28.jar】到该目录下 /usr/share/cmf/lib

4.4 在主节点【master】初始化CM5的数据库

/usr/share/cmf/schema/scm_prepare_database.sh mysql -h localhost -uroot -proot --scm-host localhost scm root root

4.5 上传CHD5大数据服务组件资源包

上传到master节点的/opt/cloudera/parcel-repo。

下载地址【我已经下载了,无需再次下载】:http://archive.cloudera.com/cdh5/parcels/latest/   

cd /opt/cloudera/parcel-repo

上传:CDH-5.11.0-1.cdh5.11.0.p0.34-el6.parcel和CDH-5.11.0-1.cdh5.11.0.p0.34-el6.parcel.sha以及manifest.json 这个目录下 /opt/cloudera/parcel-repo    

使用 chmod -R guo+wr xxx 给上述三个文件配置可写可读的权限

4.6 启动Cloudera Manager Server

###主节点【master】上启动Cloudera Manager Server
service cloudera-scm-server start
###查看本机端口映射情况,等待出现7180端口映射,没有netstat的话yum install net-tools
netstat -nltp

###在/var/log文件夹里有server和agent的日志
tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log

4.7 浏览器验证

http://192.168.200.121:7180

4.8 安装agent

注意,所有节点都需要安装agent。

4.8.1 在线安装

yum install cloudera-manager-agent cloudera-manager-daemons

4.8.2 离线安装

上传这两个个server的资源包到所有节点上
cloudera-manager-agent-5.11.0-1.cm5110.p0.101.el6.x86_64.rpm         
cloudera-manager-daemons-5.11.0-1.cm5110.p0.101.el6.x86_64.rpm


### 安装顺序        
yum install -y openssl-devel perl bind-utils libxslt cyrus-sasl-plain cyrus-sasl-gssapi portmap fuse-libs /lib/lsb/init-functions httpd mod_ssl python-psycopg2 MySQL-python

### 注意:master节点不需要安装daemons了,因为在安装server的时候已经安装了。
rpm -ivh cloudera-manager-daemons-5.11.0-1.cm5110.p0.101.el6.x86_64.rpm 

rpm -ivh cloudera-manager-agent-5.11.0-1.cm5110.p0.101.el6.x86_64.rpm

4.8.3 修改config.ini内容

所有节点都要修改。

vi /etc/cloudera-scm-agent/config.ini
###修改为主节点的master
server_host=master

4.9 启动Cloudera Manager

###master、slave1、slave2都上启动Cloudera Manager Server
service cloudera-scm-agent start

5 登录安装cdh

5.1 浏览器访问

http://192.168.200.121:7180

5.2 安装cdh组件

img

仔细看我上传的cdh资源包的名字:

img

所以这一步你还会选错吗?

img

资源分配环节,大概需要二十分钟的样子:

img

主机检查:

img

透明大页面压缩,它已经告诉了你如何解决这个异常,我在最后面的异常1也已经写了如何解决这个异常:

img

必须保证没有任何异常再去安装:

img

img

演示安装Zookeeper:

img

img

img

img

img

img

img

img

演示安装YARN:

img

演示安装HBase:

img

监控台概览:

这个监控台数据图标要显示出来,大概需要十来分钟,一开始会报连接被拒绝,或者什么状态不良,这个没事,虚拟机嘛,电脑性能不是很好的话,别要求太高了,所以你要搭建这个电脑的配置运行内存至少16G。

img

cdh组件分配概览:

img

附加:

1.执行任务
在安装完hdfs,yarn服务时可以模拟执行任务
hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi 10 100

其实这个就是计算π的。

附加:

如需要通过域名访问,需要在Windows的hosts文件里配置

img

6 Clouder Manager Server和agent 安装过程异常情况处理

6.1 异常1

已启用“透明大页面”,它可能会导致重大的性能问题。版本为“CentOS release 6.3 (Final)”且版本为“2.6.32-279.el6.x86_64”的 Kernel 已将 enabled 设置为“[always] never”,并将 defrag 设置为“[always] never”。请运行“echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag”以禁用此设置,然后将同一命令添加到一个 init 脚本中,如 /etc/rc.local,这样当系统重启时就会设置它
(每个节点)
解决方案:

全部节点运行

echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never >> /etc/rc.local

6.2 异常2

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

echo  0 >  /proc/sys/vm/swappiness
sysctl vm/swappiness
echo 'vm.swappiness = 0'>/etc/sysctl.conf
sysctl -p

6.3 异常3

pstree: 未找到命令
解决方案:

yum install -y psmisc

6.4 找不到jdk

输入:sudo vi /etc/sudoers ,在sudoers最后面添加以下内容
Defaults env_keep+=JAVA_HOME

输入:sudo vi /etc/default/bigtop-utils 在 bigtop-utils 文件中添加以下内容
export JAVA_HOME=/usr/java/latest
然后执行以下命令
source /etc/default/bigtop-utilssource /etc/default/bigtop-utils

6.5 异常

如果出现agent主机不良状况
Error, CM server guid updated, expected 85587073-270d-43d9-a44a-e213d9f7e45b, received 4c1402a5-8364-4598-a382-0c760710e897
,尝试运行以下命令
rm -rf /var/lib/cloudera-scm-agent/cm_guid
之后重启agent
service cloudera-scm-agent restart

6.6 安装hive异常

异常描述:

Logon denied for user/password. Able to find the database server and database, but logon request was rejected

解决办法:

mysql > grant all privileges on *.* to 'root'@'主机名' identified by 'msql密码' with grant option;

###设置root授权访问以上所有的数据库
mysql > flush privileges;
本文目录