CentOS7、Docker下搭建CDH6.2.0集群环境

  • 安装规划
  • 环境准备
  • 环境安装
  • CM安装
  • 集群安装
  • 集群的重启
  • 常见问题


安装规划

hadoop1

hadoop2

hadoop3

mysql

cmrepo

cloudera-manager-server


cloudera-manager-agent




NameNode


DataNode




SecondaryNameNode


ResouceManager


NodeManager




MetaStore


HiveServer2


HueServer


ImpalaCatelogServer


ImpalaDaemon




ImpalaStateStore


Oozie Server


Zookeeper




MySQL


Repo源


环境准备

Docker环境准备

docker pull centos:7
docker pull mysql:5.7

DOCKER 部署单机版本Hbase docker部署cdh_DOCKER 部署单机版本Hbase

安装包准备

环境安装

  1. 【宿主机】 创建docker集群的网段
    docker network create --subnet 172.20.0.0/16 bigdata
  2. 【宿主机】 创建三个centos容器,并指定22端口映射及主机名
docker run -itd --privileged -p 2221:22 --name hadoop1 --hostname hadoop1 --network bigdata centos:7 /usr/sbin/init
docker run -itd --privileged -p 2222:22 --name hadoop2 --hostname hadoop2 --network bigdata  centos:7 /usr/sbin/init
docker run -itd --privileged -p 2223:22
  1. 进入三台主机
docker exec -it hadoop1 /bin/bash
docker exec -it hadoop2 /bin/bash
docker exec -it hadoop3 /bin/bash
  1. 【三台dokcer】 安装ssh,配置免密登录
passwd root
yum -y install openssh-server openssh-clients
systemctl start sshd
ssh-keygen -t rsa # 三次回车
ssh-copy-id hadoop1
ssh-copy-id hadoop2
ssh-copy-id hadoop3
  1. 【三台dokcer】 关闭防火墙
yum -y install firewalld
systemctl status firewalld
systemctl stop firewalld
systemctl disable firewalld
  1. 同步服务器时钟,静态ip,主机映射
  • 【hadoop1】 作为时钟服务器
yum -y install ntp
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
cp /etc/ntp.conf /etc/ntp.conf.bak
cp /etc/sysconfig/ntpd /etc/sysconfig/ntpd.bak
echo "restrict hadoop1 mask 255.255.0.0 nomodify notrap" >> /etc/ntp.conf
echo "SYNC_HWCLOCK=yes" >> /etc/sysconfig/ntpd
systemctl restart ntpd
  • 【hadoop2,hadoop3】 与hadoop1时钟服务器同步
yum -y install ntpdate crontabs
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ntpdate hadoop1
echo "*/30 * * * * /usr/sbin/ntpdate hadoop1.bigdata" >> /var/spool/cron/root
  • 【三台】 配置hosts和ip映射
vi /etc/hosts 
172.20.0.2 hadoop1.bigdata
172.20.0.3 hadoop2.bigdata
172.20.0.4 hadoop3.bigdata
  1. 【宿主机】 创建mysql容器
docker run -itd -p 3306:3306 --name mysql --hostname mysql --network bigdata -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7docker exec -it mysql /bin/bash

进入mysql

reate database metastore default character set utf8;  CREATE USER 'hive'@'%' IDENTIFIED BY 'password';   GRANT ALL PRIVILEGES ON metastore. * TO 'hive'@'%';   FLUSH PRIVILEGES;  create database cm default character set utf8;  CREATE USER 'cm'@'%' IDENTIFIED BY 'password';   GRANT ALL PRIVILEGES ON cm. * TO 'cm'@'%';   FLUSH PRIVILEGES;  create database am default character set utf8;   CREATE USER 'am'@'%' IDENTIFIED BY 'password';    GRANT ALL PRIVILEGES ON am. * TO 'am'@'%';    FLUSH PRIVILEGES;      create database rm default character set utf8;   CREATE USER 'rm'@'%' IDENTIFIED BY 'password';    GRANT ALL PRIVILEGES ON rm. * TO 'rm'@'%';    FLUSH PRIVILEGES;create database hue default character set utf8;   CREATE USER 'hue'@'%' IDENTIFIED BY 'password';    GRANT ALL PRIVILEGES ON hue. * TO 'hue'@'%';    FLUSH PRIVILEGES;create database oozie default character set utf8;   CREATE USER 'oozie'@'%' IDENTIFIED BY 'password';    GRANT ALL PRIVILEGES ON oozie. * TO 'oozie'@'%';    FLUSH PRIVILEGES;create database sentry default character set utf8;   CREATE USER 'sentry'@'%' IDENTIFIED BY 'password';    GRANT ALL PRIVILEGES ON sentry. * TO 'sentry'@'%';    FLUSH PRIVILEGES;create database nav_ms default character set utf8;   CREATE USER 'nav_ms'@'%' IDENTIFIED BY 'password';    GRANT ALL PRIVILEGES ON nav_ms. * TO 'nav_ms'@'%';    FLUSH PRIVILEGES;create database nav_as default character set utf8;  CREATE USER 'nav_as'@'%' IDENTIFIED BY 'password';   GRANT ALL PRIVILEGES ON nav_as. * TO 'nav_as'@'%';   FLUSH PRIVILEGES;

CM安装

  1. 【宿主机】 本地配置repo源的容器
docker run -itd --privileged -p 80:80 --name cmrepo --hostname cmrepo -v 本地的文件路径(需要包含cm6.2和cdh6.2):/opt/software/cdh6.2 --network bigdata centos:7 /usr/sbin/init#进入容器、安装http服务docker exec -it cmrepo /bin/bashyum -y install httpd createrepocd /opt/software/cdh6.2/cm6.2createrepo .systemctl start httpdsystemctl enable httpdln -s /opt/software/cdh6.2/cm6.2 /var/www/html/cm6.2ln -s /opt/software/cdh6.2/cdh6.2 /var/www/html/cdh6.2
  1. 【hadoop1】 编写yum文件
vi /etc/yum.repos.d/cm.repo#-------------------------[cmrepo]name = cm_repobaseurl = http://cmrepo/cm6.2enable = truegpgcheck = false#-------------------------yum repolist allcd /etc/yum.repos.d/scp -r cm.repo hadoop2:$PWDscp -r cm.repo hadoop3:$PWD
  1. 【三台】 安装oracle-j2sdk1.8-1.8.0+update181-1.x86_64
yum -y install oracle-j2sdk1.8-1.8.0+update181-1.x86_64
  1. 安装cloudera-manager-server和cloudera-manager-agent
    【hadoop1】
yum -y install cloudera-manager-server cloudera-manager-agent cloudera-manager-daemons

【hadoop2、hadoop2】

yum -y install cloudera-manager-agent cloudera-manager-daemons
  1. 【三台】 拷贝JDBC驱动
mkdir /usr/share/javamv mysql-connector-java-5.1.31.jar /usr/share/java/mysql-connector-java.jar# 拷贝驱动包时需要注意,应把版本号去掉
  1. [hadoop1] 初始化并启动cm
/opt/cloudera/cm/schema/scm_prepare_database.sh -h mysql mysql cm cm passwordsystemctl start cloudera-scm-server

集群安装

  1. 配置端口代理映射
  2. 访问hadoop1的7180端口,用户名和密码都为admin

DOCKER 部署单机版本Hbase docker部署cdh_centos_02

  1. 继续!继续!选择试用

DOCKER 部署单机版本Hbase docker部署cdh_大数据_03


DOCKER 部署单机版本Hbase docker部署cdh_大数据_04

  1. 输入新的集群名称
  2. 这里选择搜索主机,如果之前已经安装过agent,可以直接从已有主机来创建

DOCKER 部署单机版本Hbase docker部署cdh_hadoop_05

  1. cm源设置。选择更多选项,配置CDH安装源cdh源设置
  2. 安装JDK,如果之前已经安装过,这里可以选择跳过
  3. 等待安装
  4. 检查,查看一下hosts就行,第一个检查要很久
  5. 选择需要安装的服务,这里选择Data Warehouse
  6. 进入集群角色分配
  7. 点击“继续”,进入下一步,测试数据库连接
  8. 测试成功,点击“继续”,进入目录设置,此处使用默认默认目录,根据实际情况进行目录修改
  9. 点击“继续”,进入各个服务启动
  10. 安装成功后进入home管理界面

集群的重启

全部重启后需要

  1. hadoop1、hadoop2、hadoop3
systemctl start cloudera-scm-agent
  1. hadoop1
systemctl start cloudera-scm-server
  1. 进入hadoop1的7180启动所有服务

常见问题

  1. ip端口映射注意
  2. 文件路径注意