基础环境要求

OS: CENTOS 7.1及以上版本(推荐最小化安装,不然部分包版本会有冲突)

JAVA: oracle JDK 1.7(不要使用OPENJDK)

MYSQL: 5.6.12以上

需使用的安装文件:

CDH-5.8.0-1.cdh5.8.0.p0.42-el7.parcel CDH离线安装文件

CDH-5.8.0-1.cdh5.8.0.p0.42-el7.parcel.sha 安装文件效验码

cloudera-manager-centos7-cm5.8.1_x86_64.tar.gz CDH引导安装文件

jdk-7u79-linux-x64.rpm java环境安装包

mysql-connector-java.jar mysql数据库java驱动程序

准备工作

以下操作如无特别说明都应在root用户下进行

创建外部数据库:

CDH依赖于关系数据库存储配置等信息,需建立的库有(只需建立空库即可,schema的初始化由cdh完成):

  • hive(hivemeta数据库,必须使用latin1编码,否则初始化库时为报错,其余数据库均使用utf-8编码)
  • hue(hue使用)
  • oozie(oozie使用)
  • cloudera-scm-db(cdh配置数据库)

HOSTS配置

为集群中所有节点设置合适的主机名(需永久设置,编辑/etc/hostname文件),编辑每个节点的
/etc/hosts文件,将集群中所有节点的hostname与ip地址映射配置进去并重启网络服务。在后续配置中任何涉及
网络位置的地方都应使用hostname进行配置而不是使用IP。可能涉及的bash命令为:

vim /etc/hostname
vim /etc/hosts
systemctl restart network

打通SSH

为了让CDH脚本可以通过SSH在每个节点执行,需要设置主从节点的SSH权限。首先在每个节点都执行:

ssh-keygen -t rsa

然后在主节点执行以下命令:

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

使用scp将文件复制到所有datenode节点:

scp ~/.ssh/authorized_keys root@datanode1:~/.ssh/

关闭防火墙

防火墙会引起CDH各个组件通讯异常,最好是直接关闭:

systemctl stop firewalld(临时关闭)
systemctl disable firewalld (重启后生效)

安装NTP服务

集群中的各个节点需要保持时间同步,如果时间差异较大会导致各种问题。
NTP的配置方式较复杂,请自行参考相关文档。

其它:

如果系统是最小化安装,一些必要的组件需要手工安装,如PSTREE等

yum -y install psmisc
yum install libxslt.x86_64

CDH如果连接mysql数据库需要配置相关的数据库驱动,将驱动包(mysql-connector-java.jar,名字不能改)
放到/usr/share/java目录中(集群每个节点都需要)

安装CDH

1.在主节点上上传cloudera-manager-centos7-cm5.8.1_x86_64.tar.gz安装包,以下操作如无特别说明都是在主节点进行。
2.创建主目录,并解压安装文件:

mkdir /opt/cloudera-manager
cd /opt/cloudera-manager
tar xzf cloudera-manager*.tar.gz -C /opt/cloudera-manager

3.创建必要的目录:

mkdir -p /opt/cloudera/parcel-repo
mkdir -p /opt/cloudera/parcels
mkdir /var/lib/cloudera-scm-server

4.上传离线安装文件:
将CDH-5.8.0-1.cdh5.8.0.p0.42-el7.parcel和CDH-5.8.0-1.cdh5.8.0.p0.42-el7.parcel.sha文件上传至
主节点的/opt/cloudera/parcel-repo目录中,如果不上传安装时默认会从cloudera的服务器上下载,网络如果
不好所需时间很长,建议使用离线文件的方式。

5.配置外部数据库(mysql)
CDH的所有配置需要依赖于外部数据库进行存储,数据源使用CDH提供的脚本进行配置,命令为:

/opt/cloudera-manager/cm-5.8.1/share/cmf/schema/scm_prepare_database.sh mysql --host {数据库IP} --scm-host {当前机器的hostname} {数据库名,需提前创建} {数据库用户名} {数据库用户密码}

6.修改agent的配置文件:

#修改server_host和server_port,server_host需要填写主节点的hostname
vim /opt/cloudera-manager/cm-5.8.1/etc/cloudera-scm-agent/config.ini

7.复制工作目录到每个datanode(在主节点执行,需要执行N次,N为datanode个数,注意替换命令的主机名):

scp -r  /opt/cloudera-manager/cm-5.8.1 root@datanode1:/opt/cloudera-manager/cm-5.8.1

8.创建运行用户(在每个节点都要执行):

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

启动&初始化设置

启动

启动主节点

/opt/cloudera-manager/cm-5.8.1/etc/init.d/cloudera-scm-server start

在每个datanode上启动代理程序:

mkdir /opt/cloudera-manager/cm-5.8.1/run/cloudera-scm-agent
/opt/cloudera-manager/cm-5.8.1/etc/init.d/cloudera-scm-agent start

server和agent的启动日志都存放在/opt/cloudera-manager/cm-5.8.1/log,通过查看日志判断是否都已成功启动

登录控制台

如果已成功启动服务,则可以通过http://{master_host}:7180/cmf/home访问CDH的控制台,默认用户名/密码为admin/admin

设置安装

1.首次登录成功后会选择安装版本,选择免费版即可;

2.选择集群节点,如果agent都成功启动,则此处会看到所有datanode节点,如果数目不对,则查看agent日志看是否成功连接server。

3.选择安装包(Parcel,注意版本号,此处应选择CDH-5.8.0-1.cdh5.8.0.p0.42-el7.parcel),如果上面设置无误的话,此处直接下一步即可;

4.开始安装和分发,如果使用了离线安装包,此处仅进行本地分发,否则要在线下载1.4G左右的文件;

5.主机正确性检查,如果有警告,按照提示的方式处理即可;

6.选择要在集群上安装的服务,选择自定义服务,然后勾选需要的服务进行安装即可
(HDFS,HIVE,IMPALA,HUE,SPARK,YARN,ZOOKEEPER);

7.配置外部数据库,根据准备工作中建立的数据库信息,配置相关主件的外部数据库,测试连接通过即OK;

8.启动所有服务,安装成功后系统会默认启动所有的服务及其依赖服务;

常见问题

访问HDFS文件Permission deny:

  1. 将HDFS的属性:dfs.permissions设置为false

Hive Metastore Canary报错:

  1. 确保HIVE对应的关系数据库是latin1编码;
  2. 如果关系数据库表未被正确初始化,将属性datanucleus.autoCreateSchema设置为true,然后重启hivemeta-server

HDFS副本不足的块:

  1. 修改hdfs的dfs.replication参数,其值需等于datanode的数量;
  2. 在主节点上执行hadoop fs -setrep n / (n为dfs.replication设置的值)

执行SQL时timestamp类型的字段时区不正确:

  1. 登录CDH控制台,在Impala Daemon 命令行参数中加入(避免时区问题)
-use_local_tz_for_unix_timestamp_conversions=true
-convert_legacy_hive_parquet_utc_timestamps=true