Hadoop高可用集群搭建

Hadoop高可用(HA)集群是企業級大數據平臺的核心基礎設施,通過多主節點冗余和自動故障轉移機制,確保系統在單點故障時仍能正常運行。本文將詳細介紹如何基于CentOS 7搭建Hadoop 3.X高可用集群,涵蓋環境準備、組件配置、集群啟動及管理的全流程。

一、環境要求與準備

1. 基礎環境配置
# 系統要求
CentOS 7.x
JDK 8+
Zookeeper 3.7+
Hadoop 3.X
2. 環境變量配置
# 編輯~/.bash_profile
export JAVA_HOME=/home/hadoop/app/jdk
export ZOOKEEPER_HOME=/home/hadoop/app/zookeeper
export HADOOP_HOME=/home/hadoop/app/hadoop
export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin# 使配置生效
source ~/.bash_profile
3. 集群節點規劃
主機名NameNodeResourceManagerZKFCDataNodeNodeManagerJournalNodeZookeeper
hadoop01??????
hadoop02???????
hadoop03????
hadoop04?

二、網絡與SSH配置

1. 關閉防火墻
# 所有節點執行
systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld
2. 配置域名解析
# 編輯所有節點的/etc/hosts
vi /etc/hosts# 添加以下內容
192.168.1.101 hadoop01
192.168.1.102 hadoop02
192.168.1.103 hadoop03
192.168.1.104 hadoop04
3. SSH免密登錄配置
# 所有節點生成密鑰對
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa# 所有節點互傳公鑰
ssh-copy-id hadoop@hadoop01
ssh-copy-id hadoop@hadoop02
ssh-copy-id hadoop@hadoop03
ssh-copy-id hadoop@hadoop04# 驗證免密登錄
ssh hadoop01

三、Zookeeper集群安裝

1. 解壓與配置
# 解壓安裝包(hadoop01執行)
tar -zxvf apache-zookeeper-3.7.1-bin.tar.gz -C ~/app/
cd ~/app/
mv apache-zookeeper-3.7.1-bin zookeeper# 配置文件
cp $ZOOKEEPER_HOME/conf/zoo_sample.cfg $ZOOKEEPER_HOME/conf/zoo.cfg
vi $ZOOKEEPER_HOME/conf/zoo.cfg# 修改內容
dataDir=/home/hadoop/data/zk
server.1=hadoop01:2888:3888
server.2=hadoop02:2888:3888
server.3=hadoop03:2888:3888
2. 復制配置到其他節點
# 從hadoop01復制到其他節點
scp -r ~/app/zookeeper hadoop@hadoop02:~/app/
scp -r ~/app/zookeeper hadoop@hadoop03:~/app/
3. 創建myid文件
# hadoop01執行
mkdir -p /home/hadoop/data/zk
echo 1 > /home/hadoop/data/zk/myid# hadoop02執行
mkdir -p /home/hadoop/data/zk
echo 2 > /home/hadoop/data/zk/myid# hadoop03執行
mkdir -p /home/hadoop/data/zk
echo 3 > /home/hadoop/data/zk/myid
4. 啟動Zookeeper集群
# 所有ZK節點啟動服務
zkServer.sh start# 檢查狀態(每個節點應顯示leader或follower)
zkServer.sh status

四、Hadoop配置文件詳解

1. hadoop-env.sh
# 配置Java路徑
export JAVA_HOME=/home/hadoop/app/jdk
2. core-site.xml
<configuration><property><name>fs.defaultFS</name><value>hdfs://mycluster</value></property><property><name>hadoop.tmp.dir</name><value>/home/hadoop/data/hdfs</value></property><property><name>ha.zookeeper.quorum</name><value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value></property>
</configuration>
3. hdfs-site.xml
<configuration><property><name>dfs.replication</name><value>3</value></property><property><name>dfs.nameservices</name><value>mycluster</value></property><property><name>dfs.ha.namenodes.mycluster</name><value>nn1,nn2</value></property><property><name>dfs.namenode.rpc-address.mycluster.nn1</name><value>hadoop01:8020</value></property><!-- 其他NameNode配置... --><property><name>dfs.ha.automatic-failover.enabled</name><value>true</value></property>
</configuration>
4. yarn-site.xml
<configuration><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><property><name>yarn.resourcemanager.ha.enabled</name><value>true</value></property><property><name>yarn.resourcemanager.ha.rm-ids</name><value>rm1,rm2</value></property><!-- 其他RM配置... -->
</configuration>
5. mapred-site.xml
<configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property><property><name>mapreduce.application.classpath</name><value>$HADOOP_HOME/share/hadoop/mapreduce/*:$HADOOP_HOME/share/hadoop/mapreduce/lib/*</value></property>
</configuration>
6. workers文件
# 配置DataNode節點
hadoop01
hadoop02
hadoop03

五、Hadoop集群啟動流程

1. 啟動JournalNode
# 在hadoop02、hadoop03、hadoop04上執行
$HADOOP_HOME/sbin/hadoop-daemon.sh start journalnode# 驗證啟動
jps | grep JournalNode
2. 格式化HDFS
# 在hadoop01上執行
$HADOOP_HOME/bin/hdfs namenode -format# 啟動第一個NameNode
$HADOOP_HOME/sbin/hadoop-daemon.sh start namenode
3. 同步第二個NameNode
# 在hadoop02上執行
$HADOOP_HOME/bin/hdfs namenode -bootstrapStandby
4. 格式化ZKFC
# 在hadoop01上執行
$HADOOP_HOME/bin/hdfs zkfc -formatZK
5. 啟動集群
# 停止所有服務(確保干凈啟動)
$HADOOP_HOME/sbin/stop-all.sh# 啟動HDFS和YARN
$HADOOP_HOME/sbin/start-dfs.sh
$HADOOP_HOME/sbin/start-yarn.sh# 啟動ZKFC
$HADOOP_HOME/sbin/hadoop-daemon.sh start zkfc

六、Web UI訪問

服務URL說明
YARN ResourceManagerhttp://hadoop01:8088/ui2資源管理與作業監控
HDFS NameNodehttp://hadoop01:9870HDFS文件系統查看
MapReduce HistoryServerhttp://hadoop01:19888歷史作業詳情

七、高可用集群管理

1. ResourceManager管理
# 查看RM狀態
yarn rmadmin -getServiceState rm1# 手動切換為Active狀態
yarn rmadmin -transitionToActive rm2# 刷新隊列配置
yarn rmadmin -refreshQueues
2. NameNode管理
# 查看NN狀態
hdfs haadmin -getServiceState nn1# 手動故障轉移
hdfs haadmin -failover --forceactive nn1 nn2# 檢查健康狀態
hdfs haadmin -checkHealth nn2

八、常見問題排查

1. 服務無法啟動
  • 檢查日志:$HADOOP_HOME/logs/
  • 確認配置文件一致性
  • 檢查端口占用:netstat -tulpn | grep <端口號>
2. 自動故障轉移失敗
  • 驗證Zookeeper集群狀態
  • 檢查SSH免密配置
  • 確認dfs.ha.fencing.methods配置正確
3. 數據不同步
  • 檢查JournalNode服務狀態
  • 查看NameNode日志中的編輯日志同步情況
  • 手動執行bootstrapStandby操作

九、性能優化建議

  1. 內存配置優化

    # 修改yarn-site.xml
    <property><name>yarn.nodemanager.resource.memory-mb</name><value>65536</value>
    </property>
    <property><name>yarn.scheduler.maximum-allocation-mb</name><value>32768</value>
    </property>
    
  2. HDFS塊大小調整

    # hdfs-site.xml
    <property><name>dfs.blocksize</name><value>268435456</value> <!-- 256MB -->
    </property>
    
  3. 數據本地化優化

    # yarn-site.xml
    <property><name>yarn.nodemanager.local-dirs</name><value>/data1/hadoop/nm-local-dir,/data2/hadoop/nm-local-dir</value>
    </property>
    

通過以上步驟,你可以成功搭建一個高可用的Hadoop集群,實現HDFS和YARN的雙高可用架構。在生產環境中,建議定期備份關鍵數據,監控集群性能,并進行必要的容量規劃,以確保系統穩定運行。

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

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

相關文章

Next.js 實戰筆記 1.0:架構重構與 App Router 核心機制詳解

Next.js 實戰筆記 1.0&#xff1a;架構重構與 App Router 核心機制詳解 上一次寫 Next 相關的東西都是 3 年前的事情了&#xff0c;這 3 年里 Next 也經歷了 2-3 次的大版本變化。當時寫的時候 Next 是 12 還是 13 的&#xff0c;現在已經是 15 了&#xff0c;從 build 到實現…

Pillow 安裝使用教程

一、Pillow 簡介 Pillow 是 Python 圖像處理庫 PIL&#xff08;Python Imaging Library&#xff09;的友好分支&#xff0c;是圖像處理的事實標準。它支持打開、編輯、轉換、保存多種圖像格式&#xff0c;常用于圖像批量處理、驗證碼識別、縮略圖生成等應用場景。 二、安裝 Pi…

SQL Server從入門到項目實踐(超值版)讀書筆記 20

9.4 數據的嵌套查詢所謂嵌套查詢&#xff0c;就是在一個查詢語句中&#xff0c;嵌套進另一個查詢語句&#xff0c;即&#xff0c;查詢語句中可以使用另一個查詢語句中得到的查詢結果&#xff0c;子查詢可以基于一張表或者多張表。子查詢中常用的操作符有ANY、SOME、ALL、IN、EX…

【MySQL\Oracle\PostgreSQL】遷移到openGauss數據出現的問題解決方案

【MySQL\Oracle\PostgreSQL】遷移到openGauss數據出現的問題解決方案 問題1&#xff1a;序列值不自動刷新問題 下面SQL只針對單庫操作以及每個序列只綁定一張表的情況 -- 自動生成的序列&#xff0c;設置序列值 with sequences as (select *from (select table_schema,table_…

【Maven】Maven命令大全手冊:28個核心指令使用場景

Maven命令大全手冊&#xff1a;28個核心指令使用場景 Maven命令大全手冊&#xff1a;28個核心指令深度解析一、構建生命周期核心命令1. mvn clean2. mvn compile3. mvn test4. mvn package5. mvn install6. mvn deploy二、依賴管理命令7. mvn dependency:tree8. mvn dependency…

大語言模型(LLM)按架構分類

大語言模型&#xff08;LLM&#xff09;按架構分類的深度解析 1. 僅編碼器架構&#xff08;Encoder-Only&#xff09; 原理 雙向注意力機制&#xff1a;通過Transformer編碼器同時捕捉上下文所有位置的依賴關系# 偽代碼示例&#xff1a;BERT的MLM任務 masked_input "Th…

MySQL(120)如何進行數據脫敏?

數據脫敏&#xff08;Data Masking&#xff09;是指通過某種方式對敏感數據進行變形&#xff0c;使其在使用過程中無法識別原始數據&#xff0c;從而保護數據隱私。數據脫敏通常應用在開發、測試和數據分析等場景中。下面我們詳細介紹如何在Java應用程序中進行數據脫敏&#xf…

使用 Dockerfile 構建基于 .NET9 的跨平臺基礎鏡像

官方基礎鏡像準備 微軟官方 dotnet sdk 基礎鏡像&#xff1a; docker pull mcr.microsoft.com/dotnet/sdk:9.0拉取 ubuntu 鏡像&#xff1a; docker pull ubuntu:24.04更多資源請參考&#xff1a; dotnet sdk images&#xff0c;https://mcr.microsoft.com/en-us/artifact/mar/…

C++ : 線程庫

C : 線程庫一、線程thread1.1 thread類1.1.1 thread對象構造函數1.1.2 thread類的成員函數1.1.3 線程函數的參數問題1.2 this_thread 命名空間域1.2.1 chrono二、mutex互斥量庫2.1 mutex的四種類型2.1.1 mutex 互斥鎖2.2.2 timed_mutex 時間鎖2.2.3 recursive_muetx 遞歸鎖2.2.…

idea的使用小技巧,個人向

idea的使用小技巧&#xff0c;個人向 一、前言二、過程1、顯示內存的使用情況2、去掉xml文件中的黃色背景3、顯示所有打開文件4、顯示工具欄到菜單下面5、使用JDK8 一、前言 每次重裝idea都需要重新設置一下&#xff0c;這里做個記錄。 這些技巧只是個人感覺的好用 演示用的…

debian及衍生發行版apt包管理常見操作

好的&#xff0c;這是 Debian 及其衍生版&#xff08;如 Ubuntu&#xff09;使用的 apt 包管理器的常用命令速查表。 一點說明&#xff1a;apt 是新一代的命令行工具&#xff0c;整合了 apt-get 和 apt-cache 的常用功能&#xff0c;并提供了更友好的交互體驗。本表主要使用現…

vue調用函數

好的&#xff0c;我們來講解如何在 Vue 模板中調用函數。您提供的代碼是一個非常棒的、很實用的例子。 在 Vue 模板中&#xff0c;你可以在兩個主要地方調用函數&#xff1a; 文本插值中&#xff1a;像 {{ formatDate(date) }} 這樣&#xff0c;函數的返回值會作為文本被渲染到…

前端常用構建工具介紹及對比

打包構建工具是現代軟件開發中必不可少的,它們幫助開發者自動化構建、打包、部署等流程,提升開發效率。不過,不同時期構建工具略有差異。 每個構建工具都有其擅長的領域,我們需要知道其優勢,才能在我們實際開發中選擇合適的構建工具進行構建處理。 1. Gulp Gulp 是一個…

Web后端開發-SpringBootWeb入門、Http協議、Tomcat

文章目錄Web后端開發簡介SpringBootWeb入門HTTP協議HTTP-概述HTTP-請求協議HTTP-響應協議HTTP-協議解析Web服務器-Tomcat簡介基本使用SpringBootWeb入門程序解析Web后端開發簡介 SpringBootWeb入門 package com.wuxuan.javaweb_wushuang.controller;import org.springframework…

物聯網通信技術全景剖析:從LoRa到5G的深度對比與選型指南

物聯網通信技術全景剖析&#xff1a;從LoRa到5G的深度對比與選型指南在萬物互聯時代&#xff0c;選擇合適的通信技術如同為設備構建“神經網絡”。本文將深入解析七大主流物聯網通信技術&#xff0c;助您在技術選型中精準決策。一、低功耗廣域網&#xff08;LPWAN&#xff09;技…

俄羅斯方塊AI深度解析:從算法原理到實現細節

俄羅斯方塊AI深度解析:從算法原理到實現細節 前言 俄羅斯方塊,這個誕生于1984年的經典游戲,至今仍然是人工智能研究領域的熱門課題。當簡單的幾何形狀在網格中不斷下落時,看似簡單的規則背后卻隱藏著復雜的策略決策問題。本文將深入剖析一個基于Python實現的俄羅斯方塊AI…

Spring Boot 框架創建一個簡單的后端接口,并介紹如何使用 Apifox 連接該接口

目錄 一、配置 二、使用 IntelliJ IDEA 創建 Spring Boot 項目 1.打開 IntelliJ IDEA&#xff0c;選擇 File > New > Project 2.在左側面板選擇 Spring Initializr&#xff0c;項目名稱設置為HelloWorldAPI 3.點擊 Create 完成項目創建 三、創建控制器類 四、運行項…

CICD[導航]、docker+gitlab+harbor+jenkins從安裝到部署

一、安裝 CICD[軟件安裝]&#xff1a;docker安裝gitlab-CSDN博客 CICD[軟件安裝]&#xff1a;ubuntu安裝jenkins-CSDN博客 CICD[軟件安裝]&#xff1a;ubuntu安裝私有鏡像倉庫-Harbor-CSDN博客 CICD[軟件安裝]&#xff1a;ubuntu24安裝Docker-CSDN博客 二、鏡像執行 CICD[…

深度學習圖像分類數據集—蘑菇識別分類

該數據集為圖像分類數據集&#xff0c;適用于ResNet、VGG等卷積神經網絡&#xff0c;SENet、CBAM等注意力機制相關算法&#xff0c;Vision Transformer等Transformer相關算法。 數據集信息介紹&#xff1a;蘑菇識別分類&#xff1a;[Agaricus, Amanita, Boletus, Cortinarius, …

iOS 多線程導致接口亂序?抓包還原 + 請求調度優化實戰

在一次性能優化過程中&#xff0c;我們將 iOS App 內多處請求改為并行處理&#xff0c;以提高頁面加載速度。但上線后卻收到部分用戶反饋&#xff1a;進入頁面后數據加載錯亂&#xff0c;有時展示前一次頁面內容&#xff0c;有時同一個接口請求重復返回不同內容。 日志僅顯示正…