hadoop HA 之 QJM

前言

本文主要通過對hadoop2.2.0集群配置的過程加以梳理,所有的步驟都是通過自己實際測試。文檔的結構也是根據自己的實際情況而定,同時也會加入自己在實際過程遇到的問題。搭建環境過程不重要,重要點在于搭建過程中遇到的問題,解決問題的過程。

可能自己遇到的問題在一些由經驗的老者手上都不是問題,但是這些問題著實讓自己耽誤了很長時間,最后問題解決也是費了太大心血。也通過這篇文檔,表現出來,算是總結,為后者提供意見。

Hadoop2.2.0體系結構

要想理解本節內容,首先需要了解hadoop1的體系結構。這里不過多的介紹基于hadoop1的體系架構,早在之前,曾搭建hadoop1.2.1偽分布式集群,詳細請看hadoop學習(一)hadoop-1.2.1偽分布式配置及遇到的問題。這里主要介紹hadoop2的體系架構。

hadoop1的核心組成是兩部分,即HDFS和MapReduce。在hadoop2中變為HDFS和Yarn。

新的HDFS中的NameNode不再是只有一個了,可以有多個(目前只支持2個)。每一個都有相同的職能。

這兩個NameNode的地位如何:一個是active狀態的,一個是standby狀態的。當 集群運行時,只有active狀態的NameNode是正常工作的,standby狀態的NameNode是處于待命狀態的,時刻同步active狀態 NameNode的數據。一旦active狀態的NameNode不能工作,通過手工或者自動切換,standby狀態的NameNode就可以轉變為 active狀態的,就可以繼續工作了。這就是高可靠。

當NameNode發生故障時,他們的數據如何保持一致:在這里,2個NameNode的數據其實是實時共享的。新HDFS采用了一種共享機制,JournalNode集群或者NFS進行共享。NFS是操作系統層面的,JournalNode是hadoop層面的,我們這里使用JournalNode集群進行數據共享。

如何實現NameNode的自動切換:這就需要使用ZooKeeper集群進行選擇了。HDFS集群中的兩個NameNode都在ZooKeeper中注冊,當active狀態的NameNode出故障時,ZooKeeper能檢測到這種情況,它就會自動把standby狀態的NameNode切換為active狀態。

HDFS Federation(HDFS聯盟):聯盟的出現是有原因的。我們知道 NameNode是核心節點,維護著整個HDFS中的元數據信息,那么其容量是有限的,受制于服務器的內存空間。當NameNode服務器的內存裝不下數據后,那么HDFS集群就裝不下數據了,壽命也就到頭了。因此其擴展性是受限的。HDFS聯盟指的是有多個HDFS集群同時工作,那么其容量理論上就不受限了,夸張點說就是無限擴展。你可以理解成,一個總集群中,可以虛擬出兩個或兩個以上的單獨的小集群,各個小集群之間數據是實時共享的。因為hadoop集群中已經不在單獨存在namenode和datanode的概念。當一個其中一個小集群出故障,可以啟動另一個小集群中的namenode節點,繼續工作。因為數據是實時共享,即使namenode或datanode一起死掉,也不會影響整個集群的正常工作。

配置文件如下:

core-site.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
 3 <!--
 4   Licensed under the Apache License, Version 2.0 (the "License");
 5   you may not use this file except in compliance with the License.
 6   You may obtain a copy of the License at
 7 
 8     http://www.apache.org/licenses/LICENSE-2.0
 9 
10   Unless required by applicable law or agreed to in writing, software
11   distributed under the License is distributed on an "AS IS" BASIS,
12   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   See the License for the specific language governing permissions and
14   limitations under the License. See accompanying LICENSE file.
15 -->
16 
17 <!-- Put site-specific property overrides in this file. -->
18 
19 <configuration>
20      <property>  
21            <name>fs.defaultFS</name>  
22           <value>hdfs://cluster1</value>  
23      </property>
24      <property>
25               <name>io.file.buffer.size</name>
26               <value>131072</value>
27          </property>
28          <property>
29              <name>ha.zookeeper.quorum</name>
30              <value>moses.zookeeper0:2181,moses.zookeeper1:2181,moses.zookeeper2:2181,moses.zookeeper3:2181,moses.zookeeper4:2181</value>
31          </property>
32 </configuration>

hdfs-site.xml

  1 <?xml version="1.0" encoding="UTF-8"?>
  2 <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
  3 <!--
  4   Licensed under the Apache License, Version 2.0 (the "License");
  5   you may not use this file except in compliance with the License.
  6   You may obtain a copy of the License at
  7 
  8     http://www.apache.org/licenses/LICENSE-2.0
  9 
 10   Unless required by applicable law or agreed to in writing, software
 11   distributed under the License is distributed on an "AS IS" BASIS,
 12   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13   See the License for the specific language governing permissions and
 14   limitations under the License. See accompanying LICENSE file.
 15 -->
 16 
 17 <!-- Put site-specific property overrides in this file. -->
 18 
 19 <configuration>
 20      <property >  
 21          <name>dfs.replication</name>  
 22          <value>3</value>  
 23      </property>
 24      <property>
 25          <name>dfs.permissions.enabled</name>
 26          <value>false</value>
 27      </property>
 28      <property>
 29          <name>dfs.nameservices</name>
 30          <value>cluster1</value>
 31      </property>
 32      <property>
 33          <name>dfs.ha.namenodes.cluster1</name>
 34          <value>n1,n2</value>
 35      </property>
 36      <property>
 37          <name>dfs.namenode.rpc-address.cluster1.n1</name>
 38          <value>moses.namenode:9090</value>
 39      </property>
 40      <property>
 41          <name>dfs.namenode.http-address.cluster1.n1</name>
 42          <value>moses.namenode:50070</value>
 43      </property>
 44      <property>
 45          <name>dfs.namenode.rpc-address.cluster1.n2</name>
 46          <value>moses.datanode3:9090</value>
 47      </property>
 48      <property>
 49          <name>dfs.namenode.http-address.cluster1.n2</name>
 50          <value>moses.datanode3:50070</value>
 51      </property>
 52      <property>
 53          <name>dfs.namenode.servicerpc-address.cluster1.n1</name>
 54          <value>moses.namenode:53310</value>
 55      </property>
 56      <property>
 57          <name>dfs.namenode.servicerpc-address.cluster1.n2</name>
 58          <value>moses.datanode3:53310</value>
 59      </property>
 60      <property>
 61          <name>dfs.ha.automatic-failover.enabled.cluster1</name>
 62          <value>true</value>
 63      </property>
 64      <property>
 65          <name>dfs.namenode.shared.edits.dir</name>
 66          <value>qjournal://moses.namenode:8485;moses.datanode1:8485;moses.datanode2:8485;moses.datanode3:8485;moses.datanode4:8485/cluster1</value>
 67      </property>
 68      <property>
 69          <name>dfs.client.failover.proxy.provider.cluster1</name>
 70          <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
 71      </property>
 72      <property>
 73          <name>dfs.journalnode.edits.dir</name>
 74          <value>/data/wapage/journal</value>
 75      </property>
 76      <property>
 77          <name>dfs.ha.fencing.methods</name>
 78          <value>sshfence</value>
 79      </property>
 80      <property>
 81          <name>dfs.ha.fencing.ssh.private-key-files</name>
 82          <value>/home/wapage/.ssh/id_rsa</value>
 83      </property>
 84      <property>
 85          <name>dfs.ha.fencing.ssh.connect-timeout</name>
 86          <value>10000</value>
 87      </property>
 88      <property>
 89          <name>dfs.namenode.handler.count</name>
 90          <value>60</value>
 91      </property>
 92 
 93      <property>
 94            <name>dfs.datanode.max.xcievers</name>
 95            <value>4096</value>
 96      </property>
 97      <property>
 98                 <name>dfs.namenode.secondary.http-address</name>
 99                <value>moses.data.namenode:9091</value>
100         </property>
101     <property>
102       <name>hadoop.tmp.dir</name>
103       <value>/data2/wapage/hadooptmp</value>
104       <description>A base for other temporary directories.</description>
105     </property>
106     <property>
107             <name>dfs.namenode.checkpoint.period</name>
108               <value>600</value>
109     </property>
110     <property>
111          <name>dfs.namenode.name.dir</name>
112          <value>/data/wapage/hadoopname,/data1/wapage/hadoopname,/data2/wapage/hadoopname,/data3/wapage/hadoopname,/data4/wapage/hadoopname,/data5/wapage/hadoopname,/data6/wapage/hadoopname,/data7/wapage/hadoopname</value>
113          <description>Determines where on the local filesystem the DFS name node
114                           should store the name table(fsimage).  If this is a comma-delimited list
115                                 of directories then the name table is replicated in all of the
116                                       directories, for redundancy. </description>
117     </property>
118     <property>
119          <name>dfs.datanode.data.dir</name>
120          <value>/data/wapage/hadoopdata,/data1/wapage/hadoopdata,/data2/wapage/hadoopdata,/data3/wapage/hadoopdata,/data4/wapage/hadoopdata,/data5/wapage/hadoopdata,/data6/wapage/hadoopdata,/data7/wapage/hadoopdata</value>
121          <description>Determines where on the local filesystem an DFS data node
122          should store its blocks.  If this is a comma-delimited
123                                                 list of directories, then data will be stored in all named
124                                                   directories, typically on different devices.
125                                                     Directories that do not exist are ignored.
126          </description>
127     </property>
128     <property>
129       <name>dfs.balance.bandwidthPerSec</name>  
130       <value>10485760</value>  
131       <description>  
132         Specifies the maximum amount of bandwidth that each datanode   
133         can utilize for the balancing purpose in term of   
134         the number of bytes per second.   
135       </description>
136     </property>
137 </configuration>

參考地址:http://blog.csdn.net/yczws1/article/details/23566383

?

轉載于:https://www.cnblogs.com/wq920/p/5624180.html

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

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

相關文章

TeamViewer免費版和付費版有什么不同

提到遠程控制軟件 TeamViewer無疑是目前業內知名度比較高的一款&#xff0c;所以說到遠程控制軟件可能大部分人首先想到的就是TeamViewer。在使用功能上&#xff0c;它支持遠程桌面控制、文件傳輸、遠程計算機鎖定、視頻會話、主控方和被控方身份互換&#xff0c;遠程管理無人執…

iOS-關于cell的重疊問題

記得很早之前遇到過一個問題&#xff0c;關于cell的重疊問題&#xff0c;現在回顧總結一下。 iOS中tableview的cell顯示是會消耗內存的&#xff0c;如果要顯示無數個cell&#xff0c;不可能把每個cell都存儲下來&#xff0c;為了解決這個問題&#xff0c;cell就用了重用機制&am…

每天一個Linux命令-ls

ls 命令在linux系統中是使用頻率最頻繁的幾個命令之一,直接使用不帶目錄名&#xff0c;是默認顯示當前目錄的文件及子目錄名稱&#xff0c;ls加指定目錄名&#xff0c;則可以查看指定目錄下的文件及子目錄名稱&#xff0c;ls不僅可以查看目錄下有哪些文件和子目錄&#xff0c;還…

halcon資料鏈接

本文轉載自xiamentingtao&#xff0c;原文地址如下&#xff1a; http://blog.csdn.net/xiamentingtao/article/details/52583787 1目錄(?)[]論壇培訓博客文檔書籍視頻論壇、培訓halcon學習網&#xff1a;http://www.ihalcon.com/鳥叔機器視覺&#xff1a;http://bbs.szvbt.com…

【代碼筆記】iOS-翻書效果的實現

代碼&#xff1a; RootViewController.m #import "RootViewController.h"interface RootViewController ()endimplementation RootViewController- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {self [super initWithNibName:…

修改TFS與本地源代碼映射路徑

使用源代碼管理資源管理器修改工作區 在“文件”菜單上單擊“源代碼管理”&#xff0c;再單擊“工作區”。 在“管理工作區”對話框的“名稱”列下&#xff0c;突出顯示要修改的工作區&#xff0c;然后單擊“編輯”。 在“編輯工作區”對話框中&#xff1a; 修改“名稱”框中…

halcon基礎知識

一、程序中的顏色&#xff1a; 綠色&#xff1a;注釋 褐色&#xff1a;控制開發 淺藍色&#xff1a;外部函數——HDevelop函數文件&#xff0c;可在所有Halcon程序中使用 深藍色&#xff1a;圖像獲取和處理 紫色&#xff1a;內部函數——本地程序函數&#xff0c;只在當前程序使…

停止過度設計,開發客戶需要的軟件

在與許多不同的團隊合作過之后&#xff0c;Greg Young發現大家做項目時經常會大幅度的過度設計。比如一個預計要開發9個月的項目&#xff0c;換個角度思考一下&#xff0c;卻可能只需要幾個星期就可以提交95%的功能。Young在最近倫敦舉行的DDD eXchange大會上著重闡述了這一點。…

Halcon—Tuple中符號的含義

2014年08月08日 21:20:30閱讀數&#xff1a;5429實例一&#xff08;3d_coordinates.hdev&#xff09;&#xff1a;for I : 1 to NumImages by 1read_image (Image, calib/calib-3d-coord-I$02d)——C:\Program Files\MVTec\HALCON-10.0\images\的calib文件夾中開頭是calib-3d-c…

如果我是博客園的產品經理【上】

題記 這是一個系列文章的第一篇 我打算寫一個《如果我是XXX的產品經理》系列&#xff0c; 因為我是博客園的老用戶了&#xff0c;這個系列又是寫在博客園上的 所以先拿博客園開刀&#xff0c; 后面估計還會寫QQ音樂&#xff0c;有道云筆記&#xff0c;github&#xff0c;foxmai…

Halcon學習筆記(三)---數據類型

Halcon學習筆記&#xff08;三&#xff09;---數據類型halcon只能在單獨行進行注釋&#xff0c;不能在語句后面進行注釋。1、tuple(元組&#xff0c;重數)賦值符號“&#xff1a;”tuple算子&#xff1a;&#xff08;1&#xff09;變量定義與加減乘除運算代碼如下&#xff1a;*…

論文筆記之:RATM: RECURRENT ATTENTIVE TRACKING MODEL

RATM: RECURRENT ATTENTIVE TRACKING MODEL ICLR 2016 本文主要內容是 結合 RNN 和 attention model 用來做目標跟蹤。 其中模型的組成主要是&#xff1a; 1. an attention model 主要用來從輸入圖像中提取 patch&#xff1b; 2. RNN 用來預測 attention 參數&#xff0c;即&am…

【分享】WeX5的正確打開方式(5)——綁定機制

今天繼續WeX5的綁定機制。 需求分析 記賬本要實現的效果就是可以展示所有賬單&#xff0c;還能實時動態編輯每一筆賬單&#xff0c;官方案例的效果圖如下&#xff1a; 展示頁&#xff1a; 編輯頁 個人覺得官方案例加入了許多元素&#xff0c;不熟悉的同學每一個點都很難理解&am…

HALCON常用算子(HALCON13.0)

HALCON常用算子&#xff08;HALCON13.0&#xff09;Chapter 9--Developdev_clear_window ( : : : )功能&#xff1a;清除活動圖形窗口的內容dev_close_window ( : : : )功能&#xff1a;關閉活動圖形窗口。dev_display ( Object : : : )功能&#xff1a;在現有圖形窗口中顯示圖…

關于未捕獲異常的處理(WPF)

轉載自&#xff1a;http://www.cnblogs.com/chenxizhang/p/3280947.html 這一篇文章來談談對于WPF應用程序開發中的未捕獲異常的處理。 首先&#xff0c;我們當然是要求應用程序開發人員&#xff0c;盡可能地在程序可能出現異常的地方都去捕捉異常&#xff0c;使用try…catch的…

設計模式--23、訪問者模式

訪問者模式是一種較為復雜的行為型設計模式&#xff0c;它包含訪問者和被訪問元素兩個主要組成部分&#xff0c;這些被訪問的元素通常具有不同的類型&#xff0c;且不同的訪問者可以對它們進行不同的訪問操作。例如處方單中的各種藥品信息就是被訪問的元素&#xff0c;而劃價人…

C#串口SerialPort常用屬性方法

SerialPort(): //屬性 .BaudRate;獲取或設置波特率 .BytesToRead;得到 接收到數據的字節數 .BytesToWrites;得到送往串口的字節數 .DataBits;獲取或設置數據位 .IsOpen;獲取一個值&#xff0c;判斷串口是否打開 .Pariy;獲取或設置校驗位 .PortName;串口名稱 .ReadBufferSize;獲…

NTFS文件系統的簡述

NTFS文件系統的設計思想基于穩定性、和安全性并支持大容量存儲設備的文件系統&#xff1a;1.它提供日志可以增加文件系統的容錯率&#xff0c;可以有效的保護系統的安全。NTFS是一個可恢復的文件系統。在NTFS分區上即使強制關機后&#xff0c;一般也不需要運行CHKDSK命令修復磁…

Rxjava基礎

現在很多Android App的開發開始使用Rxjava&#xff0c;但是Rxjava以學習曲線陡峭著稱&#xff0c;入門有些困難。經過一段時間的學習和使用&#xff0c;這里來介紹一下我對Rxjava的理解。 說到Rxjava首先需要了解的兩個東西&#xff0c;一個是Observable&#xff08;被觀察者&a…

『協議』XML-RPC 協議規格說明

為什么80%的碼農都做不了架構師&#xff1f;>>> 這篇文章提供所有實現XML-RPC協議所需要的內容。 一覽 XML-RPC是一個工作在因特網上的遠端程序調用&#xff08;Remote Procedure Calling&#xff09;協議。 XML-RPC消息是一個HTTP-POST請求&#xff08;Request&…