【Hadoop】集群搭建實戰:超詳細保姆級教程

🐇明明跟你說過:個人主頁

🏅個人專欄:《大數據前沿:技術與應用并進》🏅

🔖行路有良友,便是天堂🔖

目錄

一、引言

1、Hadoop簡介

2、Hadoop集群概念

3、 Hadoop 集群的工作流程

二、安裝環境準備

1、服務器

2、準備環境?

三、集群部署?

1、nameNode安裝

2、dataNode安裝?

3、訪問測試?


一、引言

1、Hadoop簡介

Hadoop 是一個由 Apache 軟件基金會開發的開源框架,專門用于處理和存儲海量數據。它以分布式計算為核心,可以在一個計算機集群上高效地處理和分析大規模數據集。Hadoop 的設計目標是提供可靠性、擴展性和分布式存儲與計算的能力。以下是 Hadoop 的幾個主要組件:

1. Hadoop 分布式文件系統 (HDFS):

  • HDFS 是 Hadoop 的存儲系統,專為處理大數據量設計。它將數據分割成塊,并將這些塊分布在集群中的多個節點上。HDFS 提供高吞吐量的數據訪問,并通過數據的多副本來確保容錯性和高可用性。


2. MapReduce:

  • MapReduce 是 Hadoop 的計算模型,用于處理和生成大規模數據集。它將任務分為兩個階段:Map 階段和 Reduce 階段。Map 階段將輸入數據分割成鍵值對進行處理,而 Reduce 階段則匯總這些結果。這個模型非常適合處理大規模的分布式數據。


3. YARN (Yet Another Resource Negotiator):

  • YARN 是 Hadoop 的資源管理器,它負責管理集群資源的調度和分配。YARN 允許多個數據處理引擎(如 MapReduce、Spark)在同一個集群上運行,并優化資源使用。


4. Hadoop Common:

  • Hadoop Common 包含了 Hadoop 框架中使用的通用工具和庫。這些工具提供了文件系統和操作系統級別的抽象,以及各種實用程序庫來支持 Hadoop 的其他模塊。


Hadoop 的主要優勢在于它的擴展性和成本效益。通過將數據和計算分布在大量廉價的計算機節點上,Hadoop 能夠處理幾乎無限量的數據,適合用于大數據分析、日志處理、數據倉庫等場景。

2、Hadoop集群概念

1. 節點類型:

NameNode:

  • 是 HDFS 的主節點,負責管理文件系統的命名空間(元數據),包括文件和目錄的結構以及文件塊的位置信息。


DataNode:

  • 是 HDFS 的工作節點,負責存儲實際的數據塊,并根據 NameNode 的指令執行讀寫操作。


Secondary NameNode:

  • 并不是集群中的必要組件,但它的作用是對 NameNode 進行備份,并合并 fsimage 和 edit logs 文件來減小 NameNode 的內存壓力。它并不提供集群的高可用性支持。


JobTracker (MapReduce 1.x):

  • 負責接收客戶端提交的作業請求,并分配作業給 TaskTracker。


TaskTracker (MapReduce 1.x):

  • 執行由 JobTracker 分配的任務(map 或 reduce)。


ResourceManager (YARN, MapReduce 2.x):

  • 替代了 JobTracker 的角色,負責集群資源的管理和調度。


NodeManager (YARN, MapReduce 2.x):

  • 替代了 TaskTracker 的角色,負責監控容器(Container)的生命周期。


2. HDFS 架構:

  • HDFS 采用主從架構,其中 NameNode 是主節點,DataNode 是從節點。
  • 文件被分割成塊(默認大小為 128MB 或 64MB),每個塊可以被復制到集群的不同節點上以提高容錯性。
  • NameNode 保存文件系統元數據,而 DataNode 存儲實際的數據塊。


3. MapReduce 框架:

  • MapReduce 是一種編程模型,用于大規模數據集的并行處理。
  • 數據處理分為兩個階段:Map 階段和 Reduce 階段。
  • Map 函數對輸入數據進行處理,生成中間鍵值對。
  • Reduce 函數對相同鍵的值進行匯總或聚合,產生最終輸出。


4. YARN (Yet Another Resource Negotiator):

  • YARN 是 Hadoop 2.x 引入的一個資源管理系統,它使得 Hadoop 集群可以支持多種計算框架,而不僅僅是 MapReduce。
  • ResourceManager 負責整個集群的資源管理和調度,NodeManager 負責單個節點上的資源管理。
  • ApplicationMaster 負責與 ResourceManager 協商資源,并與 NodeManager 交互來執行和監控任務。

?

3、 Hadoop 集群的工作流程

1. 文件存儲:

  • 用戶通過客戶端將文件寫入 HDFS,NameNode 根據文件大小和配置決定如何分割文件,并將塊分布到不同的 DataNode 上。
  • DataNode 接收塊并存儲在本地文件系統中,并向 NameNode 報告狀態。


2. 數據處理:

  • 用戶提交 MapReduce 作業到 JobTracker 或 ResourceManager。
  • 作業被分解成多個任務(map 或 reduce),這些任務被分配給集群中的各個節點執行。
  • 數據在本地處理,減少網絡傳輸開銷(數據本地性原則)。


3. 容錯機制:

  • Hadoop 設計時就考慮到了節點故障的可能性。例如,文件塊會被復制到多個節點上,以保證即使某些節點失效,數據仍然是可訪問的。
  • 當某個節點失敗時,NameNode 或 ResourceManager 會重新調度任務到其他可用節點上。

?

二、安裝環境準備

1、服務器

準備3臺服務器,1個作為nameNode,2個作為dataNode,這里我們用的系統版本是 Centos 7.9,大家也可以使用其他系統,方法基本一致

2、準備環境?

分別在3臺機器上執行

關閉Selinux

vi /etc/selinux/config

將?SELINUX=enforcing 修改為?SELINUX=disabled

之后重啟服務器

禁用防火墻

systemctl stop firewalld && systemctl disable firewalld

添加阿里鏡像源

sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
sudo yum clean all
sudo yum makecache fast

安裝JAVA

sudo yum install -y java-1.8.0-openjdk-devel

驗證結果

java -version

添加環境變量?

vim /etc/profile

在文件最后添加如下內容

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.412.b08-1.el7_9.x86_64
export PATH=$JAVA_HOME/bin:$PATH

使環境變量生效

source /etc/profile

配置hosts,三臺機器都要添加

vim /etc/hosts

添加如下內容

192.168.40.140 namenode
192.168.40.141 datanode1
192.168.40.142 datanode2

下載安裝包,只在nameNode執行即可

[root@namenode ~]# wget https://dlcdn.apache.org/hadoop/common/hadoop-3.4.0/hadoop-3.4.0.tar.gz

解壓安裝包

[root@namenode local]# tar zxvf hadoop-3.4.0.tar.gz
[root@namenode ~]# mv hadoop-3.4.0 /usr/local/hadoop

配置nameNode到各節點免密連接

[root@namenode ~]# ssh-keygen

一路回車即可

接下來將密鑰拷貝到各節點

[root@namenode ~]# ssh-copy-id root@namenode
[root@namenode ~]# ssh-copy-id root@datanode1
[root@namenode ~]# ssh-copy-id root@datanode2

三、集群部署?

1、nameNode安裝

修改配置文件

[root@nameNode hadoop]# vim /usr/local/hadoop/etc/hadoop/hadoop-env.sh

在文件末尾添加

export JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.412.b08-1.el7_9.x86_64"

編輯配置文件

[root@namenode ~]# vim /usr/local/hadoop/etc/hadoop/core-site.xml# 修改如下
<configuration><property><name>fs.defaultFS</name><value>hdfs://nameNode:9000</value></property>
</configuration>
[root@namenode ~]# vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml# 修改如下內容
<configuration><property><name>dfs.http.address</name><value>0.0.0.0:50070</value></property><property><name>dfs.namenode.http-address</name><value>namenode:50070</value></property><property><name>dfs.replication</name><value>3</value></property><property><name>dfs.namenode.name.dir</name><value>file:///usr/local/hadoop/data/namenode</value></property><property><name>dfs.datanode1.data.dir</name><value>file:///usr/local/hadoop/data/datanode</value></property>
</configuration>
[root@namenode ~]# vim /usr/local/hadoop/etc/hadoop/yarn-site.xml# 添加如下內容
<configuration><property><name>yarn.resourcemanager.hostname</name><value>namenode</value></property>
</configuration>

修改環境變量,三臺都要改

[root@namenode bin]# vim /etc/profile#配置文件中添加以下內容
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

?使環境變量生效

source /etc/profile

在namenode執行初始化

[root@namenode bin]# cd /usr/local/hadoop/bin
[root@namenode bin]# ./hdfs namenode -format

啟動

[root@namenode bin]# cd /usr/local/hadoop/sbin/
[root@namenode sbin]# ./start-all.sh 

訪問測試?

瀏覽器地址欄輸入?http://192.168.40.140:50070/

2、dataNode安裝?

拷貝安裝包到兩臺dataNode節點

[root@namenode ~]# scp -r /usr/local/hadoop/ root@datanode1:/usr/local/hadoop/
[root@namenode ~]# scp -r /usr/local/hadoop/ root@datanode2:/usr/local/hadoop/

修改配置文件

[root@datanode1 ~]# vim /usr/local/hadoop/etc/hadoop/workers # 添加如下內容
namenode
datanode1
datanode2

?創建目錄

mkdir /usr/local/hadoop/data/namenode -p

啟動

[root@datanode1 sbin]# cd /usr/local/hadoop/sbin
[root@datanode1 sbin]# ./hadoop-daemon.sh start datanode
[root@datanode2 ~]# cd /usr/local/hadoop/sbin/
[root@datanode2 sbin]# ./hadoop-daemon.sh start datanode

3、訪問測試?

在瀏覽器輸入 namenode 的IP加 50070 端口

顯示如下則證明成功

💕💕💕每一次的分享都是一次成長的旅程,感謝您的陪伴和關注。希望這些關于大數據的文章能陪伴您走過技術的一段旅程,共同見證成長和進步!😺😺😺

🧨🧨🧨讓我們一起在技術的海洋中探索前行,共同書寫美好的未來!!!???

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

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

相關文章

阿里云人工智能大模型通義千問Qwen3開發部署

本文主要描述阿里云人工智能大模型開源社區ModelScope提供的通義千問Qwen3開發部署。 與阿里云一起 輕松實現數智化 讓算力成為公共服務&#xff1a;用大規模的通用計算&#xff0c;幫助客戶做從前不能做的事情&#xff0c;做從前做不到的規模。讓數據成為生產資料&#xff1a;…

24.(vue3.x+vite)引入組件并動態掛載(mount)

示例截圖 組件代碼: <template><div><div>{{message }}</div>

《Python星球日記》 第56天:循環神經網絡(RNN)入門

名人說:路漫漫其修遠兮,吾將上下而求索。—— 屈原《離騷》 創作者:Code_流蘇(CSDN)(一個喜歡古詩詞和編程的Coder??) 目錄 一、序列數據的特點與挑戰1. 什么是序列數據?2. 序列數據的挑戰二、RNN 的基本結構與前向傳播1. RNN的核心理念2. RNN的數學表達3. RNN的前向傳…

手寫 vue 源碼 === computed 實現

目錄 計算屬性的基本概念 計算屬性的核心實現 ComputedRefImpl 類的實現 ReactiveEffect 與計算屬性的關系 計算屬性的工作流程 1. 創建計算屬性 2. 依賴收集過程 3. 嵌套 effect 的處理 4. 更新過程 嵌套 effect 關系圖解 依賴關系建立過程 代碼實現分析 1. 創建…

【Lattice FPGA 開發】Diamond在線調試Reveal邏輯亂跳的解決

在Vivado中在always塊中寫邏輯時如果出現always塊中的異步復位敏感詞在塊內部未使用的情況&#xff0c;如下例的rst&#xff1a; always (posedge clk or posedge rst) begin if(~tx_sense_flag)o_rd_adr < d1;else if((o_rd_adr d94) & (bit_cnt d7))o_rd_adr <…

【hadoop】Sqoop數據遷移工具的安裝部署

一、Sqoop安裝與配置 步驟&#xff1a; 1、使用XFTP將Sqoop安裝包sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz發送到master機器的主目錄。 2、解壓安裝包&#xff1a; tar -zxvf ~/sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz 3、修改文件夾的名字&#xff0c;將其改為s…

BUUCTF——PYWebsite

BUUCTF——PYWebsite 進入靶場 看看基本信息 沒有什么信息 掃個目錄看看 http://node5.buuoj.cn:28115/.DS_Store http://node5.buuoj.cn:28115/flag.php http://node5.buuoj.cn:28115/index.html訪問flag.php 提示保存購買者的IP 抓包看看 直接XFF偽造一下 X-Forwarded-F…

基于Qt開發的多線程TCP服務端

目錄 一、Qt TCP服務端開發環境準備1. 項目配置2. 核心類說明二、服務端搭建步驟詳解步驟1:初始化服務端對象步驟2:啟動端口監聽步驟3:處理客戶端連接三、數據通信與狀態管理1. 數據收發實現2. 客戶端狀態監控四、進階功能擴展1. 多客戶端并發處理2. 心跳檢測機制五、調試與…

【Tools】VScode使用CMake構建項目

這里寫目錄標題 vscode 使用 CMake**安裝插件**新建CMake項目 vscode 使用 CMake 安裝插件 CMake和CMake Tools c等等 CMake插件主要功能是CMake語法高亮、自動補全CMake Tools的功能主要是結合VSCode IDE使用CMake這個工具&#xff0c;比如生成CMake項目、構建CMake項目等…

neo4j圖數據庫基本概念和向量使用

一.節點 1.新建節點 create (n:GroupProduct {name:都邦高保額團意險,description: "保險產品名稱"} ) return n CREATE&#xff1a;Neo4j 的關鍵字&#xff0c;用于創建新節點或關系。 (n:GroupProduct)&#xff1a; n 是節點的臨時別名&#xff08;變量名&#…

2025年滲透測試面試題總結-滲透測試紅隊面試八(題目+回答)

網絡安全領域各種資源&#xff0c;學習文檔&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各種好玩的項目及好用的工具&#xff0c;歡迎關注。 目錄 滲透測試紅隊面試八 二百一十一、常見中間件解析漏洞利用方式 二百一十二、MySQL用戶密碼存儲與加密 …

大語言模型主流架構解析:從 Transformer 到 GPT、BERT

&#x1f4cc; 友情提示&#xff1a; 本文內容由銀河易創AI&#xff08;https://ai.eaigx.com&#xff09;創作平臺的gpt-4-turbo模型生成&#xff0c;旨在提供技術參考與靈感啟發。文中觀點或代碼示例需結合實際情況驗證&#xff0c;建議讀者通過官方文檔或實踐進一步確認其準…

Java設計模式之裝飾器模式:從基礎到高級的全面解析(萬字解析)

裝飾器模式(Decorator Pattern)是一種結構型設計模式,它允許向一個現有的對象添加新的功能,同時又不改變其結構。這種模式創建了一個裝飾類,用來包裝原有的類,并在保持類方法簽名完整性的前提下,提供了額外的功能。 一、裝飾器模式基礎概念 1.1 什么是裝飾器模式 裝飾…

RN 鴻蒙混合開發實踐(踩坑)

#三方框架# #React Native # 1 。環境配置&#xff1b; 安裝 DevEco 開發工具&#xff1b; Node 版本16&#xff1b; hdc環境配置 hdc 是 OpenHarmony 為開發人員提供的用于調試的命令行工具&#xff0c;鴻蒙 React Native 工程使用 hdc 進行真機調試。hdc 工具通過 OpenHa…

動態網站 LNMP

一、名詞解釋&#xff1a; LNMP&#xff1a; L : 代表 Linux 操作系統&#xff0c;為網站提供了可靠的運行環境N : 代表 Nginx&#xff0c;它是一款輕量級的高性能 Web 服務器&#xff0c;能夠快速處理大量并 發連接&#xff0c;有效提升網站的訪問速度和性能 M : 代表…

DAY04:Vue.js 指令與事件處理深度解析之從基礎到實戰

1. 指令系統核心概念 1.1 插值表達式與基礎指令 Vue.js 的指令系統是其響應式編程模型的核心&#xff0c;我們首先從最基礎的插值表達式開始&#xff1a; <div id"app"><!-- 基礎文本插值 --><p>{{ message }}</p><!-- JavaScript 表達…

12配置Hadoop集群-集群配置

&#xff08;一&#xff09;Hadoop的組成 對普通用戶來說&#xff0c; Hadoop就是一個東西&#xff0c;一個整體&#xff0c;它能給我們提供無限的磁盤用來保存文件&#xff0c;可以使用提供強大的計算能力。 在Hadoop3.X中&#xff0c;hadoop一共有三個組成部…

Kubernetes生產實戰(四):kubelet日志快速定位指南

kubelet作為Kubernetes節點的核心管家&#xff0c;其日志是排查節點問題的金鑰匙。本文將分享生產環境中查看和分析kubelet日志的完整方案&#xff0c;助你快速定位節點級故障。 一、基礎操作&#xff1a;快速查看日志 1. systemd服務日志&#xff08;推薦首選&#xff09; …

麥科信獲評CIAS2025金翎獎【半導體制造與封測領域優質供應商】

在蘇州舉辦的2025CIAS動力能源與半導體創新發展大會上&#xff0c;深圳麥科信科技有限公司憑借在測試測量領域的技術積累&#xff0c;入選半導體制造與封測領域優質供應商榜單。本屆大會以"新能源芯時代"為主題&#xff0c;匯集了來自功率半導體、第三代材料應用等領…

Python實例題:pygame開發打飛機游戲

目錄 Python實例題 題目 pygame-aircraft-game使用 Pygame 開發的打飛機游戲腳本 代碼解釋 初始化部分&#xff1a; 游戲主循環&#xff1a; 退出部分&#xff1a; 運行思路 注意事項 Python實例題 題目 pygame開發打飛機游戲 pygame-aircraft-game使用 Pygame 開發…