> 技术文档 > 大数据环境搭建指南:基于 Docker 构建 Hadoop、Hive、HBase 等服务

大数据环境搭建指南:基于 Docker 构建 Hadoop、Hive、HBase 等服务


大数据环境搭建指南:基于 Docker 构建 Hadoop、Hive、HBase 等服务

  • 说明
  • 大数据环境搭建指南:基于 Docker 构建 Hadoop、Hive、HBase 等服务
    • 一、引言
    • 二、项目概述
    • 三、搭建步骤
      • 3.1 下载文件
      • 3.2 构建镜像
        • 3.2.1 构建基础层镜像
        • 3.2.2 并行构建 HBase/Hive/Spark 镜像
      • 3.3 启动容器
      • 3.4 初始化文件路径
      • 3.5 整体启动结果
    • 四、详细服务验证
      • 4.1 第一层:基础协调与数据库服务
        • 4.1.1 ZooKeeper
        • 4.1.2 PostgreSQL
      • 4.2 第二层:核心存储 (HDFS)
        • 4.2.1 NameNode
        • 4.2.2 DataNode
      • 4.3 第三层:资源调度 (YARN)
        • 4.3.1 ResourceManager
        • 4.3.2 NodeManager
        • 4.3.3 HistoryServer
      • 4.4 第四层及以上:应用层 (HBase, Hive, Spark)
        • 4.4.1 HBase Master
        • 4.4.2 Hive Metastore
        • 4.4.3 HiveServer2
        • 4.4.4 Spark 客户端(spark-client)
    • 五、总结
    • 六、注意事项

说明

开发环境
window11 + wsl2 + docker desktop + docker compose + idea

大数据环境搭建指南:基于 Docker 构建 Hadoop、Hive、HBase 等服务

一、引言

在大数据领域,搭建一个包含 Hadoop、Hive、HBase、Spark 等服务的开发环境是进行数据处理和分析的基础。本文将详细介绍如何使用 Docker 和 Docker Compose 来搭建这样一个大数据环境,同时还会提供验证各个服务是否正常运行的方法。

二、项目概述

本项目通过 Docker Compose 来管理多个大数据服务的容器化部署,涉及的服务包括 ZooKeeper、PostgreSQL、HDFS、YARN、HBase、Hive 和 Spark 等。每个服务都有对应的 Docker 镜像,并且可以通过配置文件进行定制化。

三、搭建步骤

3.1 下载文件

首先,我们需要下载所需的大数据组件包和 JDBC 驱动。可以使用以下命令进行下载:

wget https://archive.apache.org/dist/hadoop/core/hadoop-3.3.6/hadoop-3.3.6.tar.gzwget https://archive.apache.org/dist/hbase/2.5.6/hbase-2.5.6-bin.tar.gzwget https://archive.apache.org/dist/hive/hive-3.1.3/apache-hive-3.1.3-bin.tar.gzwget https://archive.apache.org/dist/spark/spark-3.5.0/spark-3.5.0-bin-hadoop3.tgzwget https://jdbc.postgresql.org/download/postgresql-42.7.1.jar

克隆项目

git clone https://github.com/gugxl/my-bigdata-stack.git

大数据环境搭建指南:基于 Docker 构建 Hadoop、Hive、HBase 等服务

3.2 构建镜像

3.2.1 构建基础层镜像

基础层镜像包含了所有服务的依赖,使用以下命令构建:

docker-compose --profile build build

说明:base-builder 是基础镜像,包含 Ubuntu、JDK 和基础环境。
这个时间会略微久一点,耐心等待下

3.2.2 并行构建 HBase/Hive/Spark 镜像

由于 HBase、Hive 和 Spark 镜像之间没有相互依赖关系,可以并行构建以节省时间:

docker-compose build --parallel hbase-builder hive-builder spark-builder

3.3 启动容器

使用以下命令启动所有服务的容器:

docker-compose up -d

3.4 初始化文件路径

在启动容器后,需要对 HDFS 进行初始化,包括创建必要的目录和设置权限。执行以下脚本:

chmod +x init-hdfs.sh./init-hdfs.shdocker compose up -d historyserver

3.5 整体启动结果

大数据环境搭建指南:基于 Docker 构建 Hadoop、Hive、HBase 等服务
大数据环境搭建指南:基于 Docker 构建 Hadoop、Hive、HBase 等服务
大数据环境搭建指南:基于 Docker 构建 Hadoop、Hive、HBase 等服务
大数据环境搭建指南:基于 Docker 构建 Hadoop、Hive、HBase 等服务
大数据环境搭建指南:基于 Docker 构建 Hadoop、Hive、HBase 等服务
大数据环境搭建指南:基于 Docker 构建 Hadoop、Hive、HBase 等服务
大数据环境搭建指南:基于 Docker 构建 Hadoop、Hive、HBase 等服务
大数据环境搭建指南:基于 Docker 构建 Hadoop、Hive、HBase 等服务
大数据环境搭建指南:基于 Docker 构建 Hadoop、Hive、HBase 等服务
大数据环境搭建指南:基于 Docker 构建 Hadoop、Hive、HBase 等服务

四、详细服务验证

为了确保每个服务都正常运行,我们需要按照服务依赖的从底层到上层的顺序进行验证。

4.1 第一层:基础协调与数据库服务

4.1.1 ZooKeeper
  • 容器状态docker-compose ps zookeeper,状态应为 Up
  • 日志检查docker-compose logs zookeeper,寻找 binding to port 0.0.0.0/0.0.0.0:2181,且日志中不应有任何 ERRORException
  • 端口连接:从终端执行 echo \"ruok\" | nc localhost 2181,如果返回 imok,则表示 ZooKeeper 服务完全正常。
4.1.2 PostgreSQL
  • 容器状态docker-compose ps postgres-metastore,状态应为 Up
  • 日志检查docker-compose logs postgres-metastore,寻找 database system is ready to accept connections

4.2 第二层:核心存储 (HDFS)

4.2.1 NameNode
  • 容器状态docker-compose ps namenode,状态应为 Up (healthy)
  • 日志检查docker-compose logs namenode,首次启动会有 STARTUP_MSG: Starting NameNodesuccessfully formatted 的日志;正常运行时,日志不应有 ERRORException,寻找 Serving GSSAPI ...IPC Server handler ... 等信息。
  • Web UI:在浏览器中访问 http://localhost:9870,能看到 HDFS 的管理界面,在 “Datanodes” 标签页下应能看到活动的 DataNode。
4.2.2 DataNode
  • 容器状态docker-compose ps datanode,状态应为 Up
  • 日志检查docker-compose logs datanode,寻找 STARTUP_MSG: Starting DataNodeBlock pool ... registered with namenode
  • NameNode Web UI 确认:访问 http://localhost:9870/dfshealth.html#tab-datanode,能看到至少一个 “Live” 的 DataNode,并且它的状态是 “In Service”。

4.3 第三层:资源调度 (YARN)

4.3.1 ResourceManager
  • 容器状态docker-compose ps resourcemanager,状态应为 Up (healthy)
  • 日志检查docker-compose logs resourcemanager,寻找 STARTUP_MSG: Starting ResourceManagerTransitioned to active state,日志中不应再有关于队列初始化失败的错误。
  • Web UI:在浏览器中访问 http://localhost:8088,能看到 YARN 的管理界面,在 “Nodes” 标签页下应能看到活动的 NodeManager,在 “Scheduler” 菜单下应能看到配置的 root.default 队列。
4.3.2 NodeManager
  • 容器状态docker-compose ps nodemanager,状态应为 Up
  • 日志检查docker-compose logs nodemanager,寻找 STARTUP_MSG: Starting NodeManagerRegistered with ResourceManager as nodemanager
  • ResourceManager Web UI 确认:访问 http://localhost:8088/cluster/nodes,能看到至少一个状态为 “RUNNING” 的节点。
4.3.3 HistoryServer
  • 容器状态docker-compose ps historyserver,状态应为 Up
  • 日志检查docker-compose logs historyserver,寻找 STARTUP_MSG: Starting JobHistoryServerJobHistoryServer metrics system started
  • Web UI:在浏览器中访问 http://localhost:19888,能看到 “JobHistory” 的界面,即使里面没有任何作业记录。

4.4 第四层及以上:应用层 (HBase, Hive, Spark)

4.4.1 HBase Master
  • 容器状态docker-compose ps hbase-master,状态应为 Up
  • 日志检查docker-compose logs hbase-master,寻找 Master has completed initialization
  • Web UI:访问 http://localhost:16010,能看到 HBase Master 的 UI,并且在 “Region Servers” 部分能看到活动的 RegionServer。
4.4.2 Hive Metastore
  • 容器状态docker-compose ps hive-metastore,状态应为 Up
  • 日志检查docker-compose logs hive-metastore,寻找 Starting Hive Metastore ServerOpened a connection to metastore,并且不应有连接 postgres-metastore 失败的错误,首次启动会有 schemaTool 相关的日志。
4.4.3 HiveServer2
  • 容器状态docker-compose ps hiveserver2,状态应为 Up
  • 日志检查docker-compose logs hiveserver2,寻找 Starting HiveServer2HiveServer2 is started
  • Web UI:访问 http://localhost:10002,能看到 HiveServer2 的 Web UI。
4.4.4 Spark 客户端(spark-client)
  • 容器状态docker-compose ps spark-client,状态应为 Up
  • 进入容器验证:可以使用以下命令进入 spark-client 容器:
docker exec -it spark-client bash

进入容器后,可以尝试执行一些简单的 Spark 命令,例如启动 Spark Shell:

spark-shell

如果能够正常启动 Spark Shell,则说明 spark-client 服务正常。

五、总结

通过以上步骤,我们成功地使用 Docker 和 Docker Compose 搭建了一个包含多个大数据服务的开发环境,并验证了每个服务的正常运行。这种容器化的部署方式不仅方便快捷,而且易于管理和维护。希望本文能对大数据开发者有所帮助。

六、注意事项

  • 确保你的系统已经安装了 Docker 和 Docker Compose。
  • 在构建镜像和启动容器时,可能需要一些时间,请耐心等待。
  • 如果在验证过程中发现某个服务出现问题,可以查看相应的日志文件进行排查。