最近一段时间团队接到的项目需要处理的数据量非常大,之前的处理方式难以满足现有需求。最近两周前前后后折腾了不少,在搭建了hadoop+hbase+hive+spark的一个集群后,由于感觉管理和监控太麻烦就把它给干掉了,转而折腾CDH。
安装CDH前需要安装Cloudera Manager,官方文档提供的A,B,C三种安装方式。方式A傻瓜式的安装部署,安装时最好祈祷一次成功,否则卸载时时候非常麻烦。本文主要介绍方式C的部署。
系统环境以及相关软件版本
- 机器数量:4台PC,名称分别为Master, Slave1, Slave2, Slave3.
- 操作系统版本:Ubuntu 14.04
- Cloudera Manager: 5.11.1,下载链接
- CDH:5.11.1,CDH-5.11.1-1.cdh5.11.1.p0.4-trusty.parcel和CDH-5.11.1-1.cdh5.11.1.p0.4-trusty.parcel.sha1,下载链接
- JDK:1.8.0_131
- Postgresql:9.3
准备环境
- 运行Cloudera Manager的账号:用户名hadoop,用户组hadoop,密码hadoop。(继续利用之前集群的账号)
- JDK安装:http://www.linuxidc.com/Linux/2015-09/122876.htm
- 主节点ssh无密码访问从节点:http://www.xuebuyuan.com/1875614.html,向全部节点的/etc/hosts文件添加集群个节点和对应ip.
192.168.1.110 Master
192.168.1.100 Slave1
192.168.1.120 Slave2
192.168.1.130 Slave3
Postgresql配置
开启外网访问;
添加Cloudera Manager所需用户和数据库:
- 连接pg:
$ sudo -u postgres psql
- 为Cloudera Manager Server添加用户和数据库
postgres=# CREATE ROLE scm LOGIN PASSWORD 'scm';
postgres=# CREATE DATABASE scm OWNER scm ENCODING 'UTF8';
- 为Activity Monitor, Reports Manager, Hive Metastore Server, Hue Server, Sentry Server, Cloudera Navigator Audit Server, Cloudera Navigator Metadata Serve添加数据库和用户。
对于8.2.23以及更高版本的PostgreSQL,执行一下语句
postgres=# ALTER DATABASE Metastore SET standard_conforming_strings = off;
Cloudera Manager Server和Agents部署
服务端和服务端安装
- 复制cloudera-manager-trusty-cm5.11.1_amd64.tar.gz到所有节点。
- 创建Cloudera Manager的主目录且解压安装包
构建目录
$ sudo mkdir /opt/cloudera-manager
$ ssh hadoop@slave1 'sudo mkdir /opt/cloudera-manager'
$ ssh hadoop@slave2 'sudo mkdir /opt/cloudera-manager'
$ ssh hadoop@slave3 'sudo mkdir /opt/cloudera-manager'
进入所有节点解压安装包:
$ sudo tar xzf cloudera-manager-trusty-cm5.11.1_amd64.tar.gz -C /opt/cloudera-manager
在所有节点上创建用户cloudera-scm
注意目录为刚才解压的cdh压缩包下面的路径
$ sudo useradd --system --home=/opt/cloudera-manager/cm-5.11.1/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
创建Cloudera Manager服务端的本地文件夹
//仅Master节点
$ sudo mkdir /var/lib/cloudera-scm-server
$ sudo chown cloudera-scm:cloudera-scm /var/lib/cloudera-scm-server
Cloudera Manager客户端配置
进入所有客户端节点中的/opt/cloudera-manager/cm-5.11.1/etc/cloudera-scm-agent/config.ini,将server_host值改为服务器ip,server_port保持不变:
# Hostname of the CM server.
server_host=Master
# Port that the CM server is listening on.
server_port=7182
创建Parcel文件夹
- 在服务端建立parcel源文件夹,存放CDH安装包,便于Cloudera Manager自动部署到集群各节点。
$ sudo mkdir -p /opt/cloudera/parcel-repo
- 将文件夹所有者改为Cloudera Manager的运行用户(hadoop)
$ sudo chown hadoop:hadoop /opt/cloudera/parcel-repo
- 所有节点间创建parcels文件夹,所有者为Cloudera Manager的运行用户(hadoop)
$ sudo mkdir -p /opt/cloudera/parcels
$ sudo chown hadoop:hadoop /opt/cloudera/parcels
在客户端复制CDH到/opt/cloudera/parcel-repo
CDH-5.11.1-1.cdh5.11.1.p0.4-trusty.parcel
CDH-5.11.1-1.cdh5.11.1.p0.4-trusty.parcel.sha1
CDH-5.11.1-1.cdh5.11.1.p0.4-trusty.parcel.sha1重命名为CDH-5.11.1-1.cdh5.11.1.p0.4-trusty.parcel.sha
Cloudera Manager启动
服务端启动
- 为Cloudera Manager Server启动外部数据库postgresql
sudo /opt/cloudera-manager/cm-5.11.1/share/cmf/schema/scm_prepare_database.sh postgresql scm scm scm
- 删除/opt/cloudera-manager/cm-5.11.1/etc/default/cloudera-scm-server中的
export CMF_SUDO_CMD=" "
- 更改/opt/cloudera-manager/cm-5.11.1/etc/init.d/cloudera-scm-server:
USER=hadoop
GROUP=hadoop
- 启动Cloudera Manager服务端
$ sudo /opt/cloudera-manager/cm-5.11.1/etc/init.d/cloudera-scm-server start
- 服务端开机自启设置
sudo cp /opt/cloudera-manager/cm-5.11.1/etc/init.d/cloudera-scm-server /etc/init.d/cloudera-scm-server
sudo update-rc.d cloudera-scm-server defaults
客户端启动
- 删除/opt/cloudera-manager/cm-5.11.1/etc/default/cloudera-scm-agent中的
export CMF_SUDO_CMD=" "
- 启动Cloudera Manager服务端
$ sudo /opt/cloudera-manager/cm-5.11.1/etc/init.d/cloudera-scm-agent start
- 服务端开机自启设置
sudo cp /opt/cloudera-manager/cm-5.11.1/etc/init.d/cloudera-scm-agent /etc/init.d/cloudera-scm-agent
sudo update-rc.d cloudera-scm-agent defaults
安装相关依赖包
sudo apt-get install ant apache2 bash debhelper fuse gcc libfuse2 libsasl2-modules libsasl2-modules-gssapi-mit libsqlite3-0 libssl-dev libxslt1.1 make openssl perl postgresql-client psmisc python-dev python-mysqldb python-psycopg2 python-setuptools rpcbind sed swig zlib1g
CDH部署
- 主节点*问http://localhost:7180/,输入用户名
admin
,密码admin
- 点击“向集群添加主机”(下图中的是配好之后的可以忽略)
- 输入所有需要构建集群的节点名称或IP
- 选定主机构建集群
- 进入主页面http://192.168.1.110:7180/cmf/home。
- 为集群Cluster 1添加服务:
- 为各服务的组件分配节点主机,完成安装。