大數據環境搭建指南:基于 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.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…