<menu id="u2y6m"></menu>
<tt id="u2y6m"><rt id="u2y6m"></rt></tt>
  • <input id="u2y6m"></input><tt id="u2y6m"><blockquote id="u2y6m"></blockquote></tt>
    <bdo id="u2y6m"><small id="u2y6m"></small></bdo>
  • <blockquote id="u2y6m"><optgroup id="u2y6m"></optgroup></blockquote>
  • 溫馨提示×

    HDFS應該了解的問題有哪些

    發布時間:2021-12-09 11:54:33 來源:億速云 閱讀:103 作者:小新 欄目:大數據

    這篇文章主要為大家展示了“HDFS應該了解的問題有哪些”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“HDFS應該了解的問題有哪些”這篇文章吧。

    1.Namenode的安全模式 ?

    安全模式是Namenode的一種狀態(Namenode主要有active/standby/safemode三種模式)。

    2.哪些情況下,Namenode會進入安全模式 ?

    a. Namenode發現集群中的block丟失率達到一定比例時(默認0.01%),Namenode就會進入安全模式,在安全模式下,客戶端不能對任何數據進行操作,只能查看元數據信息

    b. 在hdfs集群正常冷啟動時,Namenode也會在safemode狀態下維持相當長的一段時間,此時你不需要去理會,等待它自動退出安全模式即可
    3.為什么,在HDFS集群冷啟動時,Namenode會在安全模式下維持相當長的一段時間 ?

    Namenode的內存元數據中,包含文件路徑、副本數、blockid,及每一個block所在Datanode的信息,而fsimage中,不包含block所在的Datanode信息。那么,當Namenode冷啟動時,此時內存中的元數據只能從fsimage中加載而來,從而就沒有block所在的Datanode信息 ——> 就會導致Namenode認為所有的block都已經丟失 ——> 進入安全模式 ——> 所在的Datanode信息啟動后,會定期向Namenode匯報自身所持有的block信息 ——> 隨著Datanode陸續啟動,從而陸續匯報block信息,Namenode就會將內存元數據中的block所在Datanode信息補全更新 ——> 找到了所有block的位置,從而自動退出安全模式

    4.如何退出安全模式 ?  

    1)找到問題所在,進行修復(比如修復宕機的所在Datanode信息補全更新)

    2)可以手動強行退出安全模式:hdfs namenode --safemode leave 【不推薦,畢竟沒有真正解決問題】  
    5.Namenode服務器的磁盤故障導致namenode宕機,如何挽救集群及數據 ?
    1)HA機制:高可用hadoop2.0  
     2)配置hdfs-site.xml指定然后重啟Namenode運行時數據存放多個磁盤位置  
     3)然后重啟Namenode和SecondaryNamenode的工作目錄存儲結構完全相同,當然后重啟Namenode故障退出需要重新恢復時,可以從SecondaryNamenode的工作目錄存儲結構完全相同,當的工作目錄中的namesecondary文件夾及其中文件拷貝到然后重啟Namenode所在節點工作目錄中(但只能恢復大部分數據SecondaryNamenode最后一次合并之后的更新操作的元數據將會丟失),將namesecondary重命名為name然后重啟Namenode  
    6.Namenode是否可以有多個?Namenode跟集群數據存儲能力有關系嗎?  

    1)非HA的模式下Namenode只能有一個,HA模式下可以有兩個(一主active一備standby),HDFS聯邦機制可以有多個Namenode

    2)關系不大,存儲數據由Datanode完成。但是藥盡量避免存儲大量小文件,因為會耗費Namenode內存
    7.fsimage是否存放了block所在服務器信息 ?

    1)在edits中保存著每個文件的操作詳細信息

    2)在fsimage中保存著文件的名字、id、分塊、大小等信息,但是不保存Datanode 的IP

    3)在hdfs啟動時處于安全模式,Datanode 向Namenode匯報自己的IP和持有的block信息

    安全模式結束,文件塊和Datanode 的IP關聯上

    驗證過程:

    1) 啟動Namenode,離開safemode,cat某個文件,看log,沒有顯示文件關聯的Datanode

    2) 啟動Datanode,cat文件,內容顯示

    3) 停止Datanode ,cat文件,看log,看不到文件,但顯示了文件塊關聯的Datanode

    8.Datanode動態上下線?

    在實際生產環境中,在hdfs-site.xml文件中還會配置如下兩個參數:

    dfs.hosts:白名單;dfs.hosts.exclude:黑名單

    <property>

    <name>dfs.hosts</name>

    #完整的文件路徑:列出了允許連入NameNode的datanode清單(IP或者機器名)

    <value>$HADOOP_HOME/conf/hdfs_include</value>

    </property>

    <property>

    <name>dfs.hosts.exclude</name>

    #文件完整路徑:列出了禁止連入NameNode的datanode清單(IP或者機器名)

    <value>$HADOOP_HOME/conf/hdfs_exclude</value>

    </property>

    1) 上線datanode

    a) 保證上線的datanode的ip配置在白名單并且不出現在黑名單中

    b) 配置成功上線的datanode后,通過命令hadoop-daemon.sh datanode start啟動

    c) 刷新節點狀態:/bin/hadoop dfsadmin -refreshNodes(這個命令可以動態刷新dfs.hosts和dfs.hosts.exclude配置,無需重啟NameNode)

    d) 手動進行數據均衡:start-balance.sh

    2) 下線datanode

    a) 保證下線的datanode的ip配置在黑名單并且不出現在白名單中

    b) 關閉下線的節點

    c) 刷新節點狀態:/bin/hadoop dfsadmin -refreshNodes

    d) 機器下線完畢后,將它們從hdfs_exclude文件中移除

    9.關于Datanode的幾個問題 ?

    1)Datanode在什么情況下不會備份?

    在強制關閉或者非正常斷電時不會備份
    2)3個Datanode中有一個Datanode出現錯誤會怎樣?
    這個Datanode的數據會在其他的Datanode上重新做備份  
    10.HDFS HA機制下的腦裂現象以及避免方法 ?  
    當standby Namenode的ZKFailoverController收到active Namenode端故障通知時,不會立即將自己的狀態切換為active,因為此時active Namenode可能處于“假死”狀態,如果即刻切換為active狀態,有可能造成腦裂現象。
    為了防止腦裂,建議寫個腳本確保發出故障通知的active Namenode一定被kill掉,具體可以按照以下幾個步驟完成kill操作:
    1.執行殺掉active Namenode的shell腳本,等待ssh kill返回命令
    2.如果響應成功,就把原standby Namenode的狀態切換為active;如果響應失敗或者超時(可以配置一個超時時間)
    3.只要shell腳本的調用返回值為true,則切換自己端的Namenode狀態為active
    筆者強調:Namenode主備切換、健康狀態監控等需要通過ZKFailoverController等組件實現,但最終會借助于zookeeper集群

    11.HDFS為什么不適合存儲小文件 ?

    一般一個block對應的元數據大小為150byte左右,大量小文件會使內存中的元數據變大導致占用大量Namenode內存、尋址時間長

    12.大量小文件的處理方式?
    1)打成HAR files  
     命令:hadoop archive -archiveName xxx.har -p /src /dest  
     查看內容:hadoop fs -lsr har:///dest/xxx.har  

    該命令底層實際上是運行了一個MapReduce任務來將小文件打包成HAR。但是通過HAR來讀取一個文件并不會比直接從HDFS中讀取文件高效,因為對每一個HAR文件的訪問都需要進行index文件和文件本身數據的讀取。并且雖然HAR文件可以被用來作為MapReduce任務的input,但是并不能將HAR文件中打包的文件當作一個HDFS文件處理

    2)編寫MR程序,將小文件序列化到一個Sequence File中

    將小文件以文件名作為key,以文件內容作為value,編寫一個程序將它們序列化到HDFS上的一個Sequence File中,然后來處理這個Sequence File。相對打成HAR文件,具有兩個優勢:
    (1)Sequence File是可拆分的,因此MapReduce可以將它們分成塊并獨立地對每個塊進行操作
    (2)它們同時支持壓縮,不像HAR。在大多數情況下,塊壓縮是最好的選擇,因為它將壓縮幾個記錄為一個塊,而不是一個記錄壓縮一個塊

    筆者強調hdfs小文件問題要結合具體的處理引擎以及業務情況等,比如離線處理下、流式處理下小文件問題如何解決,之后筆者會開單篇詳述

    13.查看HDFS集群工作狀態命令 ?

    hdfs dfsadmin -report:快速定位各個節點情況,如每個節點的硬盤使用情況

    以上是“HDFS應該了解的問題有哪些”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

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

    免費撥打  400 100 2938 免費撥打 400 100 2938
    24小時售后技術支持 24小時售后技術支持
    返回頂部 返回頂部
    <menu id="u2y6m"></menu>
    <tt id="u2y6m"><rt id="u2y6m"></rt></tt>
  • <input id="u2y6m"></input><tt id="u2y6m"><blockquote id="u2y6m"></blockquote></tt>
    <bdo id="u2y6m"><small id="u2y6m"></small></bdo>
  • <blockquote id="u2y6m"><optgroup id="u2y6m"></optgroup></blockquote>
  • 一本久道久久综合丁香五月_免费视频禁止18以下禁止观看_日本japanese熟睡人妻_成熟闷骚女邻居引诱2