CDH 5.12.1 离线部署指南(附spark2.2.0集成指南)

CDH 5.12.1离线部署指南(附spark2.2.0集成指南)

由于国内的网络原因,CDH在国内几乎无法实现在线安装,本文将介绍CDH离线安装方式,所有安装包下载后传输到内网安装,由于版本较新的原因,安装过程的坑还是很多的,在此记录一下。

一、       硬件说明

一共6台节点:

master:32.31.104.159

slave1:32.31.104.161

slave2:32.31.104.162

slave3:32.31.104.163

slave4:32.31.104.164

slave5: 32.31.104.165

所有机器:

操作系统:Ubuntu16.04 LTS 对应代号为xenial

内存:128g

cpu:20个物理核心,40线程

二、       软件下载

由于mysql服务器已经预装,所以这里不再下载安装mysql。

需要的所有安装包如下:

jdk-8u121-linux-x64.tar.gz

libopts25_5.18.12-3_amd64.deb

ntp_4.2.8p4+dfsg-3ubuntu5.7_amd64.deb

以上三个包我已经打包在百度云中,下载地址:https://pan.baidu.com/s/1nvT3K05

cloudera-manager-xenial-cm5.12.1_amd64.tar.gz

下载地址:http://archive.cloudera.com/cm5/cm/5/cloudera-manager-xenial-cm5.12.1_amd64.tar.gz

CDH-5.12.1-1.cdh5.12.1.p0.3-xenial.parcel

下载地址:http://archive.cloudera.com/cdh5/parcels/5.12.1/CDH-5.12.1-1.cdh5.12.1.p0.3-xenial.parcel

CDH-5.12.1-1.cdh5.12.1.p0.3-xenial.parcel.sha1

下载地址:http://archive.cloudera.com/cdh5/parcels/5.12/CDH-5.12.1-1.cdh5.12.1.p0.3-xenial.parcel.sha1

manifest.json

下载地址:http://archive.cloudera.com/cdh5/parcels/5.12/manifest.json

注意:cloudera对jdk版本要求比较严格,应尽量使用上述版本,也可以去官网查看其它支持版本。第二个和第三个包用于安装ntp服务,如果集群能够联网,可以使用apt install安装。

三、       环境准备(全程root用户)

1、关闭防火墙、selinux;

2、将全部主机的主机名设置好,并将以上映射关系写到每个主机的/etc/hosts文件中;

3、在master节点,ssh-keygen–t rsa生成密钥,将公钥分发到其它节点:ssh-copy-id host;

4、在每台机器上执行:sysctl vm.swappiness=0,并将/etc/sysctl.conf中vm.swappiness的值设为0

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

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

5、安装jdk

tar –zxvf jdk-8u121-linux-x64.tar.gz–C /usr/java/ #jdk的安装位置应保持一致

在/etc/profile中写入JAVA_HOME并将bin目录添加到PATH

source/etc/profile

在每台机器上都配置好jdk

6、安装和配置数据库

数据库用于存储元数据信息,建议使用mysql或postgrepsql,本例中使用mysql。

处于分担风险的考虑将元数据信息存储在slave1上。

Mysql的安装方式这里不再赘述,在此提醒一点:

为了使master上的进程能够访问到slave1上的数据库,需要解除默认的ip绑定,将/etc/mysql/my.cnf 中的bind-address= 127.0.0.1注释掉,如果/etc/mysql/my.cnf中没有这一行,在/etc/mysql/mysql.conf.d/mysqld.cnf中注释该行。

在mysql中执行以下脚本:

CREATE USER 'amon'@'*' IDENTIFIED BY'amon';

CREATE USER 'rman'@'*' IDENTIFIED BY'rman';

CREATE USER 'hive'@'*' IDENTIFIED BY'hive';

CREATE USER 'sentry'@'*' IDENTIFIED BY'sentry';

CREATE USER 'nav'@'*' IDENTIFIED BY 'nav';

CREATE USER 'navms'@'*' IDENTIFIED BY'navms';

CREATE USER 'hue'@'*' IDENTIFIED BY 'hue';

CREATE USER 'oozie'@'*' IDENTIFIED BY'oozie';

 

create database amon DEFAULT CHARACTER SETutf8;

grant all on amon.* TO 'amon'@'%'IDENTIFIED BY 'amon';

 

create database rman DEFAULT CHARACTER SETutf8;

grant all on rman.* TO 'rman'@'%'IDENTIFIED BY 'rman';

 

create database hive DEFAULT CHARACTER SETutf8;

grant all on hive.* TO 'hive'@'%'IDENTIFIED BY 'hive';

 

create database sentry DEFAULT CHARACTERSET utf8;

grant all on sentry.* TO 'sentry'@'%'IDENTIFIED BY 'sentry';

 

create database nav DEFAULT CHARACTER SETutf8;

grant all on nav.* TO 'nav'@'%' IDENTIFIEDBY 'nav';

 

create database navms DEFAULT CHARACTER SETutf8;

grant all on navms.* TO 'navms'@'%'IDENTIFIED BY 'navms';

 

create database hue DEFAULT CHARACTER SETutf8;

grant all on hue.* to 'hue'@'%' identifiedby 'hue';

 

create database oozie DEFAULT CHARACTER SETutf8;

grant all on oozie.* to 'oozie'@'%'identified by 'oozie';

 

FLUSH PRIVILEGES;

采用mysql作为元数据存储库,需要下载mysql连接驱动,复制到/usr/share/java/ 目录下;

7、安装配置ntp

cloudera要求集群中所有机器时间不能偏差过大,所以需要时间同步,如果可以联网,可以通过apt install或yum安装,因为我的机器无法联网,所以只能离线安装:

在每台机器上:执行

dpkg –i libopts25_5.18.12-3_amd64.deb

dpkg –i ntp_4.2.8p4+dfsg-3ubuntu5.7_amd64.deb

本例中让每个slave和master同步时间,将master作为ntpserver,在master中:

vim /etc/ntp.conf

更改如下:

restrict32.31.104.0 mask 255.255.255.0 nomodify

server127.127.1.0                   # ATOM(PPS)

fudge 127.127.1.0stratum 10            # enable PPS API

保存退出,执行:

service ntprestart

 

在每个slave上:

vim /etc/ntp.conf

添加:

server masterprefer

保存退出,执行:

service ntp restart

master上的ntp server启动后要等5-10分钟才能可用,然后在每个slave执行:

ntpdate –u master

四、       ClouderaManager安装配置

Cloudera manager为主从架构,即一个server和多个agent,本例中我们在master上安装server,master和所有slave上安装agent;

在master节点:

1、将cloudera-manager-xenial-cm5.12.1_amd64.tar.gz解压到/opt/下

tar –zxvf cloudera-manager-xenial-cm5.12.1_amd64.tar.gz–C /opt/

vim/opt/cm-5.12.1/etc/cloudera-scm-agent/config.ini

更改:server_host=master

2、创建CM Server系统用户账号

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

3、创建CM Server的本地数据存储目录

mkdir -p/var/lib/cloudera-scm-server

chowncloudera-scm:cloudera-scm /var/lib/cloudera-scm-server

4、将/opt/cm-5.12.1分发到各个slave节点;

5、在slave1上:

将mysql驱动复制到:/opt/ cm-5.12.1/share/cmf/lib/目录下

执行:

/opt/cm-5.12.1/share/cmf/schema/scm_prepare_database.shmysql -hlocalhost -uroot –p1234 scm scm scm

登录mysql,增加一条对CM Server主机的访问授权:

grant all on scm.*TO 'scm'@'master' IDENTIFIED BY 'scm';

6、登陆master节点:

修改/opt/cm-5.12.1/etc/cloudera-scm-server/db.properties,更新以下参数:

com.cloudera.cmf.db.host=slave1 

com.cloudera.cmf.db.name=scm 

com.cloudera.cmf.db.user=scm 

com.cloudera.cmf.db.password=scm 

com.cloudera.cmf.db.setupType=EXTERNAL 

7、创建CDH Parcel资源目录,在master节点:

mkdir -p/opt/cloudera/parcel-repo

将:

CDH-5.12.1-1.cdh5.12.1.p0.3-xenial.parcel

CDH-5.12.1-1.cdh5.12.1.p0.3-xenial.parcel.sha1(后缀改为sha)

manifest.json

复制到该目录下

chown -Rcloudera-scm:cloudera-scm /opt/cloudera/parcel-repo

在所有slave节点:

mkdir -p/opt/cloudera/parcels

chowncloudera-scm:cloudera-scm /opt/cloudera/parcels

8、启动cloudera manager server and agents

在所有节点上,先调整下文件属主权限:

chown -Rcloudera-scm:cloudera-scm /opt/cloudera-manager

在master节点:

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

/opt/cm-5.12.1/etc/init.d/cloudera-scm-agent  start

在slave节点:

/opt/cm-5.12.1/etc/init.d/cloudera-scm-agent  start

五、       CDH安装配置

启动clouderamanager后,访问以下地址:

http://master:7180/cmf

初始管理账号信息为:admin/admin

登陆后按提示操作即可

这里有个问题,记录一下:

在配置元数据库的时候,需要检测一下数据库连接,hive和oozie的连接一般可以正常测试成功,但是hue连接却出现错误,经查看日志发现缺少libmysqlclient.so.20文件,原因是hue是用python开发,python连接mysql需要这个文件,这个文件一般mysql安装目录的lib下面有,拷贝到/usr/lib下即可。如果没有可以到官网下载linux-generic-mysql安装包,在lib目录下即可找到。

 

在安装完成后hive和ozzie可能会启动不了,报错为无法找到com.mysql.jdbc驱动。需要将mysql驱动包分别复制到/opt/cloudera/CDH-5.12.1-1.cdh5.12.1.p0.3/lib/hive/lib和/opt/cloudera/CDH-5.12.1-1.cdh5.12.1.p0.3/lib/oozie/libext/两个目录下,重新启动即可;

附:Spark2安装

最新的CDH安装包中spark版本为1.6,不过对于勇于尝鲜的同学,官方也提供了spark2的升级包,在CDH中spark1和spark2可以共存,但是由于scala版本的兼容性问题,建议只装一个版本。

由于spark依赖于scala所以需要在每个节点安装scala,并配置好SCALA_HOME并将$SCALA_HOME/bin加入PATH中。Scala可以在官网下载,版本选择2.11.x

安装spark需要四个文件:

SPARK2_ON_YARN-2.2.0.cloudera1.jar

下载地址:http://archive.cloudera.com/spark2/csd/SPARK2_ON_YARN-2.2.0.cloudera1.jar

SPARK2-2.2.0.cloudera1-1.cdh5.12.0.p0.142354-xenial.parcel

下载地址:http://archive.cloudera.com/spark2/parcels/2.2.0.cloudera1/SPARK2-2.2.0.cloudera1-1.cdh5.12.0.p0.142354-xenial.parcel

SPARK2-2.2.0.cloudera1-1.cdh5.12.0.p0.142354-xenial.parcel.sha1

下载地址:http://archive.cloudera.com/spark2/parcels/2.2.0.cloudera1/SPARK2-2.2.0.cloudera1-1.cdh5.12.0.p0.142354-xenial.parcel.sha1

manifest.json

下载地址:http://archive.cloudera.com/spark2/parcels/2.2.0.cloudera1/manifest.json

需要注意各个文件的版本必须保持一致。

以下操作在每个节点执行:

创建/opt/cloudera/csd目录,将SPARK2_ON_YARN-2.2.0.cloudera1.jar复制到该目录下。

修改所属用户:

chown cloudera-scmSPARK2_ON_YARN-2.2.0.cloudera1.jar

在master节点:

将/opt/cloudera/parcel-repo目录下的manifest.json重命名,复制前面下载的parcel包,sha文件和manifest.json到/opt/cloudera/parcel-repo目录下。

关闭CDH集群,重启cm server和cm agent,启动CDH集群。

然后点击主机->Parcel页面,看是否多了个spark2的选项。如下图,你这里此时应该是分配按钮,点击,等待操作完成后,点击激活按钮。

激活后,点击你的群集->添加服务,添加spark2服务。注意,如果你这里看不到spark2服务,就请检查你的CSD包和parcel包是否对应,上面的步骤是否有漏掉。正常情况下,应该是能用了。

到此spark2安装完毕,如果需要直接在集群使用spark-shell或者spark-submit,会发现出错,spark2对应的脚本应该是spark2-shell和spark2-submit;

 

spark2安装完毕后,还有一些后续工作,因为hue中无法使用spark,如果需要在hue中使用sparknotebook需要完成三件事情:

1、  配置hue notebook,参考:https://blogs.msdn.microsoft.com/pliu/2016/06/18/run-hue-spark-notebook-on-cloudera/

2、  安装livy server,下载地址:http://archive.cloudera.com/beta/livy/livy-server-0.3.0.ziplivy server只需下载、解压、配置、启动即可。配置主要配置SPAKR_HOME、HADOOP_CONF_DIR。需要注意的是livy server 默认为local模式运行spark,如果以livy提交spark作业在spark-env.sh或spark-default.conf中指定spark.master不起作用。需要在livy的配置文件中指定。

3、  如果需要用spark读取hive中的数据,需要自己手动将hive-site.xml复制到/etc/spark2/conf目录下。

你可能感兴趣的:(BigData-器)