/env-box

My big data learning environment all in one box based on Docker

Primary LanguageShell

env-box

My big data learning environment all in one box based on Docker

基于Docker的Hadoop/Hive/Spark开发测试环境使用说明

基本软件环境

软件版本:

  • Hadoop 2.7.7
  • 操作系统: CentOS 7
  • Java环境: JDK 8-251
  • Hive 2.3.7
  • Hbase 2.2.5 using own zookeeper
  • MySQL 5.7.30
  • Spark 2.4.6
  • Spark 3.0.0
  • Flink 1.10.0
  • Zookeeper
  • Kafka
  • Airflow 1.10.11 集群

基于docker-compose管理镜像和容器,并进行集群的编排

镜像依赖关系

构建镜像

  • 拉取MySQL 5.7 官方镜像
docker pull mysql:5.7.30
  • 拉取CentOS 7 官方镜像
docker pull centos:7
  • 构建所需镜像含CentOS 6和OpenJDK 8
docker-compose build

在工程根目录下放置了一个docker-compose.yml文件,这一文件中已经预先配置好了由3个slave节点和1个master节点组成的Spark集群。

在使用集群之前,需要先完成初始化

初始化集群

#[创建容器]
docker-compose up -d
#[初始化Hive数据库。仅在第一次启动集群前执行一次]
docker-compose exec spark-master schematool -dbType mysql -initSchema

#[启动HDFS]
docker-compose exec spark-master start-dfs.sh

#[关闭HDFS]
docker-compose exec spark-master stop-dfs.sh

启动及停止集群

  • 启动集群进程,依次执行:
#[启动HDFS]
docker-compose exec spark-master start-dfs.sh
#[启动YARN]
docker-compose exec spark-master start-yarn.sh
#[启动Spark]
docker-compose exec spark-master start-all.sh
  • 停止Spark集群,依次执行:
#[停止Spark]
docker-compose exec spark-master stop-all.sh
#[停止YARN]
docker-compose exec spark-master stop-yarn.sh
#[停止HDFS]
docker-compose exec spark-master stop-dfs.sh
#[停止容器]
docker-compose down

挂载APP文件夹

在docker-compose编排文件中,挂载本地文件夹到容器中,开发代码直接可以在容器中运行

开发与测试过程中的集群使用方法

目前集群中采用的是1个master节点和3个slave节点的分配方案,可以通过调整docker-compose配置文件以及相应软件的配置文件来实现集群扩容,暂时无法做到自动化扩容。

编写程序可以使用任意的IDE和操作系统,程序编写完成后,打包为jar文件,然后放在工程根目录下的./volume/code/目录下。任何一个集群环境下,都会在集群启动时将code目录挂载在master节点的/code路径下。

如果要执行wordcount程序(在volume/code/tests/mapreduce-test目录下已经包含了)。在启动集群并启动各服务进程后。执行下列语句,可以进入master节点的命令行环境:

docker-compose exec spark-master /bin/bash

然后可以进入/code目录提交任务,完成计算。