当前位置: 首页 > news >正文

大数据环境搭建指南:基于 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.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

克隆项目

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

在这里插入图片描述

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.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 容器:
docker exec -it spark-client bash

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

spark-shell

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

五、总结

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

六、注意事项

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

相关文章:

  • 如何在Jupyter notebook中删除内核以及添加内核
  • 大数据救公益:数字时代下的社会力量如何玩转“数据+善意”
  • CSS之基础语法一文全解析
  • 大语言模型(LLM)按架构分类
  • 小黑黑日常积累大模型prompt句式2:【以段落的形式输出,不分点列举】【如果没有相关内容则不输出】【可读性强】【输出格式规范】
  • 音视频会议服务搭建(设计方案-Go服务端API业务逻辑流程图)-04
  • js随机生成一个颜色
  • Python 机器学习核心入门与实战进阶 Day 1 - 分类 vs 回归
  • 【Linux】Rocky Linux 安装 Jenkins
  • Jenkins 构建过程常见错误
  • serviceWorker缓存资源
  • 项目——视频共享系统测试
  • 多线程(进阶)
  • PTA N个数求和
  • 基于Hadoop的京东厨具商品数据分析及商品价格预测系统的设计与实现
  • GoFastDFS:轻量级高性能分布式文件存储解决方案(Linux安装部署)
  • 云端SaaS医院信息系统源码,融合四级电子病历,基于云计算的医院信息系统
  • 【2.3 漫画SpringSecurity - 守护应用安全的钢铁卫士】
  • List中的对象进行排序处理
  • SpringBoot + LiteFlow实现流程编排
  • 苹果手机扫描PDF:整理课堂笔记、保存重要文件
  • 解锁高难度PDF!MinerU部署保姆教程 + Dify联合解析《少年百科》
  • OpenCV CUDA模块设备层-----在 GPU 上执行类似于 std::copy 的操作函数warpCopy()
  • gateway断言配置详解
  • Web基础关键_007_JavaScript 的 DOM
  • 算法学习笔记:5.后缀数组——从原理到实战,涵盖 LeetCode 与考研 408 例题
  • 华为c编程规范
  • 【大模型】从0到1:DeepSeek + Coze API调用全攻略,企业,开发个人专属AI智能体使用详解,小白也能轻松上手
  • Qt编程-qml操作(js,c++,canvas)
  • spring boot如何只修改配置文件就解决swagger漏洞