91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

hadoop Secondary NameNode有什么作用

發布時間:2021-12-09 15:23:20 來源:億速云 閱讀:272 作者:小新 欄目:云計算

這篇文章給大家分享的是有關hadoop Secondary NameNode有什么作用的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

光從字面上來理解,很容易讓一些初學者先入為主的認為:SecondaryNameNode(snn)就是NameNode(nn)的熱備進程。其 實不是。snn是HDFS架構中的一個組成部分,但是經常由于名字而被人誤解它真正的用途,其實它真正的用途,是用來保存namenode中對HDFS metadata的信息的備份,并減少namenode重啟的時間。對于hadoop進程中 ,要配置好并正確的使用 snn,還是需要做一些工作的。 hadoop的默認配置中讓 snn進程默認運行在了 namenode 的那臺機器上,但是這樣的話,如果這臺機器出錯,宕機,對恢復HDFS文件系統是很大的災難,更好的方式是:將snn的進程配置在另外一臺機器 上運行。

在hadoop中,namenode負責對HDFS的metadata的持久化存儲,并且處理來自客戶端的對HDFS的各種操作的交互反饋。為了保 證交互速度,HDFS文件系統的metadata是被load到namenode機器的內存中的,并且會將內存中的這些數據保存到磁盤進行持久化存儲。為 了保證這個持久化過程不會成為HDFS操作的瓶頸,hadoop采取的方式是:沒有對任何一次的當前文件系統的snapshot進行持久化,對HDFS最 近一段時間的操作list會被保存到namenode中的一個叫Editlog的文件中去。當重啟namenode時,除了 load fsImage意外,還會對這個EditLog文件中 記錄的HDFS操作進行replay,以恢復HDFS重啟之前的最終狀態。

而SecondaryNameNode,會周期性的將EditLog中記錄的對HDFS的操作合并到一個checkpoint中,然后清空 EditLog。所以namenode的重啟就會Load最新的一個checkpoint,并replay EditLog中 記錄的hdfs操作,由于EditLog中記錄的是從 上一次checkpoint以后到現在的操作列表,所以就會比較小。如果沒有snn的這個周期性的合并過程,那么當每次重啟namenode的時候,就會 花費很長的時間。而這樣周期性的合并就能減少重啟的時間。同時也能保證HDFS系統的完整性。

這就是SecondaryNameNode所做的事情。所以snn并不能分擔namenode上對HDFS交互性操作的壓力。盡管如此,當 namenode機器宕機或者namenode進程出問題時,namenode的daemon進程可以通過人工的方式從snn上拷貝一份metadata 來恢復HDFS文件系統。

至于為什么要將SNN進程運行在一臺非NameNode的 機器上,這主要出于兩點考慮:

  • 可擴展性: 創建一個新的HDFS的snapshot需要將namenode中load到內存的metadata信息全部拷貝一遍,這樣的操作需要的內存就需要 和namenode占用的內存一樣,由于分配給namenode進程的內存其實是對HDFS文件系統的限制,如果分布式文件系統非常的大,那么 namenode那臺機器的內存就可能會被namenode進程全部占據。

  • 容錯性: 當snn創建一個checkpoint的時候,它會將checkpoint拷貝成metadata的幾個拷貝。將這個操作運行到另外一臺機器,還可以提供分布式文件系統的容錯性。

配置將SecondaryNameNode運行在另外一臺機器上

HDFS的一次運行實例是通過在namenode機器上的$HADOOP_HOME/bin/start-dfs.sh( 或者start-all.sh ) 腳本來啟動的。這個腳本會在運行該腳本的機器上啟動 namenode進程,而slaves機器上都會啟動DataNode進程,slave機器的列表保存在 conf/slaves文件中,一行一臺機器。并且會在另外一臺機器上啟動一個snn進程,這臺機器由 conf/masters文件指定。所以,這里需要嚴格注意, conf/masters 文件中指定的機器,并不是說jobtracker或者namenode進程要 運行在這臺機器上,因為這些進程是運行在 launch bin/start-dfs.sh或者 bin/start-mapred.sh(start-all.sh)的機器上的。所以,masters這個文件名是非常的令人混淆的,應該叫做 secondaries會比較合適。然后,通過以下步驟:

  1. 將所有想要運行secondarynamenode進程的機器寫到masters文件中,一行一臺。

  2. 修改在masters文件中配置了的機器上的conf/hadoop-site.xml文件,加上如下選項:

<property>  
<name>dfs.http.address</name>  
<value>namenode.hadoop-host.com:50070</value>  
</property>

  core-site.xml:這里有2個參數可配置,但一般來說我們不做修改。fs.checkpoint.period表示多長時間記錄一次hdfs的鏡像。默認是1小時。fs.checkpoint.size表示一次記錄多大的size,默認64M。

<property>  
  <name>fs.checkpoint.period</name>  
  <value>3600</value>  
  <description>The number of seconds between two periodic checkpoints.  
  </description>  
</property>  
  
<property>  
  <name>fs.checkpoint.size</name>  
  <value>67108864</value>  
  <description>The size of the current edit log (in bytes) that triggers  
       a periodic checkpoint even if the fs.checkpoint.period hasn't expired.  
  </description>  
</property>
 
<property> 
    <name>fs.checkpoint.dir</name> 
    <value>/data/work/hdfs/namesecondary</value> 
    <description>Determines where on the local filesystem the DFS secondary name node should store the temporary images to merge. If this is a comma-delimited list of directories then the image is replicated in all of the directories for redundancy. </description> 
</property>

3、配置檢查。配置完成之后,我們需要檢查一下是否成功。我們可以通過查看運行secondarynamenode的機器上文件目錄來確定是否成功 配置。首先輸入jps查看是否存在secondarynamenode進程。如果存在,在查看對應的目錄下是否有備份記錄。該目錄一般存在于hadoop.tmp.dir/dfs/namesecondary/下面。

四、恢復

制造namenode宕機的情況
1) kill 掉namenode的進程

[root@master name]# jps 
11749 NameNode 
12339 Jps 
11905 JobTracker 
[root@master name]# kill 11749

2)刪除dfs.name.dir所指向的文件夾,這里是/data/work/hdfs/name

[root@master name]# rm -rf *

刪除name目錄下的所有內容,但是必須保證name這個目錄是存在的

3)從secondarynamenode遠程拷貝namesecondary文件到namenode的namesecondary

[root@master hdfs]# scp -r slave-001:/data/work/hdfs/namesecondary/ ./

4)啟動namenode

[root@master /data]# hadoop namenode –importCheckpoint

正常啟動以后,屏幕上會顯示很多log,這個時候namenode就可以正常訪問了

5)檢查

使用hadoop fsck /user命令檢查文件Block的完整性

hadoop fsck /

6)停止namenode,使用crrl+C或者會話結束

7)刪除namesecondary目錄下的文件(保存干凈)

[root@master namesecondary]# rm -rf *

8)正式啟動namenode

[root@master bin]# ./hadoop-daemon.sh start  namenode

恢復工作完成,檢查hdfs的數據

9)balancer

在使用start-balancer.sh時, 默認使用1M/S(1048576)的速度移動數據(so slowly...)
修改hdfs-site.xml配置,這里我們使用的是20m/S

<property> 
<name>dfs.balance.bandwidthPerSec</name> 
<value>20971520</value> 
<description> Specifies the maximum bandwidth that each datanode can utilize for the balancing purpose in term of the number of bytes per second. </description> 
</property>

然后結果是導致job運行變得不穩定,出現一些意外的長map單元,某些reduce時間處理變長(整個集群負載滿滿的情況下,外加20m/s的balance),據說淘寶的為10m/s,需要調整后實驗,看看情況如何。

hadoop balancer -threshold 5

五、總結

1、secondarynamenode可以配置多個,master文件里面多寫幾個就可以。

2、千萬記得如果要恢復數據是需要手動拷貝到namenode機器上的。不是自動的(參看上面寫的恢復操作)。

3、鏡像備份的周期時間是可以修改的,如果不想一個小時備份一次,可以改的時間短點。core-site.xml中的fs.checkpoint.period值

感謝各位的閱讀!關于“hadoop Secondary NameNode有什么作用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

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

AI

渝中区| 桐城市| 陵水| 洪湖市| 确山县| 桦南县| 东乌珠穆沁旗| 玛沁县| 公安县| 九龙城区| 阳朔县| 故城县| 红安县| 榕江县| 阜平县| 鹰潭市| 和平县| 会宁县| 霍林郭勒市| 宜春市| 宜黄县| 如东县| 无锡市| 怀仁县| 资讯| 策勒县| 梅州市| 阳东县| 封开县| 玉山县| 喀喇| 宜良县| 万安县| 嘉峪关市| 阳春市| 宝坻区| 亚东县| 崇义县| 都匀市| 临城县| 安化县|