中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Hadoop2.7.1配置NameNode+ResourceManager高可用原理分析

發布時間:2020-06-19 17:41:04 來源:網絡 閱讀:896 作者:葬月仙帝 欄目:大數據

關于NameNode高可靠需要配置的文件有core-site.xml和hdfs-site.xml 
關于ResourceManager高可靠需要配置的文件有yarn-site.xml 

邏輯結構: 


Hadoop2.7.1配置NameNode+ResourceManager高可用原理分析 

NameNode-HA工作原理: 
在一個典型的HA集群中,最好有2臺獨立的機器的來配置NameNode角色,無論在任何時候,集群中只能有一個NameNode作為Active狀態,而另一個是Standby狀態,Active狀態的NameNode負責集群中所有的客戶端操作,這么設置的目的,其實HDFS底層的機制是有關系的,同一時刻一個文件,只允許一個寫入方占用,如果出現多個,那么文件偏移量便會混亂,從而導致數據格式不可用,當然狀態為Standby的NameNode這時候僅僅扮演一個Slave的角色,以便于在任何時候Active的NameNode掛掉時,能夠第一時間,接替它的任務,成為主NameNode,達到一個熱備份的效果,在HA架構里面SecondaryNameNode這個冷備角色已經不存在了,為了保持從NameNode時時的與主NameNode的元數據保持一致,他們之間交互通過一系列守護的輕量級進程JournalNode,當任何修改操作在主NameNode上執行時,它同時也會記錄修改log到至少半數以上的JornalNode中,這時狀態為Standby的NameNode監測到JournalNode里面的同步log發生變化了會讀取JornalNode里面的修改log,然后同步到自己的的目錄鏡像樹里面,當發生故障時,Active的NameNode掛掉后,Standby的NameNode會在它成為Active NameNode前,讀取所有的JournalNode里面的修改日志,這樣就能高可靠的保證與掛掉的NameNode的目錄鏡像樹一致,然后無縫的接替它的職責,維護來自客戶端請求,從而達到一個高可用的目的。 

為了達到快速容錯的掌握全局的目的,Standby角色也會接受來自DataNode角色匯報的塊信息,前面只是介紹了NameNode容錯的工作原理,下面介紹下,當引入Zookeeper之后,為啥可以NameNode-HA可以達到無人值守,自動切換的容錯。 

在主備切換上Zookeeper可以干的事: 
(1)失敗探測   在每個NameNode啟動時,會在Zookeeper上注冊一個持久化的節點,當這個NameNode宕機時,它的會話就會終止,Zookeeper發現之后,就會通知備用的NameNode,Hi,老兄,你該上崗了。 
(2)選舉機制, Zookeeper提供了一個簡單的獨占鎖,獲取Master的功能,如果那個NameNode發現自己得到這個鎖,那就預示著,這個NameNode將被激活為Active狀態 

當然,實際工作中Hadoop提供了ZKFailoverController角色,在每個NameNode的節點上,簡稱zkfc,它的主要職責如下: 

(1)健康監測,zkfc會周期性的向它監控的NameNode發送健康探測命令,從而來確定某個NameNode是否處于健康狀態,如果機器宕機,心跳失敗,那么zkfc就會標記它處于一個不健康的狀態 
(2)會話管理, 如果NameNode是健康的,zkfc就會在zookeeper中保持一個打開的會話,如果NameNode同時還是Active狀態的,那么zkfc還會在Zookeeper中占有一個類型為短暫類型的znode,當這個NameNode掛掉時, 
這個znode將會被刪除,然后備用的NameNode,將會得到這把鎖,升級為主NameNode,同時標記狀態為Active,當宕機的NameNode,重新啟動時,它會再次注冊zookeper,發現已經有znode鎖了,便會自動變為Standby狀態,如此往復循環,保證高可靠,需要注意,目前僅僅支持最多配置2個NameNode。 
(3)master選舉,如上所述,通過在zookeeper中維持一個短暫類型的znode,來實現搶占式的鎖機制,從而判斷那個NameNode為Active狀態。 
 


hdfs-site.xml里面 

Xml代碼  Hadoop2.7.1配置NameNode+ResourceManager高可用原理分析

  1. xml version="1.0" encoding="UTF-8"?>  

  2. xml-stylesheet type="text/xsl" href="configuration.xsl"?>  


  3.   

  4. << span="">configuration>  

  5.   

  6.   

  7.   

  8.   

  9. << span="">property>      

  10.    << span="">name>dfs.replicationname>      

  11.    << span="">value>1value>      

  12.  property>      

  13.    

  14.   

  15.   

  16.    << span="">property>  

  17.        << span="">name>yarn.resourcemanager.ha.enabledname>  

  18.         << span="">value>truevalue>  

  19.    property>  

  20.   

  21.   

  22.   

  23.          

  24.    << span="">property>  

  25.        << span="">name>yarn.resourcemanager.cluster-idname>  

  26.         << span="">value>ns1value>  

  27.    property>  

  28.   

  29.   

  30.  << span="">property>  

  31.           

  32.        << span="">name>yarn.resourcemanager.ha.rm-idsname>  

  33.         << span="">value>h2,h3value>  

  34.    property>  

  35.   

  36.   

  37.           

  38.    << span="">property>  

  39.         << span="">name>yarn.resourcemanager.ha.automatic-failover.recover.enabledname>  

  40.         << span="">value>truevalue>  

  41.    property>  

  42.   

  43.   

  44.     

  45.   

  46.      << span="">property>  

  47.        << span="">name>yarn.resourcemanager.recovery.enabledname>   

  48.         << span="">value>truevalue>   

  49.    property>   

  50.   

  51.   

  52.           

  53.    << span="">property>  

  54.        << span="">name>yarn.resourcemanager.hostname.h2name>  

  55.         << span="">value>h2value>  

  56.    property>  

  57.   

  58.        

  59.    << span="">property>  

  60.        << span="">name>yarn.resourcemanager.hostname.h3name>  

  61.         << span="">value>h3value>  

  62.    property>  

  63.   

  64.   

  65.   

  66.     << span="">property>  

  67.        << span="">name>yarn.resourcemanager.store.classname>  

  68.        << span="">value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStorevalue>  

  69.     property>  

  70.   

  71.   

  72.         

  73.     << span="">property>  

  74.        << span="">name>yarn.resourcemanager.zk-addressname>  

  75.        << span="">value>h2:2181,h3:2181,h4:2181value>  

  76.     property>  

  77.   

  78.   

  79.        

  80.     << span="">property>  

  81.        << span="">name>yarn.resourcemanager.scheduler.address.h2name>  

  82.         << span="">value>h2:8030value>  

  83.     property>  

  84.   

  85.   

  86.  << span="">property>  

  87.        << span="">name>yarn.resourcemanager.scheduler.address.h3name>  

  88.        << span="">value>h3:8030value>  

  89.     property>  

  90.   

  91.   

  92.         

  93.     << span="">property>  

  94.         << span="">name>yarn.resourcemanager.resource-tracker.address.h2name>  

  95.        << span="">value>h2:8031value>  

  96.     property>  

  97.   

  98.     << span="">property>  

  99.        << span="">name>yarn.resourcemanager.resource-tracker.address.h3name>  

  100.        << span="">value>h3:8031value>  

  101.     property>  

  102.   

  103.   

  104.         

  105.     << span="">property>  

  106.        << span="">name>yarn.resourcemanager.address.h2name>  

  107.        << span="">value>h2:8032value>  

  108.     property>  

  109.     << span="">property>  

  110.        << span="">name>yarn.resourcemanager.address.h3name>  

  111.        << span="">value>h3:8032value>  

  112.    property>      

  113.   

  114.   

  115.           

  116.     << span="">property>  

  117.        << span="">name>yarn.resourcemanager.admin.address.h2name>  

  118.        << span="">value>h2:8033value>  

  119.     property>  

  120.   

  121.     << span="">property>  

  122.        << span="">name>yarn.resourcemanager.admin.address.h3name>  

  123.         << span="">value>h3:8033value>  

  124.     property>  

  125.   

  126.   

  127.        

  128.     << span="">property>  

  129.        << span="">name>yarn.resourcemanager.webapp.address.h2name>  

  130.        << span="">value>h2:8088value>  

  131.     property>  

  132.   

  133.     << span="">property>  

  134.        << span="">name>yarn.resourcemanager.webapp.address.h3name>  

  135.        << span="">value>h3:8088value>  

  136.     property>  

  137.   

  138.   

  139.   << span="">property>    

  140.     << span="">name>yarn.resourcemanager.scheduler.classname>    

  141.     << span="">value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacitySchedulervalue>    

  142.   property>   

  143.   

  144.   

  145.   

  146.   

  147.   

  148.   << span="">property>    

  149.     << span="">name>yarn.nodemanager.aux-servicesname>    

  150.     << span="">value>mapreduce_shufflevalue>    

  151.   property>    

  152.   

  153.   << span="">property>    

  154.     << span="">name>yarn.nodemanager.aux-services.mapreduce.shuffle.classname>    

  155.     << span="">value>org.apache.hadoop.mapred.ShuffleHandlervalue>    

  156.   property>    

  157.   

  158.   << span="">property>      

  159.     << span="">description>Classpath for typical applications.description>      

  160.     << span="">name>yarn.application.classpathname>      

  161.     << span="">value>$HADOOP_CONF_DIR    

  162.     ,$HADOOP_COMMON_HOME/share/hadoop/common/*    

  163.     ,$HADOOP_COMMON_HOME/share/hadoop/common/lib/*    

  164.     ,$HADOOP_HDFS_HOME/share/hadoop/hdfs/*    

  165.     ,$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*    

  166.     ,$YARN_HOME/share/hadoop/yarn/*value>      

  167.   property>     

  168.     

  169.     

  170.   << span="">property>    

  171.     << span="">name>yarn.nodemanager.resource.memory-mbname>    

  172.     << span="">value>5632value>    

  173.   property>    

  174.   

  175.  << span="">property>  

  176.     << span="">name>yarn.scheduler.minimum-allocation-mbname>  

  177.     << span="">value>1408value>  

  178.   property>  

  179.   

  180.   

  181.  << span="">property>  

  182.     << span="">name>yarn.scheduler.maximum-allocation-mbname>  

  183.     << span="">value>5632value>  

  184.   property>  

  185. configuration>  



啟動方式:假設你是新的集群,如果不是,請參考文末的官網url鏈接 
1,先在集群中啟動N/2+1個JornalNode進程,寫ssh腳本執行命令:hadoop-daemon.sh start journalnode 
2 ,然后在第一臺NameNode上應執行hdfs namenode -format格式化集群 
3,然后在第二臺NameNode上執行hdfs namenode -bootstrapStandby同步第一臺NameNode元數據 
4,在第一臺NameNode上執行命令hdfs zkfc -formatZK格式化zookeeper 
5,第一臺NameNode上啟動zkfc執行命令:hadoop-daemon.sh start zkfc 
6,在第二臺NameNode上啟動zkfc執行命令:hadoop-daemon.sh start zkfc 
7,執行start-dfs.sh啟動所有的NameNode,DataNode,JournalNode(注意如果已經啟動就會跳過) 
8,執分別訪問兩臺機器的50070端口,查看NameNode狀態,其中一個為Active,一個為Standby即為正常 
9,測試容錯,找到狀態為Active的NameNode的pid進程,并kill掉,查看standby是否會自動晉級為active,如果 
一切安裝完畢,則會自動切換,如果沒切換,注意查看zkfc和namenode的log 

 


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

奉化市| 永丰县| 青铜峡市| 荆门市| 英超| 金坛市| 繁峙县| 榆树市| 济宁市| 精河县| 北碚区| 乐陵市| 隆化县| 丹凤县| 邵东县| 托克托县| 八宿县| 鄱阳县| 静宁县| 莱州市| 白朗县| 扬州市| 富源县| 石河子市| 梓潼县| 潞西市| 南投市| 莆田市| 南昌县| 江西省| 建昌县| 金坛市| 郴州市| 宿州市| 巴林左旗| 神池县| 山阴县| 邯郸县| 同心县| 从化市| 临安市|