Step by Step 实现基于 Cloudera 5.8.2 的企业级安全大数据平台 - 基础部署

因为Cloudera的使用场景较多是私有云,本文介绍的是如何在离线环境下进行部署的parcles方式。

硬件环境

机器类型 配置 规模
Master机型 24 cores, 192GB, SSD * 4(Non-Raid) 5 192.168.1.[2-6]
Slave机型 24 cores, 128GB, SAS * 6(Non-Raid) 11 192.168.1.[7-17]
前端机机型(VM) 6 cores, 16GB, SSD * 1(Raid 5) 1 192.168.1.1

本文不讨论Hadoop角色分布,只描述如何部署Cloudera本身。

Cloudera角色分布:

角色 部署节点 机器类型
Cloudera Server 192.168.1.1 VM
Cloudera Agent 192.168.1.1, 192.168.1.[3-17] VM、Master、Slave
Cloudera Management Services 192.168.1.3 Master
MySQL 192.168.1.2 Master

软件版本

OS: CentOS 7.2

JDK: 1.8.0_73

Cloudera: 5.8.2

依赖资源

假设所有依赖包都已经上传至/home/admin/soft下,记得下载完CDH-5.8.2-1.cdh5.8.2.p0.3-el7.parcel.sha1后把文件名改为CDH-5.8.2-1.cdh5.8.2.p0.3-el7.parcel.sha,因为后续进行 parcel 版本比对的时候,只会对 repo 目录下的 *.sha 文件内容进行提取,比对 parcel 的 sha 值,以确认我们的 parcel 文件是正确可用没有损毁的。

部署步骤

Step1. SSH免密打通

假设所有步骤都在admin账户下执行,所有服务器的admin账户密码统一,需要打通Cloudera Server至所有agent的SSH免密登录,假设list_agents已经包含了所有agent机器的列表:

192.168.1.1
192.168.1.3
192.168.1.4
192.168.1.5
192.168.1.6
192.168.1.7
192.168.1.8
192.168.1.9
192.168.1.10
192.168.1.11
192.168.1.12
192.168.1.13
192.168.1.14
192.168.1.15
192.168.1.16
192.168.1.17

在192.168.1.1上进行执行:

ssh 192.168.1.1
ssh-keygen
for agent in `cat list_agents`;do ssh-copy-id -i /home/admin/.ssh/id_rsa.pub admin@${agent};done;

当然,我们也可以用expect来做自动化,这里过程省略。

Step2. JDK安装

cd /home/admin/soft
pscp -h list_agents jdk-8u73-linux-x64.rpm ~/
pssh -h list_agents -P "rpm -ivh /home/admin/soft/jdk-8u73-linux-x64.rpm"

修改环境变量:

# .bash_profile 
# Get the aliases and functions 
if [ -f ~/.bashrc ]; then 
    . ~/.bashrc 
fi 
# User specific environment and startup programs 
JAVA_HOME=/usr/java/jdk1.8.0_73 
PATH=$JAVA_HOME/bin:$PATH 
export PATH JAVA_HOME

分发环境变量配置:

pscp -h list_agents ~/.bash_profile /tmp 
pssh -h list_agents "sudo cp /tmp/.bash_profile ~/"

Step3. MySQL安装并初始化数据库,默认用户root无密码

安装MySQL,我们使用 mariadb:

ssh 192.168.1.2
sudo yum install mariadb-server

修改 /etc/my.cnf 以支持utf-8:

[mysql] 
default-character-set=utf8 
[mysqld] 
character_set_server=utf8 
init_connect='SET NAMES utf8'

启动 mysql:

sudo systemctl start mariadb
sudo systemctl enable mariadb

初始化Cloudera Manager数据库:

mysql -uroot
MariaDB > grant all privileges on *.* to 'root'@'%' identified by 'root'; 
MariaDB > grant all privileges on *.* to 'root'@'localhost' identified by 'root'; 
MariaDB > use mysql; 
MariaDB > update user set password=password('root') where user='root'; 
MariaDB > create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci; 
MariaDB > create database reports DEFAULT CHARSET utf8 COLLATE utf8_general_ci; 
MariaDB > create database navigator DEFAULT CHARSET utf8 COLLATE utf8_general_ci; 
MariaDB > create database navigatormeta DEFAULT CHARSET utf8 COLLATE utf8_general_ci; 
MariaDB > create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci; 
MariaDB > create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci; 
MariaDB > create database sentry DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

Step4. 离线资源准备

在192.168.1.1上对离线包进行解压,并且分发:

sudo tar zxvf /home/admin/soft/cloudera-manager-centos7-cm5.8.2_x86_64.tar.gz -C /opt/
sudo cp /home/admin/soft/mysql-connector-java-5.1.34.jar /opt/cm-5.8.2/share/cmf/lib/

创建Cloudera Manager的初始化数据,mysql密码在之前初始化了,是root:

sudo /opt/cm-5.8.2/share/cmf/schema/scm_prepare_database.sh mysql cm -h127.0.0.1 -uroot -p --port 3306 --scm-host 127.0.0.1 scm scm scm 
mysql -uroot -p
MariaDB > use cm; 
MariaDB > grant all PRIVILEGES on cm to scm;

修改 192.168.1.1 上的 /opt/cm-5.8.2/etc/cloudera-scm-agent/config.iniserver_host修改为主节点hostname(v001001.idc.domain.com),将离线包中的CDH5相关的parcel包放到主节点192.168.1.1/opt/cloudera/parcel-repo/目录中:

sudo mkdir -p /opt/cloudera/parcel-repo/ 
sudo cp /home/admin/soft/cdh5.8.2/CDH-5.8.2-1.cdh5.8.2.p0.3-el7.parcel /opt/cloudera/parcel-repo/ 
sudo cp /home/admin/soft/cdh5.8.2/CDH-5.8.2-1.cdh5.8.2.p0.3-el7.parcel.sha /opt/cloudera/parcel-repo/ 
sudo cp /home/admin/soft/cdh5.8.2/manifest.json /opt/cloudera/parcel-repo/

在主节点192.168.1.1上创建storage目录:

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

Step5. 启动Cloudera Server服务

在192.168.1.1上启动Cloudera Server:

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

在agent上把mysql-connector-java-5.1.34.jar拷贝至Cloudera Manager的lib目录下:

pscp -h list_agents /home/admin/soft/mysql-connector-java-5.1.34.jar /tmp 
pssh -h list_agents -P "sudo mkdir -p /usr/share/cmf/lib"
pssh -h list_agents -P "sudo mkdir -p /usr/share/java" 
pssh -h list_agents -P "sudo cp /tmp/mysql-connector-java-5.1.34.jar /usr/share/cmf/lib"
pssh -h list_agents -P "sudo cp /tmp/mysql-connector-java-5.1.34.jar /usr/share/java/mysql-connector-java.jar"

Step6. 搭建临时httpd服务器

搭建httpd服务器的目的是为了实现离线本地Repo安装,需要把之前从cm5.8.2-centos7.tar.gz解压缩至Root Dir下,假设Repo地址为http://192.168.1.1/cm/5.8.2/

sudo yum install -y httpd
sudo tar zxvf cm5.8.2-centos7.tar.gz -C /var/www/html/
sudo rm -rf /var/run/yum.pid

Step7. 进入图形化界面进行部署

默认的Cloudera控制台界面为 http://192.168.1.1:7180
初次登录会要求输入默认的管理员账户名密码,请切记。进入图形化界面后按照以下步骤进行agent发现和集群初始化:

  • 选择 Yes, I accept the End User License Terms and Conditions.,然后一路 Continue
  • Specify hosts for your CDH cluster installation. 界面输入以下机器,并点击 Search
192.168.1.1
192.168.1.3
192.168.1.4
192.168.1.5
192.168.1.6
192.168.1.7
192.168.1.8
192.168.1.9
192.168.1.10
192.168.1.11
192.168.1.12
192.168.1.13
192.168.1.14
192.168.1.15
192.168.1.16
192.168.1.17
  • 全选机器后,点击 Continue
  • 选择Use Parcels (Recommended)
  • More Options中去掉所有远程Repo配置;
  • Select the version of CDH选择CDH-5.8.2-1.cdh5.8.2.p0.3
  • Select the specific release of the Cloudera Manager Agent you want to install on your hosts.选择Custom Repository,并且使用局域网httpd,地址为:http://192.168.1.1/cm/5.8.2/
  • Install Oracle Java SE Development Kit (JDK)不勾选;
  • Single User Mode不勾选;
  • Login To All Hosts As:选择admin,并录入CentOS的admin密码;

正常情况下会自动进行Cloudera安装包分发,以及agent进程启动。

Q: 安装过程中如果遇到:/opt/cloudera/parcels/CDH-5.8.2-1.cdh5.8.2.p0.3/meta/parcel.json 文件无法找到
A: 请把进程停止后清除 uuid 之后再走一遍流程:

sudo /bin/systemctl stop cloudera-scm-agent
sudo rm /var/lib/cloudera-scm-agent/*
sudo /bin/systemctl start cloudera-scm-agent

如果无效,请在安装向导的 More Options 中重新指定 parcel repo 目录,如果 repo 目录空间不足也会导致 parcel.json 文件安装失败。重新指定的方法 Hosts -> Parcels -> Configuration -> Local Parcel Repository Path 修改为其他地址。并且查看 Remote Parcel Repository URLs 配置是否指向本地 httpd 服务器对应目录。
Q: 遇到 ProtocolError: <ProtocolError for 127.0.0.1/RPC2: 401 Unauthorized>
A: 请把 supervisor 杀掉后重试:

pid=`ps aux | grep "/usr/lib64/cmf/agent/build/env/bin/supervisord" | grep -v grep | awk '{print$2}'`
sudo kill -9 ${pid}

Step8.进行Hadoop服务部署

这块不在这里进行描述,按照您的需要进行部署。但是有一块要注意,记得在部署服务前创建相应 lib 目录并且把 mysql-connector 拷贝至对应服务的 lib 目录:

pscp -h list_agents /home/admin/soft/mysql-connector-java-5.1.34.jar /tmp
pssh -h list_agents "sudo mkdir -p /opt/cloudera/parcels/CDH-5.8.2-1.cdh5.8.2.p0.3/lib/hive/lib/ /opt/cloudera/parcels/CDH-5.8.2-1.cdh5.8.2.p0.3/lib/oozie/lib/ /var/lib/oozie" 
pssh -h list_agents "sudo cp /tmp/mysql-connector-java-5.1.34.jar /opt/cloudera/parcels/CDH-5.8.2-1.cdh5.8.2.p0.3/lib/hive/lib/" 
pssh -h list_agents "sudo cp /tmp/mysql-connector-java-5.1.34.jar /opt/cloudera/parcels/CDH-5.8.2-1.cdh5.8.2.p0.3/lib/oozie/lib/" 
pssh -h list_agents "sudo mkdir -p  /opt/cloudera/parcels/CDH-5.8.2-1.cdh5.8.2.p0.3/lib/sentry/lib"
pssh -h list_agents "sudo cp /tmp/mysql-connector-java-5.1.34.jar /opt/cloudera/parcels/CDH-5.8.2-1.cdh5.8.2.p0.3/lib/sentry/lib/" 
pssh -h list_agents "sudo cp /tmp/mysql-connector-java-5.1.34.jar /var/lib/oozie"
pssh -h list_agents "sudo rm -f /tmp/mysql-connector-java-5.1.34.jar"

Q: 部署 Oozie 的时候报错:mkdir: cannot create directory '/var/lib/oozie/tomcat-deployment': No such file or directory
A: 在 MySQL 中重建 oozie 这个 database,然后 执行:

sudo chown oozie:oozie /var/lib/oozie

Step9. 修改HUE和Oozie的时区

修改时区是针对国内用户的,如果不进行HUE时区修改,会造成HUE中无法使用sqoop,报Sqoop error: Could not get connectors.;如果不进行Oozie时区修改,那么所看到的Oozie日志时间戳会错误。

HUE修改很简单,只需要在Cloudera控制台HUE Service的configuration中对如下属性进行修改,并重启服务即可:

time_zone = Asia/Shanghai

Oozie修改的话,也是在Cloudera控制台HUE Service的configuration找到oozie-env.sh进行修改,添加如下属性:

<property> 
    <name>oozie.processing.timezone</name> 
    <value>GMT+0800</value> 
</property>

然后在每台运行Oozie的服务器上执行,完成后重启Oozie服务:

cd /opt/cloudera/parcels/CDH/lib/oozie/libext 
unzip ext-2.2.zip 
chown oozie:oozie -R ext-2.2

最后在Oozie Web Console中的Settings下修改TimezoneCST(Asia/Shanghai)

附 完全卸载脚本

#!/bin/bash 
RELEASE_VERSION=5.8.2
RPM_CMA_VERSION=5.8.2-1.cm582.p0.17.el7.x86_64
RPM_CMD_VERSION=5.8.2-1.cm582.p0.17.el7.x86_64   
pssh -h list -P "sudo /bin/systemctl stop cloudera-scm-agent"

sudo /opt/cm-${RELEASE_VERSION}/etc/init.d/cloudera-scm-server stop 
pssh -h list -P "sudo umount /run/cloudera-scm-agent/process" 
pssh -h list -P "sudo rm -rf /usr/share/cmf /var/lib/cloudera* /var/cache/yum/x86_64/6/cloudera* /var/log/cloudera* /var/run/cloudera* /etc/cloudera* /usr/lib64/cmf /etc/init.d/cloudera-scm-agent /etc/rc3.d/S90cloudera-scm-agent /etc/cloudera-scm-agent" 
pssh -h list -P "sudo rpm -e --noscripts --nodeps cloudera-manager-agent-${RPM_CMA_VERSION}" 
pssh -h list -P "sudo rpm -e --noscripts --nodeps cloudera-manager-daemons-${RPM_CMD_VERSION}" 
pssh -h list -P "sudo rm -rf /var/lib/hadoop-* /var/lib/impala /var/lib/solr /var/lib/zookeeper /var/lib/hue /var/lib/oozie /var/lib/pgsql /var/lib/sqoop2 /data/dfs/ /data/impala/ /data/yarn/ /dfs/ /impala/ /yarn/ /var/run/hadoop-*/ /var/run/hdfs-*/ /usr/bin/hadoop* /usr/bin/zookeeper* /usr/bin/hbase* /usr/bin/hive* /usr/bin/hdfs /usr/bin/mapred /usr/bin/yarn /usr/bin/sqoop* /usr/bin/oozie /etc/hadoop* /etc/zookeeper* /etc/hive* /etc/hue /etc/impala /etc/sqoop* /etc/oozie /etc/hbase* /etc/hcatalog /var/lib/flume-ng /var/lib/hadoop* /var/lib/hue /var/lib/navigator /var/lib/oozie /var/lib/solr /var/lib/sqoop* /var/lib/zookeeper /var/lib/hbase /var/lib/hive /var/lib/impala /var/lib/spark" 
pssh -h list -P "sudo rm -rf /opt/cloudera" 
pssh -h list -P "sudo userdel -r cloudera-scm" 
pssh -h list -P "sudo rm -rf /usr/share/cmf /var/lib/cloudera* /var/cache/yum/x86_64/6/cloudera* /var/log/cloudera* /var/run/cloudera* /etc/cloudera* /usr/lib64/cmf" 
pssh -h list -P "sudo rm -rf /opt/cloudera /opt/cm-${RELEASE_VERSION}/" 

附 Agent 卸载脚本

/sbin/service cloudera-scm-agent stop
/bin/sed -e s/\(server_host=\).*/\1localhost/ -i /etc/cloudera-scm-agent/config.ini
/bin/yum -y erase cloudera-manager-agent
/bin/rm -rf /var/log/cloudera-scm-agent/
/bin/rm -rf /etc/cloudera-scm-agent/
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容