大数据环境搭建指南:基于 Docker 构建 Hadoop、Hive、HBase 等服务
本文介绍了在Windows11/WSL2环境下使用Docker和Docker Compose搭建大数据开发环境的完整流程。通过分步构建基础镜像和HBase/Hive/Spark镜像,配置ZooKeeper、PostgreSQL、HDFS等核心服务,并验证各服务运行状态。项目包含服务依赖管理、容器配置、初始化脚本以及Web UI访问验证,提供了一套完整的大数据开发环境搭建方案。特别说明了Spark客
大数据环境搭建指南:基于 Docker 构建 Hadoop、Hive、HBase 等服务
说明
开发环境
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-4.0.1/apache-hive-4.0.1-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
注意:hive 3.1.3 和 jdk 11 不兼容,升级到 hive 4.0.1
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
,且日志中不应有任何ERROR
或Exception
。 - 端口连接:从终端执行
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 NameNode
和successfully formatted
的日志;正常运行时,日志不应有ERROR
或Exception
,寻找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 DataNode
或Block 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 ResourceManager
和Transitioned 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 NodeManager
和Registered 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 JobHistoryServer
和JobHistoryServer 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 Server
和Opened a connection to metastore
,并且不应有连接postgres-metastore
失败的错误,首次启动会有schemaTool
相关的日志。
4.4.3 HiveServer2
- 容器状态:
docker-compose ps hiveserver2
,状态应为Up
。 - 日志检查:
docker-compose logs hiveserver2
,寻找Starting HiveServer2
和HiveServer2 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 compose down --volumes --remove-orphans
移除构建中使用的容器
docker compose --profile build down --volumes
删除镜像
docker rmi -f $(docker images -q bigdata-hadoop-base)
docker rmi -f $(docker images -q bigdata-hive)
docker rmi -f $(docker images -q bigdata-hbase)
docker rmi -f $(docker images -q bigdata-spark)
docker rmi -f $(docker images -q my-bigdata-base)
六、总结
通过以上步骤,我们成功地使用 Docker 和 Docker Compose 搭建了一个包含多个大数据服务的开发环境,并验证了每个服务的正常运行。这种容器化的部署方式不仅方便快捷,而且易于管理和维护。希望本文能对大数据开发者有所帮助。
七、注意事项
- 确保你的系统已经安装了 Docker 和 Docker Compose。
- 在构建镜像和启动容器时,可能需要一些时间,请耐心等待。
- 如果在验证过程中发现某个服务出现问题,可以查看相应的日志文件进行排查。
更多推荐
所有评论(0)