hdfs的四大機制和兩大核心-創(chuàng)新互聯(lián)

四大機制:

(1)心跳機制:

  介紹: hdfs是主從架構,所有為了實時的得知dataNode是否存活,必須建立心跳機制,在整個hdfs運行過程中,dataNode會定時的向nameNode發(fā)送心跳報告已告知nameNode自己的狀態(tài)。
   心跳內(nèi)容
     - 報告自己的存活狀態(tài),每次匯報之后都會更新維護的計數(shù)信息
     - 向nameNode匯報自己的存儲的block列表信息
   心跳報告周期

創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設,輝南企業(yè)網(wǎng)站建設,輝南品牌網(wǎng)站建設,網(wǎng)站定制,輝南網(wǎng)站建設報價,網(wǎng)絡營銷,網(wǎng)絡優(yōu)化,輝南網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
<property>
              <name>dfs.heartbeat.interval</name>
              <value>3</value> //單位秒
</property>

   nameNode判斷一個dataNode宕機的基準:連續(xù)10次接收不到dataNode的心跳信息,和2次的檢查時間。
  檢查時間:表示在nameNode在接收不到dataNode的心跳時,此時會向dataNode主動發(fā)送檢查

<property>
                  <name>dfs.namenode.heartbeat.recheck-interval</name>
                  <value>300000</value> //單位毫秒
</property>

  計算公式:2dfs.namenode.heartbeat.recheck-interval+10dfs.heartbeat.interval=310+3002=630s=10.5min

(2)安全機制:

   介紹:hdfs在啟動的時候,首先會進入的安全模式中,當達到規(guī)定的要求時,會退出安全模式。在安全模式中,不能執(zhí)行任何修改元數(shù)據(jù)信息的操作。
   hdfs的元數(shù)據(jù)的介紹(三個部分):
    - 抽象目錄樹
    - 數(shù)據(jù)與塊的對應關系(文件被切分成多少個塊)
    - block塊存放的位置信息
   hdfs元數(shù)據(jù)的存儲位置
    - 內(nèi)存:內(nèi)存中存儲了一份完整的元數(shù)據(jù)信息(抽象目錄樹、數(shù)據(jù)與塊的對應關系、block塊存放的位置信息)
    - 硬盤:抽象目錄樹、數(shù)據(jù)與塊的對應關系
    注意:其中內(nèi)存中的元數(shù)據(jù)的block塊存放的位置信息,是通過dataNode向nameNode匯報心跳時獲取的,硬盤中的元數(shù)據(jù),是因為內(nèi)存中的元數(shù)據(jù)在機器宕機時就自動消失,所以需要將內(nèi)存中的元數(shù)據(jù)持久化到硬盤
而硬盤中的元數(shù)據(jù)只有抽象目錄樹、數(shù)據(jù)與塊的對應關系,沒有block塊存放的位置信息
   nameNode在啟動的所作的操作
集群的啟動順序:nameNode---》dataNode---》secondaryNameNode
   將硬盤中的元數(shù)據(jù)信息加載內(nèi)存,如果是第一次啟動集群,此時會在本地生成一個fsimage鏡像文件,接收dataNode匯報的心跳,將匯報中的block的位置信息,加載到內(nèi)存。當然就在此時hdfs會進入安全模式。
  退出安全模式的條件
    - 如果在集群啟動時dfs.namenode.safemode.min.datanodes(啟動的dataNode個數(shù))為0時,并且,數(shù)據(jù)塊的最小副本數(shù)dfs.namenode.replication.min為1時,此時會退出安全模式,也就是說,集群達到了最小副本數(shù),并且能運行的datanode節(jié)點也達到了要求,此時退出安全模式
    - 啟動的dataNode個數(shù)為0時,并且所有的數(shù)據(jù)塊的存貨率達到0.999f時,集群退出安全模式(副本數(shù)達到要求)

<property>
     <name>dfs.namenode.safemode.threshold-pct</name>
     <value>0.999f</value>
</property>

   手動退出或者進入安全模式

  hdfs dfsadmin -safemode enter 進入
        hdfs dfsadmin -safemode leave 退出
        hdfs dfsadmin -safemode get 查看

(3)機架策略(副本存放策略):

hdfs的四大機制和兩大核心
  第一個副本,放置在離客戶端最近的那個機架的任意節(jié)點,如果客戶端是本機,那就存放在本機(保證有一個副本數(shù)),第二個副本,放置在跟第一個副本不同機架的任意節(jié)點上,第三個副本,放置在跟第二個副本相同機架的不同節(jié)點上。
   修改副本的方法
     1. 修改配置文件:

<property>
 <name>dfs.replication</name>
 <value>1</value>
</property>

     2. 命令設置: hadoop fs -setrep 2 -R dir

(4)負載均衡:

  hdfs的負載均衡:表示每一個dataNode存儲的數(shù)據(jù)與其硬件相匹配,即占用率相當
  ,如何手動調整負載均衡:
    - 集群自動調整負載均衡的帶寬:(默認為1M)

<property>
        <name>dfs.datanode.balance.bandwidthPerSec</name>
        <value>1048576</value> //1M
</property>

    - 告訴集群進行負載均衡:start-balancer.sh -t 10% 表示節(jié)點大占用率與節(jié)點的最小的占用率之間的差值當超過10%時,此時集群不會立刻進行負載均衡,會在集群不忙的時候進行。

兩大核心:

(1)文件上傳:

hdfs的四大機制和兩大核心

  • 使用hdfs提供的客戶端client,向遠程的namenode發(fā)起RPC請求。
  • namenode會檢查要創(chuàng)建的文件是否已經(jīng)存在、創(chuàng)建者是否有權限,成功則會為文件創(chuàng)建一個記錄,否則向客戶端拋出異常。
  • 當客戶端開始寫入文件的時候,客戶端會將文件切分成多個packets,并在內(nèi)部以數(shù)據(jù)隊列“data queue(數(shù)據(jù)隊列)”的形式管理這些packet,并向namenode申請blocks,獲取用來存儲replicas的合適的datanode列表,列表的大小根據(jù)namenode中的replication個數(shù)來設定。
  • client獲取block列表之后,開始以pipeline(管道)的形式,將packet寫入所有的replicas中,客戶端把packet以流的形式寫入到第一個datanode中,該datanode把packet存儲之后,在將其傳遞到此pipeline中的下一個datanode,直到最后一個 datanode。
  • 最后一個 datanode 成功存儲之后會返回一個 ack packet(確認隊列),在 pipeline 里傳遞至客戶端,在客戶端的開發(fā)庫內(nèi)部維護著"ack queue",成功收到 datanode 返回的 ackpacket 后會從"data queue"移除相應的 packet。
  • 如果傳輸過程中,有某個datanode出現(xiàn)了故障,那么當前pipeline會被關閉,出現(xiàn)故障的節(jié)點,會被剔除此pipeline,剩余的block會繼續(xù)剩下的的 datanode 中繼續(xù)以 pipeline 的形式傳輸,同時 namenode 會分配一個新的 datanode,保持 replicas 設定的數(shù)量。
  • 客戶端完成數(shù)據(jù)的寫入后,會對數(shù)據(jù)流調用close方法,關閉數(shù)據(jù)流
  • 只要寫入了 dfs.replication.min(最小寫入成功的副本數(shù))的復本數(shù)(默認為 1),寫操作就會成功,并且這個塊可以在集群中異步復制,直到達到其目標復本數(shù)(dfs.replication的默認值為 3),因為namenode已經(jīng)知道文件由哪些塊組成,所以他在返回成功前只需要等待數(shù)據(jù)塊進行最小量的復制。
  • 最后當這個文件上傳成功后,此時namenode會將預寫如日志的操作,同步到內(nèi)存中

    (2)文件下載:

    hdfs的四大機制和兩大核心

  • 客戶端對nameNode發(fā)送下載的指令,hadoop fs -get /a.txt
  • nameNode做一系列的校驗(是否權限、文件是否存在..)
  • nameNode向client發(fā)送block的位置信息,根據(jù)情況發(fā)送一部分或者全部
  • client計算出最進行DN,然后建立連接,進行文件下載
  • client每下載一個塊就會做CRC校驗,如果下載失敗,client會向nameNode匯報,然后從其他的DD相應的塊的副本,此時nameNode會記錄這個可能故障的DN,在下次上傳或者下載的時候,盡量不使用它。
  • 當所有的塊下載成功的時候,client向nameNode匯報成功信息

    補充元數(shù)據(jù)的合并:

    這是在分布式的基礎上,secondaryNamenode對元數(shù)據(jù)的合并:
    hdfs的四大機制和兩大核心
    合并時機:
    A:間隔多長時間合并一次

     <property>
              <name>dfs.namenode.checkpoint.period</name>
              <value>3600</value> //單位秒
            </property>

    B:操作日志記錄超過多少條合并一次

    <property>
              <name>dfs.namenode.checkpoint.txns</name>
              <value>1000000</value>
     </property>
  • 集群啟動時,加載fsimage鏡像文件到內(nèi)存,如果是第一啟動集群或者集群正常關閉之后重啟此時nameNode會在硬盤中合并一個fsimage鏡像
  • seconddaryNameNode定時(1分鐘)發(fā)送檢驗給nameNode,查看是否需要進行合并
  • 得知nameNode需要進行元數(shù)據(jù)合并
  • seconddaryNameNode向nameNode發(fā)送合并請求
  • nameNode將edits_inprogress_000095 根據(jù)seen_txid進行回滾,并且生成一個新的空的edits_inprogress_000096,繼續(xù)記錄操作日志
  • secondaryNameNode將回滾的edits和最新的fsiamge進行本地拉去
  • secondaryNameNode將edits和最新的fsiamge進行合并,在內(nèi)存中根據(jù)edits修改fsiamge
  • secondaryNameNode將合并后的fsiamge推送回namenode。并在本地保存一份。

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

當前題目:hdfs的四大機制和兩大核心-創(chuàng)新互聯(lián)
當前地址:http://muchs.cn/article18/dcpsdp.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、定制開發(fā)、外貿(mào)建站搜索引擎優(yōu)化、品牌網(wǎng)站設計網(wǎng)站排名

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

h5響應式網(wǎng)站建設