Hadoop部署(HA)高可用集群

一、準備工作

1.把集群全部停掉

在三臺節點上都做(在xshell通過右鍵----> 發送輸入到--->所有會話)

2..在/export/servers下創建HA目錄

sudo mkdir -p /export/servers/HA

3.創建用戶和設置所屬主和所屬組

#創建用戶
sudo adduser ygre
#設置密碼
sudo passwd ygre
# 創建用戶組
sudo chown ygre:ygre HA

?4.將原hadoop拷貝到/export/servers/HA下(在hadoop1上即可--后面會分發)

cp -r /export/servers/hadoop /export/servers/HA

?5.將/export/servers/HA下的hadoop里面的data logs 和/tmp/* 全部刪除

rm -rf data logs
sudo rm -rf /tmp/*

6.配置環境變量(將指向/export/servers/hadoop?修改成指向/export/servers/HA/hadoop)

sudo vi /etc/profile
# 修改
export HADOOP_HOME=/export/servers/HA/hadoop
# 保存退出
:wq
#初始化環境變量
source /etc/profile

?7.分發環境變量

#將系統環境變量文件分發至虛擬機Hadoop2的/etc目錄
scp /etc/profile root@hadoop2:/etc 
#將系統環境變量文件分發至虛擬機Hadoop3的/etc目錄
scp /etc/profile root@hadoop3:/etc 
# 分別在hadoop2和hadoop3中初始化環境變量
source /etc/profile 
# 每臺節點一定要驗證
echo $HADOOP_HOME

?二、配置HDFS

1.配置core-site.xml

<configuration><!-- 默認文件系統地址(HA 集群邏輯名稱) --><property><name>fs.defaultFS</name><value>hdfs://mycluster</value></property><!-- Hadoop 臨時目錄 --><property><name>hadoop.tmp.dir</name><value>/export/servers/HA/hadoop/data</value></property><!-- ZooKeeper 集群地址 --><property><name>ha.zookeeper.quorum</name><value>hadoop1:2181,hadoop2:2181,hadoop3:2181</value></property><!-- 啟用自動故障轉移 --><property><name>dfs.ha.automatic-failover.enabled</name><value>true</value></property><!-- ZKFC 會話超時時間 --><property><name>ha.zookeeper.session-timeout.ms</name><value>5000</value></property>
</configuration>

2. 配置hdfs-site.xml

注意:在hadoop2.x中只能有兩個NameNode,但是在hadoop3.x中可以有無限個

<configuration><!-- NameNode數據存儲目錄 --><property><name>dfs.namenode.name.dir</name><value>file://${hadoop.tmp.dir}/name</value></property><!-- DataNode數據存儲目錄 --><property><name>dfs.datanode.data.dir</name><value>file://${hadoop.tmp.dir}/data</value></property><!-- JournalNode數據存儲目錄 --><property><name>dfs.journalnode.edits.dir</name><value>${hadoop.tmp.dir}/jn</value></property><!-- 完全分布式集群名稱 --><property><name>dfs.nameservices</name><value>mycluster</value></property><!-- 集群中NameNode節點都有哪些 --><property><name>dfs.ha.namenodes.mycluster</name><value>nn1,nn2</value></property><!-- NameNode的RPC通信地址 --><property><name>dfs.namenode.rpc-address.mycluster.nn1</name><value>hadoop1:8020</value></property><property><name>dfs.namenode.rpc-address.mycluster.nn2</name><value>hadoop2:8020</value></property><!-- NameNode的http通信地址 --><property><name>dfs.namenode.http-address.mycluster.nn1</name><value>hadoop1:50070</value></property><property><name>dfs.namenode.http-address.mycluster.nn2</name><value>hadoop2:50070</value></property><property><name>dfs.namenode.http-address.mycluster.nn3</name><value>hadoop3:50070</value></property><!-- 指定NameNode元數據在JournalNode上的存放位置 --><property><name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://hadoop1:8485;hadoop2:8485;hadoop3:8485/mycluster</value></property><!-- 訪問代理類:client用于確定哪個NameNode為Active --><property><name>dfs.client.failover.proxy.provider.mycluster</name><value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value></property><!-- 配置隔離機制,即同一時刻只能有一臺服務器對外響應 --><property><name>dfs.ha.fencing.methods</name><value>sshfence</value></property><!-- 使用隔離機制時需要ssh秘鑰登錄--><property><name>dfs.ha.fencing.ssh.private-key-files</name><value>/home/ygre/.ssh/id_rsa</value></property><property><name>dfs.ha.automatic-failover.enabled</name><value>true</value></property>
</configuration>

?三、配置YARN

1.配置yarn-site.xml

<configuration><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><!-- 啟用resourcemanager ha --><property><name>yarn.resourcemanager.ha.enabled</name><value>true</value></property><!-- 聲明兩臺resourcemanager的地址 --><property><name>yarn.resourcemanager.cluster-id</name><value>cluster-yarn1</value></property><!--指定resourcemanager的邏輯列表--><property><name>yarn.resourcemanager.ha.rm-ids</name><value>rm1,rm2,rm3</value></property>
<!-- ========== rm1的配置 ========== --><!-- 指定rm1的主機名 --><property><name>yarn.resourcemanager.hostname.rm1</name><value>hadoop1</value></property><!-- 指定rm1的web端地址 --><property><name>yarn.resourcemanager.webapp.address.rm1</name><value>hadoop1:8088</value></property><!-- 指定rm1的內部通信地址 --><property><name>yarn.resourcemanager.address.rm1</name><value>hadoop1:8032</value></property><!-- 指定AM向rm1申請資源的地址 --><property><name>yarn.resourcemanager.scheduler.address.rm1</name>  <value>hadoop1:8030</value></property><!-- 指定供NM連接的地址 -->  <property><name>yarn.resourcemanager.resource-tracker.address.rm1</name><value>hadoop1:8031</value></property><!-- ========== rm2的配置 ========== --><!-- 指定rm2的主機名 --><property><name>yarn.resourcemanager.hostname.rm2</name><value>hadoop2</value></property><property><name>yarn.resourcemanager.webapp.address.rm2</name><value>hadoop2:8088</value></property><property><name>yarn.resourcemanager.address.rm2</name><value>hadoop2:8032</value></property><property><name>yarn.resourcemanager.scheduler.address.rm2</name><value>hadoop2:8030</value></property><property>
<name>yarn.resourcemanager.resource-tracker.address.rm2</name><value>hadoop2:8031</value></property><!-- ========== rm3的配置 ========== --><!-- 指定rm1的主機名 --><property><name>yarn.resourcemanager.hostname.rm3</name><value>hadoop3</value></property><!-- 指定rm1的web端地址 --><property><name>yarn.resourcemanager.webapp.address.rm3</name><value>hadoop3:8088</value></property><!-- 指定rm1的內部通信地址 --><property><name>yarn.resourcemanager.address.rm3</name><value>hadoop3:8032</value></property><!-- 指定AM向rm1申請資源的地址 --><property><name>yarn.resourcemanager.scheduler.address.rm3</name>  <value>hadoop3:8030</value></property><!-- 指定供NM連接的地址 -->  <property><name>yarn.resourcemanager.resource-tracker.address.rm3</name><value>hadoop3:8031</value></property><!-- 指定zookeeper集群的地址 --> <property><name>yarn.resourcemanager.zk-address</name><value>hadoop1:2181,hadoop2:2181,hadoop3:2181</value></property><!-- 啟用自動恢復 --> <property><name>yarn.resourcemanager.recovery.enabled</name><value>true</value></property><!-- 指定resourcemanager的狀態信息存儲在zookeeper集群 --> <property><name>yarn.resourcemanager.store.class</name>     <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property><!-- 環境變量的繼承 --><property><name>yarn.nodemanager.env-whitelist</name><value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value></property>
</configuration>

四、運行HA高可用集群和查看WebUI

1.分發HA中的hadoop安裝目錄

#將Hadoop安裝目錄分發至虛擬機HA中的hadoop2中存放安裝程序的目錄
scp -r /export/servers/HA/hadoop root@hadoop2:/export/servers/HA
#將Hadoop安裝目錄分發至虛擬機HA中的hadoop3中存放安裝程序的目錄
scp -r /export/servers/HA/hadoop root@hadoop3:/export/servers/HA

?2.在(hadoop1,hadoop2,hadoop3)啟動journalnode

 ?hdfs start journalnode?? ? 

3.在[hadoop1]上,對其進行格式化

hdfs namenode -format

?4.在hadoop2上同步元數據

hdfs namenode -bootstrapStandby

?5.啟動Zookeeper

# 啟動zookeeper
/export/servers/zookeeper/bin/zhServer.sh start
# 驗證集群狀態
/export/servers/zookeeper/bin/zhServer.sh status

輸出Mode:leader或Mode:follwer 表示集群正常運行

6.啟動HDFS服務和啟動YARN服務

# 啟動hdfs服務
start-dfs.sh
# 啟動yarn服務
start-yarn.sh

7.驗證

jps

?

?

?五、恢復到原來Hadoop集群

1.關閉所有服務

2.修改環境變量

sudo vi /etc/profile
# 修改
export HADOOP_HOME=/export/servers/hadoop
# 保存退出:
:wq
#初始化環境變量
source /etc/profile

3.分發環境變量

#將系統環境變量文件分發至虛擬機Hadoop2的/etc目錄
scp /etc/profile root@hadoop2:/etc 
#將系統環境變量文件分發至虛擬機Hadoop3的/etc目錄
scp /etc/profile root@hadoop3:/etc 
# 分別在hadoop2和hadoop3中初始化環境變量
source /etc/profile 
# 每臺節點一定要驗證
echo $HADOOP_HOME

?3.每臺節點都需要刪除/tmp/*

sudo rm -rf /tmp/*

4.啟動原集群:

start-all.sh

?

?

?

?

?

?

?

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

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

相關文章

STM32 CAN位同步、錯誤處理

一、接收方數據采樣 CAN總線沒有時鐘線&#xff0c;總線上的所有設備通過約定波特率的方式確定每一個數據位的時長發送方以約定的位時長每隔固定時間輸出一個數據位接收方以約定的位時長每隔固定時間采樣總線的電平&#xff0c;輸入一個數據位理想狀態下&#xff0c;接收方能依…

django serializer __all__中 額外添加外鍵里的某一個屬性

在Django中使用序列化器&#xff08;Serializer&#xff09;時&#xff0c;你可能會遇到需要將模型&#xff08;Model&#xff09;中的外鍵字段轉換成其關聯對象的一部分屬性的情況。默認情況下&#xff0c;序列化器會自動序列化外鍵字段&#xff0c;但如果你想要在序列化結果中…

Redis快的原因

Redis 高性能的核心原因 Redis 之所以能達到極高的性能&#xff08;10萬 QPS&#xff09;&#xff0c;主要源于以下幾個關鍵設計&#xff1a; 1. 純內存操作 核心優勢&#xff1a;所有數據存儲在內存中&#xff0c;避免了磁盤 I/O 瓶頸 內存訪問速度比磁盤快 10萬倍以上&am…

【大模型微調】6.模型微調實測與格式轉換導出

引言 本文繼續研究 LLaMA-Factory 微調數據的流程&#xff0c;側重于微調結果與模型導出。 數據集準備 首先參考 LLaMA-Factory 核心開發者的文章[1]&#xff0c;下載用于微調的公開的商品文案數據集 AdvertiseGen。 下載地址&#xff1a;https%3A//cloud.tsinghua.edu.cn/…

3085. 成為 K 特殊字符串需要刪除的最少字符數

3085. 成為 K 特殊字符串需要刪除的最少字符數 給你一個字符串 word 和一個整數 k。 如果 |freq(word[i]) - freq(word[j])| < k 對于字符串中所有下標 i 和 j 都成立&#xff0c;則認為 word 是 k 特殊字符串。 此處&#xff0c;freq(x) 表示字符 x 在 word 中的出現頻…

分布式系統中的 Kafka:流量削峰與異步解耦(二)

Kafka 在分布式系統中的應用案例 電商訂單系統 在電商領域&#xff0c;訂單系統是核心業務模塊之一&#xff0c;涉及多個復雜的業務環節和系統組件之間的交互。以常見的電商購物流程為例&#xff0c;當用戶在電商平臺上下單后&#xff0c;訂單創建服務會首先接收到用戶的訂單…

從事登高架設作業需要注意哪些安全事項?

從事登高架設作業&#xff08;如腳手架搭設、高空維修、外墻清洗等&#xff09;屬于高風險特種作業&#xff0c;必須嚴格遵守安全規范。以下是關鍵安全注意事項&#xff0c;涵蓋作業前準備、作業中操作、應急處理三大環節&#xff0c;符合國家《高處作業安全技術規范》&#xf…

RA4M2開發IOT(6)----涂鴉模組快速上云

RA4M2開發IOT.6--涂鴉模組快速上云 概述視頻教學樣品申請硬件準備參考程序涂鴉官網鏈接創建一個項目選擇對應產品產品基本配置添加標準功能APP界面配置硬件選擇產品配置硬件詳情PCB原理圖涂鴉調試文件下載進入調試涂鴉模塊串口協議心跳檢測查詢產品信息查詢工作模式AP配網APP鏈…

AI時代SEO關鍵詞革新

內容概要 在人工智能&#xff08;AI&#xff09;技術快速發展的背景下&#xff0c;搜索引擎優化&#xff08;SEO&#xff09;關鍵詞策略正經歷根本性變革。本文將系統闡述AI如何重塑關鍵詞研究、優化及效果評估的全流程。具體而言&#xff0c;首先解析智能研究方法在挖掘用戶意…

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

專欄&#xff1a;JavaEE初階起飛計劃 個人主頁&#xff1a;手握風云 目錄 一、認識線程 1.1. 概念 1.2. 為什么要使用線程 1.3. 進程和線程的關系 1.4. 多線程模型 二、多線程的創建 2.1. 繼承Thread類 2.2. 實現Runnable接口 2.3. 匿名內部類 2.4. lambda表達式 一、…

【StarRocks系列】建表優化

目錄 一、數據模型選擇 (核心優化) 二、分區與分桶策略 (數據分布優化) 三、字段類型與壓縮 四、索引策略 五、高級特性應用 六、建表示例&#xff08;關鍵優化整合&#xff09; 參考官網 優化性能 | StarRocks 在 StarRocks 中創建表時&#xff0c;合理的表設計是性能優…

linux-vim編輯器

linux-vim編輯器 前言一、命令模式1. 跳轉功能2. 文本編輯3. 模式切換 二、輸入模式1. 進入輸入模式2. 快捷鍵 三、末行模式1. 進入末行模式2. 文件操作3. 查找與替換4. 行操作 四、替換模式五、可視模式1. 進入可視模式2. 文本操作 六、相關配置 前言 vim - Vi IMproved, a p…

SQL關鍵字三分鐘入門: 表結構管理與分區設計。(ALTER、MODIFY、CHANGE、DEFAULT、VALUES、LESS THAN、RANGE)

前面我們已經學習了如何查詢數據&#xff08;SELECT&#xff09;、篩選數據&#xff08;WHERE&#xff09;等操作。現在我們要進入數據庫的另一個重要領域 —— 表結構管理與分區設計。 本文帶你快速認識以下關鍵字&#xff1a; ? ALTER? MODIFY? CHANGE? DEFAULT? VALU…

深度剖析:RTTI輕量框架實現原理與架構(C++ 17 高級編程)

&#x1f680; C RTTI反射系統深度設計文檔 &#x1f30c; 核心架構圖 #mermaid-svg-aWkaWoFklq1ylap6 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-aWkaWoFklq1ylap6 .error-icon{fill:#552222;}#mermaid-svg-a…

03-D3.js SVG text標簽?

Data Visualization D3.js ? SuperHiLearn how to create interactive, engaging experiences using HTML, CSS, SVG and Javascript.https://www.superhi.com/catalog/data-visualization-with-d3 text - SVG&#xff1a;可縮放矢量圖形 | MDNtext元素定義了一個由文字組成…

Python 使用Gitlab Api

代碼 REST API 見自帶幫助文檔 python 安裝python-gitlab pip install --upgrade python-gitlab使用API 參考&#xff1a;https://python-gitlab.readthedocs.io/en/stable/api-usage.html import gitlab# anonymous read-only access for public resources (GitLab.com…

中醫體質識別:理論、方法與應用的簡要綜述

中醫體質識別&#xff1a;理論、方法與應用的簡要綜述 摘要 中醫體質識別是中醫“治未病”及個性化診療的關鍵環節。本文系統闡述中醫體質識別&#xff0c;涵蓋理論基礎、常見體質類型、識別方法、現代技術應用及臨床實踐。中醫體質理論源遠流長&#xff0c;《黃帝內經》奠定…

稀疏表原理及應用場景

1 概述 稀疏表&#xff08;Sparse Table&#xff0c;ST&#xff09;是一種用于高效解決 靜態區間查詢&#xff08;Range Query&#xff09; 問題的數據結構&#xff0c;主要用于 可重復貢獻問題&#xff08;Idempotent Range Queries&#xff09;&#xff0c;例如區間最小值&a…

【深度學習與機器學習的區別】從本質到應用的全景對比

目錄 前言 一、三者關系&#xff1a;深度學習是機器學習的子集 1.1 概念關系 1.2 類比理解&#xff1a;動物 vs 哺乳動物 1.3 舉個例子更清楚 1.4 為什么“機器學習 ≠ 深度學習”&#xff1f; 1.5 最容易搞混的地方 二、核心區別總覽&#xff08;對比表&#xff09; …

Masscan常用命令詳解

一、工具介紹 Masscan是一款開源、高速的網絡端口掃描工具&#xff0c;設計目標是實現最快的掃描速度。它能夠在極短的時間內完成大規模的網絡掃描&#xff0c;適用于互聯網級別的掃描任務。它采用異步傳輸和自定義TCP/IP協議棧技術&#xff0c;最快可實現每秒160萬數據包的掃…