序言

纪录下Hadoop集群的搭建过程及途中踩过的坑,希望能对正在学习的同学有个帮助,少走点弯路~

PS:为了便于个人博客管理,此文从CSDN迁移过来,属于个人实际操作纪录的笔记,持续更新~

PPS:本文集群搭建为四台机器,不建议大家这么弄,因为zookeeper发挥最大作用的配置是大于2
的奇数台机器。

PPPS:有问题请下方留言,大家互相交流,分享使我快乐~~

  • 概述
  • 文件下载
  • 环境搭建
  • 安装Cloudera Manger
  • 日志查看
  • Q&A

一、前期准备

  1. 安装环境
    系统配置:

     系统:centos 7 最小安装版 64位
     内存:10G 10G 10G 8G
    

    四台机器组成小集群(物理机)

     CDH-DEV1 CDH-DEV2 CDH-DEV3 CDH-DEV4
    
  2. 需要下载的安装包

    注意下载相应系统的安装包

         CDH-5.13.0-1.cdh5.13.0.p0.29-el7.parcel
         CDH-5.13.0-1.cdh5.13.0.p0.29-el7.parcel.sha1
         manifest.json
    
  3. Installing Cloudera Manager and
    CDH


二、环境配置

注意所有操作都需要使用root权限操作

  1. 基本配置(所有节点)

    修改 /etc/hostname

     CDH-DEV1
    

    修改
    /etc/hosts,此处一定要注意,不要按照网上有的说明,将127.0.0.1那一行里的localhost.localdomain改成主机名称,在安装Cloudera
    Agent的时候会识别不出名称和IP

    image.png

修改 /etc/sysconfig/network

    NETWORKING=yes
    HOSTNAME=CDH-DEV1
  1. Java环境(所有节点)

    下载jdk-8u144-linux-x64.tar.gz
    解压到/usr/java(可根据个人习惯创建目录)

     tar xzvf jdk-8u144-linux-x64.tar.gz
    

    配置环境变量

     [root@CDH-DEV1 .ssh]# vim /etc/profile #在文件末尾添加下面三行
    
     export JAVA_HOME=/usr/java/jdk1.8.0_144
     export PATH=$JAVA_HOME/bin:$PATH
     export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    
     [root@CDH-DEV1 .ssh]# source /etc/profile #使生效
    
  2. SSH无密码登录(集群内节点能够互相无密码访问)

    思路:第一台机器配置authorized_keys,scp到第二台机器,将第二台机器的公钥添加到authorized_keys,然后将其scp到第三台,以此类推,直到配置到最后一台机器,将最后一台机器的authorized_keys
    scp到所有节点,如下

    1)在主节点(CDH-DEV1)执行

     [root@CDH-DEV1 .ssh]# ssh-keygen -t rsa
     [root@CDH-DEV1 .ssh]# cat id_rsa.pub >> authorized_keys
     [root@CDH-DEV1 .ssh]# chmod 600 authorized_keys
     [root@CDH-DEV1 .ssh]# scp authorized_keys root@CDH-DEV2:~/.ssh
    

    2)在CDH-DEV2执行

     [root@CDH-DEV2 .ssh]# ssh-keygen -t rsa
     [root@CDH-DEV2 .ssh]# cat id_rsa.pub >> authorized_keys
     [root@CDH-DEV2 .ssh]# chmod 600 authorized_keys
     [root@CDH-DEV2 .ssh]# scp authorized_keys root@CDH-DEV3:~/.ssh
    

    3)在CDH-DEV2执行

     [root@CDH-DEV3 .ssh]# ssh-keygen -t rsa
     [root@CDH-DEV3 .ssh]# cat id_rsa.pub >> authorized_keys
     [root@CDH-DEV3 .ssh]# chmod 600 authorized_keys
     [root@CDH-DEV3 .ssh]# scp authorized_keys root@CDH-DEV4:~/.ssh
    

    4)在CDH-DEV2执行

     [root@CDH-DEV4 .ssh]# ssh-keygen -t rsa
     [root@CDH-DEV4 .ssh]# cat id_rsa.pub >> authorized_keys
     [root@CDH-DEV4 .ssh]# chmod 600 authorized_keys
     [root@CDH-DEV4 .ssh]# scp authorized_keys root@CDH-DEV1:~/.ssh
     [root@CDH-DEV4 .ssh]# scp authorized_keys root@CDH-DEV2:~/.ssh
     [root@CDH-DEV4 .ssh]# scp authorized_keys root@CDH-DEV3:~/.ssh
    
  3. 安装MySQL(主节点安装即可)

    安装步骤:
    (1)此处需要注意的是centos 7
    默认安装的是mariadb,如果不卸载直接安装的话会报错,报错信息mariadb-libs is obsoleted by mysql-community-libs-5.7.9-1.el7.x86_64

     rpm -qa | grep mariadb #查看安装信息
     rpm -e mariadb-libs* --nodeps #根据查找到的软件包信息卸载
    

    (2)安装MySQL(必须按以下顺序安装)

     rpm -ivh mysql-community-common-5.7.20-1.el7.x86_64.rpm
     rpm -ivh mysql-community-libs-5.7.9-1.el7.x86_64.rpm
     rpm -ivh mysql-community-client-5.7.9-1.el7.x86_64.rpm
     rpm -ivh mysql-community-server-5.7.9-1.el7.x86_64.rpm
    

    (3)基本设置

     service mysqld start #启动服务
     vim /var/log/mysqld.log  #查看初始密码
     mysql -uroot -p   #登录
     set password = password('test01.') #设置密码
    
     #授权用户root使用密码passwd从任意主机连接到mysql服务器
     GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'passwd' WITH GRANT OPTION;
     flush privileges;
    

    (4)建数据库(用于后边组件安装)

     create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
     create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
     create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
    
  4. 关闭防火墙(所有节点)
    centos 7 默认使用的是firewall,不是iptables

     systemctl stop firewalld.service
     systemctl mask firewalld.service
    
  5. 关闭SELinux(所有节点)

     [root@CDH-DEV1 .ssh]# vim /etc/selinux/config
    
     设置SELINUX=disabled
    
  6. 配置NTP服务(所有节点)

     安装
     [root@CDH-DEV1 .ssh]# yum install ntp
     设置开机启动
     [root@CDH-DEV1 .ssh]# chkconfig ntpd on
     服务启动
     [root@CDH-DEV1 .ssh]# service ntpd start
    
  7. 所有节点上创建用户

     useradd --system --home=/opt/cm-5.13.0/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
    

概述

大数据时代,Hadoop是热门的Apache开源项目,公司大多基于其商业化从而满足自身的数据作业需求。CDH(Cloudera’s
Distribution, including Apache
Hadoop),是Hadoop众多分支中的一种,由Cloudera维护,整合Hadoop及一系列数据服务,关于CDH,官网给予的解释如下:

Critical Capabilities for Data Warehouse Database Management Systems

官网提供安装包、部署手册以及API说明
安装过程参考:
http://blog.csdn.net/jdplus/article/details/45920733
http://blog.csdn.net/a921122/article/details/51939692

基于其上,进行适当的修改和完善

三、安装

  1. 安装Cloudera Manager Server 和Agent

(1)将下载好的cloudera-manager-centos7-cm5.13.0_x86_64.tar.gz解压到主节点的/opt/,解压出来的文件夹为clouderacm-4.13.0

(2)为Cloudera
Manager建立数据库,此处需要前边下载好的mysql-connector-java-5.1.44-bin.jar

scp mysql-connector-java-5.1.44-bin.jar root@CDH-DEV1:/opt/cm-5.13.0/share/cmf/lib/
scp mysql-connector-java-5.1.44-bin.jar root@CDH-DEV1:/usr/share/java/

/opt/cm-5.13.0/share/cmf/schema/scm_prepare_database.sh mysql -uroot -p scm scm

(3)配置Agent

vim opt/cm-5.1.3/etc/cloudera-scm-agent/config.ini
server_host=CDH-DEV1

#拷贝到其他节点
[root@CDH-DEV1 parcel-repo]# scp -r /opt/cm-5.13.0/ root@cdh-dev2:/opt/
[root@CDH-DEV1 parcel-repo]# scp -r /opt/cm-5.13.0/ root@cdh-dev3:/opt/
[root@CDH-DEV1 parcel-repo]# scp -r /opt/cm-5.13.0/ root@cdh-dev4:/opt/

(4)准备parcels,将CDH相关文件拷贝到主节点/opt/cloudera/parcel-repo/

#相关文件    
CDH-5.13.0-1.cdh5.13.0.p0.29-el7.parcel
CDH-5.13.0-1.cdh5.13.0.p0.29-el7.parcel.sha1
manifest.json

#操作
scp mysql-connector-java-5.1.44-bin.jar root@CDH-DEV1:/opt/cm-5.13.0/share/cmf/lib/
scp mysql-connector-java-5.1.44-bin.jar root@CDH-DEV1:/usr/share/java/

需要将CDH-5.13.0-1.cdh5.13.0.p0.29-el7.parcel.sha1改成CDH-5.13.0-1.cdh5.13.0.p0.29-el7.parcel.sha,否则安装时会重新下载,很重要!!

[root@CDH-DEV1 parcel-repo]# mv CDH-5.13.0-1.cdh5.13.0.p0.29-el7.parcel.sha1 CDH-5.13.0-1.cdh5.13.0.p0.29-el7.parcel.sha

(5)启动

#主节点
/opt/cm-5.13.0/etc/init.d/cloudera-scm-server start

#主节点及其他节点
/opt/cm-5.13.0/etc/init.d/cloudera-scm-agent start

启动需要点时间,可以查看数据库scm中的hosts表,如果里面出现节点信息表示server启动完成

  1. 开始安装Hadoop集群

登录界面,默认登录用户名和密码都是admin

image.png

选择安装版本

image.png

为CDH群集安装指定主机

此处是在当前管理的主机里选择机器,不要在新主机里查找,另外这个地方显示的主机信息一定要对,我开始的时候因为主机名配置出问题,导致无法识别主机名称和IP,虽然agent的uuid是分配到了四台机器上,但是后边的安装无法进行。

image.png

群集安装

image.png

群集安装–安装指定parcel

分配时间受带宽影响,我的是千兆交换机组成的局域网,速度还可以,应该不到十分钟

image.png

检查主机正确性

image.png

第一个警告直接在所有节点上执行echo 10 > /proc/sys/vm/swappiness
第二个警告按照上面的说明,在所有节点上执行这两条命令
echo never > /sys/kernel/mm/transparent_hugepage/defrag >> /etc/rc.local
echo never > /sys/kernel/mm/transparent_hugepage/enabled >> /etc/rc.local

群集设置–选择安装服务–按需选择
群集设置–自定义角色–默认即可
群集设置–数据库设置

image.png

此处hue老出问题,一直解决不了,为了整条线走下去,而且目测hue基本用不到,所以选择了放弃安装hue.
贴一下网上找的几个解决方法,我都试了,没有解决,不知道什么问题,以后研究研究

群集设置–审查–默认即可
群集设置–首次设置–默认即可

开始安装服务
此处hive
,oozie会安装失败,失败信息如下。因为我们使用了MySQL作为hive元数据存储,需要将mysql驱动拷贝到hive和oozie目录下

image.png

image.png

解决方法(需要在所有节点上执行)

cp /opt/cm-5.13.0/share/cmf/lib/mysql-connector-java-5.1.44-bin.jar /opt/cloudera/parcels/CDH-5.13.0-1.cdh5.13.0.p0.29/lib/hive/lib/
cp /opt/cm-5.13.0/share/cmf/lib/mysql-connector-java-5.1.44-bin.jar /var/lib/oozie/        

安装完成

image.png

文件下载

  1. Cloudera Manager
    地址:http://archive.cloudera.com/cm5/cm/5/
    这里下载的是5.13.1的版本,http://archive.cloudera.com/cm5/cm/5/cloudera-manager-centos7-cm5.13.1\_x86\_64.tar.gz
  2. CDH安装包
    地址:http://archive.cloudera.com/cdh5/parcels
    本文基于CentOS7,下载的parcels包及manifest文件对应的版本为e17:
    CDH-5.13.1-1.cdh5.9.0.p0.23-el7.parcel
    CDH-5.13.1-1.cdh5.9.0.p0.23-el7.parcel.sha1
    manifest.json
  3. JDBC
    http://download.softagency.net/MySQL/Downloads/Connector-J/
    mysql-connector-java-5.1.39.tar.gz

    note : JDBC目前已经有6.x,但与CDH
    5.x存在不兼容,这里提供5.1.39下载包

四、踩过的坑

  1. 数据库配置
    问题描述:开始给Cloudera
    Manager配置数据库的时候,找的是网上的命令,/opt/cm-5.13.0/share/cmf/schema/scm_prepare_database.sh mysql cm -hlocalhost -uroot -p --scm-host localhost scm scm scm,一直报错,不知道什么问题,报错信息java.sql.SQLException: Your password does not satisfy the current policy requirements,各种改密码复杂度及降低数据库密码复杂度要求都不行,怀疑是CDH版本更新命令参数发生了变化
    解决方法,去掉部分参数,
    /opt/cm-5.13.0/share/cmf/schema/scm_prepare_database.sh mysql -uroot -p scm scm

  2. cloudera-scm-server启动,cm-5.13.0/etc/init.d/cloudera-scm-server:行109: pstree: 未找到命令,centos最小安装版缺少软件包,安装即可,yum install psmisc

  3. 中途安装失败,重新安装

    关闭所有服务

     #主节点
     [root@CDH-DEV1 opt]# /opt/cm-5.13.0/etc/init.d/cloudera-scm-server stop
     #主节点及其他节点
     [root@CDH-DEV1 opt]# /opt/cm-5.13.0/etc/init.d/cloudera-scm-agent stop
    

    删除agent uuid

     rm -rf /opt/cm-5.13.0/lib/cloudera-scm-agent/*
    

    删除数据库scm
    重新配置数据库
    /opt/cm-5.13.0/share/cmf/schema/scm_prepare_database.sh mysql -hlocalhost -uroot -p scm scm
    启动Cloudera server和agent,按照之前步骤安装即可

环境搭建


五、参考网站

Installing Cloudera Manager and
CDH

Cloudera Manager
5和CDH5离线安装,CDH-5.7.1

离线安装Cloudera Manager 5和CDH5(最新版5.1.3)
完全教程

1. 网络配置(所有节点)

修改主机名:vim /etc/sysconfig/network

HOSTNAME=master

设置网络为启动后自动连接,相关的设置文件为vim
/etc/sysconfig/network-scripts/ifcfg-ethXX/

ONBOOT=yes

修改IP与主机名的对应关系:vim /etc/hosts

192.168.39.31 master
192.168.39.20 node1
192.168.39.23 node2

写在后面

码字不易,觉得好点个赞哈~~

2. 设置SSH无密码访问(所有节点)

执行一下命令,一路回车,生成无密码的密钥对。

# ssh-keygen -t rsa

将公钥添加到认证文件中, 并设置authorized_keys的访问权限

# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# chmod 600 ~/.ssh/authorized_keys

通过scp命令将各节点的认证文件拷贝到所有其他节点使得各节点能够相互访问。

3. 安装Oracle Java(所有节点)

Linux可能自带OpenJDK,但运行CDH5需要使用Oracle的JDK,需要Java
7以上版本的支持。

1. 卸载自带的OpenJDK 使用下述命令查询相关的java包

# rpm -qa | grep java

使用-e选项填入包名卸载

# rpm -e --nodeps packageName

2. 安装Oracle java Oracle的官网下载jdk的rpm安装包,并使用rpm -ivh
packageName安装
3. 配置java环境变量 修改环境变量,vim
/etc/environment(和/etc/profile区别,大家可自行去网上查找)
添加如下(使用rpm安装的java在/usr/java/jdk1.8XXXX)

export JAVA_HOME=/usr/java/jdk1.8XXXX

执行命令使环境变量生效

# source /etc/environment

4. 安装配置MySQL(主节点)

安装mysql

# yum -y install mysql mysql-server mysql-devel

启动mysqld

# service mysqld start

开机启动

# chkconfig mysqld on

设置root用户密码

# mysql -u root -p xxxxxx

进入mysql命令行,创建以下数据库:

#hive 
> createdatabase hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
#activity monitor
> createdatabase amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
#hue
> createdatabase hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
#activity oozie (可选)
> createdatabase oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

授权root用户在主节点拥有所有数据库的访问权限

> grant all privileges on *.* to'root'@'master' identified by'xxxx'with grant option;
> flush privileges;
> 

5. 关闭防火墙和SELinux

关闭防火墙


1.关闭集群所有服务器的防火墙

[root@ip-172-31-6-148~]# chkconfig iptables off
[root@ip-172-31-6-148~]# service iptables stop
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Unloading modules:                               [  OK  ]
[root@ip-172-31-6-148 ~]# 

2.检查集群所有服务器防火墙是否关闭

[root@ip-172-31-6-148~]# service iptables status
iptables: Firewall is not running.
[root@ip-172-31-6-148~]# 

禁用SELinux


1.在集群所有节点执行如下命令

[root@ip-172-31-6-148~]# setenforce 0

2.修改集群所有节点配置文件/etc/selinux/config

[root@ip-172-31-6-148~]# vim /etc/selinux/config 

# This file controls the state ofSELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policyis enforced.
#     permissive - SELinux printswarnings instead of enforcing.
#     disabled - No SELinux policy isloaded.
SELINUX=disabled
# SELINUXTYPE= can take one of thesetwo values:
#     targeted - Targeted processes areprotected,
#     mls - Multi Level Securityprotection.
SELINUXTYPE=targeted

3.验证是否禁用成功

[root@ip-172-31-6-148~]# sestatus -v
SELinux status:                 disabled
[root@ip-172-31-6-148~]# 

6. 配置时钟同步


如果企业有自己的NTP Server则可以集群中所有节点可配置企业NTP
Server,如果没有自己的NTP服务器则在集群中选用一台服务器作为NTP
Server,其它服务器与其保持同步,配置如下:

1.在集群所有节点安装NTP服务

[root@ip-172-31-6-148~]# yum -y install ntp

2.选择集群一台服务器作为NTP Server,配置如下

[root@ip-172-31-6-148~]# vim /etc/ntp.conf

#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     #local clock
fudge   127.127.1.0 stratum 10

3.集群其它节点与其同步,配置如下:

[ip-172-31-5-190 ~]# vim /etc/ntp.conf

# Use public servers from thepool.ntp.org project.
#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 172.31.6.148

4.完成以上配置后,在集群所有节点执行如下命令

[root@ip-172-31-6-148~]# chkconfig --add ntpd
[root@ip-172-31-6-148~]# chkconfig ntpd on
[root@ip-172-31-6-148~]# service ntpd restart
Shutting down ntpd:                                        [  OK  ]
Starting ntpd:                                             [  OK  ]
[root@ip-172-31-6-148~]# 

5.验证所有节点NTP是否同步

[root@ip-172-31-5-190~]# ntpq -p
     remote           refid      st t when pollreach   delay   offset jitter
==============================================================================
*ip-172-31-6-148210.23.25.77     2 u 448 1024  377    0.255   3.245   7.859
[root@ip-172-31-5-190~]# 

Cloudera Manager安装与集群配置

1. 主节点CM安装

解压:tar xzvf
cloudera-manager*.tar.gz将解压后的cm-5.9和cloudera目录放到/opt目录下。
建立数据库:找到前面下载的mysql-connector-java-5.1.39.tar.gz,解压后将mysql-connector-java-5.1.39-bin.jar放到/opt/cm-5.9/share/cmf/lib/中。
初始化数据库:

# /opt/cm-5.9/share/cmf/schema/scm_prepare_database.sh mysql cm -hnode1 -uroot -p123456 --scm-host node1 scm scm scm

note:在这里后面的参数分别是:数据库类型 数据库名称 数据库主机名 数据库用户名 密码 --scm-host cmserver主机名 scm scm scm

2. Agent配置
修改/opt/cm-5.9/etc/cloudera-scm-agent/config.ini中的server_host为主节点的主机名。
同步Agent到其他所有节点: scp -r /opt/cm-5.9 root@node2:/opt/
在所有节点创建cloudera-scm用户

# useradd --system --home=/opt/cm-5.7.1/run/cloudera-scm-server/ --no -create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm

3. 安装CDH5
1. 准备Parcels
将CHD5相关的Parcel包放到主节点的/opt/cloudera/parcel-repo/目录中(parcel-repo需要手动创建)。
相关的文件如下:
CDH-5.9.0-1.cdh5.9.0.p0.23-el7.parcel
CDH-5.9.0-1.cdh5.9.0.p0.23-el7.parcel.sha1
manifest.json
最后执行命令,重命名.sha文件

# mv CDH-5.9.0-1.cdh5.9.0.p0.23-el7.parcel.sha1 CDH-5.9.0-1.cdh5.9.0.p0.23-el7.parcel.sha

2. 启动CM

# /opt/cm-5.7.1/etc/init.d/cloudera-scm-server start
# /opt/cm-5.7.1/etc/init.d/cloudera-scm-agent start

其余命令还有stop(停止), status(状态), restart(重启)

4. CDH集群配置
Cloudera Manager Server和Agent都启动以后,就可以进行CDH5的安装配置。

打开浏览器,访问master:7180/cmf/login

由于CM
Server的启动需要花点时间,这里可能要等待一会才能访问成果,可能需要3-5分钟,默认的用户名和密码均为admin

check:本机可以先curl -i
master:7180/cmf/login测试,有返回结果后,在浏览器端,输入ip:7180/cmf/login进行配置

note:
此处注意,若本机可curl连接上,但其他主机连接不上,考虑:主机防火墙是否正常关闭;两台主机是否在同一个局域网

ca88手机版 1

pic1 . 进入页

ca88手机版 2

pic2. CDH版本(CDH Express免费, Enterprise收费)

ca88手机版 3

note:以下图借用CM 5.7安装图

当各Agent节点正常启动后,可以在当前管理的主机列表中看到对应的节点。选择要安装的节点,点继续。
下一步,出现parcel自检测包名,如果本地Parcel包配置无误,选目标版本(例如CM5.7.1),直接点继续就可以了(若没有出现对应版本,则重启CM
server和agent)。

ca88手机版 4

pic3. parcel包版本检测
继续,如果配置本地Parcel包无误,那么下图中的已下载,应该是瞬间就完成了,然后就是耐心等待分配过程就行了,这个过程的速度就取决于节点之间的传输速度。

ca88手机版 5

当前受管:假如在安装的时候出现问题,如网络连接中断,机器死机,继续安装的时候可能会出现查询不到机器,并且根据ip搜索机器的时候,出现“当前受管”的状态为“是”,安装失败的机器不能再选择了。

ca88手机版 6

ca88手机版 7

至此,所有节点部署完成

下一步主机检查,遇到以下问题:

ca88手机版 8

Cloudera 建议将 /proc/sys/vm/swappiness 设置为 10。当前设置为 60。使用
sysctl 命令在运行时更改该设置并编辑 /etc/sysctl.conf
以在重启后保存该设置。

# echo 10 > /proc/sys/vm/swappiness

第二个警告,提示执行命令:

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

执行完毕,重启后,警告依然,暂时不处理。

继续之后,进入到安装服务页面

ca88手机版 9

note:从这里开始,所有的服务,既可以通过下述自助来安装一系列服务;也可以手动在CM管理页面一个一个添加

之前安装时选择一次性安装一系列服务,由于没有新建hue数据库导致hue服务安装不上,所以后面选择一个一个安装,在前期搭建环境时这样更好,起码出现问题可以锁定是哪个服务。

分步安装服务步骤为:
点击页面上Cloudera MANAGER,回到主节点页面

ca88手机版 10

出现cluster1群集1,点击下拉,选择“添加服务”

ca88手机版 11

ca88手机版 12

HDFS,HIVE, HUE,Oozie, YARN,
ZOOKEEPER是核心Hadoop的几个服务,分别安装,由于这些节点存在依赖关系,需注意先后顺序(当然,安装时CM会警告),顺序是:
Zookeeper, hdfs, yarn, hive, oozie, hue

注意:在安装hive, hue和oozie时,要将mysql驱动jar拷贝到相应位置

# cp /opt/cm-5.9/share/cmf/lib/mysql-connector-java-*-bin.jar /opt/cloudera/parcels/CDH-5.9.0-1.cdh5.9.0.p0.23/lib/hive/lib/  
# cp /opt/cm-5.9/share/cmf/lib/mysql-connector-java-*-bin.jar /opt/cloudera/parcels/CDH-5.9.0-1.cdh5.9.0.p0.23 /lib/hue/lib/  
# cp /opt/cm-5.9  /share/cmf/lib/mysql-connector-java-*-bin.jar /var/lib/oozie/

按需安装完服务后,可在集群界面(即Cloudera MANAGER)看一下集群的状况
[图片上传失败…(image-73a4ff-1513586472070)]

绿色:良好
黄色:运行不良
红色:存在问题

查看日志

CM虽然配置麻烦,但日志齐全,每个操作,都能找到相应的运行日志,日志对于配合、调试和查看任务进度都有很大的帮助

群集日志入口为

ca88手机版 13

各服务节点也有日志入口,支持日志筛选
分为stdout(所有日志), stderr(错误日志), 在细节上支持分级别(INFO, TRACE,
DEBUG等)筛选

Q&A

ps. 这部分有截取网上的解决方案,也有自己遇到的问题

  1. 在部署完成以后,会出现大量问题,其中有大量警告,是由于var/log/*的权限问题造成的。
    在master上,运行chmod -R 777对应的文件夹修改权限即可。

  2. 出现oozie和hive不能成功启动
    一般是因为缺少jdbc,复制到相应位置即可,位置请。或者是由于mysql数据库中的表造成的,可能是表已经存在了

  3. service monitor和host monitor都无法启动
    一般也是由于var/log/*的权限问题造成的

  4. service monitor和host monitor正常启动,但是无法获取到图表数据
    注销admin重新进入,或者等一下

  5. hdfs不能正常启动
    可能是因为/dfs的权限原因,提高/目录的权限

  6. hdfs和yarn的端口不再是9000和10020,默认的是8020和8021

  7. 如果使用Windows远程调试,请保证host文件(C:/Windows/System32/drivers/hosts)和集群上的host文件内容一致。

  8. 主机崩溃怎么办?
    一般来说崩溃了,直接重启就好。不过一定记得要再次启动cm的agent和server服务

  9. 通过CM启动Hive报错 org.apache.hadoop.hive.
    metastore.HiveMetaException: Failed to load driver
    这种情况,是缺少jdbc驱动,添加jdbc驱动到相应的lib下面。hive的lib路径是/opt/cloudera/parcels/CDH-5.9.0-1.cdh5.9.0.p0.23/lib/hive/lib

  10. 放置好lib之后,启动hive,接着出现java.sql.SQLException:Column name
    pattern can not be NULL or empty.
    原因是,一开始使用的jdbc
    lib是6.x的最新版本,但5.x和6.x在连接时针对某些默认值的检测值不同,将CM内用到的所有jdbc
    lib修改为5.x之后解决了这个错误

  11. 启动hdfs后,报警:群集中有704个副本不足的块,百分比副本不足的块:100%。临界阈值:40%
    解决方案:通过命令更改已经上传的文件的副本数(使用hdfs用户)

12.python连接hive时, Could not start SASL: Error in sasl_client_start
(-4) SASL(-4): no mechanism available: no
安装3个库

cyrus-sasl-plain
cyrus-sasl-devel
cyrus-sasl-gssapi

相关文章