大数据环境搭建指南:基于 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
,且日志中不应有任何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 和 Docker Compose 搭建了一个包含多个大数据服务的开发环境,并验证了每个服务的正常运行。这种容器化的部署方式不仅方便快捷,而且易于管理和维护。希望本文能对大数据开发者有所帮助。
六、注意事项
- 确保你的系统已经安装了 Docker 和 Docker Compose。
- 在构建镜像和启动容器时,可能需要一些时间,请耐心等待。
- 如果在验证过程中发现某个服务出现问题,可以查看相应的日志文件进行排查。