Cloudera集群初始搭建

2017 08 04 版本 初始1.0 (受用以后的一赞,将是鄙人持久的动力)
目录java

一,集群规划
二,linux系统环境准备
1,安装linux centos6.5
2,配置网络
3,增长普通用户
4,配置普通用户的sudo权限
5,关闭防火墙
6,禁用Selinux
7, 设置文件打开数量和用户最大进程数
8,yum源跟换和添加
9,卸载Centos自带的JDK
10,安装JDK
11 设置将 /proc/sys/vm/swappiness 设置为 0 (修改swap空间的swappiness,下降对硬盘的缓存 )
12,到这一步,集群公共环境已经准备完毕,开始克隆mini1虚拟机 —>mini2,mini3
13,集群时间同步(主节点)
14,配置免密登陆
三,cdh安装
1,安装mysql(须要root权限)并建立CDH相关的表【只须要在 mini1节点安装】
3,在主节点【mini1】Cloudera Manager Server ,如下方式随便选择一种【建议选择离线安装】
4,拷贝mysql的链接驱动【mysql-connector-java-5.1.28.jar】到该目录下 /usr/share/cmf/lib
5,在主节点【mini1】初始化CM5的数据库
6,上传CHD5大数据服务组件资源包
7,主节点【mini1】上启动Cloudera Manager Server
8,使用netstat-nltp命令查看【mini1】端口7180 是否启动成功,若是出现这个端口
9,在节点【mini1,mini2,mini3】Cloudera Manager agent ,如下方式随便选择一种【建议选择离线安装】
10,修改agent所在的节点【mini1,mini2,mini3】配置文件config.ini内容
11,启动Cloudera Manager
四,执行任务 验证
五,Clouder Manager Server和agent 安装过程异常状况处理 node

一,集群规划
【注意】:至少三台节点,主节点至少6G内存,另外两台至少4G内存,不然安装CDH5会由于运行环境不达标会报各类错误
|————–|———–|————-|—————-|———–|——————–|————-|python

主机/服务 Server Agent zookeeper namenode secondarynamenode datanode
mini1 主节点
mini2 从节点
mini3 从节点

二,linux系统环境准备mysql

1,安装linux centos6.5
1.1 主机名必须为小写的英文字符
1.2 centos 6.9 推荐安装linux

2,配置网络web

2.1 命令: vi /etc/sysconfig/network-scripts/ifcfg-eth0    
    以下配置:
    ONBOOT=yes
    BOOTPROTO=static
    IPADDR=192.168.80.81
    GATEWAY=192.168.80.1
    NETMASK=255.255.255.0
    DNS1=114.114.114.114

2.2 重启网卡命令:service network restart

2.3 拼百度:ping baidu.com 若是能拼通说明网络配置正确(网络不通,不能进行后面步骤)

2.4 配置Ip与主机名映射,命令:vi /etc/hosts

    192.168.80.81 mini1
    192.168.80.82 mini2
    192.168.80.83 mini3


2.5 禁用IPv6
 echo "alias net-pf-10 off" >> /etc/modprobe.d/dist.conf
 echo "alias ipv6 off" >> /etc/modprobe.d/dist.conf

3,增长普通用户
命令:useradd hadoop(增长用户)
命令:passwd hadoop (修改用户密码)sql

4,配置普通用户的sudo权限
命令:vi /etc/sudoers
hadoop ALL=(root)NOPASSWD:ALLshell

5,关闭防火墙
service iptables stop (暂时关闭)
chkconfig iptables off(永久性关闭)数据库

6,禁用Selinux
vi /etc/sysconfig/selinux
SELINUX=disabled json

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

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

8,yum源跟换和添加

8.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 lrzsz

8.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

9,卸载Centos自带的JDK
sudo rpm -qa|grep jdk 或 sudo rpm -qa|grep java
sudo rpm -e –nodeps xxx yyy zzz

10,安装JDK

10.1 安装jdk输入命令:sudo yum install oracle-j2sdk1.7   
  10.2 配置环境变量: vi /etc/profile
        在文件的末尾添加一下内容
        export JAVA_HOME=/usr/java/jdk1.7.0_67-cloudera
        export PATH=$PATH:$JAVA_HOME/bin  

  10.3 执行如下命令
    (root用户)echo "JAVA_HOME=/usr/java/jdk1.7.0_67-cloudera" >> /etc/environment

11 设置将 /proc/sys/vm/swappiness 设置为 0 (修改swap空间的swappiness,下降对硬盘的缓存 )

(root用户)输入:echo "vm.swappiness=0"  >> /etc/sysctl.conf )

12,到这一步,集群公共环境已经准备完毕,开始克隆mini1虚拟机 —>mini2,mini3

开始修改mini2-3 四台虚拟机的主机名和ip地址
12.1 修改主机名 vi /etc/sysconfig/network          
12.2 修改网络 vi  /etc/sysconfig/network-script/ifcfg-eth0        
    删掉UUID  HWADDR
    配置静态地址
    而后:
    rm -rf  /etc/udev/rules.d/70-persistent-net.rules
    而后 reboot

13,集群时间同步(主节点)

13.1 rpm -qa |grep ntpd 》》没有安装则须要安装此服务 》》yum install ntp

13.2 vi /etc/ntp.conf
    去掉这个注释,将地址改为网段地址
    restrict 192.168.80.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  startum 10

13.3 vi /etc/sysconfig/ntpd  加入下面一句话,用于配置boot时间和系统时间同步
    SYNC_HWCLOCK=yes

13.4 启动ntpd服务器  
    sudo service ntpd start
    sudo service ntpd status
    chkconfig ntpd on
    chkconfig --list |grep ntpd


13.5 客户机配置(从节点)
    使用 root用户操做
    输入 crontab -e 命令进入编辑状态,而后输入一下内容(该任务保存在目录/var/spool/cron 下,必须用root用户才能看到  )
    * * * * * /usr/sbin/ntpdate mini1

14,配置免密登陆
**配置主机之间的免密ssh登录
假如 mini1 要登录 mini2
在mini1上操做:
%%首先生成密钥对,命令以下:
ssh-keygen (提示时,直接回车便可)
将生产的秘钥copy到mini2上,命令以下
ssh-copy-id mini2
若是出现 ssh-copy-id: command not found 须要执行该命令(yum -y install openssh-clients)

三,cdh安装

1,安装mysql(须要root权限)并建立CDH相关的表【只须要在 mini1节点安装】

1.1 查看CentOS自带mysql是否已安装。
    输入:sudo yum list installed | grep mysql

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

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

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

1.5 设置开机启动:sudo chkconfig mysqld on

1.6 启动mysql
    输入:sudo service mysqld start

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; 

1.8 验证密码是否修改为功
    输入:mysql -uroot -proot  可以进入mysql的shell界面,表明成功。


1.9 修改mysql的访问权限
    输入:mysql -uroot -proot
    mysql> grant all privileges on *.* to 'root'@'192.168.0.110' identified by 'root';
    mysql> flush privileges;
            补充  select SUBSTRING_INDEX(host,':',1) as ip , count(*) from information_schema.processlist group by ip; 

1.10 建立表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;

3,在主节点【mini1】Cloudera Manager Server ,如下方式随便选择一种【建议选择离线安装】

3.1  在线安装sudo yum install cloudera-manager-daemons cloudera-manager-server

3.2  离线安装
     资源下载地址:https://archive.cloudera.com/cm5/redhat/6/x86_64/cm/5/
     上传三个server的资源包到mini1节点上
     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

     安装
     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,拷贝mysql的链接驱动【mysql-connector-java-5.1.28.jar】到该目录下 /usr/share/cmf/lib

5,在主节点【mini1】初始化CM5的数据库
/usr/share/cmf/schema/scm_prepare_database.sh mysql -h localhost -uroot -proot –scm-host localhost scm root root 不要粘贴手动收入

6,上传CHD5大数据服务组件资源包
下载地址【我已经下载了,无需再次下载】: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 给上述三个文件配置可写可读的权限

7,主节点【mini1】上启动Cloudera Manager Server
service cloudera-scm-server start

8,使用netstat-nltp命令查看【mini1】端口7180 是否启动成功,若是出现这个端口
可使用浏览器访问http://mini1:7180 (初始帐号密码为 admin admin)

9,在节点【mini1,mini2,mini3】Cloudera Manager agent ,如下方式随便选择一种【建议选择离线安装】

9.1  在线安装 sudo yum install cloudera-manager-agent cloudera-manager-daemons

9.2  离线安装
     上传三个server的资源包到mini1节点上
     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
     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

10,修改agent所在的节点【mini1,mini2,mini3】配置文件config.ini内容
sudo vi /etc/cloudera-scm-agent/config.ini
server_host=mini1 (这里我是以mini1做为server节点)

11,启动Cloudera Manager
在从节点【mini1,mini2,mini3】上启动Cloudera Manager Server
sudo service cloudera-scm-agent start

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

五,Clouder Manager Server和agent 安装过程异常状况处理

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

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

3 异常3
pstree: 未找到命令
解决方案
yum install -y psmisc

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

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,Hive Metastore canary 建立数据库失败
问题描述: Hive Metastore canary 建立数据库失败
日志:

Caused by: org.datanucleus.exceptions.NucleusException: Attempt to
invoke the “BONECP” plugin to create a ConnectionPool gave an error :
The specified datastore driver (“com.mysql.jdbc.Driver”) was not found
in the CLASSPATH. Please check your CLASSPATH specification, and the
name of the driver

问题定位:读取hive数据时报找不到mysql驱动 问题解决: * 尝试1 /opt/cloudera/parcels/CDH-5.4.7-1.cdh5.4.7.p0.3/lib/hive/lib cp /opt/cloudera/parcels/CDH-5.4.7-1.cdh5.4.7.p0.3/lib/sqoop/lib/mysql-connector-java-5.1.36-bin.jar /opt/cloudera/parcels/CDH-5.4.7-1.cdh5.4.7.p0.3/lib/hive/lib * 尝试2 在/etc/hive/conf.cloudera.hive/hive-env.sh中发现一句$(find /usr/share/java/mysql-connector-java.jar 因而将驱动拷贝到指定目录解决问题 cp /mnt/mysql-connector-java-5.1.36-bin.jar /usr/share/java/mysql-connector-java.jar cp /mnt/mysql-connector-java-5.1.36-bin.jar /opt/cloudera/parcels/CDH-5.4.7-1.cdh5.4.7.p0.3/lib/hadoop 解决问题