大數據系統架構實踐(二):Hadoop集群部署

大數據系統架構實踐(二):Hadoop集群部署

文章目錄

  • 大數據系統架構實踐(二):Hadoop集群部署
  • 一、Hadoop簡介
  • 二、部署前準備
  • 三、部署Hadoop集群
    • 1. 下載并解壓安裝包
    • 2. 配置hadoop-env.sh
    • 3. 配置core-site.xml
    • 4. 配置hdfs-site.xml
    • 5. 配置mapred-site.xml
    • 6. 配置yarn-site.xml
    • 7. 同步Hadoop目錄
    • 8. 配置環境變量(三臺主機都要進行配置)
    • 9. 格式化hdfs文件系統
    • 10. 修改啟動腳本
    • 11. 啟動Hadoop集群
    • 12. 界面展示
  • 總結


隨著數據規模的持續增長,傳統單機存儲和處理方式已無法滿足現代企業對海量數據的存儲、分析與處理需求。Hadoop 作為 Apache 生態下最重要的大數據基礎平臺之一,提供了分布式存儲(HDFS)與分布式計算(MapReduce/YARN)能力,廣泛應用于日志分析、數據倉庫、機器學習等場景。

在本系列中,我們將圍繞 Hadoop 在大數據系統中的地位與部署實踐展開介紹。本篇作為第二篇,將聚焦于 Hadoop 的核心架構、組件說明、典型集群部署方式以及相關配置方法,為后續深入掌握其生態組件(如 Hive、HBase 等)奠定基礎。

一、Hadoop簡介

Hadoop 是一個開源的分布式計算框架,由 Apache 基金會維護,旨在處理海量數據的存儲與計算任務。它基于 Google 的 GFS(Google File System)和 MapReduce 論文設計,實現了高可靠性、高可擴展性的大數據處理平臺。

Hadoop 的 核心特性 包括:

  • 高容錯性:通過數據冗余和副本機制保障系統在節點宕機時仍可正常運行
  • 橫向擴展性:可通過增加普通商用服務器節點,線性擴展計算與存儲能力
  • 高吞吐量:適合批處理大規模數據任務
  • 與硬件無關:在廉價硬件上運行,降低成本

Hadoop 包含兩個 核心模塊

  • HDFS(Hadoop Distributed File System):分布式文件系統,負責存儲海量數據,并通過副本機制提升數據可靠性
  • YARN(Yet Another Resource Negotiator):資源調度與管理平臺,用于統一調度集群資源,并支持多種計算框架如
    MapReduce、Spark

此外,Hadoop 生態系統中還包括 Hive、HBase、Pig、Oozie 等豐富的組件,構建了功能強大、靈活可擴展的大數據平臺,廣泛應用于互聯網、電商、金融、電信等行業。

二、部署前準備

Hadoop 是一個典型的主從架構系統,分為 資源管理節點 和 數據處理節點。為了實現高可用和負載均衡,通常部署為多節點集群:

  • 最基本的部署架構包括:1 個 NameNode + 多個 DataNode
  • 為提高高可用性,可以部署 Secondary NameNode 或使用 HA 模式
  • 集群規模可根據業務需求擴展,一般從 3 臺起步是比較常見的實踐方式

在生產環境中,3 臺服務器組成的小型 Hadoop 集群 可兼顧資源利用與基礎高可用,適用于功能驗證、開發測試和中小數據處理場景。

? 三臺服務器的配置與角色

節點名稱主機名ip地址角色
mastermaster192.168.100.1NameNode,DataNode,NodeManager,ResourceManager,JobHistoryServer
slave1slave1192.168.100.2DataNode,NodeManager,ResourceManager
slave2slave2192.168.100.3DataNode,NodeManager,SecondaryNameNode

SecondaryNameNode 不是 NameNode 的熱備節點,它的作用是定期合并 FsImage 和 EditLog,減輕 NameNode 壓力,但不能在主 NameNode 故障時接管工作

? JDK 依賴環境
Hadoop 是用 Java 編寫的,運行前請確保已安裝 JDK 1.8 或以上版本

三、部署Hadoop集群

以下步驟在 master 節點上執行,其他節點通過配置同步

1. 下載并解壓安裝包

# 下載地址(以3.2.0版本為例)
https://archive.apache.org/dist/hadoop/common/# 解壓移動
tar xf hadoop-3.2.0.tar.gz
mv hadoop-3.2.0 /usr/local/hadoop

2. 配置hadoop-env.sh

cat > /usr/local/hadoop/etc/hadoop/hadoop-env.sh <<-EOF
export JAVA_HOME=/usr/local/jdk  #根據實際的jdk安裝路徑填寫
export HADOOP_PID_DIR=/usr/local/hadoop/pids	
EOF

3. 配置core-site.xml

用于定義 HDFS 入口、臨時目錄和代理權限

vim /usr/local/hadoop/etc/hadoop/core-site.xml<configuration><property><name>fs.defaultFS</name><value>hdfs://master:9820</value></property><property><name>hadoop.tmp.dir</name><value>file:///usr/local/hadoop/tmp/hadoop-${user.name}</value></property><property><name>hadoop.proxyuser.root.hosts</name><value>*</value></property><property><name>hadoop.proxyuser.root.groups</name><value>*</value></property>
</configuration>
# 擴展配置,hadoop控制臺安全認證
<property><name>hadoop.security.authorization</name><value>false</value></property><property><name>hadoop.security.authentication</name><value>simple</value></property><property><name>hadoop.http.filter.initializers</name><value>org.apache.hadoop.security.AuthenticationFilterInitializer</value></property><property><name>hadoop.http.authentication.type</name><value>simple</value></property><property><name>hadoop.http.authentication.token.validity</name><value>3600</value></property><property><name>hadoop.http.authentication.signature.secret.file</name><value>/usr/local/hadoop/etc/hadoop/hadoop-http-auth-signature-secret</value></property><property><name>hadoop.http.authentication.cookie.domain</name><value></value></property><property><name>hadoop.http.authentication.simple.anonymous.allowed</name><value>false</value>
</property>

4. 配置hdfs-site.xml

配置 HDFS 數據目錄、副本策略及其他參數

vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml<configuration><property><name>dfs.namenode.name.dir</name><value>file:/usr/local/hadoop/dfs/name</value></property><property><name>dfs.datanode.data.dir</name><value>file:/usr/local/hadoop/dfs/data</value></property><property><name>dfs.replication</name><value>2</value></property><property><name>dfs.namenode.secondary.http-address</name><value>slave2:9868</value></property><property><name>dfs.permissions</name><value>false</value></property><property><name>dfs.datanode.socket.write.timeout</name><value>600000</value></property><property><name>dfs.client.socket-timeout</name><value>300000</value></property><property><name>dfs.datanode.max.transfer.threads</name><value>16384</value></property><property><name>dfs.datanode.du.reserved</name><value>10737418240</value></property><property><name>dfs.datanode.balance.bandwidthPerSec</name><value>52428800</value></property><property><name>dfs.datanode.balance.max.concurrent.moves</name><value>50</value></property>
</configuration>

5. 配置mapred-site.xml

指定使用 YARN 資源管理框架

vim /usr/local/hadoop/etc/hadoop/mapred-site.xml<configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property><property><name>yarn.app.mapreduce.am.env</name><value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value></property><property><name>mapreduce.map.env</name><value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value></property><property><name>mapreduce.reduce.env</name><value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value></property><property><name>mapreduce.application.classpath</name><value>/usr/local/hadoop/etc/hadoop,/usr/local/hadoop/share/hadoop/common/*,/usr/local/hadoop/share/hadoop/common/lib/*,/usr/local/hadoop/share/hadoop/hdfs/*,/usr/local/hadoop/share/hadoop/hdfs/lib/*,/usr/local/hadoop/share/hadoop/mapreduce/*,/usr/local/hadoop/share/hadoop/mapreduce/lib/*,/usr/local/hadoop/share/hadoop/yarn/*,/usr/local/hadoop/share/hadoop/yarn/lib/*</value></property><property><name>mapreduce.map.memory.mb</name><value>2048</value></property><property>
<!-- 日志監控服務的地址,一般填寫為namenode機器地址 --><name>mapreduce.jobhistory.address</name><value>master:10020</value></property><property><name>mapreduce.jobhistory.webapp.address</name><value>master:19888</value></property>
</configuration>

6. 配置yarn-site.xml

定義 YARN 的高可用機制及資源調度參數

touch /usr/local/hadoop/etc/hadoop/yarn-hosts.exclude  # 不創建這個目錄可能會導致訪問不了8088端口
vim /usr/local/hadoop/etc/hadoop/yarn-site.xml<!-- 開啟RM高可用 -->
<configuration><property><name>yarn.resourcemanager.ha.enabled</name><value>true</value></property><property><name>yarn.resourcemanager.cluster-id</name><value>cluster1</value></property>
<!-- 設置集群中的ha代號名 --><property><name>yarn.resourcemanager.ha.rm-ids</name><value>rm1,rm2</value></property>
<!-- 將剛才設置的rm1代號對應上集群服務器的hostname --><property><name>yarn.resourcemanager.hostname.rm1</name><value>master</value></property>
<!-- 將剛才設置的rm2代號對應上集群服務器的hostname --><property><name>yarn.resourcemanager.hostname.rm2</name><value>slave1</value></property><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><property>  <name>yarn.nodemanager.vmem-check-enabled</name>  <value>false</value>  </property>  <property><name>yarn.nodemanager.resource.memory-mb</name><value>4096</value></property><property><name>yarn.scheduler.capacity.maximum-am-resource-percent</name><value>0.9</value></property><property>   <name>yarn.application.classpath</name><value>/usr/local/hadoop/etc/hadoop,/usr/local/hadoop/share/hadoop/common/*,/usr/local/hadoop/share/hadoop/common/lib/*,/usr/local/hadoop/share/hadoop/hdfs/*,/usr/local/hadoop/share/hadoop/hdfs/lib/*,/usr/local/hadoop/share/hadoop/mapreduce/*,/usr/local/hadoop/share/hadoop/mapreduce/lib/*,/usr/local/hadoop/share/hadoop/yarn/*,/usr/local/hadoop/share/hadoop/yarn/lib/*</value></property>
<!-- 指定Zookeeper集群地址 --><property><name>hadoop.zk.address</name><value>master:2181,slave1:2181,slave2:2181</value></property><property><name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name><value>org.apache.hadoop.mapred.ShuffleHandler</value></property><property><name>yarn.resourcemanager.address.rm1</name><value>master:8032</value></property><property><name>yarn.resourcemanager.scheduler.address.rm1</name><value>master:8030</value></property><property><name>yarn.resourcemanager.resource-tracker.address.rm1</name><value>master:8031</value></property><property><name>yarn.resourcemanager.admin.address.rm1</name><value>master:8033</value></property><property><name>yarn.resourcemanager.webapp.address.rm1</name><value>master:8088</value></property><property><name>yarn.resourcemanager.address.rm2</name><value>slave1:8032</value></property><property><name>yarn.resourcemanager.scheduler.address.rm2</name><value>slave1:8030</value></property><property><name>yarn.resourcemanager.resource-tracker.address.rm2</name><value>slave1:8031</value></property><property><name>yarn.resourcemanager.admin.address.rm2</name><value>slave1:8033</value></property><property><name>yarn.resourcemanager.webapp.address.rm2</name><value>slave1:8088</value></property><!-- 日志聚合-spark-yarn --><property><name>yarn.log-aggregation-enable</name><value>true</value></property><property><name>yarn.log.server.url</name><value>http://master:19888/jobhistory/logs</value></property>
<!-- 日志時長 --><property><name>yarn.log-aggregation.retain-seconds</name><value>640800</value></property>
<!-- 日志聚合目錄 --><property><name>yarn.nodemanager.remote-app-log-dir</name><value>/usr/container/logs</value></property> <property><name>hadoop.zk.timeout-ms</name><value>120000</value></property><property><name>yarn.resourcemanager.nodes.exclude-path</name><value>/usr/local/hadoop/etc/hadoop/yarn-hosts.exclude</value></property>
</configuration>

7. 同步Hadoop目錄

scp -rp /usr/local/hadoop root@slave1:/usr/local/  &>/dev/null
scp -rp /usr/local/hadoop root@slave2:/usr/local/  &>/dev/null

8. 配置環境變量(三臺主機都要進行配置)

cat >> /etc/profile <<-EOF
#hadoop
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native
EOF# 生效環境變量
source /etc/profile

9. 格式化hdfs文件系統

hdfs namenode -format# 驗證是否生成fsimage文件,驗證hdfs格式化是否成功
ls /usr/local/hadoop/dfs/name/current/

10. 修改啟動腳本

# start-dfs.sh / stop-dfs.sh
sed -i '1a \
HDFS_DATANODE_USER=root\
HADOOP_SECURE_DN_USER=hdfs\
HDFS_NAMENODE_USER=root\
HDFS_SECONDARYNAMENODE_USER=root' /usr/local/hadoop/sbin/start-dfs.sh
sed -i '1a \
HDFS_DATANODE_USER=root\
HADOOP_SECURE_DN_USER=hdfs\
HDFS_NAMENODE_USER=root\
HDFS_SECONDARYNAMENODE_USER=root' /usr/local/hadoop/sbin/stop-dfs.sh# start-yarn.sh / stop-yarn.sh
sed -i '1a \
YARN_RESOURCEMANAGER_USER=root\
HADOOP_SECURE_DN_USER=yarn\
YARN_NODEMANAGER_USER=root' /usr/local/hadoop/sbin/start-yarn.sh
sed -i '1a \
YARN_RESOURCEMANAGER_USER=root\
HADOOP_SECURE_DN_USER=yarn\
YARN_NODEMANAGER_USER=root' /usr/local/hadoop/sbin/stop-yarn.sh

11. 啟動Hadoop集群

/usr/local/hadoop/sbin/start-all.sh# 驗證
netstat -tnlp | grep -E "9870|8088"

12. 界面展示

HDFS Web UI:http://192.168.100.1:9870

在這里插入圖片描述

YARN Web UI:http://192.168.100.1:8088

在這里插入圖片描述


總結

🚀 本文圍繞 Hadoop 集群構建展開,詳述了基礎環境準備與三節點配置示例,重點介紹了各項配置文件如何支撐集群高可用與性能運行。通過這些步驟,我們成功部署了一個兼具 HDFS 存儲與 YARN 調度功能的 Hadoop 環境,為后續 HBase、Hive 等大數據組件打下良好基礎。
📌 下一篇將聚焦 HBase 分布式部署方案,講解其與 Hadoop 集群的有機整合,以及如何構建一個完整數據生態系統。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/86687.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/86687.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/86687.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

42道Maven高頻題整理(附答案背誦版)

1.簡述什么是Maven&#xff1f; Maven是一個項目管理和構建自動化工具&#xff0c;主要服務于Java項目。使用Maven&#xff0c;開發者可以方便地管理項目的構建、文檔生成、報告、依賴、SCM&#xff08;軟件配置管理&#xff09;、發布和分發等過程。 Maven的核心概念是基于項…

【數字后端】- 如何進行時鐘樹綜合?

首先&#xff0c;要明確的是&#xff0c;時鐘樹綜合只有命令去操作這一種方式 CTS的步驟 1、時鐘樹綜合前的準備工作-設置時鐘樹cell&#xff08;每個項目必做&#xff09; 最簡單的項目要設置生長時鐘樹時可用的clock buffer和clock inverter cell list&#xff0c;如下 此…

OpenCV CUDA模塊設備層-----像素值進行逐通道的最大值比較函數max()

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 是 OpenCV 的 CUDA 模塊&#xff08;cv::cudev&#xff09; 中的一個 設備端內聯函數&#xff08;device function&#xff09;&#xff0c;用于…

SCSAI萬物對象模型和五維市場交易平臺原型

一個完整的工業軟件對象模型平臺&#xff0c;基于SCSAI對象模型和五維市場理論。該平臺包含對象管理、五維市場交易和大模型集成功能。 工業軟件對象模型平臺功能說明 這個平臺實現了基于Aras Innovator對象模型和五維市場理論的工業軟件解決方案&#xff0c;主要功能包括&…

昇騰のPrefix Cache

Prefix Cache特性介紹 Prefix Cache 即前綴緩存&#xff0c;是一種用于優化大語言模型&#xff08;LLM&#xff09;推理性能的技術&#xff0c;主要應用于多輪對話、系統提示等具有大量共同前綴的場景。 原理 LLM 推理計算主要包括 Prefill 階段&#xff08;Prompt 計算&…

12-C#的list數據使用

C#的list數據使用 1.實例化 List<double> lst1 new List<double>();2.數據清除 lst1 .Clear();3.數據清除

SQL數據遷移利器:INSERT INTO SELECT語句詳解

引言 在數據庫操作中&#xff0c;我們經常需要將一個表中的數據遷移或復制到另一個表中。這時候&#xff0c;INSERT INTO SELECT語句就成為了一個極其有用的工具。今天我們就來深入探討這個強大的SQL語句。 基本語法 INSERT INTO 目標表(字段1, 字段2, ...) SELECT 字段1, 字…

elementUI輪播圖組件el-carousel適配移動端大小(圖片加載好后根據大小適配)

獲取img實例&#xff0c;動態設置el-carousel高度 <template><div class"content main"><el-carousel arrow"always" :height"bannerHeight px"><el-carousel-item v-for"(item, index) in banners" :key"…

AI歌手Yuri出道:GenAI,透露著新的AI產業機遇?

名人說&#xff1a;博觀而約取&#xff0c;厚積而薄發。——蘇軾《稼說送張琥》 創作者&#xff1a;Code_流蘇(CSDN)&#xff08;一個喜歡古詩詞和編程的Coder&#x1f60a;&#xff09; 目錄 一、AI歌手Yuri橫空出世1. 爆紅的原生MV《SURREAL》2. 背后的創作團隊 二、AI歌手背…

常見的自動化測試工具,好學嗎?

自動化測試是把以人為驅動的測試行為轉化為機器執行的一種過程。它通常涉及預設測試用例&#xff0c;并通過自動化工具或腳本來執行這些用例&#xff0c;最后比較實際結果與期望結果來評估軟件的正確性。 常見的自動化測試工具包括Selenium、Appium、JMeter、LoadRunner、Post…

JavaEE初階第四期:解鎖多線程,從 “單車道” 到 “高速公路” 的編程升級(二)

專欄&#xff1a;JavaEE初階起飛計劃 個人主頁&#xff1a;手握風云 目錄 一、Thread類及常用方法 2.1. Thread的常見構造方法 2.2. Thread的常見屬性 2.3. 啟動一個線程 2.4. 中斷一個線程 2.5. 等待一個線程 2.6. 休眠當前線程 一、Thread類及常用方法 2.1. Thread的…

elk+filebeat收集springboot項目日志

目錄 步驟 1: 安裝和配置Elasticsearch 步驟 2: 安裝和配置Logstash&#xff08;可選&#xff09; 步驟 3: 安裝和配置Filebeat 步驟 4: 安裝和配置Kibana 要使用ELK&#xff08;Elasticsearch, Logstash, Kibana&#xff09;堆棧和Filebeat來收集Spring Boot項目的日志&am…

基于Python實現(控制臺)UDP傳輸協議的可靠文件傳輸工具

LFTP Design 簡介 LFTP是一個采用python3實現的基于UDP傳輸協議的可靠文件傳輸工具 特點 基于UDP 采用python3編程語言&#xff0c;socket的類型均為socket(AF_INET,SOCK_DGRAM)實現 實現100%可靠性傳輸 使用SR&#xff08;選擇重傳&#xff09;協議保證所有報文都正確接收…

【Go-7】面向對象編程

7. 面向對象編程 面向對象編程&#xff08;Object-Oriented Programming&#xff0c;簡稱OOP&#xff09;是一種編程范式&#xff0c;通過將數據和行為封裝在對象中&#xff0c;以提高代碼的可重用性、可維護性和擴展性。雖然Go語言不像傳統的OOP語言&#xff08;如Java、C&am…

PHP語法基礎篇(六):數組

PHP 中的數組實際上是一個有序映射。映射是一種把 values 關聯到 keys 的類型。此類型針對多種不同用途進行了優化&#xff1b;它可以被視為數組、列表&#xff08;向量&#xff09;、哈希表&#xff08;映射的實現&#xff09;、字典、集合、堆棧、隊列等等。本篇文章將記錄數…

GitHub Actions 的深度解析與概念介紹

GitHub Actions 核心定義 Git Actions 是 GitHub 原生提供的 自動化工作流引擎&#xff0c;允許開發者在代碼倉庫中直接創建、測試、部署代碼。其本質是通過事件驅動&#xff08;Event-Driven&#xff09;的自動化管道&#xff0c;將軟件開發中的重復任務抽象為可編排的流程。…

TestCafe 全解析:免費開源的 E2E 測試解決方案實戰指南

在2025年的數字化浪潮中&#xff0c;Web應用的穩定性和用戶體驗成為企業競爭的關鍵&#xff0c;而端到端&#xff08;E2E&#xff09;測試則是確保質量的“守護者”&#xff01;想象一下&#xff0c;您的電商平臺因表單錯誤導致用戶流失&#xff0c;或者支付流程因瀏覽器兼容性…

[CVPR 2025] 高效無監督Prompt與偏好對齊驅動的半監督醫學分割

CVPR 2025 | 優化SAM&#xff1a;高效無監督Prompt與偏好對齊驅動的半監督醫學分割 論文信息 標題&#xff1a;Enhancing SAM with Efficient Prompting and Preference Optimization for Semi-supervised Medical Image Segmentation作者&#xff1a;Aishik Konwer, Zhijian…

【C++】責任鏈模式

目錄 一、模式核心概念與結構二、C++ 實現示例:員工請假審批系統三、責任鏈模式的關鍵特性四、應用場景五、責任鏈模式與其他設計模式的關系六、C++ 標準庫中的責任鏈模式應用七、優缺點分析八、實戰案例:Web 請求過濾器鏈九、實現注意事項如果這篇文章對你有所幫助,渴望獲得…

dp進階,樹形背包(dfs+01)

顧名思義&#xff0c;就是在對樹進行搜索的時候&#xff0c;由于限制了子節點選根節點必選和節點數限制&#xff0c;所以需要額外利用背包來維護最大值 假設根節點就是0&#xff0c;我們很容易 發現&#xff0c;這就是一個正常的樹求和&#xff0c;但是限制了節點數量&#xf…