Skip to content

bjddd192/ansible-playbooks-cdh6

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CDH6

CDH(Cloudera’s Distribution,including Apache Hadoop),是 Hadoop 分支中的一种,由 Cloudera 维护,基于稳定版本的 Apache hadoop 构建,并继承了许多补丁,可以直接用于生产环境。

由于整个安装过程涉及了多台服务器,为了更加方便地安装 CDH6,减少出错几率,将安装过程封装成项目驱动的形式。

注意:本项目的运行环境基于 CentOS7.5 + CDH6.01 。

运行此项目,需要了解以下基础知识:

  • linux
  • ansible
  • docker

安装

官方安装文档:Cloudera Enterprise 6.0.x Installation Guide

准备工作

准备安装 CDH6 的服务器

硬软件需求:Cloudera Enterprise 6 Requirements and Supported Versions

IP HostName OS Cores Memory Disk Remark
10.240.114.34 bjds-kubernetes-node-pre-10-240-114-34-vm.belle.lan CentOS 7.5 8 16G 250 Server & Agent
10.240.114.38 bjds-kubernetes-node-pre-10-240-114-38-vm.belle.lan CentOS 7.5 8 16G 250 Agent
10.240.114.65 bjds-kubernetes-node-pre-10-240-114-65-vm.belle.lan CentOS 7.5 8 16G 250 Agent
10.240.114.67 bjds-kubernetes-node-pre-10-240-114-67-vm.belle.lan CentOS 7.5 8 16G 250 Agent
10.240.114.54 bjds-kubernetes-node-pre-10-240-114-54-vm.belle.lan CentOS 7.5 8 16G 250 MySQL 5.7.24
10.240.114.45 bjds-kubernetes-node-pre-10-240-114-45-vm.belle.lan CentOS 7.5 8 16G 250 下载服务器

准备下载服务器

CDH6 官网自身提供了下载服务器地址:

由于国内服务器需要翻墙才能正常下载,且安装包比较大,因此最佳的方式是在内网中搭建一个类似的下载服务器,然后将这些包下载到内网,极大地提升整个安装的效率。

为了简化操作,下载服务器采用 docker 运行。

首先 安装 docker + docker-compose

然后在服务器上初始化下载服务器:

# sfds 意为 static file download service

# 初始化 sfds 配置目录
mkdir -p /data/docker_volumn/sfds

# 初始化数据文件目录
mkdir -p /data/sfds

# 初始化编排文件目录
mkdir -p /data/docker_compose

# 初始化 sfds 配置文件
tee /data/docker_volumn/sfds/nginx.conf <<-'EOF'
worker_processes  1;
pid        /var/run/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
	sendfile        on;
    keepalive_timeout  65;
    server 
    {
        listen        9000;             #端口
        server_name  localhost;         #服务名
        root /usr/share/nginx/html;     #显示的根索引目录   
        autoindex on;                   #开启索引功能
        autoindex_exact_size off;       #关闭计算文件确切大小(单位bytes),只显示大概大小(单位kb、mb、gb)
        autoindex_localtime on;         #显示本机时间而非 GMT 时间
    }
}
EOF

# 初始化编排文件
tee /data/docker_compose/docker-compose.yml <<-'EOF'
version: "3"
services:
  # 文件下载服务器
  sfds:
    image: bjddd192/nginx:1.10.1
    container_name: sfds
    restart: always
    ports:
    - "8066:9000"
    environment:
    - TZ=Asia/Shanghai
    volumes:
    - /data/docker_volumn/sfds/nginx.conf:/etc/nginx/nginx.conf
    - /data/sfds:/usr/share/nginx/html
    network_mode: bridge
EOF

# 启动下载服务器
docker-compose -f /data/docker_compose/docker-compose.yml up -d

下载服务器启动好以后,访问一下 http:https://serverIP:8066,如果能正常打开页面,说明下载服务器部署成功。

下载安装包

Cloudera Manager 6 Version and Download Information

根据官网的下载路径,建立本地目录:

mkdir -p /data/sfds/cdh6/6.0.1/parcels
mkdir -p /data/sfds/cm6/6.0.1/redhat7/yum/RPMS/x86_64

然后将官方的包下载到对应的目录,最终目录结构如下:

$ tree /data/sfds/cdh6/6.0.1/parcels
/data/sfds/cdh6/6.0.1/parcels
|-- CDH-6.0.1-1.cdh6.0.1.p0.590678-el7.parcel
|-- CDH-6.0.1-1.cdh6.0.1.p0.590678-el7.parcel.sha256
`-- manifest.json

$ tree /data/sfds/cm6/6.0.1/redhat7/yum/RPMS/x86_64
/data/sfds/cm6/6.0.1/redhat7/yum/RPMS/x86_64
|-- cloudera-manager-agent-6.0.1-610811.el7.x86_64.rpm
|-- cloudera-manager-daemons-6.0.1-610811.el7.x86_64.rpm
|-- cloudera-manager-server-6.0.1-610811.el7.x86_64.rpm
|-- cloudera-manager-server-db-2-6.0.1-610811.el7.x86_64.rpm
`-- oracle-j2sdk1.8-1.8.0+update141-1.x86_64.rpm

制作本地YUM仓库

yum -y install createrepo
cd /data/sfds/cm6/6.0.1/redhat7/yum
createrepo .

# 初始化仓库文件
tee /data/sfds/cm6/6.0.1/redhat7/yum/cloudera-manager.repo <<-'EOF'
[cloudera-manager]
name=Cloudera Manager 6.0.1
baseurl=http:https://10.240.114.45:8066/cm6/6.0.1/redhat7/yum/
gpgcheck=false
enabled=true
EOF

验证仓库:

wget http:https://10.240.114.45:8066/cm6/6.0.1/redhat7/yum/cloudera-manager.repo -P /etc/yum.repos.d/
rpm --import http:https://10.240.114.45:8066/cm6/6.0.1/redhat7/yum/RPM-GPG-KEY-cloudera
yum makecache
yum search cloudera
yum search cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server

能够正常找到包说明本地YUM仓库制作成功。

数据库准备

数据库最好选择 MySQL 5.5.45+, 5.6.26+ and 5.7.6+ 版本,本实验环境使用的是 5.7.24 的版本。

-- 删除数据库(如重新部署时使用)
-- drop database db_cdh6_scm;
-- drop database db_cdh6_amon;
-- drop database db_cdh6_rmon;
-- drop database db_cdh6_hue;
-- drop database db_cdh6_metastore;
-- drop database db_cdh6_sentry;
-- drop database db_cdh6_nav;
-- drop database db_cdh6_navms;
-- drop database db_cdh6_oozie;

-- 创建数据库
create database db_cdh6_scm default character set utf8 default collate utf8_general_ci;
create database db_cdh6_amon default character set utf8 default collate utf8_general_ci;
create database db_cdh6_rmon default character set utf8 default collate utf8_general_ci;
create database db_cdh6_hue default character set utf8 default collate utf8_general_ci;
create database db_cdh6_metastore default character set utf8 default collate utf8_general_ci;
create database db_cdh6_sentry default character set utf8 default collate utf8_general_ci;
create database db_cdh6_nav default character set utf8 default collate utf8_general_ci;
create database db_cdh6_navms default character set utf8 default collate utf8_general_ci;
create database db_cdh6_oozie default character set utf8 default collate utf8_general_ci;

-- 简单练习使用相同的数据库用户,如果用于线上环境最好是分别使用独立的用户。
grant all on db_cdh6_scm.* to 'user_cdh6'@'%' identified by '123456';
grant all on db_cdh6_amon.* to 'user_cdh6'@'%' identified by '123456';
grant all on db_cdh6_rmon.* to 'user_cdh6'@'%' identified by '123456';
grant all on db_cdh6_hue.* to 'user_cdh6'@'%' identified by '123456';
grant all on db_cdh6_metastore.* to 'user_cdh6'@'%' identified by '123456';
grant all on db_cdh6_sentry.* to 'user_cdh6'@'%' identified by '123456';
grant all on db_cdh6_nav.* to 'user_cdh6'@'%' identified by '123456';
grant all on db_cdh6_navms.* to 'user_cdh6'@'%' identified by '123456';
grant all on db_cdh6_oozie.* to 'user_cdh6'@'%' identified by '123456';

-- 刷新权限
flush privileges;

ansible 配置

ansible 安装与配置

本人是使用 mac 安装了 ansible 作为主控。

# 配置到服务器的信任
ssh-copy-id -p 60777 [email protected]
ssh-copy-id -p 60777 [email protected]
ssh-copy-id -p 60777 [email protected]
ssh-copy-id -p 60777 [email protected]

# 测试连接
ansible cdh-cluster -i inventory/uat_cdh6.ini -m ping

部署 CDH

安装 CM 和 CDH

cd /Users/yanglei/01_git/github_me/ansible-playbooks-cdh6

# 测试连接
ansible cdh-cluster -i inventory/uat_cdh6.ini -m ping
ansible cdh-cluster -i inventory/uat_cdh6.ini -m command -a "date"

# 安装公共组件
ansible-playbook -t common -i inventory/uat_cdh6.ini -e @inventory/uat_cdh6.yml 01.cdh.yml

# 安装 jdk
ansible-playbook -t jdk -i inventory/uat_cdh6.ini -e @inventory/uat_cdh6.yml 01.cdh.yml

# 设置 server 免密登录 agent
ansible-playbook -t ssh -i inventory/uat_cdh6.ini -e @inventory/uat_cdh6.yml 01.cdh.yml

# 安装 scm
ansible-playbook -t cm -i inventory/uat_cdh6.ini -e @inventory/uat_cdh6.yml 01.cdh.yml
# 如安装数据库的过程中报错:java.sql.SQLException: Statement violates GTID consistency: CREATE TABLE ... SELECT.
# 需临时关闭 mysql 的 gtid 功能:
# set global gtid_mode=on_permissive;
# set global gtid_mode=off_permissive;
# set global gtid_mode=off;
# set global enforce_gtid_consistency=off;
# 撸完后恢复:
# set global enforce_gtid_consistency=on;
# set global gtid_mode=off_permissive;
# set global gtid_mode=on_permissive;
# set global gtid_mode=on;

# 放置 cdh 离线安装包
ansible-playbook -t cdh -i inventory/uat_cdh6.ini -e @inventory/uat_cdh6.yml 01.cdh.yml

# 在 cdh-server 节点检查服务状态
# 检查 scm 数据库是否已经自动创建了表结构
# 如果都正常说明 scm 安装完成
systemctl status cloudera-scm-agent.service
systemctl status cloudera-scm-server.service
# 查看日志
tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log

集群配置

cm_install_step_01.png 启动 Web 控制台进行配置,地址如:http:https://10.240.114.34:7180/cmf/login ,默认用户名密码都是:admin。

cm_install_step_02.png 点击"继续"。

cm_install_step_03.png 接受许可。

cm_install_step_04.png 这里选择免费版,收费版请自行选择。

cm_install_step_05.png 点击"继续"。

cm_install_step_06.png 选择"当前管理的主机"。

cm_install_step_07.png 看到 CDH-6.0.1 版本可选后,点击"继续"。

cm_install_step_08.png 等待 CDH 包安装完成,点击"继续"。

cm_install_step_09.png

cm_install_step_10.png 点击"完成"。

cm_install_step_11.png 根据自己的需求选取服务。

cm_install_step_12.png 自定义角色分配。

cm_install_step_13.png 数据库设置。

cm_install_step_14.png 审核更改,如果有特定目录的设定或者参数的设定,可以在这里进行更正。

cm_install_step_15.png 等待首次运行完成。

cm_install_step_16.png

cm_install_step_17.png

cm_install_step_18.png 顺利进入管理控制台,部署基本完成。

部署 Kylin

cd /Users/yanglei/01_git/oschina/ansible/big_data

ansible kylin -i inventory/uat_cdh6.ini -m ping

# 安装 kylin
ansible-playbook -i inventory/uat_cdh6.ini kylin.yml

# 给 spark 添加 jars 目录的软链接
ansible kylin -i inventory/uat_cdh6.ini -m file -a 'src=/opt/cloudera/parcels/CDH/jars dest=$SPARK_HOME/jars state=link'

# 用软链接短 HIVE_LIB 路径长度,防止 kylin 启动出现“参数列表过长”的问题
ansible kylin -i inventory/uat_cdh6.ini -m file -a 'src=$HIVE_HOME/lib dest=/hivelib state=link'

# 检查环境
su - hdfs
# hdfs dfs -chmod -R 777 /
$KYLIN_HOME/bin/check-env.sh  
$KYLIN_HOME/bin/find-hive-dependency.sh
$KYLIN_HOME/bin/find-hbase-dependency.sh
$KYLIN_HOME/bin/find-spark-dependency.sh

# 启动
$KYLIN_HOME/bin/kylin.sh start

# 停止
$KYLIN_HOME/bin/kylin.sh stop

# web验证
http:https://172.20.32.131:7070/kylin
# 初始用户名和密码是 ADMIN/KYLIN

# 测试kylin
$KYLIN_HOME/bin/sample.sh

卸载 CDH

ansible-playbook -i inventory/uat_cdh6.ini 99.clean_all.yml

# 然后删除已创建的数据库

CDH 配置

目录位置

路径 说明
/var/lib/cloudera-scm-server 服务端目录
/var/log/cloudera-scm-* CM 日志目录
/opt/cloudera/parcels/ Hadoop 相关服务安装目录
/opt/cloudera/parcel-repo/ 下载的服务软件包数据(parcels)
/opt/cloudera/parcel-cache 下载的服务软件包缓存数据
/opt/cloudera/parcels/CDH/jars CDH 所有 jar 包所在目录
/etc/cloudera-scm-agent/config.ini CM Agent 的配置文件
/etc/cloudera-scm-server/ CM Server 的配置目录
/etc/cloudera-scm-server/db.properties CM Server 的数据库配置
/etc/hadoop/* hadoop客户端配置目录
/etc/hive/ hive 的配置目录
...

环境变量

CDH 自身有一个环境变量脚本,如下:

cat /opt/cloudera/parcels/CDH/meta/cdh_env.sh
#!/bin/bash
CDH_DIRNAME=${PARCEL_DIRNAME:-"CDH-6.0.1-1.cdh6.0.1.p0.590678"}
export CDH_HADOOP_HOME=$PARCELS_ROOT/$CDH_DIRNAME/lib/hadoop
export CDH_MR1_HOME=$PARCELS_ROOT/$CDH_DIRNAME/lib/hadoop-0.20-mapreduce
export CDH_HDFS_HOME=$PARCELS_ROOT/$CDH_DIRNAME/lib/hadoop-hdfs
export CDH_HTTPFS_HOME=$PARCELS_ROOT/$CDH_DIRNAME/lib/hadoop-httpfs
export CDH_MR2_HOME=$PARCELS_ROOT/$CDH_DIRNAME/lib/hadoop-mapreduce
export CDH_YARN_HOME=$PARCELS_ROOT/$CDH_DIRNAME/lib/hadoop-yarn
export CDH_HBASE_HOME=$PARCELS_ROOT/$CDH_DIRNAME/lib/hbase
export CDH_ZOOKEEPER_HOME=$PARCELS_ROOT/$CDH_DIRNAME/lib/zookeeper
export CDH_HIVE_HOME=$PARCELS_ROOT/$CDH_DIRNAME/lib/hive
export CDH_HUE_HOME=$PARCELS_ROOT/$CDH_DIRNAME/lib/hue
export CDH_OOZIE_HOME=$PARCELS_ROOT/$CDH_DIRNAME/lib/oozie
export CDH_HUE_PLUGINS_HOME=$PARCELS_ROOT/$CDH_DIRNAME/lib/hadoop
export CDH_FLUME_HOME=$PARCELS_ROOT/$CDH_DIRNAME/lib/flume-ng
export CDH_PIG_HOME=$PARCELS_ROOT/$CDH_DIRNAME/lib/pig
export CDH_HCAT_HOME=$PARCELS_ROOT/$CDH_DIRNAME/lib/hive-hcatalog
export CDH_SENTRY_HOME=$PARCELS_ROOT/$CDH_DIRNAME/lib/sentry
export JSVC_HOME=$PARCELS_ROOT/$CDH_DIRNAME/lib/bigtop-utils
export CDH_HADOOP_BIN=$CDH_HADOOP_HOME/bin/hadoop
export CDH_IMPALA_HOME=$PARCELS_ROOT/$CDH_DIRNAME/lib/impala
export CDH_SOLR_HOME=$PARCELS_ROOT/$CDH_DIRNAME/lib/solr
export CDH_HBASE_INDEXER_HOME=$PARCELS_ROOT/$CDH_DIRNAME/lib/hbase-solr
export SEARCH_HOME=$PARCELS_ROOT/$CDH_DIRNAME/lib/search
export CDH_SPARK_HOME=$PARCELS_ROOT/$CDH_DIRNAME/lib/spark
export WEBHCAT_DEFAULT_XML=$PARCELS_ROOT/$CDH_DIRNAME/etc/hive-webhcat/conf.dist/webhcat-default.xml
export CDH_KMS_HOME=$PARCELS_ROOT/$CDH_DIRNAME/lib/hadoop-kms
export CDH_PARQUET_HOME=$PARCELS_ROOT/$CDH_DIRNAME/lib/parquet
export CDH_AVRO_HOME=$PARCELS_ROOT/$CDH_DIRNAME/lib/avro
export CDH_KAFKA_HOME=$PARCELS_ROOT/$CDH_DIRNAME/lib/kafka
export CDH_KUDU_HOME=$PARCELS_ROOT/$CDH_DIRNAME/lib/kudu

其他技巧

在Cloudrea Manager页面上,可以向集群中添加/删除主机,添加服务到集群等。

Cloudrea Manager页面开启了google-analytics,因为从国内访问很慢,可以关闭google-analytics

管理 -> 设置 -> 其他 -> 允许使用情况数据收集 不选

参考资料

部署相关

CentOS7 ntp 服务器配置

CentOS7 配置 ntp 时间服务器

CentOS7 中使用NTP进行时间同步

如何给hadoop集群分配角色

Cloudera Manager 和CDH6.0.1安装,卸载,各步骤截图

CentOS7.5,CDH6安装部署

CDH 最新版本 6.0.1 安装详解

CentOS 7下Cloudera Manager及CDH 6.0.1安装过程详解

CDH5.15卸载指南

配置相关

CDH5快速入门手册

About

The Ansible playbooks for CDH6

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages