1. 程式人生 > >hadoop HA叢集搭建

hadoop HA叢集搭建

第一步:由於Hdoop HA叢集中沒有SecondaryNameNode 因此要先刪除hadoop目錄下的masters檔案

在所有機器上輸入rm -rf /usr/local/hadoop/masters


第二步:刪除之前的非高可用hadoop叢集產生的資料檔案


第三步:在master上修改hadoop目錄下的配置檔案hdfs-site.xml

完整的配置檔案如下:

19 <configuration>
 20 <property>
 21   <name>dfs.nameservices</name>
 22   <value>kevinwong</value>
 23 </property>
 24 
 25 <property>
 26   <name>dfs.ha.namenodes.kevinwong</name>
 27   <value>master,slave3</value>
 28 </property>
 29 
 30 <property>
 31   <name>dfs.namenode.rpc-address.kevinwong.master</name>
 32   <value>master:8020</value>
 33 </property>
 34 
 35 <property>
 34 
 35 <property>
 36   <name>dfs.namenode.rpc-address.kevinwong.slave3</name>
 37   <value>slave3:8020</value>
 38 </property>
 34 
 35 <property>
 36   <name>dfs.namenode.rpc-address.kevinwong.slave3</name>
 37   <value>slave3:8020</value>
 38 </property>
 39 
 40 <property>
 41   <name>dfs.namenode.http-address.kevinwong.master</name>
 42   <value>master:50070</value>
 43 </property>
 44 
 45 <property>
 46   <name>dfs.namenode.http-address.kevinwong.slave3</name>
 47   <value>slave3:50070</value>
 48 </property>
 49 
 50 <property>
 51   <name>dfs.namenode.shared.edits.dir</name>
 52   <value>qjournal://slave1:8485;slave2:8485;slave3:8485/shareedits</value>
 53 </property>
 54 
 55 <property>
 56   <name>dfs.client.failover.proxy.provider.kevinwong</name>
 57   <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
 58 </property>
 44 
 45 <property>
 46   <name>dfs.namenode.http-address.kevinwong.slave3</name>
 47   <value>slave3:50070</value>
 48 </property>
 49 
 50 <property>
 51   <name>dfs.namenode.shared.edits.dir</name>
 52   <value>qjournal://slave1:8485;slave2:8485;slave3:8485/shareedits</value>
 53 </property>
 54 
 55 <property>
 56   <name>dfs.client.failover.proxy.provider.kevinwong</name>
 57   <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
 58 </property>
 59 
 60 <property>
 61   <name>dfs.ha.fencing.methods</name>
 62   <value>sshfence</value>
 63 </property>
 64 
 65 <property>
 66   <name>dfs.ha.fencing.ssh.private-key-files</name>
 67   <value>/root/.ssh/id_dsa</value>
 68 </property>
 69 
 70 <property>
 71   <name>dfs.journalnode.edits.dir</name>
 72   <value>/opt/journalnode</value>
 73 </property>
 74 

 75 </configuration>

第四步:在master上修改hadoop目錄下的配置檔案core-site.xml


第五步:啟用active NameNode的自動切換

在master上修改hadoop目錄下的配置檔案hdfs-site.xml 加入以下內容:


修改hadoop目錄下的配置檔案core-site.xml 加入以下內容:


第六步:將master上hadoop的配置檔案拷貝到slave1 slave2 slave3上


第六步:在slave1 slave2 slave3分別上啟動JournalNode叢集(slave1 slave2 slave3):hadoop-daemon.sh start journalnode




第七步:檢視hadoop的日誌檔案 確保JournalNode正常啟動


第八步:在兩臺NameNode(master slave3)中隨便選擇一臺進行hdfs格式化(注意:一定要先啟動JournalNode再對hdfs進行格式化 否則會丟擲異常)


此時就會在master上生成fsimage檔案 

第九步:手動把master上的fsimage檔案拷貝到slave3上:scp -r ./hadoop-2.5.1 [email protected]:/opt


第十步:在兩臺NameNode(master slave3)中隨便選擇一臺進行zookeeper格式化: hdfs zkfc -formatZK


第十一步:在master上啟動zookeeper叢集(原則上可以在master slave1 slave2中任意一臺上

啟動zookeeper叢集 但是由於在master上配置了免密登入 因此更方便):start-dfs.sh(在啟動之前最好先關閉dfs:stop-dfs.sh)


第十二步:檢視程序狀態




第十三步:通過瀏覽器檢視叢集狀態



第十四步:強制使NameNode master掛掉 測試NameNode slave3是否會自動接管


此時無法通過瀏覽器檢視master資訊


發現slave3還是standy 說明slave3並未成功接管


檢視slave3中FailOverController的日誌:tail -100 /usr/local/hadoop/logs/hadoop-root-zkfc-slave3.log


原因是沒有在master上設定對slave3免密登入。先刪除~/.ssh目錄下的所有檔案


關閉整個叢集stop-dfs.sh

首先設定slave3自己免密登入

在slave3上生成公鑰和私鑰:ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa


將slave3自己的公鑰追加到認證檔案中 並測試自己是否可以免密登入:ssh slave3

將slave3的公鑰拷貝到master的/opt目錄下:scp ~/.ssh/id_dsa.pub [email protected]:/opt


在master上將slave3的公鑰加入到認證檔案中:cat /opt/id_dsa.pub >> ~/.ssh/authorized_keys


測試slave3是否可以免密登入master:ssh master


將master的公鑰拷貝到slave3上:scp ~/.ssh/id_dsa.pub [email protected]:/opt


將master的公鑰新增到slave3的認證檔案中:cat /opt/id_dsa.pub >> ~/.ssh/authorized_keys


測試master是否可以免密登入slave3:ssh slave3


在master  slave1 slave2上啟動zookeeper

在master上關閉hdfs叢集再重啟 

然後強制殺死master上的NameNode程序:


通過瀏覽器檢視slave3狀態資訊發現還是standby

再次檢視slave3中FailOverController的日誌資訊 發現異常資訊如下:


由上面的警告可知:fuser: command not found,在做主備切換時執行fuser命令失敗了。檢視hdfs-site.xml配置檔案,
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
hdfs-site.xml通過引數dfs.ha.fencing.methods來實現,在出現故障時通過哪種方式登入到另一個namenode上進行接管工作。

系統在任何時候只有一個namenode節點處於active狀態。在主備切換的時候,standby namenode會變成active狀態,原來的active namenode就不能再處於active狀態了,否則兩個namenode同時處於active狀態會有問題。所以在failover的時候要設定防止2個namenode都處於active狀態的方法,可以是Java類或者指令碼。fencing的方法目前有兩種,sshfence和shell 。sshfence方法是指通過ssh登陸到active namenode節點殺掉namenode程序,所以需要設定ssh無密碼登陸,還要保證有殺掉namenode程序的許可權。

在網上查詢到的解決方法如下:在兩個NameNode(master slave3)節點上安裝fuser(datanode節點不用安裝)

[[email protected]~]# yum -y install psmisc


[[email protected] ~]#  yum -y install psmisc


重新測試 發現當master(NameNode active )掛掉以後 slave3(NameNode standby) slave3會自動接管 並將自己的狀態由standby改為active


需要注意的是:當master重新啟動後 master的狀態為standy slave3的狀態仍然為active 也就是說master並不會搶奪active狀態 這是因為它與keepalived不同 兩個NameNode沒有主備之分 處於同級關係 但是可以通過Hadoop HA管理命令手動將master的狀態改為active 將slave3的狀態改為standby(hdfs haadmin -transitionToActive master 此處master是之前設定的NameNode ID 而不是nameservice id)

Hadoop HA 管理命令

hdfs haadmin:

-transitionToActive:將NameNode狀態手動改為active

-transitionToStandby:將NameNode狀態手動改為Standby


至此 Hadoop HA叢集搭建成功。


相關推薦

hadoop HA叢集搭建

第一步:由於Hdoop HA叢集中沒有SecondaryNameNode 因此要先刪除hadoop目錄下的masters檔案在所有機器上輸入rm -rf /usr/local/hadoop/masters第二步:刪除之前的非高可用hadoop叢集產生的資料檔案第三步:在mas

使用3臺虛擬機器搭建Hadoop HA叢集(1)

系列部落格目錄連結:Hadoop權威指南學習筆記:總章 基礎環境搭建:使用3臺虛擬機器搭建Hadoop HA叢集(1) HA環境搭建:使用3臺虛擬機器搭建Hadoop HA叢集(2) 工欲善其事,必先利其器,要學好大資料,就必須首先學會自己動手

使用3臺虛擬機器搭建Hadoop HA叢集(2)

系列部落格目錄連結:Hadoop權威指南學習筆記:總章 基礎環境搭建:使用3臺虛擬機器搭建Hadoop HA叢集(1) HA環境搭建:使用3臺虛擬機器搭建Hadoop HA叢集(2) 本部分包含以下基本分內容 安裝部署zookeeper

Hadoop 分散式叢集搭建

1 修改配置檔案 1.1 hadoop-env.sh export JAVA_HOME=/usr/apps/jdk1.8.0_181-amd64 1.2 core-site.xml <property> <name>fs.def

vmware centos hadoop分散式叢集搭建 粗略筆記

初始設定: 虛擬了三個CentOs系統(安裝CentOs的步驟省略),一臺master 兩臺slave,使用者名稱全部為hadoop,具體如下(除了第一步使用root使用者操作,其他均使用hadoop使用者): 1.新增hadoop使用者 第一步:grou

Centos 7下Hadoop分散式叢集搭建

    一、關閉防火牆(直接用root使用者) #關閉防火牆 sudo systemctl stop firewalld.service #關閉開機啟動 sudo systemctl disable firewalld.service 二、修改每臺主機

Hadoop分散式叢集搭建方法(Version: java 1.8+CentOS 6.3)

夏天小廚 前言 大資料這個概念,說的通俗點就是對海量資料的處理分析。據不完全統計,世界百分之九十的資料都由近幾年產生,且不說海量資料的ETL,單從資料的儲存和資料展現的實時性,傳統的單機就已經無法滿足實際場景的需要例如很多OLAP系統。由此引出了Hadoop,Hadoop

Hadoop HA叢集配置

目錄 叢集規劃 安裝步驟 2.1解壓 ​ ha5 ​ ha6 ​ ha7 ​ 一、 基礎配置 建立7臺機器

基於zookeeper的高可用Hadoop HA叢集安裝

1.Hadoop叢集方式介紹     1.1 hadoop1.x和hadoop2.x都支援的namenode+secondarynamenode方式          優點:搭建環境簡單,適合開發者模式下除錯程式          缺點:namenode作為很重

虛擬機器CentOS 7.5.1804下無外網Hadoop HA叢集安裝

網上有很多Hadoop HA叢集安裝的資料,我當時安裝也是參考了官方文件和這些資料才安裝成功的。由於使用的環境和軟體版本可能有所不同,且因工作環境網路所限無法連線外網,加之記錄一下自己的安裝過程,不枉花費時間來研究Hadoop環境的搭建,故作此文章。 一、叢集架構表

Hadoop2.7.3-HA 叢集搭建(傳智播客)

前期準備 1 修改Linux主機名 2 修改IP 3 修改主機名和IP的對映關係 /etc/hosts 4 關閉防火牆 5 ssh免登陸 6 安裝JDK,配置環境變數等 叢集規劃 主機名

Spark自帶的叢集模式(Standalone),Spark/Spark-ha叢集搭建

#1、Spark自帶的叢集模式 對於Spark自帶的叢集模式,Spark要先啟動一個老大(Master),然後老大Master和各個小弟(Worker)進行通訊,其中真正幹活的是Worker下的Executor。關於提交任務的,需要有一個客戶端,這個客戶端叫做D

安裝Spark+hadoop,spark、hadoop分散式叢集搭建...(親自搭建過!!)

首先說一下我所用的版本: spark-2.1.1-bin-hadoop2.7.tgz hadoop-2.7.3.tar.gz jdk-8u131-linux-x64.rpm 我們實驗室有4臺伺服器:每個節點硬碟:300GB,記憶體:64GB。四個

kafka2.1.0高可用HA叢集搭建方法

kafka2.1.0高可用HA叢集搭建方法 (一)安裝zookeeper3.4.6叢集 詳見安裝方法地址:https://blog.csdn.net/hsg77/article/details/80945493 (二)安裝kafka2.1.0 下載地址: http://kafka.a

hadoop分散式叢集搭建

提示 閱讀本文需要同時對c++和java有一定了解。 背景 有時我們比較兩個字串時不考慮它們是大寫還是小寫;舉個例子,在這種情況下我們認為“BanAna”和“baNaNA”是等價的。 其中一種思路是: 1. 將兩個字串都轉換為小寫(或者都轉換為大寫); 2.比較轉換後的兩個字

Hadoop-HA叢集啟動後兩個namenode都是standby問題。

日誌:WARN org.apache.hadoop.hdfs.server.namenode.ha.EditLogTailer: Unable to trigger a roll of the active NNorg.apache.hadoop.ipc.RemoteExce

hadoop&spark叢集搭建

1.準備工作1.1 jdk下載安裝1.2 官網下載:scala-2.10.4.tgz(支援spark)hadoop-2.6.0.tar.gzspark-1.6.0-bin-hadoop2.6.tgz1.3 準備三臺虛擬機器centos6.3地址:172.16.100.01,1

hadoop分散式叢集搭建及其常見問題

hadoop分散式叢集的搭建 這裡我用3臺虛擬機器搭建hadoop叢集——分別為:mini1、mini2、mini3。hadoop版本為:hadoop-2.8.4版本。 下載地址:hadoop-2.8.

Hadoop分散式叢集搭建完全教程

Hadoop分散式叢集環境搭建步驟如下 實驗環境: 系統:win7 記憶體:8G(因要開虛擬機器,記憶體建議不低於8G) 硬碟:建議固態 虛擬機器:VMware 12 Linux:Centos 7 jdk1.7.0_67 hadoop-2.5.0

Docker之Hadoop普通叢集搭建(五)

2017-01-08 03:36:29,815 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Exception in secureMain java.net.UnknownHostException: 26b72653d296: 26b7265