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

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

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

bash 复制代码
wget https://archive.apache.org/dist/hadoop/core/hadoop-3.3.6/hadoop-3.3.6.tar.gz
wget https://archive.apache.org/dist/hbase/2.5.6/hbase-2.5.6-bin.tar.gz
wget https://archive.apache.org/dist/hive/hive-3.1.3/apache-hive-3.1.3-bin.tar.gz
wget https://archive.apache.org/dist/spark/spark-3.5.0/spark-3.5.0-bin-hadoop3.tgz
wget https://jdbc.postgresql.org/download/postgresql-42.7.1.jar

克隆项目

bash 复制代码
git clone https://github.com/gugxl/my-bigdata-stack.git

3.2 构建镜像

3.2.1 构建基础层镜像

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

bash 复制代码
docker-compose --profile build build

说明:base-builder 是基础镜像,包含 Ubuntu、JDK 和基础环境。

这个时间会略微久一点,耐心等待下

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

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

bash 复制代码
docker-compose build --parallel hbase-builder hive-builder spark-builder

3.3 启动容器

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

bash 复制代码
docker-compose up -d

3.4 初始化文件路径

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

bash 复制代码
chmod +x init-hdfs.sh
./init-hdfs.sh
docker compose up -d historyserver

3.5 整体启动结果










四、详细服务验证

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

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 容器:
bash 复制代码
docker exec -it spark-client bash

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

bash 复制代码
spark-shell

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

五、总结

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

六、注意事项

  • 确保你的系统已经安装了 Docker 和 Docker Compose。
  • 在构建镜像和启动容器时,可能需要一些时间,请耐心等待。
  • 如果在验证过程中发现某个服务出现问题,可以查看相应的日志文件进行排查。
相关推荐
IT_102431 分钟前
Spring Boot项目开发实战销售管理系统——系统设计!
大数据·spring boot·后端
一只鹿鹿鹿2 小时前
信息化项目验收,软件工程评审和检查表单
大数据·人工智能·后端·智慧城市·软件工程
聚铭网络3 小时前
案例精选 | 某省级税务局AI大数据日志审计中台应用实践
大数据·人工智能·web安全
Qdgr_5 小时前
价值实证:数字化转型标杆案例深度解析
大数据·数据库·人工智能
选择不变5 小时前
日线周线MACD指标使用图文教程,通达信指标
大数据·区块链·通达信指标公式·炒股技巧·短线指标·炒股指标
高山莫衣5 小时前
git rebase多次触发冲突
大数据·git·elasticsearch
链上Sniper5 小时前
智能合约状态快照技术:实现 EVM 状态的快速同步与回滚
java·大数据·linux·运维·web3·区块链·智能合约
wx_ywyy67986 小时前
推客系统小程序终极指南:从0到1构建自动裂变增长引擎,实现业绩10倍增长!
大数据·人工智能·短剧·短剧系统·推客系统·推客小程序·推客系统开发
王小王-1236 小时前
基于Hadoop的京东厨具商品数据分析及商品价格预测系统的设计与实现
hadoop·数据分析·京东厨具·厨具分析·商品分析
蚂蚁数据AntData6 小时前
从性能优化赛到社区Committer,走进赵宇捷在Apache Fory的成长之路
大数据·开源·apache·数据库架构