CDH集群安装部署

时间:2021-11-20 23:46:37

1   引言

1.1  概述

         本文档帮助开发人员安装Cloudera的CM、CDH集群。

1.2  缩略语和定义

缩略语

全称

描述

CDH

Cloudera Data Platform

Cloudera Hadoop Cluster

OS

Operating System

操作系统

Browser

浏览器

JDK

Java Development Kit

Java软件开发工具包

1.3  参考资料

l  http://www.cnblogs.com/jasondan/p/4011153.html

l  cloudera-installation.pdf

2   任务描述

3   准备工作

3.1  系统要求

3.1.1  操作系统

l  CentOS-v6.7-x64

3.1.2  浏览器

3.1.2.1 Windows (7, 8)

l  Internet Explorer 10

l  Google Chrome 58(推荐)

l  Firefox 54

软件工具

l  yum

l  rpm

l  scp, curl, unzip, tar, wget

l  OpenSSL

l  Python:CentOS 6使用 Python 2.6.*

l   JDK(每台节点)

         本次安装的是JDK 1.8.0_131

3.2  准备环境

3.2.1       将用户加入sudo配置文件(使用root用户跳过此步骤)

切换到root用户,运行visudo

l  在打开的配置文件中,找到root ALL=(ALL)ALL,在下面添加一行

xxx ALL=(ALL) ALL 其中xxx是你要加入的用户名称

l  输入:wq保存并退出配置文件,再次使用sudo命令就不会有上面的提示了

3.2.2       Check the Maximum Open File Descriptors(每台节点)

切换到root用户

l  查看

ulimit -Sn

ulimit -Hn

l  修改

如果上述命令的输出小于10000,则运行ulimit -n10000命令修改

3.2.3       修改hostname(每台节点)

如果不是root用户,则需要在命令前加sudo

sudo vi/etc/sysconfig/network

         NETWORKING=yes

         HOSTNAME=node1.domain --修改成自己设置的hostname

sudo service networkrestart

3.2.4       配置hosts文件(每台节点)

如果不是root用户,则需要在命令前加sudo

sudo vi /etc/hosts

l  增加以下内容,IPhostname以实际服务器为准

                   192.168.72.174 node1.domainnode1

重启服务器生效

3.2.5       安装NTP(每台节点)

sudo yum install -yntp

sudo yum install -yntpdate

l  chkconfig --listntpd -检查ntp状态

sudo chkconfig ntpdon --配置ntp自启动

sudo service ntpdstart --启动ntp服务

l  再次检查ntp状态,会发现已经变成on

3.2.6       配置防火墙(每台节点)

l   临时关闭,重启失效

         sudoservice iptables stop

l  永久关闭,需重启服务器

         sudochkconfig iptables off

l  永久关闭,需重启服务器

         sudo/etc/init.d/iptables stop

3.2.7       配置SSH无密码登陆(每台节点)

l  ssh-keygen -t rsa  --会有提示,都按回车就可以

l  cat/root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys  --加入授权

l  cat/root/.ssh/authorized_keys --将各节点id_rsa.pub中的秘钥汇总到一个authorized_keys文件,将该文件复制到各个节点

l  chmod 700 /root/.ssh

l  chmod 600/root/.ssh/authorized_keys

3.2.8       安装JDK(每台节点)

l  查看已安装的JDK

         rpm-qa | grep java

l  卸载已安装的JDK

         rpm-e --nodeps java-1.7.0-openjdk-1.7.0.79-2.5.5.4.el6.x86_64

         rpm -e --nodepsjava-1.6.0-openjdk-1.6.0.35-1.13.7.1.el6_6.x86_64

         rpm -e --nodepstzdata-java-2015e-1.el6.noarch

l  cd /opt

l  复制jdk tar包(例如:jdk-8u131-linux-x64.tar.gz)到 /opt

l  解压jdk tar到/opt

l  重命名为jdk

l  cd /usr

l  sudo mkdir java

sudo ln -s /opt/jdk/usr/java/default --创建软连接

sudo vi /etc/profile

        在文件末尾加入如下内容:

         export JAVA_HOME=/opt/jdk

         export PATH=$JAVA_HOME/bin:$PATH

         exportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jar

l  source/etc/profile

可以通过scp -r /opt/jdk root@node2:/opt/ --将本地目录发送到远程目录

3.2.9       安装配置MySQL

3.2.9.1   卸载通过yum安装的MySQL

l  rpm -qa | grep -imysql ------查找已安装的MySQL

sudo yum remove mysqlmysql-servermysql-libs compat-mysql51

l  rm -rf/var/lib/mysql

l  rm -rf /etc/my.cnf

l  rpm -qa|grepmysql ----查看是否还有mysql软件,有的话继续删除

3.2.9.2   卸载通过rpm安装的MySQL

l  rpm -qa | grep -imysql ------查找以安装的MySQL

sudo rpm -e --nodepsmysql-libs-5.1.73-5.el6_6.x86_64------按照查找到的结果逐一删除

l  rm -rf /var/lib/mysql------删除之前的数据表

l  rm -rf /usr/my.cnf

l  rpm -qa|grepmysql ----查看是否还有mysql软件,有的话继续删除

3.2.9.3   rpm安装MySQL

l  从安装包下载上传MySQL-5.6.29-1.el6.x86_64.rpm-bundle.tar

l  tar xvfMySQL-5.6.29-1.el6.x86_64.rpm-bundle.tar

sudo rpm -ivhMySQL-server-5.6.29-1.el6.x86_64.rpm

(在5.1或5.2中如果忘记了删除之前的数据表,在这一步安装过程中就只有两行安装的读条,这样后续登录时是会出问题的)

(正常情况执行这步安装后会有大篇幅的代码)

sudo rpm -ivhMySQL-client-5.6.29-1.el6.x86_64.rpm

sudo rpm -ivhMySQL-devel-5.6.29-1.el6.x86_64.rpm

sudo rpm -ivhMySQL-embedded-5.6.29-1.el6.x86_64.rpm

sudo rpm -ivh MySQL-shared-5.6.29-1.el6.x86_64.rpm

sudo rpm -ivhMySQL-test-5.6.29-1.el6.x86_64.rpm

l  服务状态查询启动/停止/重启

         sudo chmod -R 777 /var/lib/mysql/ --root用户需要首先获取读写权限

         service mysql status----服务状态查询

         servicemysql start ---- 启动服务(切记启动之前先查询状态确认不是已经启动的状态之后再启动,否则会导致两个进程运行)。解决方法:用命令“ps -ef|grep mysqld”查看是否有mysqld进程,如果有使用“kill -9  进程号”杀死,然后重新启动mysqld

         servicemysql stop ---- 停止服务

         service mysql restart---- 重启服务

l  cat/root/.mysql_secret ---- 查看当前初始化密码

l  mysql –uroot –p密码 ---- 用初始密码登录

l  SETPASSWORD=PASSWORD('新密码'); ---- 用mysql命令设置新密码

l  show variableslike 'char%'; ---- 查看当前数据库编码

l  setcharacter_set_database=utf8; ---- 设置数据库编码utf8

l  setcharacter_set_server=utf8; ----设置服务端编码 utf8

l  GRANT ALL PRIVILEGESON *.* TO 'root'@'%' IDENTIFIED BY '新密码' WITH GRANT OPTION;----为远程客户端连接授权

l  FLUSH PRIVILEGES;---- 授权生效

3.3  准备本地资源库

3.3.1       资源包下载

方法1:浏览器下载

cm-5.11:

Centos6: http://archive.cloudera.com/cm5/cm/5/cloudera-manager-el6-cm5.11.0_x86_64.tar.gz

Centos7: http://archive.cloudera.com/cm5/cm/5/cloudera-manager-centos7-cm5.11.0_x86_64.tar.gz

cdh-5.11:

Centos6: http://archive.cloudera.com/cdh5/parcels/5/CDH-5.11.0-1.cdh5.11.0.p0.34-el6.parcel

http://archive.cloudera.com/cdh5/parcels/5/CDH-5.11.0-1.cdh5.11.0.p0.34-el6.parcel.sha1

Centos7: http://archive.cloudera.com/cdh5/parcels/5/CDH-5.11.0-1.cdh5.11.0.p0.34-el7.parcel

http://archive.cloudera.com/cdh5/parcels/5/CDH-5.11.0-1.cdh5.11.0.p0.34-el7.parcel.sha1

http://archive.cloudera.com/cdh5/parcels/5/manifest.json

cdh下载路径:http://archive.cloudera.com/cdh5

cm5下载路径:http://archive.cloudera.com/cm5

方法2(推荐):

SVN下载:https://192.168.65.220/svn/IOT/01.Development/02.Code/PDAC/Trunk/Soft

3.3.2       资源包上传、解压(每台节点)

l  mkdir/opt/cloudera-manager

l  上传cloudera-manager-el6-cm5.11.0_x86_64.tar.gz包到/opt/cloudera-manager下

l  解压cloudera-manager-el6-cm5.11.0_x86_64.tar.gz

l  rm -rf cloudera-manager-el6-cm5.11.0_x86_64.tar.gz

3.3.3         mysql驱动下载(每台节点)

方法一:

l  将安装包下的mysql-connector-java.jar放到/opt/cloudera-manager/cm-5.11.0/share/cmf/lib/ 、/usr/share/java/目录。

方法二:

l  首先需要去MySql的官网下载JDBC驱动,http://dev.mysql.com/downloads/connector/j/

l  解压后,找到mysql-connector-java-5.1.40-bin.jar,放到/opt/cloudera-manager/cm-5.11.0/share/cmf/lib/ 、/usr/share/java/目录,并重命名为mysql-connector-java.jar。

4   安装、配置Cloudera Manager

4.1  安装Cloudera Manager Server、Agents

4.1.1       创建用户 (cloudera-scm)(每台节点)

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

4.1.2       创建Cloudera Manager Server 本地数据存储目录,授权(每台节点)

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

sudo chown cloudera-scm:cloudera-scm /var/lib/cloudera-scm-server

4.1.3       配置 Cloudera Manager Agents(每台节点)

l  sudo vi /opt/cloudera-manager/cm-5.11.0/etc/cloudera-scm-agent/config.ini

修改server_host=node5(Cloudera Manager Hostname)

修改server_port=7182

4.1.4       配置Cloudera Manager Agent(每台节点)

l  sudo vi/opt/cloudera-manager/cm-5.11.0/etc/default/cloudera-scm-agent

l  export CMF_VAR=/var(在后面添加)

4.1.5       创建Cloudera Manager元数据库

l  mysql -uroot -p

l  create database scm DEFAULT CHARACTER SET utf8;

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

4.1.6       创建Activity Monitor, ReportsManager, Hive Metastore Server, Sentry Server, Cloudera Navigator Audit Server,and Cloudera Navigator Metadata Server元数据库

l  mysql -uroot -p

l  create database amon DEFAULT CHARACTER SET utf8;

l  create database rman DEFAULT CHARACTER SET utf8;

l  create database metastore DEFAULT CHARACTER SET utf8;

l  create database sentry DEFAULT CHARACTER SET utf8;

l  create database nav DEFAULT CHARACTER SET utf8;

l  create database navms DEFAULT CHARACTER SET utf8;

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

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

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

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

l  grant all on nav.* TO 'nav'@'%' IDENTIFIED BY 'nav_password';

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

l  flush privileges;

4.1.7       初始化Cloudera Manager Server 元数据库

sudo /opt/cloudera-manager/cm-5.11.0/share/cmf/schema/scm_prepare_database.shmysql scmscmscm

4.1.8       创建Parcel 目录

sudo mkdir -p/opt/cloudera/parcel-repo(ClouderaManager节点

sudo chowncloudera-scm:cloudera-scm /opt/cloudera/parcel-repo --改变拥有者和群组

(在Cloudera Manager节点)

sudo mkdir -p/opt/cloudera/parcels(在集群所有节点

sudo chowncloudera-scm:cloudera-scm /opt/cloudera/parcels(在集群所有节点

4.1.9       设置开机启动Cloudera Manager Server

sudo cp /opt/cloudera-manager/cm-5.11.0/etc/init.d/cloudera-scm-server/etc/init.d/cloudera-scm-server

sudo chkconfig cloudera-scm-server on

4.1.10    设置开机启动Cloudera Manager Agent(每台节点)

sudo cp /opt/cloudera-manager/cm-5.11.0/etc/init.d/cloudera-scm-agent/etc/init.d/cloudera-scm-agent

sudo chkconfig cloudera-scm-agent on

4.1.11    启动Cloudera Manager Server

(必须先停止HDFSMapReduce服务)

sudo chown -R cloudera-scm:cloudera-scm /opt/cloudera-manager

sudo /opt/cloudera-manager/cm-5.11.0/etc/init.d/cloudera-scm-serverstart

4.1.12    启动 Cloudera Manager Agents(每台节点)

sudo chown -R cloudera-scm:cloudera-scm /opt/cloudera-manager

sudo /opt/cloudera-manager/cm-5.11.0/etc/init.d/cloudera-scm-agentstart

4.1.13   *Install PackageDependencies(每台节点)

sudo yum -y install bind-utils

sudo yum -y install chkconfig

sudo yum -y install cyrus-sasl-gssapi

sudo yum -y install fuse

sudo yum -y install fuse-libs

sudo yum -y install gcc

sudo yum -y install httpd

sudo yum -y install mod_ssl

sudo yum -y install MySQL-python

sudo yum -y install openssl

sudo yum -y install openssl-devel

sudo yum -y install perl

sudo yum -y install portmap

sudo yum -y install psmisc

sudo yum -y install python

sudo yum -y install python-devel

sudo yum -y install python-psycopg2

sudo yum -y install python-setuptools

sudo yum -y install sed

sudo yum -y install sqlite

sudo yum -y install swig

4.2  登录 Cloudera Manager Admin Console

l  http://Serverhost:7180

l  Username: admin

l  Password: admin

l  选择免费版

 

5   安装CDH

5.1  复制安装包(CloudManager)

l  将安装包CDH的parcels目录下的所有文件放到CloudManager节点的/opt/cloudera/parcel-repo/目录

5.2  登录Cloudera Manager开始安装

l  登录Cloudera Manager--参考4.2

l  选择 Cloudera ManagerHosts

5.2.1       选择资源库

l   

5.2.2       消除警告

修改vm.swappiness

sudo cat /proc/sys/vm/swappiness --查看vm.swappiness

sudo sysctl vm.swappiness=10 --临时修改

sudo vi /etc/sysctl.conf 加上vm.swappiness=10 --永久修改

禁用transparent_hugepage

临时修改:

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

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

永久修改:

sudo vi /etc/rc.local

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

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

5.2.3       重新运行检查

5.2.4       版本汇总

Cluster 1 — CDH 5

主机

node1.domain

组件

版本

发行版

CDH 版本

Bigtop-Tomcat(仅限 CDH 5)

0.7.0+cdh5.11.0+0

1.cdh5.11.0.p0.71

CDH 5

Crunch(仅限 CDH 5 )

0.11.0+cdh5.11.0+96

1.cdh5.11.0.p0.71

CDH 5

Flume NG

1.6.0+cdh5.11.0+86

1.cdh5.11.0.p0.70

CDH 5

MapReduce 1

2.6.0+cdh5.11.0+2102

1.cdh5.11.0.p0.72

CDH 5

Hadoop

2.6.0+cdh5.11.0+2102

1.cdh5.11.0.p0.72

CDH 5

HDFS

2.6.0+cdh5.11.0+2102

1.cdh5.11.0.p0.72

CDH 5

HttpFS

2.6.0+cdh5.11.0+2102

1.cdh5.11.0.p0.72

CDH 5

hadoop-kms

2.6.0+cdh5.11.0+2102

1.cdh5.11.0.p0.72

CDH 5

MapReduce 2

2.6.0+cdh5.11.0+2102

1.cdh5.11.0.p0.72

CDH 5

YARN

2.6.0+cdh5.11.0+2102

1.cdh5.11.0.p0.72

CDH 5

HBase

1.2.0+cdh5.11.0+236

1.cdh5.11.0.p0.71

CDH 5

Lily HBase Indexer

1.5+cdh5.11.0+68

1.cdh5.11.0.p0.71

CDH 5

Hive

1.1.0+cdh5.11.0+859

1.cdh5.11.0.p0.71

CDH 5

HCatalog

1.1.0+cdh5.11.0+859

1.cdh5.11.0.p0.71

CDH 5

Hue

3.9.0+cdh5.11.0+4082

1.cdh5.11.0.p0.71

CDH 5

Impala

2.7.0+cdh5.11.0+0

1.cdh5.11.0.p0.71

CDH 5

Kite(仅限 CDH 5 )

1.0.0+cdh5.11.0+139

1.cdh5.11.0.p0.71

CDH 5

Llama(仅限 CDH 5 )

1.0.0+cdh5.11.0+0

1.cdh5.11.0.p0.71

CDH 5

Mahout

0.9+cdh5.11.0+31

1.cdh5.11.0.p0.70

CDH 5

Oozie

4.1.0+cdh5.11.0+389

1.cdh5.11.0.p0.71

CDH 5

Parquet

1.5.0+cdh5.11.0+183

1.cdh5.11.0.p0.71

CDH 5

Pig

0.12.0+cdh5.11.0+100

1.cdh5.11.0.p0.71

CDH 5

sentry

1.5.1+cdh5.11.0+272

1.cdh5.11.0.p0.70

CDH 5

Solr

4.10.3+cdh5.11.0+463

1.cdh5.11.0.p0.71

CDH 5

spark

1.6.0+cdh5.11.0+457

1.cdh5.11.0.p0.71

CDH 5

Sqoop

1.99.5+cdh5.11.0+42

1.cdh5.11.0.p0.72

CDH 5

Sqoop

1.4.6+cdh5.11.0+89

1.cdh5.11.0.p0.71

CDH 5

Whirr

0.9.0+cdh5.11.0+20

1.cdh5.11.0.p0.71

CDH 5

ZooKeeper

3.4.5+cdh5.11.0+104

1.cdh5.11.0.p0.71

CDH 5

Cloudera Manager Management Daemon

5.11.0

1.cm5100.p0.85

不适用

Supervisord

3.0-cm5.11.0

不可用

不适用

Java 8

JAVA_HOME=/usr/sdk/jdk1.8 java version "1.8.0_102" Java(TM) SE Runtime Environment (build 1.8.0_102-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)

不可用

不适用

Cloudera Manager Agent

5.11.0

1.cm5100.p0.85.el6

不适用

5.2.5       选择服务

l  建议先安装HDFS、YARN、Zookeeper、Oozie、Hive、HBase这几个基本服务。其它服务后续根据实际需要进行安装。

5.2.6       自定义角色分配(不建议修改默认分配)

5.2.7       Create the Oozie Database and Oozie MySQL User

mysql -uroot -p

create databaseoozie DEFAULT CHARACTER SET utf8;

grant allprivileges on oozie.* to 'oozie'@'localhost' identified by 'oozie';

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

flush privileges;

5.2.8       Add the MySQL JDBC Driver JAR to Oozie

l  将mysql jdbcjar包复制到/opt/cloudera/parcels/CDH/lib/oozie/lib/目录

5.2.9       Configuring the Hue Server to Store Data in MySQL

create databasehue DEFAULT CHARACTER SET utf8;

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

flush privileges;

5.2.10    数据库设置

如果安装Hue,如下图

5.2.11    运行命令

5.2.12    安装完成

6   使用Hue

Hue详细使用说明请参考《IoT_PDAC_HUE使用说明手册》

6.1  首次登录

l  创建用户

http://192.168.72.174:8888/Username: hue Password: hue

l  首次配置Hue

7   安装Kafka

7.1  资源包获取

方法一:

从安装包Kafka目录中获取KAFKA-1.2.0.jar、KAFKA-2.1.1-1.2.1.1.p0.18-el6.parcel、KAFKA-2.1.1-1.2.1.1.p0.18-el6.parcel.sha、manifest.json文件。

方法二:

csd包:http://archive.cloudera.com/csds/kafka/

 parcel包: http://archive.cloudera.com/kafka/parcels/latest/ (根据自己的集群的系统版本下载 )

修改资源文件/opt/cloudera/parcel-repo/manifest.json,在该文件中的"parcels"节点中增加以下内容:

                   {

           "parcelName": "KAFKA-2.1.0-1.2.1.0.p0.115-el6.parcel",

           "components": [

               {

                   "pkg_version": "0.10.0+kafka2.1.0",

                   "pkg_release": "1.2.1.0.p0.63",

                   "name": "kafka",

                   "version": "0.10.0-kafka2.1.0"

               }

            ],

           "depends": "CDH (>= 5.2), CDH (<< 6.0)",

           "replaces": "CLABS_KAFKA",

           "hash": "67f7373587ce9637db649574e7b2ce1852aeaca0"

        }

这里需要注意parcelName与hash值。hash值对应于.parcel.sha1文件内容。

7.2  CDH与kafka集成

 

1)将KAFKA-1.2.0.jar放到cm安装节点下的/opt/cloudera/csd目录下,如图:

 

2)将parcel包放到cm安装节点下的/opt/cloudera/parcel-repo目录下,如下图所示:

3)启动cm服务,检查更新parcel,分配并激活parcel包,注意此处一定要激活才能使用。

先分配再激活

 

4)添加kafka服务和配置角色节点

5)重启kafka 服务

 

8   Sentry安装部署

专业数据中心权限控制通过Apache Sentry完成权限控制。Apache Sentry是Cloudera公司发布的一个Hadoop开源组件,它提供了细粒度级,基于角色的授权以及多租户的管理模式。通过Sentry与Kafka整合实现权限控制,为专业数据分析中心提供安全保障。

8.1  Sentry安装

l  在Cloudera Manager Admin Console中,选择 > 添加服务

l  选择Sentry并点击右下角继续

 

l  选择Sentry服务安装到服务器哪台节点,选择完毕后单击继续

l  数据库设置

数据库主机名称

MySQL安装节点名(node5)

数据库类型

MySQL

数据库名称

sentry

用户名

root

密码

数据库密码根据创建时设置(pdas)

点击测试连接如没问题会显示Successful,点击继续

l  安装完成

9   Flume安装部署

9.1  Flume安装步骤

l  在Cloudera Manager Admin Console中,选择 > 添加服务

l  选择Flume并点击右下角继续

l  为新的Flume选择一组依赖关系,选择Hbase,HDFS,Zookeeper

l  选择Flume安装的主机

l  安装完成

9.2  Flume参数配置

Flume作为从kafka写到hdfs的过程,参数配置如下

l  在Cloudera Manager Admin Console中,选择flume > 配置

l  代理名称 改为agent

l  Agent 的 Java 堆栈大小(字节)改为1536MB

l  oom_heap_dump_dir改为/home/flume

l  Flume Agent 的 Java 配置选项添加

-Djava.security.krb5.conf=/etc/krb5.conf  -Djava.security.auth.login.config=/var/kerberos/krb5kdc/flume_jaas.conf

l  在配置文件栏粘贴配置文件

l  配置文档示例

配置文档示例见附录A

10 添加其他服务

10.1 添加Sqoop1服务为例

l  在Cloudera Manager Admin Console中,选择 > 添加服务

l  找到Sqoop1点击继续右下角继续。

11 附录A