大数据环境搭建指南:基于 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.pswp.cn/pingmian/87371.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/87371.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/87371.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AWS WebRTC:根据viewer端拉流日志推算视频帧率和音频帧率

viewer端拉流日志是这样的: 07:19:26.263 VERBOSE sampleAudioFrameHandler(): Audio Frame received. TrackId: 140092278368896, Size: 160, Flags 3210729368 2025-06-12 07:19:26.283 VERBOSE sampleAudioFrameHandler(): Audio Frame received. TrackId: 14009…

Vue.js——组件基础

目录 选项式API和组合式API 选项式API 组合式API 语法糖 选项式API和组合式API的关系 生命周期函数 组合式API的生命周期函数 选项式API的生命周期函数 组件的注册和引用 注册组件 全局注册 局部注册 引用组件 解决组件之间的样式冲突 scoped属性 深度选择器 …

Yii2 安装-yii2-imagine

#composer 安装-如已安装跳过 php -r "copy(https://install.phpcomposer.com/installer, composer-setup.php);" php composer-setup.php sudo mv composer.phar /usr/local/bin/composer#执行安装 composer require --prefer-dist yiisoft/yii2-imagine#报错 Updat…

C#程序设计简介

一、发展历史 C#的主要作者是丹麦计算机科学家安德斯海尔斯伯格(Anders Hejlsberg),他是该语言的首席设计师,同时也是Turbo Pascal(Pascal 语言编译器)、Delphi(由 Borland(后被 Em…

JavaWeb笔记03

七、Maven1_概述Maven 是专门用于管理和构建 Java 项目的工具,它的主要功能有: 提供了一套标准化的项目结构 提供了一套标准化的构建流程(编译,测试,打包,发布……) 提供了一套依赖管理机制1.标准化的项目结…

AIGC自我介绍笔记

AIGC(人工智能生成内容)项目是指利用人工智能技术(如深度学习、生成对抗网络、大规模预训练模型等)自动生成文本、图像、音频、视频等多模态内容的系统性工程。这类项目通过算法模型学习海量数据,实现内容的自动化、个…

从docker-compose快速入门Docker

不得不提容器化技术是未来的一个发展方向,它彻底释放了计算虚拟化的威力,极大提高了应用的运行效率,降低了云计算资源供应的成本!使用 Docker,可以让应用的部署、测试和分发都变得前所未有的高效和轻松!无论…

【BERT_Pretrain】Wikipedia_Bookcorpus数据预处理(二)

上一篇介绍了wikipedia和bookcopus数据集,这一篇主要讲一下如何预处理数据,使其可以用于BERT的Pretrain任务MLM和NSP。 MLM是类似于完形填空的任务,NSP是判断两个句子是否连着。因此数据预处理的方式不同。首先,拿到原始数据集&a…

人工智能-基础篇-14-知识库和知识图谱介绍(知识库是基石、知识图谱是增强语义理解的知识库、结构化数据和非结构化数据区分)

在人工智能(AI)领域,知识图谱(Knowledge Graph)和知识库(Knowledge Base)是两种重要的知识表示和管理技术,它们的核心目标是通过结构化的方式组织信息,从而支持智能系统的…

7月1日作业

思维导图 一、将当前的时间写入到time.txt的文件中,如果ctrlc退出之后,在再次执行支持断点续写 1.2022-04-26 19:10:20 2.2022-04-26 19:10:21 3.2022-04-26 19:10:22 //按下ctrlc停止,再次执行程序 4.2022-04-26 20:00:00 5.2022-04-26 20:0…

DHCP中继及动态分配

DHCP中继 在多 VLAN 网络中为什么不能直接用 DHCP? 比如你现在的网络是:PC 在 VLAN10、VLAN20 中DHCP服务器(Router0)在另一个网段(比如 192.168.100.0/24)PC 的 DHCP Discover 是广播,无法跨越…

ROS 概述与环境搭建

1. ROS 简介 1.1 ROS 诞生背景 机器人是一种高度复杂的系统性实现,机器人设计包含了机械加工、机械结构设计、硬件设计、嵌入式软件设计、上层软件设计....是各种硬件与软件集成,甚至可以说机器人系统是当今工业体系的集大成者。 机器人体系是相当庞大的…

mac python3.13 selenium安装使用

一、安装 # 进入虚拟环境 workon xxxx pip install selenium二、安装驱动 查询自己浏览器版本 /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --versionGoogle Chrome 138.0.7204.93下载对应的驱动,其他版本 sudo mv ~/Downloads/chromedr…

AI 开发平台:中小企业的创新破局点在哪里?

在浙江义乌的一个小商品加工厂里,老板王建国最近有点烦。订单量忽高忽低,原材料价格波动不定,他想通过数据分析提前规划生产,却苦于没有专业的技术团队;在广东东莞的一家电子配件公司,业务员李娜每天要处理…

.NET 8.0 Redis 教程

一、环境准备 1. 安装 Redis 服务器 Windows/macOS/Linux:使用 Docker 快速部署 bash docker run -d --name redis -p 6379:6379 redisLinux:直接安装 bash sudo apt-get install redis-server sudo systemctl start redis-server2. 创建 .NET 项目 b…

2025年游戏鼠标推荐,游戏鼠标推荐,打CSGO(罗技、雷蛇、卓威、ROG、漫步者、赛睿、达尔优)

可能很多人对于游戏鼠标的了解还是不够深,会有很多疑问,比如:“游戏鼠标和办公鼠标的区别”、“游戏鼠标无线好还是有线好”等等一系列的问题,本文将会介绍游戏鼠标领域处于领先地位的几个厂家:罗技鼠标、雷蛇鼠标、赛…

OpenCV CUDA模块设备层-----在 GPU上高效地执行两个uint类型值的最小值比较函数vmin2()

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 OpenCV 的CUDA模块(cudev) 中的一个设备端内联函数,用于在GPU上高效地执行两个uint类型值的最小值比较。 该函…

Web3与传统网络安全模型对比:关键差异解析

随着互联网技术的飞速发展,Web3的概念逐渐成为人们关注的焦点。Web3代表着一个更加去中心化、安全和用户友好的网络环境。与传统的网络安全模型相比,Web3在多个方面展现出了其独特的优势和特点。本文将深入探讨Web3与传统网络安全模型之间的关键差异。 …

FLAN:微调语言模型是 Zero-Shot 学习者

摘要 本文探讨了一种简单的方法来提升语言模型的零样本学习能力。我们展示了指令微调——即在通过指令描述的数据集集合上对语言模型进行微调——能够显著提升模型在未见任务上的零样本表现。 我们以一个拥有1370亿参数的预训练语言模型为基础,在60多个通过自然语…

springboot中的事件发布和监听

事件定义 创建一个自定义事件类 UserLoginEvent,继承 ApplicationEvent,用于携带用户登录信息: import org.springframework.context.ApplicationEvent;public class UserLoginEvent extends ApplicationEvent { //关键点1:ext…