日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

分布式文件系统—HDFS—核心设计

發布時間:2024/4/15 windows 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 分布式文件系统—HDFS—核心设计 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文作者:jiangw-Tony

原文地址:HDFS基礎使用

1、HDFS心跳機制(heartbeat)

  • Hadoop 是 Master/Slave 結構,Master 中有 NameNode 和 ResourceManager,Slave 中有Datanode 和 NodeManager。
  • Master 啟動的時候會啟動一個 IPC(Inter-Process Comunication,進程間通信)server 服務,等待 slave 的鏈接。
  • Slave 啟動時,會主動鏈接 master 的 ipc server 服務,并且每隔 3 秒鏈接一次 master,這個間隔時間是可以調整的,參數為 dfs.heartbeat.interval,這個每隔一段時間去連接一次的機制,我們形象的稱為心跳。Slave 通過心跳匯報自己的信息給 master,master 也通過心跳給 slave 下達命令。
  • NameNode 通過心跳得知 Datanode 的狀態,ResourceManager 通過心跳得知 NodeManager 的狀態。
  • 如果 master 長時間都沒有收到 slave 的心跳,就認為該 slave 掛掉了。
  • Namenode 感知到 Datanode 掉線死亡的時長計算:

    HDFS 默認的超時時間為 10 分鐘+30 秒。這里暫且定義超時時間為 timeout,計算公式為:timeout = 2 * heartbeat.recheck.interval + 10 * dfs.heartbeat.interval

    而默認的 heartbeat.recheck.interval 大小為 5 分鐘,dfs.heartbeat.interval 默認的大小為 3 秒。需要注意的是 hdfs-site.xml 配置文件中的 heartbeat.recheck.interval 的單位為毫秒,dfs.heartbeat.interval 的單位為秒。所以,舉個例子,如果heartbeat.recheck.interval 設置為 5000(毫秒),dfs.heartbeat.interval設置為 3(秒,默認),則總的超時時間為 40 秒。

    <property><name>heartbeat.recheck.interval</name><value>5000</value> </property> <property><name>dfs.heartbeat.interval</name><value>3</value> </property>

    2、HDFS安全模式

    問題引出:集群啟動后,可以查看目錄,但是上傳文件時報錯,打開web頁面可看到namenode正處于 safemode 狀態,怎么處理?

    解釋:safemode 是 namenode 的一種狀態(active/standby/safemode 安全模式)

    namenode 進入安全模式的原理

    1. namenode 發現集群中的 block 丟失率達到一定比例時(0.1%),namenode 就會進入安全模式,在安全模式下,客戶端不能對任何數據進行操作,只能查看元數據信息(比如 ls/mkdir),這個丟失率是可以手動配置的,默認是 dfs.safemode.threshold.pct=0.999f

    2.如何退出安全模式?

    • 找到問題所在,進行修復(比如修復宕機的 datanode)
    • 或者可以手動強行退出安全模式(但是并沒有真正解決問題)

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

    正常啟動的時候進入安全的原理:

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

    安全模式常用操作命令

    # 強制 NameNode 退出安全模式 hdfs dfsadmin -safemode leave # 進入安全模式 hdfs dfsadmin -safemode enter # 查看安全模式狀態 hdfs dfsadmin -safemode get # 等待,一直到安全模式結束 hdfs dfsadmin -safemode wait

    如果你使用的版本是 2.X 之前的版本,那么這個 hdfs 命令可以替換成 hadoop,它們都在 bin目錄下。

    3、HDFS副本存放策略

    1.作用數據分塊存儲和副本的存放,是保證可靠性和高性能的關鍵。

    2.方法:將每個文件的數據進行分塊存儲,每一個數據塊又保存有多個副本,這些數據塊副本分布在不同的機器節點上。

    3.存放說明

    在多數情況下,HDFS 默認的副本系數是 3。Hadoop 默認對 3 個副本的存放策略如下圖,其中 Block1,Block2,Block3 分別表示 Block的三個副本:

    • 第一個 block 副本放在和 client 所在的 node 里(如果 client 不在集群范圍內,則這第一個 node是隨機選取的,系統會嘗試不選擇哪些太滿或者太忙的 node)。
    • 第二個副本放置在與第一個節點不同的機架中的 node 中(近乎隨機選擇,系統會嘗試不選擇哪些太滿或者太忙的 node)。
    • 第三個副本和第二個在同一個機架,隨機放在不同的 node 中。

    4.修改副本數

    第一種方式:修改集群文件 hdfs-site.xml

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

    第二種方式:命令設置 bin/hadoop fs -setrep -R 1 /

    4、負載均衡

    機器與機器之間磁盤利用率不平衡是 HDFS 集群非常容易出現的情況,尤其是在 DataNode 節點出現故障或在現有的集群上增添新的 DataNode 的時候。分析數據塊分布和重新均衡 DataNode 上的數據分布的工具:

    sbin/start-balancer.shsbin/start-balancer.sh -threshold 5

    自動進行均衡非常慢,一天能移動的數據量在 10G-10T 的級別,很難滿足超大集群的需求。原因:HDFS 集群默認不允許 balance 操作占用很大的網絡帶寬,這個帶寬是可以調整的

    hdfs dfsadmin -setBalanacerBandwidth newbandwidthhdfs dfsadmin -setBalanacerBandwidth 10485760

    該數值的單位是字節,上面的配置是 10M/s,默認是 1M/s。另外,也可以在 hdfs-site.xml 配置文件中進行設置:

    <property><name>dfs.balance.bandwidthPerSec</name><value>10485760</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> # 機器容量最高的那個值 和 最低的那個值得差距 不能超過 10%sbin/start-balancer.sh -t 10%?? ?

    ?

    總結

    以上是生活随笔為你收集整理的分布式文件系统—HDFS—核心设计的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。