【Hadoop】高可用集群搭建

知識目錄

  • 一、寫在前面💕
  • 二、Zookeeper安裝?
  • 三、Hadoop配置?
  • 四、Hadoop HA自動模式?
  • 五、HA腳本分享?
  • 七、結語💕

一、寫在前面💕

大家好!這篇文章是我在搭建Hdfs的HA(高可用)時寫下的詳細筆記與感想,希望能幫助到大家!本篇文章收錄于 初心 的 大數據 專欄。

🏠 個人主頁:初心%個人主頁
🧑 個人簡介:大家好,我是初心,和大家共同努力
💕 座右銘:理想主義的花,終究會盛開在浪漫主義的土壤里!🍺🍺🍺
💕歡迎大家:這里是CSDN,我記錄知識的地方,喜歡的話請三連,有問題請私信😘

二、Zookeeper安裝?

  • 1.將Zookeeper壓縮包上傳到 Hadoop102的/opt/software 目錄下

這里我們還是使用Xshell+Xftp進行文件上傳,將Zookeeper上傳。

  • 2.解壓到 /opt/module/HA 目錄下
tar -xzvf /opt/software/apache-zookeeper-3.5.7-bin.tar.gz -C /opt/module/HA/
  • 3.將Zookeeper重命名
mv /opt/module/HA/apache-zookeeper-3.5.7-bin/ zookeeper
  • 4.重命名Zookeeper的zoo_sample.cfg為zoo.cfg文件
mv zoo_sample.cfg zoo.cfg
  • 5.修改zoo.cfg文件
vim /opt/module/HA/zookeeper/conf/zoo.cfg

按下G,按下o,直接插入到最后一行,插入以下內容,其中hadoop102,hadoop103,hadoop104分別是三個節點的主機名。

server.1=hadoop102:2888:3888
server.2=hadoop103:2888:3888
server.3=hadoop104:2888:3888
  • 6.新建myid文件

進入到zookeeper目錄下:

cd /opt/module/HA/zookeeper/

新建zkData目錄:

mkdir zkData

進入到zkData目錄,并新建myid文件:

cd zkData
vim myid

只需分別在Hadoop102,Hadoop103,Hadoop104的myid文件添加數字 1,2,3 即可,保存退出:



  • 7.配置環境變量
vim /etc/profile.d/my_env.sh

插入以下內容:

# ZOOKEEPER_HOME
export ZOOKEEPER_HOME=/opt/module/HA/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin
  • 8.刷新環境變量
source /etc/profile.d/my_env.sh
  • 9.分發

這里需要分發的有Zookeeper,my_env.sh文件,以及都要刷新環境變量。前面兩個命令在hadoop102執行即可,第三個命令在hadoop103,hadoop104上都要執行一次。

xsync /opt/module/HA/zookeeper/
xsync /etc/profile.d/my_env.sh
source /etc/profile.d/my_env.sh

三、Hadoop配置?

  • 1.保留原來的Hadoop集群

為什么要保留原來的集群? 在搭建Hadoop高可用之前,我們的集群是有Hdfs,Yarn,JobHistory,這些我們日后還需要繼續學習使用,因此我選擇保留下來,換句話說,**即使我們高可用(HA)搭建失敗了,我們還能回到開始的狀態。**保留方式就是我們搭建的時候不要直接使用Hadoop目錄,而是復制一份。

  • 2.復制Hadoop目錄
cp -r /opt/module/hadoop-3.1.3/ /opt/module/HA/
  • 3.刪除data和logs目錄
cd /opt/module/HA/hadoop-3.1.3/
rm -rf data
rm -rf logs
  • 4.新建Zookeeper相關目錄
cd /opt/module/HA/
mkdir logs
mkdir tmp
  • 5.修改兩個配置文件

這里的兩個配置文件是 core-site.xml 文件和 hdfs-site.xml 文件,這是Hadoop目錄中僅需要修改的兩個文件.這里以注釋形式給出需要修改的地方,不用修改這兩個文件,直接覆蓋即可.

hdfs-site.xml:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--Licensed under the Apache License, Version 2.0 (the "License");you may not use this file except in compliance with the License.You may obtain a copy of the License athttp://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, softwaredistributed under the License is distributed on an "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.See the License for the specific language governing permissions andlimitations under the License. See accompanying LICENSE file.
--><!-- Put site-specific property overrides in this file. --><configuration><!-- 集群名稱,此值在接下來的配置中將多次出現務必注意同步修改 -->
<property><name>dfs.nameservices</name><value>mycluster</value>
</property>
<!-- 所有的namenode列表,此處也只是邏輯名稱,非namenode所在的主機名稱 -->
<property><name>dfs.ha.namenodes.mycluster</name><value>nn1,nn2</value>
</property><!-- namenode之間用于RPC通信的地址,value填寫namenode所在的主機地址 -->
<!-- 默認端口8020,注意mycluster1與nn1要和上文的配置一致 -->
<property><name>dfs.namenode.rpc-address.mycluster.nn1</name><value>hadoop102:8020</value>
</property>
<property><name>dfs.namenode.rpc-address.mycluster.nn2</name><value>hadoop103:8020</value>
</property><!-- namenode的web訪問地址,默認端口9870 -->
<property><name>dfs.namenode.http-address.mycluster.nn1</name><value>hadoop102:9870</value>
</property>
<property><name>dfs.namenode.http-address.mycluster.nn2</name><value>hadoop103:9870</value>
</property><!-- journalnode主機地址,最少三臺,默認端口8485 -->
<!-- 格式為 qjournal://jn1:port;jn2:port;jn3:port/${nameservices} -->
<!-- a shared edits dir must not be specified if HA is not enabled -->
<!-- 偽分布式時,取消該配置 -->
<property><name>dfs.namenode.shared.edits.dir</name><value>qjournal://hadoop102:8485;hadoop103:8485;hadoop104:8485/mycluster</value>
</property><!-- 故障時自動切換的實現類,照抄即可 -->
<property><name>dfs.client.failover.proxy.provider.mycluster</name><value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property><!-- 故障時相互操作方式(namenode要切換active和standby),這里我們選ssh方式 -->
<property><name>dfs.ha.fencing.methods</name><value>sshfence</value>
</property>
<!-- 修改為自己用戶的ssh key存放地址 -->
<property><name>dfs.ha.fencing.ssh.private-key-files</name><value>/home/sky/.ssh/id_rsa</value>
</property><!-- namenode日志文件輸出路徑,即journalnode讀取變更的位置 -->
<property><name>dfs.journalnode.edits.dir</name><value>/opt/module/HA/logs/</value>
</property><!-- 啟用自動故障轉移 -->
<property><name>dfs.ha.automatic-failover.enabled</name><value>true</value>
</property><property><name>dfs.webhdfs.enabled</name><value>true</value>
</property><!-- 解決 DataXceiver error processing WRITE_BLOCK operation src -->
<property><name>dfs.datanode.max.transfer.threads</name><value>8192</value><description> Specifies the maximum number of threads to use for transferring datain and out of the DN. </description>
</property>
</configuration>

core-site.xml:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--Licensed under the Apache License, Version 2.0 (the "License");you may not use this file except in compliance with the License.You may obtain a copy of the License athttp://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, softwaredistributed under the License is distributed on an "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.See the License for the specific language governing permissions andlimitations under the License. See accompanying LICENSE file.
--><!-- Put site-specific property overrides in this file. --><configuration><!-- HDFS主入口,mycluster僅是作為集群的邏輯名稱,可隨意更改但務必與hdfs-site.xml中dfs.nameservices值保持一致 -->
<property><name>fs.defaultFS</name><value>hdfs://mycluster</value>
</property><!-- 默認的hadoop.tmp.dir指向的是/tmp目錄,將導致namenode與datanode數據全都保存在易失目錄中,此處進行修改 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/HA/tmp/</value><!-- <value>/opt/bigdata/hadoopha</value> -->
</property><!-- 用戶角色配置,不配置此項會導致web頁面報錯(不能操作數據) -->
<property><name>hadoop.http.staticuser.user</name><value>sky</value>
</property><!-- zookeeper集群地址,這里只配置了單臺,如是集群以逗號進行分隔 -->
<property><name>ha.zookeeper.quorum</name><value>hadoop102:2181,hadoop103:2181,hadoop104:2181</value>
</property><!-- 權限配置 hadoop.proxyuser.{填寫自己的用戶名}.hosts-->
<property><name>hadoop.proxyuser.sky.hosts</name><value>*</value>
</property>
<property><name>hadoop.proxyuser.sky.groups</name><value>*</value>
</property><!-- 解決journalnode連接不上,導致namenode啟動問題 -->
<!-- 也有可能是網絡的問題,參考該文章:https://blog.csdn.net/tototuzuoquan/article/details/89644127 -->
<!-- 在dev環境中出現連不上journalnode問題,添加該配置,以增加重試次數和間隔 -->
<property><name>ipc.client.connect.max.retries</name><value>100</value><description>Indicates the number of retries a client will make to establish a server connection.</description>
</property><property><name>ipc.client.connect.retry.interval</name><value>10000</value><description>Indicates the number of milliseconds a client will wait for before retrying to establish a server connection.</description>
</property>
</configuration>
  • 6.修改環境變量
vim /etc/profile.d/my_env.sh

將HADOOP_HOME改為新的Hadoop目錄所在路徑:

# HADOOP_HOME
export HADOOP_HOME=/opt/module/HA/hadoop-3.1.3
  • 7.分發Hadoop目錄和my_env.sh文件
xsync /opt/module/HA/hadoop-3.1.3/
xsync /etc/profile.d/my_env.sh
  • 8.刷新環境變量

分別在三個節點上刷新環境變量:

source /etc/profile.d/my_env.sh

四、Hadoop HA自動模式?

  • 1.修改hadoop/etc/hadoop/hadoop-env.sh文件
vim /opt/module/HA/hadoop-3.1.3/etc/hadoop/hadoop-env.sh

在末尾插入以下內容,sky是用戶名,因為我至始至終都沒使用root賬號.

export HDFS_ZKFC_USER=sky
export HDFS_JOURNALNODE_USER=sky
  • 2.分發
xsync /opt/module/HA/hadoop-3.1.3/
  • 2.啟動與初始化集群

啟動Zookeeper:

zkServer.sh start

刷新環境變量:

source /etc/profile.d/my_env.sh

啟動Hdfs:

myhadoop start

myhadoop是我另外一個Hadoop集群啟停腳本,具體的腳本內容和使用請參考:Hadoop集群啟停腳本

  • 3.查看namenode的活躍狀態
zkServer.sh status

五、HA腳本分享?

腳本名字是myHA.sh,功能是實現一鍵啟動和停止Zookeeper和Hdfs,查看zookeeper狀態.

#! /bin/bash
if [ $# -lt 1 ]
thenecho "No Args Input..."exit;
ficase $1 in
"start"){echo "----------啟動zookeeper----------"for i in hadoop102 hadoop103 hadoop104doecho ---------- zookeeper $i 啟動 ------------ssh $i "/opt/module/HA/zookeeper/bin/zkServer.sh start"doneecho "---------- 啟動hdfs------------"ssh hadoop102 "/opt/module/HA/hadoop-3.1.3/sbin/start-dfs.sh"echo "---------- hadoop HA啟動成功------------"
};;
"stop"){echo "----------關閉hdfs----------"ssh hadoop102 "/opt/module/HA/hadoop-3.1.3/sbin/stop-dfs.sh"echo "----------關閉zookeeper----------"for i in hadoop102 hadoop103 hadoop104doecho ---------- zookeeper $i 停止 ------------ssh $i "/opt/module/HA/zookeeper/bin/zkServer.sh stop"doneecho "---------- hadoop HA停止成功------------"
};;
"status"){for i in hadoop102 hadoop103 hadoop104doecho ---------- zookeeper $i 狀態 ------------    ssh $i "/opt/module/HA/zookeeper/bin/zkServer.sh status"done
};;
*)echo "Input Args Error"
;;
esac

七、結語💕

😎 本文主要講解了如何搭建Hdfs的高可用(HA),后期還會出加上Yarn的高可用教程,大家可以期待一下哦!😊

? 這就是今天要分享給大家的全部內容了,我們下期再見!😊

🍻 世間所有的相遇,都是久別重逢~ 😍

🏠 我在CSDN等你哦!😍

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

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

相關文章

Notes數據直接在Excel中統計

大家好&#xff0c;才是真的好。 我希望你看過前面兩篇內容《Domino REST API安裝和運行》和《Domino REST API安裝和運行》&#xff0c;因為今天我們正是使用REST API方式在Excel中查詢和統計Notes數據。 不過首先你得知道一個OData協議&#xff0c;全名Open Data Protocol(…

五花八門客戶問題(BUG) - 用好strace2

目錄 前言 strace與gdb的沖突 細看strace 前言 上文通過strace trace它自個看到了strace的原理:確實是調用了ptrace函數實現的。今天我們再細看一看。 strace與gdb的沖突 既然它兩底層都是用ptrace,那么一定不能同時用在同一個進程上。實例驗證: [root]# strace sleep…

布隆過濾器,Redis之 bitmap,場景題【如果微博某個大V發了一條消息,怎么統計有多少人看過了】

文章目錄 一、什么是 bitmap1-1、Bitmap 相關命令二、bitmap 和 set 對比2-1、數據準備2-2、內存對比2-3、性能對比三、布隆過濾器3-1、理論主要作用如何將數據放到過濾器內呢?注意事項布隆過濾器 有兩個重要的參數3-2、代碼實現3-3、Java中的hash函數最近面試,面試官問了一個…

Windows系統Java開發環境安裝

總結一下Java軟件開發工程師常見的環境的安裝&#xff0c;僅限Windows環境。 以下下載鏈接均來自官網&#xff0c;網絡條件自己克服。 目錄 1. JDKJDK Oracle 官網下載地址配置系統環境變量 2. Mavenapache maven 官網地址本地倉庫和中央倉庫配置配置系統環境變量 3. GitGit 官…

springboot3 liquibase SQL執行失敗自動回滾,及自動打tag

一&#xff1a; 自動執行回滾&#xff0c; 已執行成功的忽略&#xff0c;新sql執行失敗則執行新sql文件中的回滾sql pom.xml <dependency> <groupId>org.liquibase</groupId> <artifactId>liquibase-core</artifactId> <version>4.25.0&…

【工廠方法】設計模式項目實踐

前言 以采集數據處理邏輯為例&#xff0c;數據采集分為不同種類如&#xff1a;MQTT、MODBUS、HTTP等&#xff0c;不同的采集數據有不同的解析處理邏輯。但總體解析處理步驟是固定的。可以使用工廠方法設計模式簡化代碼&#xff0c;讓代碼變得更加優雅。 代碼實踐 抽象類 總體…

分布式環境下的session 共享-基于spring-session組件和Redis實現

1、問題概述 不是所有的項目都是單機模式的&#xff0c;當一個項目服務的局域比較廣&#xff0c;用戶體量比較大&#xff0c;數據量較大的時候&#xff0c;我們都會將項目部署到多臺服務器上&#xff0c;這些個服務器都是分布在不同的區域&#xff0c;這樣實現了項目的負載和并…

Redis有序集合對象

一.編碼 有序集合的編碼可以是ziplist或者skiplist。 ziplist編碼的有序集合對象使用壓縮列表作為底層實現&#xff0c;每一個集合元素使用緊挨在一起的兩個壓縮列表節點來保存。第一個節點保存元素的成員(member)&#xff0c;而第二個元素則保存元素的分值(score)。 127.0.0.…

鴻蒙app獲取文本控件按鈕控件_修改控件名稱_按鈕觸發事件_提示信息顯示

鴻蒙app獲取文本控件按鈕控件_修改控件名稱_按鈕觸發事件_ 點擊啟動&#xff1a;提示信息顯示 package com.example.myapplication.slice;import com.example.myapplication.ResourceTable; import ohos.aafwk.ability.AbilitySlice; import ohos.aafwk.content.Intent; impor…

12.1電梯控制器——文檔記錄

《數字邏輯》實驗報告 實驗名稱 項目三 電梯控制器設計 一、實驗目的 設計一個多樓層的電梯控制器系統&#xff0c;并能在開發板上模擬電梯運行狀態。可以利用按鍵作為呼叫按鍵&#xff0c;數碼管顯示電梯運行時電梯所在樓層&#xff0c;led燈顯示樓層叫梯狀態。 二、實…

太良心了!微軟面向初學者,開源機器學習、數據科學、AI、LLM

大家好&#xff0c;推薦幾個質量上乘且完全免費的微軟開源課程&#xff0c;由粉絲小伙伴梳理&#xff0c;分享給大家。 文末可以加我們粉絲群 面向初學者的機器學習課程 ML for beginners banner 地址&#xff1a;https://microsoft.github.io/ML-For-Beginners/#/ 學習經典…

[Linux] Web基礎知識與http協議

一、HTML 1.1 HTML 的概念 HTML被稱為超文本標記語言。 它是規范和標準. 它通過標記符號來標記網頁中出現的各個部分。網頁文件本身就是一種文本文件。 通過向文本文件添加標記&#xff0c;您可以告訴瀏覽器如何顯示其中的內容。 HTML命令可以描述文本、圖形、動畫、聲音、表格…

講解把一個文件夾里面的內容復制到另一個文件夾中的操作

&#x1f38a;專欄【Java小練習】 &#x1f354;喜歡的詩句&#xff1a;天行健&#xff0c;君子以自強不息。 &#x1f386;音樂分享【如愿】 &#x1f384;歡迎并且感謝大家指出小吉的問題&#x1f970; 文章目錄 &#x1f354;需求?思路?代碼?效果 &#x1f384;如果要復制…

Vue3:表格單元格內容由:圖標+具體內容 構成

一、背景 在Vue3項目中&#xff0c;想讓單元格的內容是由 &#xff1a;圖標具體內容組成的&#xff0c;類似以下效果&#xff1a; 二、圖標 Element-Plus 可以在Element-Plus里面找是否有符合需求的圖標iconfont 如果Element-Plus里面沒有符合需求的&#xff0c;也可以在這…

MySQL 數據庫操作指南:LIMIT,OFFSET 和 JOIN 的使用

限制結果 您可以通過使用"LIMIT"語句來限制查詢返回的記錄數量。以下是一個示例&#xff0c;獲取您自己的Python服務器中"customers"表中的前5條記錄&#xff1a; import mysql.connectormydb mysql.connector.connect(host"localhost",user&…

Proteus仿真--基于NM24C08的EEPROM仿真設計

本文介紹基于NM24C08的EEPROM仿真設計&#xff08;完整仿真源文件及代碼見文末鏈接&#xff09; 其中NM24C08是標準的2線總線接口的串行EEPROM&#xff0c;開機畫面在LCD12864上顯示 仿真圖如下 仿真運行視頻 Proteus仿真--基于NM24C08的EEPROM仿真設計 附完整Proteus仿真資料…

零一萬物模型折騰筆記:官方 Yi-34B 模型基礎使用

當爭議和流量都消失后&#xff0c;或許現在是個合適的時間點&#xff0c;來拋開情緒、客觀的聊聊這個 34B 模型本身&#xff0c;尤其是實踐應用相關的一些細節。來近距離看看這個模型在各種實際使用場景中的真實表現和對硬件的性能要求。 或許&#xff0c;這會對也想在本地私有…

Docker本地部署Drupal內容管理框架并實現公網遠程訪問

文章目錄 前言1. Docker安裝Drupal2. 本地局域網訪問3 . Linux 安裝cpolar4. 配置Drupal公網訪問地址5. 公網遠程訪問Drupal6. 固定Drupal 公網地址7. 結語 前言 Dupal是一個強大的CMS&#xff0c;適用于各種不同的網站項目&#xff0c;從小型個人博客到大型企業級門戶網站。它…

bat腳本之findstr

findstr 是 Windows 操作系統中用于文本搜索的命令&#xff0c;它可以在文件中查找指定的字符串或正則表達式&#xff0c;并輸出匹配的行或行號。findstr 命令可以在命令提示符下直接使用&#xff0c;也可以在批處理腳本中嵌套使用。 以下是 findstr 命令的基本語法&#xff1…

使用條件格式突出顯示單元格數據-sdk

使用條件格式突出顯示單元格數據 2023 年 12 月 6 日 根據數據值將視覺提示應用于特定單元格、行或列&#xff0c;從而更輕松地識別模式和趨勢。 網格中的條件格式允許用戶根據單元格或范圍包含的數據將視覺樣式應用于單元格或范圍。它通過以數據驅動的方式突出顯示關鍵值、異常…