1. <nobr id="easjo"><address id="easjo"></address></nobr>

      <track id="easjo"><source id="easjo"></source></track>
      1. 
        

      2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
      3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>
          貴州做網站公司
          貴州做網站公司~專業!靠譜!
          10年網站模板開發經驗,熟悉國內外開源網站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          hdfs適用于什么樣的應用場景(Hadoop中HDFS適用于什么場景)

          來源:互聯網轉載 時間:2024-05-03 17:51:59

          Hadoop生態系統一直是大數據領域的熱點,其中包括今天要聊的HDFS,和計劃以后想聊的yarn, mapreduce, spark, hive, hbase, 已經聊過的zookeeper,等等。

          今天主聊HDFS,hadoop distributed file system, 起源于Google 的 GFS,只不過GFS是用c++寫的,Hadoop是Doug Cutting在yahoo用Java寫的。2008 年 Hadoop成為Apache top-level project。

          應用

          HDFS適用于什么場景呢? 非常大的文件存儲,比如以G或T為單位,因為HDFS內部的block的基本單位已經是128MB。注意這里有一個小文件問題,誤區是說怕1K的小文件也能占用128MB的硬盤,其實不是的,它還是占用1K硬盤,但是小文件問題的bottle neck是在name node里,因為name node要存儲文件和block的相關信息在內存里,文件數量一多,name node的內存就不夠了(比如,百萬小文件要占用300MB 內存),當然hdfs federation能夠通過sharding的方式解決name node內存不夠用的問題,接下來會細說。HDFS還適用于“write once,read-many”的場景,而且它的寫是append only,所以想改也沒法改。如果是多次寫的話,應該考慮一下cassandra(參見我的上一篇文章)。同時HDFS的文件通常只能允許single writer寫入(是通過lease的方式來保證只有一個writer能夠當前寫某個文件)。HDFS因為只需要普通的commodity hardware而不需要昂貴的高可用硬件而被企業歡迎。HDFS不適用于需要low latency的數據訪問方式,因為HDFS是拿延遲交換高throughput。

          概念

          Blocks

          HDFS里,文件是被分割成block大小的chunk,每個block是128MB,有人會問了,為什么非要搞這么大,主要是要縮短尋道時間在總硬盤讀寫時間中的比例,比如尋道時間需要5 ms,而尋到時間只能占總時間0.5%的比例,那么硬盤讀寫時間差不多在1s左右,1s中能穿多少文件呢,如果硬盤的讀寫為128MB/s,那么就能傳128MB,所以block大小就定義為128MB,這樣可以保證硬盤操作的時間有效的應用在讀寫上而不是花費在尋道上。當然太大了也不行,mapreduce的map通常是以block為單位,如果block太少,mapreduce的效率會比較低。

          hdfsfsck$path-files-blocks-locations

          上面的命令可以用來提供文件的block信息,比如block在哪臺機器,名字是什么,方便你進一步查詢block的具體信息。

          Namenodes and datanodes

          namenode管理namespace, 管理文件系統樹狀結構和文件/目錄的metadata,這些信息以如下方式持久化在硬盤里:namespace image 和 edit log。同時block的metadata也存放在namd node,存放于內存中。前面提到過百萬小文件,會占用300MB內存的例子。block信息為什么不持久化呢,因為它會變動,系統重啟的時候會從datanode那里重新構建。

          name node的備份有幾種方式,一種是把持久化存放于硬盤的信息既寫到本地硬盤也同時寫到遠程NFS mount。另一種方式是運行secondary namenode,它其實并沒有扮演namenode的角色,而是周期性的merge namesapce image以及edit log來防止edit log過大。它會保存一份merged namespace image,一旦primary fail了,就把NFS上的metadata copy到secondary namenode上,這樣secondary就成為了新的primary。

          具體過程如下圖所示,edit log和fsimage都是在硬盤中,edit log就是WAL(cassandra寫操作也用到了WAL的手段,WAL很流行,可以單拉出來講一次),fsimage是check point of the filesystem metadata。寫的時候先寫edit log,然后update in-memory representation of filesystem metadata(用來serve讀請求),圖中沒有畫出這部分操作。

          有沒有更好的方法呢?上述方法沒能提供HA, namenode仍然是single point of failure。新的primary需要(1)load namespace image into memory (2)replay edit log (3)從datanode那邊接收足夠的block reports(前文提到block信息是在內存中的)。這個過程有可能會話費30分鐘或更久。client等不了啊~~

          Hadoop 2提供了HA的support。namenode采用active-standby的配置方式:

          • namenodes使用高可用共享存儲來存edit log。active每次寫入都會被standby讀出并synchronize到自己的內存中。

          • datanodes在發送block reports時會同時發給所有的name nodes,記住block mapping是在內存中。

          • 客戶端需要配置來handle namenode failover,其實就是watch zookeeper的leader election(參見我之前講的zookeeper)

          • 這樣就不需要secondary namenode啦,standby取代了它的作用會周期性的產生check points

          上面提到的共享存儲主要指的是QJM(quorum journal manager),通常配置3個(當然我也見過50個node配5個journal nodes),寫的時候需要滿足quorum。

          這樣當active namenode fail時,standby可以馬上扛住,因為latest edit log和 up-to-date block mapping都在內存中。

          HDFS write

          HDFS read

          CLI Example

          touchtest.txthdfsdfs-mkdir/user/qingge/testdirhdfsdfs-copyFromLocal./test.txt/user/qingge/testdir/hdfsdfs-ls/user/qingge/testdir/test.txthdfsdfs-chmodo-r/user/qingge/testdir/test.txthdfsdfs-cat/user/qingge/testdir/test.txt|head-10hdfsdfs-mv/user/qingge/testdir/test.txt/user/qingge/testdir/test2.txthdfsfsck/data/lalala-files-blocks-locationshdfsfsck-blockIdblk_10101010

          HTTP 訪問

          (1) direct access: HDFS daemons server HTTP requests, embedded web servers in the name node and datanodes act as WebHDFS endpoionts.

          (2) proxy access: 中間有多個HDFS proxy,for strictr firewall and bandwidth-limiting policies, proxy和node之間使用RPC request和block request。

          HDFS Federation

          相當于namenode sharding了,如果不想用HA,然后namenode內存又要爆了怎么辦,答分區呀,每個namenode從根目錄下劃走幾個子目錄,無線分區無線擴充,每個namenode之間井水不犯河水,一個爆了或廢了絲毫不影響另一個。

          思考題:

          如果HDFS有1PB容量,每個block大小是64MB,平均的metadata大小是每個block300B,replication factor是3, 那么namenode最小的內存是多少呢?

          答:差不多需要1.56G,1024*1024*1024 MB/(64MB*3)*300B/(1024 * 1024 * 1024) = 1.56 GB

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

          c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...

          2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...

          :喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...

          銀根這個詞估計對于普通人來說,還是比較陌生的,但是在金融界已經是流行多年的專業數語,那銀根是什么意思呢?銀根就是指在目前中國金融市場上資金量的供應。在以前以金銀為錢幣的時候,在市場上交易都是用白銀,所以就流傳下來銀根這個代名詞。銀根又分為:銀根緊俏和銀根松疲兩種。如果在金融市場上資金供不應求的話,通常這種現象就會被稱為銀根緊俏,如果在金融市場上資金供過于求的話,這種現象就會被稱為銀根松疲。那么銀根...

          熊貓債券是什么?熊貓債券是指中國境外的機構在中國發行的債券。熊貓債券在中國定位是投資人,目的在于為中國龐大的人民幣儲蓄拓寬新的投資目標。熊貓債券作用是讓人民幣走向世界。熊貓債券歸屬于外國債券的一種,而且熊貓債券的發行利率應該按照同期限金融債券的收益率水平確定。熊貓債券的發行推動了中國債券市場的深入發展,為債券在國際上的發展提供了先進管理技術,有效的協助國家解決對民營企業的直接融資比重底下的問題,國...

          早前各大銀行一直在推行etc,以各大銀行的推行力度來看,現在etc的普及程度已經在90%以上了。對于使用etc的車主來說,偶爾會遇到etc莫名其妙地被拉黑的情況,etc一旦被拉入黑名單則對車主的影響是很大的。etc卡一旦被拉入黑名單則對車主的影響是很大的,車主發現之后需要及時解除etc黑名單限制。etc黑名單可以在高速公路的ETC營業網點查看,也可以撥打12122查詢,車主可以選擇適合自己的方式。...

          TOP
          国产初高中生视频在线观看|亚洲一区中文|久久亚洲欧美国产精品|黄色网站入口免费进人
          1. <nobr id="easjo"><address id="easjo"></address></nobr>

              <track id="easjo"><source id="easjo"></source></track>
              1. 
                

              2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
              3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>