Hadoop大數(shù)據(jù)平臺構建與應用教程 課件 項目六 Hadoop高可用集群搭建_第1頁
Hadoop大數(shù)據(jù)平臺構建與應用教程 課件 項目六 Hadoop高可用集群搭建_第2頁
Hadoop大數(shù)據(jù)平臺構建與應用教程 課件 項目六 Hadoop高可用集群搭建_第3頁
Hadoop大數(shù)據(jù)平臺構建與應用教程 課件 項目六 Hadoop高可用集群搭建_第4頁
Hadoop大數(shù)據(jù)平臺構建與應用教程 課件 項目六 Hadoop高可用集群搭建_第5頁
已閱讀5頁,還剩87頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

項目六Hadoop高可用集群搭建CONTENTS目錄01

項目導讀02

知識目標03

技能目標04

素質(思政)目標CONTENTS目錄05

任務一Linux、Java、Zookeeper配置06

任務二HadoopHA配置07

項目總結08

項目考核項目導讀01項目導讀Hadoop高可用性HA在Hadoop2.0之前,NameNode是HDFS集群中的單點故障(SPOF)。每個集群只有一個NameNode,如果該計算機或進程不可用,則整個集群將不可用,直到NameNode重新啟動或在單獨的計算機上啟動,Yarn也有類似問題。Hadoop高可用性HA(HighAvailability)通常來描述一個系統(tǒng)經過專門的設計,從而減少停工時間,而保持其服務的高度可用性。Hadoop高可用(HighAvailability)分為HDFS高可用和YARN高可用,兩者的實現(xiàn)基本類似知識目標02知識目標

了解密鑰公鑰

了解HA產生的背景

熟悉HA原理

熟悉HDFSHA架構圖

熟悉YarnHA架構圖技能目標03技能目標

掌握HadoopHA集群規(guī)劃

掌握JDK安裝

掌握SSH免密登錄

掌握HadoopHA集群配置

掌握HadoopHA集群啟動和關閉素質(思政)目標04素質(思政)目標

培養(yǎng)嚴謹細致的工匠精神

厚植技術報國夢

培養(yǎng)不驕不躁的工匠心態(tài)

培養(yǎng)保密意識

培養(yǎng)網(wǎng)絡安全意識任務一Linux、Java、Zookeeper配置05任務工單任務描述

在做Hadoop高可用配置之前,須先做一些鋪墊,配置Linux環(huán)境、JDK環(huán)境、zookeeper環(huán)境任務工單:任務準備

01全班學生以4人左右為一組,各組選出組長。請組長組織組員查找相關資料,并組織討論和匯總

02問題1:Linux的hosts文件有什么作用?如何配置

03問題2:Linux環(huán)境變量配置文件在哪?如何配置

04問題3:什么是SSH免密登錄

05問題4:Zookeeper有什么作用必備知識技能:一、ZooKeeper在HadoopHA中的作用

ZooKeeper在分布式系統(tǒng)中的應用ZooKeeper能解決大多數(shù)分布式系統(tǒng)中的問題,如可以通過創(chuàng)建臨時節(jié)點來建立心跳監(jiān)測機制。如果分布式系統(tǒng)的某個服務節(jié)點宕機了,則其持有的會話會超時,此時該臨時節(jié)點會被刪除,相應的監(jiān)聽事件就會被觸發(fā)。分布式系統(tǒng)的每個服務節(jié)點還可以將自己的節(jié)點狀態(tài)寫入臨時節(jié)點,從而完成狀態(tài)報告或節(jié)點工作進度匯報。通過數(shù)據(jù)的訂閱和發(fā)布功能,ZooKeeper還能對分布式系統(tǒng)進行模塊的解耦和任務的調度。通過監(jiān)聽機制,還能對分布式系統(tǒng)的服務節(jié)點進行動態(tài)上下線,從而實現(xiàn)服務的動態(tài)擴容必備知識技能:二、OpenJDK與JDK比較開放性OpenJDK是一個開放源代碼的Java開發(fā)工具包,由Oracle公司主導并以GPL許可證發(fā)布。它的源代碼是公開可用的,任何人都可以查看、修改和分發(fā)。而JDK(JavaDevelopmentKit)是Oracle公司提供的Java開發(fā)工具包,它不是開源的,源代碼不公開許可證OpenJDK使用GPL許可證,這意味著使用OpenJDK開發(fā)的軟件必須遵守GPL的規(guī)定,包括將源代碼公開并保持開源。而JDK使用OracleBinaryCodeLicense許可證,這意味著使用JDK開發(fā)的軟件不需要公開源代碼,但需要遵守許可證的其他規(guī)定OpenJDK與JDK對比除了這些主要區(qū)別外,OpenJDK和JDK在功能上基本上是相同的,都提供了Java編譯器(javac)、Java虛擬機(JVM)和Java標準庫等開發(fā)工具和運行時環(huán)境。這兩個工具包都可以用于開發(fā)和運行Java應用程序,只是在許可證和開放性上有所不同必備知識技能:三、HadoopHA存在的背景

HDFSHA解決方案Hadoop2.0之前,在HDFS集群中NameNode存在單點故障(SPOF),對于只有一個NameNode的集群,若NameNode出現(xiàn)故障,則整個集群將無法使用,直到NameNode重啟。NameNode主要在以下兩個方面影響集群:NameNode機器出現(xiàn)意外,如宕機,集群將無法使用,直到管理員重啟。NameNode機器需要升級,包括軟件、硬件升級,此時集群也將無法使用。HDFSHA功能通過Active/Standby兩個NameNodes實現(xiàn)集群中對NameNode的熱備來解決上述問題。如出現(xiàn)故障,此時NameNode很快切換到另外一臺機器上任務實施:一、Linux配置步驟1:修改主機名。切換到root,分別在3臺虛擬機上執(zhí)行如下命令hostnamectlset-hostnamemasterhostnamectlset-hostnamehadoop1hostnamectlset-hostnamehadoop2步驟2:修改hosts文件,分別在3臺虛擬機上編輯hosts文件,命令為vim/etc/hosts任務實施:一、Linux配置

hosts文件內容為

0master

hadoop1

hadoop2任務實施:二、SSH免密登錄配置

三虛擬機互免密登錄配置在主機名為master、hadoop1、hadoop2的虛擬機上面配置,實現(xiàn)3臺虛擬機之間兩兩互相免密登錄步驟1:所有虛擬機。清空原來的。ssh文件,并給每臺機器創(chuàng)建公鑰和密鑰以及自我免密登錄SSHKeyGenerationcd/root;rm-rfhd?.pub;rm-rf.ssh;ssh-keygen-trsaSSHKeySetupcd.ssh;catid_rsa.pub>>authorized_keys;chmod600*步驟2:master上操作。把master的公鑰分發(fā)給hadoop1和hadoop2scpid_rsa.pubhadoop1:root/hd1.pub任務實施:二、SSH免密登錄配置scpid_rsa.pubhadoop2:root/hd1.pub步驟3:hadoop1上操作。把hadoop1的公鑰分發(fā)給master和hadoop2scpid_rsa.pubmaster:root/hd2.pubscpid_rsa.pubhadoop2:root/hd2.pub步驟4:hadoop2上操作。把hadoop2的公鑰分發(fā)給master和hadoop1scpid_rsa.pubmaster:root/hd3.pub任務實施:二、SSH免密登錄配置

scpid_rsa.pubhadoop1:root/hd3.pub單擊此處添加項正文

步驟5master上操作。追加hd2.pub、hd3.pub到master的authorized_keys文件里

cat/root/hd2.pub>authorized_keys單擊此處添加項正文

cat/root/hd3.pub>authorized_keys單擊此處添加項正文

步驟6hadoop1上操作。追加hd1.pub、hd3.pub到hadoop1的authorized_keys文件里

cat/root/hd1.pub>authorized_keys單擊此處添加項正文任務實施:二、SSH免密登錄配置

cat/root/hd3.pub>authorized_keys單擊此處添加項正文

步驟7hadoop2上操作。追加hd1.pub、hd2.pub到hadoop2的authorized_keys文件里

cat/root/hd1.pub>authorized_keys單擊此處添加項正文

cat/root/hd2.pub>authorized_keys單擊此處添加項正文

步驟8:驗證免密登錄成功單擊此處添加項正文

master上操作單擊此處添加項正文任務實施:二、SSH免密登錄配置

sshhadoop1;hostname;exit

sshhadoop2;hostname;exit

hadoop1上操作

sshmaster;hostname;exit

sshhadoop2;hostname;exit任務實施:二、SSH免密登錄配置hadoop2上操作sshmaster;hostname;exitsshhadoop2;hostname;exit任務實施:三、JDK配置(3臺虛擬機上都做一遍)

配置JDK在LinuxLinux上一般會安裝OpenJDK,配置JDK之前先卸載掉OpenJDK,卸載以后再安裝相應版本的JDK,并配置環(huán)境變量步驟1卸載系統(tǒng)自帶的OpenJDK以及相關的java文件。在終端命令窗口鍵入:java-version可以看到系統(tǒng)自帶的OpenJDK版本信息,如圖6-1-1步驟2:查看OpenJDK自帶Java文件在終端命令窗口鍵入rpm-qa|grepjava可以看到系統(tǒng)自帶的OpenJDKJava相關文件,如圖6-1-2任務實施:三、JDK配置(3臺虛擬機上都做一遍)

上圖文件中,下面這幾個可以刪除JavaOpenJDK02java-1.8.0-openjdk-headless-02-4.b14.el7.x86_64java-1.7.0-openjdk-11-.el7.x86_64java-1.8.0-openjdk-02-4.b14.el7.x86_64JavaOpenJDK1.7.0Update111java-1.7.0-openjdk-headless-11-.el7.x86_64noarch文件可以不用刪除任務實施:三、JDK配置(3臺虛擬機上都做一遍)

python-javapackages-3.4.1-11.el7.noarchtzdata-java-2016g-2.el7.noarchjavapackages-tools-3.4.1-11.el7.noarch步驟3:刪除OpenJDK自帶Java文件,在終端命令窗口鍵入UninstallJavaOpenJDKrpm-e--nodepsjava-1.7.0-openjdk-11-.el7.x86_64卸載OpenJDK1.8rpm-e--nodepsjava-1.8.0-openjdk-02-4.b14.el7.x86_64任務實施:三、JDK配置(3臺虛擬機上都做一遍)

卸載Java1.8rpm-e--nodepsjava-1.8.0-openjdk-headless-02-4.b14.el7.x86_64UninstallJavaOpenJDKrpm-e--nodepsjava-1.7.0-openjdk-headless-11-.el7.x86_64步驟4:檢查是否已經刪除成功,在命令窗口鍵入java-version如圖6-1-3所示,代表Linux系統(tǒng)自帶的OpenJDK已經刪除成功了注:如果還沒有刪除,則用yum-yremove去刪除他們任務實施:三、JDK配置(3臺虛擬機上都做一遍)

步驟5拷貝JDK,把事先下載好的JDK安裝包用拖拽的方式,拷貝進/usr/local/src目錄下(安裝的JDK版本和IDEA里面的配置一樣,因為IDEA自帶JDK11)步驟6:解壓JDK,把事先下載好的JDK安裝包用拖拽的方式,在命令窗口鍵入tar-zxvfjdk-8u144-linux-x64.tar.gz步驟7:刪除JDK壓縮包,在命令行鍵入rm-rfjdk-8u144-linux-x64.tar.gz至此,usr/local/src目錄下就有一個JDK的目錄任務實施:三、JDK配置(3臺虛擬機上都做一遍)

步驟8:配置JDK環(huán)境變量,在命令行鍵入vim/etc/profile粘貼內容至文檔末尾進入文本編輯狀態(tài)下,光標走到文件最后一行,鍵盤按下字母i,進入插入狀態(tài),在文本的最后一行粘貼如下內容#javaenvironmentexportJAVA_HOME=/usr/local/src/jdk1.8.0_221SettingJavaClasspathexportCLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar任務實施:三、JDK配置(3臺虛擬機上都做一遍)單擊此處添加正文

exportPATH=$PATH:${JAVA_HOME}/bin

步驟9:讓剛剛設置的環(huán)境變量生效,在命令行鍵入

source/etc/profile

步驟10:檢查java是否配置成功,在命令行鍵入任務實施:三、JDK配置(3臺虛擬機上都做一遍)

命令執(zhí)行結果如圖6-1-4,即為java配置成功任務實施:四、Zookeeper配置

確保3臺虛擬機上的Zookeeper安裝配置成功,分別在3臺虛擬機上啟動Zookeeper步驟1:該步驟3臺機器上均操作。進入Zookeeper家目錄,在命令窗口鍵入bin/zkServer.shstart;bin/zkServer.shstatusZookeeper啟動流程解析Zookeeper在大多數(shù)節(jié)點存活下才會有效。所以啟動第一臺的時候,會報錯,等三個節(jié)點都啟動完畢之后,就會正常了。正常啟動如圖6-1-5任務二HadoopHA配置06任務工單:任務描述

HDFS和Yarn高可用配置目前3臺虛擬機上的Linux、JDK、zookeeper環(huán)境已經配置好了,現(xiàn)在我們需要實現(xiàn)HDFS和yarn的高可用,HDFSNamenode節(jié)點備份,yarn的ResourceManager節(jié)點備份任務工單:任務準備01全班學生以4人左右為一組,各組選出組長。請組長組織組員查找相關資料,并組織討論和匯總02問題1:什么是高可用03問題2:HDFSHA實現(xiàn)有什么思路04問題3:YarnHA實現(xiàn)有什么思路05問題4:如果3臺虛擬機里面的1臺宕機,Hadoop集群是否能正常提供服務必備知識技能:一、基于QJM的HAHadoopQJMHA方案解析Hadoop2.x之后,Cloudera提出了QJM(QuorumJournalManager)的HA方案。這是一個基于Paxos算法(分布式一致性算法)實現(xiàn)的HDFSHA方案,主要優(yōu)勢如下:不需要配置額外的高性能共享存儲,降低了系統(tǒng)復雜度和維護成本。消除SPOF(單點故障),系統(tǒng)魯棒性(Robust)的程度可配置、可擴展?;驹恚菏褂?N+1臺JournalNode存儲EditLog,每次寫數(shù)據(jù)操作有〉=N+1返回成功時即認為該次寫成功,保證數(shù)據(jù)不會丟失高可用方案NN狀態(tài)說明如圖6-2-1,高可用方案中NN有〉=2個,只有一個是Active狀態(tài),表示正在對外提供服務的,是活躍的NN,其他的NN是StandBy狀態(tài),不對外提供服務的,隨時準備替換ActiveNNJournalNode(JN)高效的存儲系統(tǒng),能夠實現(xiàn)數(shù)據(jù)的超快速寫入與讀取。JN是一個小的文件系統(tǒng)集群,節(jié)點數(shù)需要是2N+1臺。當ActiveNN執(zhí)行任何命名空間修改時,它會持續(xù)地將修改記錄到大多數(shù)這些JN上。StandByNN實時讀取JN內部的數(shù)據(jù),實現(xiàn)兩個節(jié)點的實時元數(shù)據(jù)同步。JournalNode需要配置hdfs-site.xml里面的node.shared.edits.dir和dfs.journalnode.edits.dir這兩個參數(shù)。配置示例如下必備知識技能:一、基于QJM的HA

<property>QJournalConfiguration<name>node.shared.edits.dir</name><value>qjournal://:8485;:8485;:8485/mycluster</value></property><property><name>dfs.journalnode.edits.dir</name><value>path/to/journal/node/local/data</value>必備知識技能:一、基于QJM的HA</property>單擊此處添加項正文JournalNodes集群同步機制node.shared.edits.dir:JournalNodes地址,由JournalNodes集群提供共享的編輯存儲,由ActiveNN寫入,由StandbyNN讀取,以保持與ActiveNN所做的所有文件系統(tǒng)更改同步JournalNode狀態(tài)路徑配置dfs.journalnode.edits.dir:JournalNode守護進程存儲本地狀態(tài)的路徑。JournalNode機器上的絕對路徑且只能配置一個路徑必備知識技能:二、基于共享NFS的HA

與QJM的區(qū)別是使用高性能共享存儲HDFS的元數(shù)據(jù),但只有ActiveNN才能寫,StandbyNN只能讀。配置如下遠程共享編輯目錄設置node.shared.edits.dir:遠程共享編輯目錄的路徑,備用NN使用同一個目錄,以保持與ActiveNN所做的所有文件系統(tǒng)更改同步。這個目錄應該以r/w的方式掛載在NN機器上,且需要配置為絕對路徑<property><name>node.shared.edits.dir</name><value>filemnt/filer1/dfs/ha-name-dir-shared</value></property>必備知識技能:三、HDFSHA自動切換

01HDFSHA自動切換HA自動切換NN,需要增加兩個新的組件:ZooKeeper集群和ZKFailoverController進程(簡稱ZKFC)。集群啟動〉=2個NN,每個NN都會有一個ZKFC,每個ZKFC到ZooKeeper上的lock節(jié)點下創(chuàng)建臨時有序的子節(jié)點,節(jié)點編號最小的為ActiveNN。其他變?yōu)閟tandby的ZKFC會監(jiān)控lock節(jié)點(若節(jié)點發(fā)生變化,表示Active出現(xiàn)異常)ZKFC的作用是監(jiān)視和管理NN的狀態(tài),管理與ZK的會話,并在activeNN不可用時,啟動基于ZK的選舉

02ZK集群的作用失敗保護——集群中的每個NN機器在ZooKeeper中維護一個持久的會話。如果機器崩潰,ZooKeeper會話將過期,通知其他NN應該觸發(fā)故障轉移NN主動選舉——ZooKeeper提供了一種簡單的機制,專門選舉一個節(jié)點為Active。如果當前ActiveNN崩潰,另一個節(jié)點可能會在ZooKeeper中獲得一個特殊的排他鎖,指示它應該成為下一個ActiveNN防腦裂:ZK本身是強一致和高可用的,可以用它來保證同一時刻只有一個活動節(jié)點必備知識技能:三、HDFSHA自動切換

ZKFC的作用

健康檢測:ZKFC通過向本地NN發(fā)送RPC健康檢查請求來監(jiān)控其狀態(tài)。只要NN以健康狀態(tài)及時響應,ZKFC就認為該節(jié)點是健康的。如果節(jié)點已崩潰、凍結或以其他方式進入不正常狀態(tài),運行狀況監(jiān)視器將其標記為不正常狀態(tài),并觸發(fā)回調ZKFailoverController進行自動主備切換

ZK會話管理:當本地NN處于健康狀態(tài)時,ZKFC在ZooKeeper中保持一個會話打開。如果本地NN是Active,它還持有一個特殊的“鎖”znode。這個鎖使用了ZooKeeper對臨時節(jié)點的支持;如果會話超時,鎖節(jié)點將被自動刪除

基于ZK的選舉:如果本地NN是健康的,并且ZKFC看到當前沒有其他節(jié)點持有鎖znode,它自己將嘗試獲取鎖。如果它成功了,那么它就“贏得了選舉”,并負責運行故障轉移以使其本地NN處于Active必備知識技能:三、HDFSHA自動切換

3.故障轉移過程ActiveNN異常檢測當ActiveNameNode(NN)出現(xiàn)異常(如崩潰、假死)時,其本地的ZKFC會通過RPC健康檢查(而非簡單的ping)檢測到問題。健康檢查包括監(jiān)控NN進程狀態(tài)、磁盤空間、編輯日志完整性等。如果ZKFC檢測到NN異常,它會主動釋放ZooKeeper上的臨時節(jié)點(通過刪除節(jié)點或讓ZooKeeper會話過期)。如果ActiveNN直接崩潰,ZKFC進程也可能崩潰,此時ZooKeeper會話超時,臨時節(jié)點自動消失StandbyZKFC響應節(jié)點變化StandbyNN的ZKFC一直監(jiān)視ZooKeeper上的臨時節(jié)點。當臨時節(jié)點消失時,ZKFC會檢測到這個變化(即“斷開信息”),并開始嘗試搶占鎖(即創(chuàng)建新的臨時節(jié)點),通知StandbyNN隔離(Fencing)操作StandbyZKFC根據(jù)配置的隔離方法(如SSHfencing)遠程登錄到原始ActiveNN節(jié)點,并強行kill掉NN進程搶占鎖和狀態(tài)轉換StandbyZKFC在確保隔離成功后,會在ZooKeeper上搶占臨時節(jié)點(創(chuàng)建新的臨時節(jié)點)。如果搶占成功,ZKFC將本地的StandbyNN轉換為Active狀態(tài)。通知StandbyZKFC搶占ZooKeeper上的臨時節(jié)點,搶占成功,將狀態(tài)從standby變?yōu)閍ctive必備知識技能:三、HDFSHA自動切換原始ActiveNN恢復后的行為

當原始ActiveNN恢復后,其ZKFC會重新連接到ZooKeeper,并在選舉節(jié)點下創(chuàng)建臨時有序子節(jié)點。如果該節(jié)點編號不是最小的,它就不會成為Active,而是作為StandbyNN6-2-2HA自動切換必備知識技能:三、HDFSHA自動切換

觸發(fā)HDFSNN自動切換的場景如圖6-2-2,HA自動切換ActiveNNJVM崩潰:ActiveNN不能及時響應ZKFC的健康檢測命令,HealthMonitor會觸發(fā)狀態(tài)遷移SERVICE_NOT_RESPONDING,然,ActiveNN上的ZKFC會斷開與ZK的連接,StandbyNN上的ZKFC會獲得ActiveLock,作,隔離后成為ActiveNNActiveNNJVM凍結:這個是JVM沒崩潰,但也無法響應,同崩潰一樣,會觸發(fā)自動切換ActiveNN機器宕機:此時ActiveStandbyElector會失去同ZK的心跳,會話超時,StandbyNN上的ZKFC會通知ZK刪除ActiveNN的活動鎖,作相應隔離后完成主備切換ActiveNN健康狀態(tài)異常:此時ealthMonitor會收到一個HealthCheckFailedException,并觸發(fā)自動切換ActiveZKFC崩潰:雖然ZKFC是一個獨立的進程,但因設計簡單也容易出問題,一旦ZKFC進程掛掉,雖然此時NN是OK的,但系統(tǒng)也認為需要切換,此時StandbyNN會發(fā)一個請求到ActiveNN要求ActiveNN放棄主結點位置,ActiveNN收到請求后,會觸發(fā)完成自動切換ZooKeeper崩潰:如果ZK崩潰了,主備NN上的ZKFC都會感知斷聯(lián),此時主備NN會進入一個中立(NeutralMode)模式,同時不改變主備NN的狀態(tài),繼續(xù)發(fā)揮作用,只不過此時,如果ANN也故障了,那集群無法發(fā)揮Failover,也,就不可用了,所以對于此類場景,ZK一般是不允許太多臺崩潰,至少要有N/2+1臺保持服務才算是安全的任務實施:一、集群規(guī)劃

HadoopHA集群架構整個HadoopHA集群由3臺虛擬機組成,主機名分別為master、hadoop1、hadoop2。其中NameNode部署在master和hadoop1上面,互為備份,實現(xiàn)HDFS的高可用,ResourceManager部署在hadoop1和hadoop2上面,互為備份,實現(xiàn)Yarn的高可用,如表6-2-1任務實施:二、Hadoop安裝(3臺虛擬機上均做一遍)單擊此處添加正文步驟1把提前下載好的Hadoop安裝包“hadoop-2.7.3.tar.gz”拷貝到/usr/local/src目錄下注意:如果之前Hadoop安裝好了,本步驟可以省略單擊此處添加項正文步驟2:解壓。在命令窗口鍵入單擊此處添加項正文tar-zxvfhadoop-2.7.3.tar.gz單擊此處添加項正文注意:如果之前Hadoop安裝好了,本步驟可以省略單擊此處添加項正文步驟3:創(chuàng)建目錄。在/usr/local/src目錄下創(chuàng)建目錄ha單擊此處添加項正文任務實施:二、Hadoop安裝(3臺虛擬機上均做一遍)

mkdirha步驟4:拷貝Hadoop目錄到ha目錄下。在/usr/local/src目錄下執(zhí)行cp-rhadoop-2.7.3.ha步驟5配置環(huán)境變量,進入hadoopha主目錄,復制絕對路徑/usr/local/src/ha/hadoop-2.7.3步驟6:編輯全局變量,在命令行鍵入vim/etc/profile任務實施:二、Hadoop安裝(3臺虛擬機上均做一遍)在最后添加以下代碼#HadoopenvironmentexportHADOOP_HOME=/usr/local/src/ha/hadoop-2.7.3exportPATH=$PATH:${HADOOP_HOME}/binexportPATH=$PATH:${HADOOP_HOME}/sbin步驟7:讓修改后的profile文件生效任務實施:二、Hadoop安裝(3臺虛擬機上均做一遍)

source/etc/profile

步驟8:測試是否安裝成功,在命令行鍵入

hadoopversion

結果如圖6-2-3即安裝成功

注意:如果之前Hadoop安裝好了,本步驟可以省略任務實施:三、核心文件配置(3臺虛擬機上均做一遍)

步驟1Hadoopha配置文件路徑為:usr/local/src/ha/hadoop-2.7.3/etc/hadoop,進入該目錄cd/usr/local/src/ha/hadoop-2.7.3/etc/hadoop步驟2配置hadoop-env.sh。Linux系統(tǒng)中使用命令“echo$JAVA_HOME”獲取JDK的安裝路徑,修改JAVA_HOME路徑exportJAVA_HOME=/usr/local/src/jdk1.8.0_221步驟3配置core-site.xml。使用vim工具編輯core-site.xml文件,在該文件中編寫如下配置<configuration>任務實施:三、核心文件配置(3臺虛擬機上均做一遍)

<!--把兩個NameNode)的地址組裝成一個集群mycluster-->

<property>

<name>fs.defaultFS</name>

<value>hdfs://mycluster</value>

</property>

<!--指定hadoop運行時產生文件的存儲目錄-->任務實施:三、核心文件配置(3臺虛擬機上均做一遍)

<property>單擊此處添加項正文

<name>hadoop.tmp.dir</name>單擊此處添加項正文

tmp目錄路徑<value>usr/local/src/ha/hadoop-2.7.3/data/tmp</value>

</property>單擊此處添加項正文

<property>單擊此處添加項正文

<name>ha.zookeeper.quorum</name>單擊此處添加項正文任務實施:三、核心文件配置(3臺虛擬機上均做一遍)<value>master2181,hadoop1:2181,hadoop2:2181</value></property>單擊此處添加項正文</configuration>單擊此處添加項正文步驟4配置hdfs-site.xml。使用vim工具編輯hdfs-site.xml文件,在該文件中編寫如下配置<configuration>單擊此處添加項正文<!--完全分布式集群名稱-->單擊此處添加項正文任務實施:三、核心文件配置(3臺虛擬機上均做一遍)

<property>

<name>services</name>

<value>mycluster</value>

</property>

<!--集群中NameNode節(jié)點都有哪些-->

<property>任務實施:三、核心文件配置(3臺虛擬機上均做一遍)單擊此處添加正文<name>nodes.mycluster</name>單擊此處添加項正文<value>nn1,nn2</value>單擊此處添加項正文</property>單擊此處添加項正文<!--nn1的RPC通信地址-->單擊此處添加項正文<property>單擊此處添加項正文rpc-address.mycluster.nn1配置<name>node.rpc-address.mycluster.nn1</name>任務實施:三、核心文件配置(3臺虛擬機上均做一遍)

01<value>master:9000</value>單擊此處添加項正文

02</property>單擊此處添加項正文

03<!--nn2的RPC通信地址-->單擊此處添加項正文

04<property>單擊此處添加項正文

05rpc-address.mycluster.nn2<name>node.rpc-address.mycluster.nn2</name>

06<value>hadoop1:9000</value>單擊此處添加項正文任務實施:三、核心文件配置(3臺虛擬機上均做一遍)01</property>單擊此處添加項正文02<!--nn1的http通信地址-->單擊此處添加項正文03<property>單擊此處添加項正文04HTTPAddressConfiguration<name>node.http-address.mycluster.nn1</name>05<value>master:50070</value>單擊此處添加項正文06</property>單擊此處添加項正文任務實施:三、核心文件配置(3臺虛擬機上均做一遍)

<!--nn2的http通信地址--><property>node.http-address.mycluster.nn2<name>node.http-address.mycluster.nn2</name><value>hadoop1:50070</value></property><!--指定NameNode元數(shù)據(jù)在JournalNode上的存放位置-->任務實施:三、核心文件配置(3臺虛擬機上均做一遍)

<property><name>node.shared.edits.dir</name><value>qjournal//master:8485;hadoop1:8485;hadoop2:8485/mycluster</value></property><!--配置隔離機制,即同一時刻只能有一臺服務器對外響應--><property>任務實施:三、核心文件配置(3臺虛擬機上均做一遍)<name>dfs.ha.fencing.methods</name><value>sshfence</value></property><!--使用隔離機制時需要ssh免密登錄--><property><name>dfs.ha.fencing.ssh.private-key-files</name>任務實施:三、核心文件配置(3臺虛擬機上均做一遍)單擊此處添加正文<value>root/ssh/id_rsa</value>單擊此處添加項正文</property>單擊此處添加項正文<!--聲明journalnode服務器存儲目錄-->單擊此處添加項正文<property>單擊此處添加項正文<name>dfs.journalnode.edits.dir</name>單擊此處添加項正文hadoop-2.7.3datapath<value>usr/local/src/ha/hadoop-2.7.3//data/jn</value>任務實施:三、核心文件配置(3臺虛擬機上均做一遍)</property><!--關閉權限檢查--><property><name>dfs.permissions.enable</name><value>false</value></property>任務實施:三、核心文件配置(3臺虛擬機上均做一遍)

HDFSNameNode切換機制<!--客戶端在訪問HDFS集群時,如何確定和連接到當前活躍的NameNode,以及在發(fā)生故障時如何自動切換到備用NameNode<property>vider.mycluster<name>vider.mycluster</name>ConfiguredFailoverProxyProvider<value>node.ha.ConfiguredFailoverProxyProvider</value></property><property>任務實施:三、核心文件配置(3臺虛擬機上均做一遍)

<name>dfs.ha.automatic-failover.enabled</name><value>true</value></property></configuration>步驟5配置yarn-env.sh。Linux系統(tǒng)中使用命令“echo$JAVA_HOME”獲取JDK的安裝路徑,修改JAVA_HOME路徑exportJAVA_HOME=/usr/local/src/jdk1.8.0_221任務實施:三、核心文件配置(3臺虛擬機上均做一遍)單擊此處添加正文步驟6配置yarn-site.xml。使用vim工具編輯yarn-site.xml文件,在該文件中輸入如下代碼<configuration>單擊此處添加項正文<property>單擊此處添加項正文<name>yarn.nodemanager.aux-services</name>單擊此處添加項正文<value>mapreduce_shuffle</value>單擊此處添加項正文</property>單擊此處添加項正文任務實施:三、核心文件配置(3臺虛擬機上均做一遍)

<!--啟用resourcemanagerha-->

<property>

<name>yarn.resourcemanager.ha.enabled</name>

<value>true</value>

</property>

<!--聲明兩臺resourcemanager的地址-->任務實施:三、核心文件配置(3臺虛擬機上均做一遍)<property><name>yarn.resourcemanager.cluster-id</name><value>cluster-yarn1</value></property><property><name>yarn.resourcemanager.ha.rm-ids</name>任務實施:三、核心文件配置(3臺虛擬機上均做一遍)

<value>rm1,rm2</value>

</property>

<property>

<name>yarn.resourcemanager.hostname.rm1</name>

<value>hadoop1</value>

</property>任務實施:三、核心文件配置(3臺虛擬機上均做一遍)<property><name>yarn.resourcemanager.hostname.rm2</name><value>hadoop2</value></property><!--指定zookeeper集群的地址--><property>任務實施:三、核心文件配置(3臺虛擬機上均做一遍)單擊此處添加正文<name>yarn.resourcemanager.zk-address</name>單擊此處添加項正文<value>master2181,hadoop1:2181,hadoop2:2181</value></property>單擊此處添加項正文<!--啟用自動恢復-->單擊此處添加項正文<property>單擊此處添加項正文YARNRMRecoveryEnabled<name>yarn.resourcemanager.recovery.enabled</name>任務實施:三、核心文件配置(3臺虛擬機上均做一遍)

<value>true</value></property><!--指定resourcemanager的狀態(tài)信息存儲在zookeeper集群--><property>YARNResourceManagerStoreConfiguration<name>yarn.resourcemanager.store.class</name><value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value></property>任務實施:三、核心文件配置(3臺虛擬機上均做一遍)

</configuration>步驟7配置mapred-env.sh。Linux系統(tǒng)中使用命令“echo$JAVA_HOME”獲取JDK的安裝路徑,修改JAVA_HOME路徑exportJAVA_HOME=/usr/local/src/jdk1.8.0_221步驟8:配置mapred-site.xml。在ha配置文件目錄下執(zhí)行如下命令cpmapred-site.xml.templatemapred-site.xml使用vim工具編輯yarn-site.xml文件,在該文件中編寫如下配置任務實施:三、核心文件配置(3臺虛擬機上均做一遍)

<!--指定MR運行在Yarn上-->

<property>

<name></name>

<value>yarn</value>

</property>

<!--歷史服務器端地址-->任務實施:三、核心文件配置(3臺虛擬機上均做一遍)

<property>

<name>mapreduce.jobhistory.address</name>

<value>hadoop1:10020</value>

</property>

<!--歷史服務器web端地址-->

<property>任務實施:三、核心文件配置(3臺虛擬機上均做一遍)單擊此處添加正文

<name>mapreduce.jobhistory.webapp.address</name>

<value>hadoop1:19888</value>

</property>

<property>

<name>yarn.application.classpath</name>任務實施:三、核心文件配置(3臺虛擬機上均做一遍)

HadoopClasspathConfiguration%HADOOP_HOME%/share/hadoop/mapreduce/*,%HADOOP_HOME%/share/hadoop/mapreduce/lib/*,%HADOOP_HOME%/share/hadoop/common/*,%HADOOP_HOME%/share/hadoop/common/lib/*,%HADOOP_HOME%/share/hadoop/yarn/*,%HADOOP_HOME%/share/hadoop/yarn/lib/*,%HADOOP_HOME%/share/hadoop/hdfs/*,%HADOOP_HOME%/share/hadoop/hdfs/lib/*</value></property><property><name>yarn.nodemanager.resource.memory-mb</name><value>2048</value>任務實施:三、核心文件配置(3臺虛擬機上均做一遍)</property><property><name>yarn.scheduler.minimum-allocation-mb</name><value>2048</value></property><property>任務實施:三、核心文件配置(3臺虛擬機上均做一遍)

<name>yarn.nodemanager.resource.cpu-vcores</name>

<value>1</value>

</property>

步驟9:配置slaves文件。使用vim工具編輯slaves文件,在該文件中輸入如下代碼

master

hadoop1任務實施:三、核心文件配置(3臺虛擬機上均做一遍)hadoop2注意:該文件中添加的內容結尾不允許有空格,文件中不允許有空行步驟10:刪除臨時文件和日志文件,文件路徑是自己配的/data/tmpcd/src/local/src/ha/hadoop-2.7.3rm–rftmp任務實施:三、核心文件配置(3臺虛擬機上均做一遍)

rm–rflogs/*任務實施:四、集群啟動

啟動HDFS步驟1:在主節(jié)點上,輸入以下命令啟動journalnode服務sbin/hadoop-daemons.shstartjournalnode步驟2:在[nn1]master上,對其進行格式化bin/hdfsnamenode-format注意:格式化之前,一定要先停止上次啟動的所有namenode和datanode進程,然后再刪除data和log數(shù)據(jù)步驟3:在[nn1]master上,初始化HA在Zookeeper中狀態(tài)bin/hdfszkfc-formatZK

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論