五、Hadoop集群部署:從零搭建三節點Hadoop環境(保姆級教程)

作者:IvanCodes
日期:2025年5月7日
專欄:Hadoop教程

前言:
想玩轉大數據Hadoop集群是繞不開的一道坎。很多小伙伴一看到集群部署就頭大各種配置各種坑別慌這篇教程就是你的“救生圈”


一、磨刀不誤砍柴工:環境準備(虛擬機與網絡)

虛擬機克隆與基礎配置 (以VMware為例)

第一步:準備一臺基礎Linux虛擬機:

你需要一臺安裝好Linux(推薦CentOS 7 或 Ubuntu 24.04.2/20.04)的虛擬機。確保它已安裝常用工具,網絡能通。

  • centos 7的詳細安裝教程可以參考《安裝篇–CentOS 7 虛擬機安裝》
  • Ubuntu 24.04.2的詳細安裝教程可以參考《安裝篇–Ubuntu24.04.2詳細安裝教程》
第二步:克隆虛擬機:

1.啟動克隆向導: 在VMware Workstation中,右鍵點擊你準備好的虛擬機,選擇 “管理” -> “克隆”。

在這里插入圖片描述
接著會彈出“歡迎使用克隆虛擬機向導”界面,直接點擊“下一步”。
在這里插入圖片描述
2.選擇克隆源: 默認選擇“虛擬機中的當前狀態”,直接點擊“下一步”。
在這里插入圖片描述
3.選擇克隆類型: 選擇“創建完整克隆”。完整克隆會復制整個虛擬硬盤,確保每臺“小雞”都是獨立的,不會相互影響。鏈接克隆雖然省空間,但不適合我們做集群。點擊“下一步”。
在這里插入圖片描述
4.命名與存放位置:
在這里插入圖片描述

第三步:Windows宿主機VMnet8網卡IP配置

1.在Windows設置中,進入 “網絡和 Internet”
2.點擊 “高級網絡設置”
在這里插入圖片描述
3.找到 “VMware Network Adapter VMnet8”,展開它,點擊 “查看其他屬性”
在這里插入圖片描述
4.點擊“IP 分配”旁邊的“編輯”
在這里插入圖片描述
5.在“編輯 IP 設置”中,選擇“手動”,打開IPv4,然后填寫IP地址(如 192.168.121.1)和子網掩碼(255.255.255.0)。網關和DNS對于這個宿主機的虛擬網卡通常不需要填寫,或者可以填寫VMnet8的網關(192.168.121.2)和你的常用DNS。
在這里插入圖片描述

第四步:VMware虛擬網絡配置 (關鍵步驟!)

1.在VMware Workstation主界面,點擊菜單欄的 “編輯” -> “虛擬網絡編輯器”
在這里插入圖片描述
2.在“虛擬網絡編輯器”中,你會看到一個網絡列表,找到 VMnet8 (通常類型是NAT模式)
3.如果下方的配置選項是灰色的,你需要點擊右下角的 “更改設置” 按鈕,并可能需要提供管理員權限
在這里插入圖片描述
4.選中VMnet8,然后進行以下配置:

4.1.確保連接類型選擇 “NAT模式(與虛擬機共享主機的IP地址)”
4.2.取消勾選 “使用本地DHCP服務將IP地址分配給虛擬機”
子網IP: 輸入 192.168.121.0
子網掩碼: 輸入 255.255.255.0
在這里插入圖片描述
5.配置NAT設置 (網關):
“網關 IP(G):” 設置為 192.168.121.2
在這里插入圖片描述
配置DHCP設置 (定義IP地址范圍,可選但推薦檢查):
起始 IP 地址(S): 192.168.121.130
結束 IP 地址(E): 192.168.121.255

在這里插入圖片描述

第五步:Linux虛擬機靜態IP配置 (核心!以CentOS 7為例):

每臺Linux虛擬機上,編輯網絡配置文件,例如 /etc/sysconfig/network-scripts/ifcfg-ens33 (你的網卡名可能不同)。

 vim /etc/sysconfig/network-scripts/ifcfg-ens33

在這里插入圖片描述
hadoop02 的配置:將 IPADDR 改為 192.168.121.132
hadoop03 的配置:將 IPADDR 改為 192.168.121.133

  • 配置源碼 (ifcfg-ensXX):
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ensXX
DEVICE=ensXX
ONBOOT=yes
IPADDR=192.168.121.131
NETMASK=255.255.255.0
GATEWAY=192.168.121.2  
DNS1=114.114.114.114    
  • 配置主機映射
  • hadoop01, hadoop02, hadoop03上都執行:
vim /etc/hosts

在這里插入圖片描述

  • 修改 hadoop01 的主機名:
hostnamectl set-hostname hadoop01
  • 重啟主機
reboot
  • ip a驗證ip是否改正
  • 查看網絡能否正常ping

在這里插入圖片描述

第六步:使用FinalShell連接虛擬機:

在這里插入圖片描述
在這里插入圖片描述

2. 關閉防火墻和selinux

  • 關閉防火墻:
systemctl stop firewalld
systemctl disable firewalld
  • 關閉SELinux:
vim /etc/selinux/config
# SELINUX=disabled
#需重啟虛擬機

在這里插入圖片描述

3.配置SSH免密登錄 (核心):
hadoop01 中執行:

#驗證ssh協議
ps -e | grep sshd
#生成鑰匙
ssh-keygen -t rsa
#復制密碼發送到其他設備
ssh-copy-id root@hadoop01
ssh-copy-id root@hadoop02
ssh-copy-id root@hadoop03

在這里插入圖片描述
在這里插入圖片描述

4.時間同步 (NTP):

yum install -y ntp
systemctl start ntpd
systemctl enable ntpd

在這里插入圖片描述
在這里插入圖片描述

5. 安裝Java JDK

# 創建存放軟件和安裝包的目錄
mkdir -p /export/server /export/softwares

5.1.上傳并解壓JDK安裝包:
將你準備好的 jdk-8u361-linux-x64.tar.gz 文件,通過 FinalShell 的上傳功能(或者其他sftp工具),上傳到三臺虛擬機/export/softwares/ 目錄下。

進入 /export/server/ 目錄,并解壓 JDK 安裝包:

cd /export/server/ # 進入我們計劃安裝軟件的目錄
# 解壓 JDK 安裝包
tar -xzf /export/softwares/jdk-8u361-linux-x64.tar.gz
# 解壓后通常會得到一個名為 jdk1.8.0_361 的目錄,用ls確認一下
ls /export/server/

在這里插入圖片描述

5.2.配置 JAVA_HOME 環境變量:
每臺機器上,編輯環境變量文件 ~/.bashrc

vim ~/.bashrc

在這里插入圖片描述

export JAVA_HOME=/export/server/jdk1.8.0_361 # 注意這里的路徑和解壓出來的目錄名一致
export PATH=$PATH:$JAVA_HOME/bin
source ~/.bashrc

在這里插入圖片描述

二、Hadoop 安裝與配置

1. 解壓Hadoop到指定目錄 (/export/server/)

  • 上傳Hadoop安裝包:hadoop-3.3.4.tar.gz 安裝包,通過 FinalShell 上傳到三臺虛擬機/export/softwares/ 目錄下。

  • 解壓Hadoop到 /export/server/ 并重命名:

# 解壓 Hadoop 安裝包
tar -xzf /export/softwares/hadoop-3.3.4.tar.gz
# 為了方便,我們把它重命名為簡潔的 hadoop
mv hadoop-3.3.4 hadoop

在這里插入圖片描述

2. 配置Hadoop環境變量

編輯~/.bashrc 文件,追加 Hadoop 相關的環境變量:

vim ~/.bashrc

在這里插入圖片描述

在文件末尾添加:

export HADOOP_HOME=/export/server/hadoop # 注意這里的路徑是自定義安裝路徑
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin # 將 Hadoop 的命令加入到 PATH
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop # 指定 Hadoop 配置文件的位置
export HADOOP_LOG_DIR=$HADOOP_HOME/logs # 指定 Hadoop 日志文件的位置

讓環境變量生效:

source ~/.bashrc

在這里插入圖片描述

3. 修改Hadoop核心配置文件 (重點)

主要在 hadoop01 上修改,然后分發給其他節點。

  • (A) hadoop-env.sh (所有節點一致修改)
    • 這個文件主要配置 Hadoop 運行的環境,比如指定 Java。
cd /export/server/hadoop/etc/hadoop/
vim hadoop-env.sh
export JAVA_HOME=/export/server/jdk1.8.0_361 
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"

在這里插入圖片描述

在這里插入圖片描述

  • (B) core-site.xml (所有節點一致修改)
    • 這是 Hadoop 的核心配置文件,配置HDFS的地址、臨時文件目錄等。
vim /core-site.xml
<configuration><!-- 指定HDFS中NameNode的地址 --><property><name>fs.defaultFS</name><value>hdfs://hadoop01:9000</value></property><!-- 指定Hadoop運行時產生文件的存儲目錄,比如MapReduce的臨時數據 --><property><name>hadoop.tmp.dir</name><value>/export/data/hadoop</value> <!-- 修改為自定義路徑下的臨時數據目錄 --></property><!-- (可選但推薦) 用于WebHDFS和HTTPFS的用戶模擬配置,讓指定用戶(這里是hadoopuser)可以模擬其他用戶 --><property><name>hadoop.proxyuser.hadoopuser.hosts</name><value>*</value></property><property><name>hadoop.proxyuser.hadoopuser.groups</name><value>*</value></property>
<!-- 整合hive 用戶代理設置 -->
<property><name>hadoop.proxyuser.root.hosts</name><value>*</value>
</property>
<property><name>hadoop.proxyuser.root.groups</name><value>*</value>
</property>
</configuration>
  • ? hdfs-site.xml (所有節點一致修改)
    • 這個文件配置 HDFS 的具體參數,比如副本數量、NameNode和DataNode數據存放位置等。
vim hdfs-site.xml
<configuration><!-- NameNode的Web UI訪問地址 (Hadoop 3.x默認端口9870) --><property><name>dfs.namenode.http-address</name><value>hadoop01:9870</value></property><!-- SecondaryNameNode的Web UI訪問地址 (Hadoop 3.x默認端口9868) --><property><name>dfs.secondary.http-address</name><value>hadoop01:9868</value> <!-- 我們也讓它在hadoop01上 --></property><!-- SecondaryNameNode所在的主機和端口,NameNode會向它發送元數據 --><property><name>dfs.namenode.secondary.http-address</name><value>hadoop01:9868</value></property><!-- HDFS副本數量,我們有3個節點,可以設置為2或3。這里先設為2,至少保證有兩個DataNode時數據有冗余 --><property><name>dfs.replication</name><value>2</value></property><!-- NameNode元數據(fsimage和editlog)存放的本地磁盤路徑 --><property><name>dfs.namenode.name.dir</name><value>file:/export/server/hadoop/dfs_data/name</value> <!-- 修改為自定義路徑 --></property><!-- DataNode數據塊存放的本地磁盤路徑 --><property><name>dfs.datanode.data.dir</name><value>file:/export/server/hadoop/dfs_data/data</value> <!-- 修改為自定義路徑 --></property><!-- 開啟WebHDFS功能,可以通過HTTP訪問HDFS文件 --><property><name>dfs.webhdfs.enabled</name><value>true</value></property>
</configuration>
  • (D) yarn-site.xml (所有節點一致修改)
    • 這是 YARN (資源管理器) 的配置文件。
vim yarn-site.xml
<configuration><!-- 指定YARN的ResourceManager(RM)的主機名 --><property><name>yarn.resourcemanager.hostname</name><value>hadoop01</value></property><!-- NodeManager上運行的附屬服務,MapReduce Shuffle是必須的 --><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><!-- ResourceManager的Web UI訪問地址 (默認端口8088) --><property><name>yarn.resourcemanager.webapp.address</name><value>hadoop01:8088</value></property><!-- (可選) 開啟日志聚集功能,方便在Web UI上查看已完成任務的日志 --><property><name>yarn.log-aggregation-enable</name><value>true</value></property><!-- MapReduce JobHistory Server 的日志服務地址 --><property><name>yarn.log.server.url</name><value>http://hadoop01:19888/jobhistory/logs</value> <!-- 指向JobHistoryServer的Web UI --></property><!-- (可選) 日志保留時間 --><property><name>yarn.log-aggregation.retain-seconds</name><value>604800</value> <!-- 日志保留7天 (604800秒) --></property>
</configuration>
  • (E) mapred-site.xml (所有節點一致修改)
    • 這個文件配置 MapReduce 的運行時框架和 JobHistory Server。
vim mapred-site.xml
<configuration><!-- 指定MapReduce作業運行在YARN上 --><property><name>mapreduce.framework.name</name><value>yarn</value></property><!-- MapReduce JobHistory Server 地址 --><property><name>mapreduce.jobhistory.address</name><value>hadoop01:10020</value></property><!-- MapReduce JobHistory Server Web UI 地址 (默認端口19888) --><property><name>mapreduce.jobhistory.webapp.address</name><value>hadoop01:19888</value></property><!-- (Hadoop 3.x需要) 使YARN能夠正確找到和分發MapReduce相關的JAR包 --><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>
</configuration>
  • (F) workers 文件 (僅在 hadoop01 上修改,然后分發)
    • 這個文件告訴 start-dfs.shstart-yarn.sh 腳本,需要在哪些機器上啟動 DataNode 和 NodeManager 進程。
vim workers
hadoop01
hadoop02
hadoop03

4. 分發配置文件 (在 hadoop01 上執行)

好了,配置文件修改完了。把 hadoop01 上的配置文件同步到 hadoop02hadoop03 去。

  • 確保你在 hadoopuser 用戶下,且在 $HADOOP_HOME/etc/ 目錄下(也就是 /export/server/hadoop/etc/)。
cd /export/server
scp ~/.bashrc hadoop02:~/.bashrc
scp ~/.bashrc hadoop03:~/.bashrc
#傳完之后要在hadoop02和hadoop03上分別執行 source /etc/profile 命令,來刷新配置文件
scp -r hadoop hadoop02:$PWD
scp -r jdk1.8.0_361 hadoop02:$PWD
scp -r hadoop hadoop03:$PWD
scp -r jdk1.8.0_361 hadoop03:$PWD

5.驗證是否成功
在這里插入圖片描述

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

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

相關文章

科研項目管理:4款高效工具推薦與效率提升實踐

一般來說&#xff0c;科研項目往往涉及復雜的任務、跨部門協作以及嚴格的時間和預算限制。傳統的管理方式&#xff0c;如電子表格或郵件溝通&#xff0c;難以應對多任務并行、資源分配復雜的需求。借助現代項目管理工具&#xff0c;研究人員能夠優化工作流程、提升團隊協作效率…

如何統一修改word中所有英文字母的字體格式

1.需求分析 我想讓整篇論文中的所有英文字母格式都修改為Time New Roman格式。 2.直觀操作流程 點擊左上角開始 --> 點擊替換 --> 點擊更多 --> 點擊特殊格式 --> 選擇查找內容為任意字母(Y) --> 將光標點到替換內容 --> 點擊格式 --> 點擊字體 --> …

【疑難雜癥2025-003】Java-mvn項目在gitlab-ci構建鏡像時遇到的問題和解決方案

本文由Markdown語法編輯器編輯完成&#xff0e; 1.背景: 之前從同事手里接手了一個java的項目&#xff0c;是用maven構建項目的&#xff0e;由于我們的服務都是基于docker來部署的&#xff0c;因此這個java項目也是要編譯成docker image然后發布&#xff0e;但是之前一直都是…

【RT-Thread Studio】nor flash配置Fal分區

前置條件&#xff1a;【RT-Thread Studio】W25Q128配置 添加 FAL軟件包 配置SFUD驅動程序&#xff0c;使用FAL的設備為W25Q128 將fal_cfg.h和fal_flash_sfud_port.c提取出來&#xff0c;放到自己創建的fal_porting目錄。 修改 fal_flash_sfud_port.c struct fal_flash_dev n…

Spring MVC 視圖解析器 (ViewResolver) 如何配置? Spring Boot 是如何自動配置常見視圖解析器的?

我們來詳細分析一下視圖解析器 (ViewResolver) 的配置以及 Spring Boot 是如何自動配置它們的。 視圖解析器 (ViewResolver) 是什么&#xff1f; 在 Spring MVC 中&#xff0c;當控制器 (Controller) 方法處理完請求并返回一個邏輯視圖名 (String) 時&#xff0c;DispatcherS…

理解網站導航文件:robots.txt、sitemap.xml與LLMs.txt的全面解析

在當今數字化時代&#xff0c;網站不僅需要為人類用戶提供良好的瀏覽體驗&#xff0c;還需要考慮搜索引擎和人工智能系統的可訪問性。本文將深入探討三種關鍵的網站導航文件&#xff1a;傳統的robots.txt和sitemap.xml&#xff0c;以及新興的LLMs.txt&#xff0c;分析它們的功能…

leetcode 349. Intersection of Two Arrays

題目描述 題目限制0 < nums1[i], nums2[i] < 1000&#xff0c;所以可以開辟一個1001個元素的數組來做哈希表。 class Solution { public:vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {vector<int> table(1001,0…

【軟件工程】軟件多缺陷定位方法總結

軟件多缺陷定位(Multi-Fault Localization)是軟件工程中的一個重要研究方向,旨在同時定位代碼中存在的多個缺陷(Bug)。由于多個缺陷可能相互干擾(如掩蓋錯誤行為),導致傳統單缺陷定位方法效果下降,因此需要針對多缺陷場景的特殊性設計方法。以下是常見的多缺陷定位方法…

【數據結構入門訓練DAY-30】數的劃分

文章目錄 前言一、題目二、解題思路結語 前言 本次訓練內容 訓練DFS。訓練解題思維。 一、題目 將整數n分成k份&#xff0c;且每份不能為空&#xff0c;任意兩份不能相同(不考慮順序)。 例如&#xff1a;n7&#xff0c;k3&#xff0c;下面三種分法被認為是相同的。 {1&a…

OpenCV進階操作:圖像直方圖、直方圖均衡化

文章目錄 一、圖像直方圖二、圖像直方圖的作用三、使用matplotlib方法繪制直方圖2.使用opencv的方法繪制直方圖&#xff08;劃分16個小的子亮度區間&#xff09;3、繪制彩色圖像的直方圖 四、直方圖均衡化1、繪制原圖的直方圖2、繪制經過直方圖均衡化后的圖片的直方圖3、自適應…

Open CASCADE學習|Geom2d_BezierCurve 類

概述 Open CASCADE 提供了幾何建模的強大工具集,其中 Geom2d_BezierCurve 類用于表示二維貝塞爾曲線。貝塞爾曲線在計算機圖形學和計算機輔助設計(CAD)中具有廣泛應用,本文將詳細介紹 Geom2d_BezierCurve 類及其使用方法。 貝塞爾曲線簡介 貝塞爾曲線是一種參數曲線,廣泛…

muduo源碼解析

1.對類進行禁止拷貝 class noncopyable {public:noncopyable(const noncopyable&) delete;void operator(const noncopyable&) delete;protected:noncopyable() default;~noncopyable() default; }; 2.日志 使用枚舉定義日志等級 enum LogLevel{TRACE,DEBUG,IN…

互聯網大廠Java面試實錄:Spring Boot與微服務架構在電商場景中的應用解析

&#x1f4aa;&#x1f3fb; 1. Python基礎專欄&#xff0c;基礎知識一網打盡&#xff0c;9.9元買不了吃虧&#xff0c;買不了上當。 Python從入門到精通 &#x1f601; 2. 畢業設計專欄&#xff0c;畢業季咱們不慌忙&#xff0c;幾百款畢業設計等你選。 ?? 3. Python爬蟲專欄…

關于匯編語言與程序設計——單總線溫度采集與顯示的應用

一、實驗要求 (1)握碼管的使用方式 (2)掌握DS18B20溫度傳感器的工作原理 (3)掌握單總線通信方式實現 MCU與DS18B20數據傳輸 二、設計思路 1.整體思路 通過編寫數碼管顯示程序和單總線溫度采集程序&#xff0c;結合溫度傳感報警&#xff0c;利用手指觸碰傳感器&#xff0c;當…

用html+js+css實現的戰略小游戲

效果圖: 兄弟們&#xff0c;話不多說&#xff0c;直接上代碼 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0">…

Navicat BI 數據分析功能上線 | 數據洞察新方法

Navicat 17.2 版本一經發布&#xff0c;便以 AI 助手賦能智能交互、Snowflake 支持拓展數據連接版圖、拓展對關系型、維度以及數據倉庫 2.0 建模方法的支持等新特性與功能抓住了用戶的目光&#xff0c;但其中一項低調且實用的更新 - 在 BI 數據預覽中深度集成數據分析工具&…

【ts】defineProps數組的類型聲明

第一種&#xff1a;使用Record<string, unknown> Record<string, unknown>表示一個對象&#xff0c;鍵是string類型&#xff0c;值是未知的 import { defineProps, PropType } from vue;const props defineProps({dataList: {type: Array as PropType<Record…

OpenCv實戰筆記(4)基于opencv實現ORB特征匹配檢測

一、原理作用 ORB 原理&#xff08;Oriented FAST and Rotated BRIEF&#xff09;&#xff1a; 特征點檢測&#xff1a;使用 FAST 算法檢測角點&#xff08;關鍵點&#xff09;。 方向計算&#xff1a;為每個關鍵點分配主方向&#xff0c;增強旋轉不變性。 特征描述&#xff1a…

Unreal 從入門到精通之VR常用操作

文章目錄 前言1.如何設置VRPawn視角的位置。2.如何播放視頻3.如何播放VR全景視頻。4.如何打開和關閉VR模式。前言 我們使用Unreal5 開發VR 項目的時候,會遇到很多常見問題。 比如: 1.如何設置VRPawn視角的位置。 2.如何播放視頻。 3.如何播放VR全景視頻。 4.如何打開和關閉V…

[論文閱讀]Deep Cross Network for Ad Click Predictions

摘要 特征工程是許多預測模型成功的關鍵。然而&#xff0c;這個過程是困難的&#xff0c;甚至需要手動特征工程或窮舉搜索。DNN能夠自動學習特征交互&#xff1b;然而&#xff0c;它們隱式地生成所有的交互&#xff0c;并且不一定有效地學習所有類型的交叉特征。在本文中&…