hadoop基石HDFS
生活随笔
收集整理的這篇文章主要介紹了
hadoop基石HDFS
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
HDFS的設(shè)計(jì)理念是源于非常樸素的思想:
當(dāng)數(shù)據(jù)集大小超過單臺計(jì)算機(jī)的存儲能力時(shí),就有必要將其進(jìn)行分區(qū),并且存儲到若干臺單獨(dú)的計(jì)算機(jī)上,而管理網(wǎng)絡(luò)中跨多臺計(jì)算機(jī)存儲的文件系統(tǒng)稱為分布式文件系統(tǒng)(distribute filesystem).
hadoop 具有一個抽象的文件系統(tǒng)的概念,HDFS只是其中的一個實(shí)現(xiàn)。
hadoop文件系統(tǒng)接口由Java 抽象類 org.apache.hadoop.fs.FileSystem類定義,該類同時(shí)還繼承了org.apache.hadoop.conf并且實(shí)現(xiàn)了JAVA 的java.io.Closeable接口。
HDFS特點(diǎn)以及短板:
特點(diǎn):
- 適合存儲超大文件:存儲在HDFS 的文件大多在GB甚至是TB 級別。
- 運(yùn)行于廉價(jià)的硬件之上:HDFS 在設(shè)計(jì)的時(shí)候,就已經(jīng)認(rèn)為在汲取規(guī)模足夠大的時(shí)候,節(jié)點(diǎn)故障并不是小概率事件,而可以認(rèn)為是一種常態(tài),例如,一個節(jié)點(diǎn)故障的概率如果是千分之一,那么當(dāng)集群規(guī)模是1000臺的時(shí)候,正常情況每天都會有節(jié)點(diǎn)故障。當(dāng)節(jié)點(diǎn)發(fā)生故障是,能夠繼續(xù)運(yùn)行并且不讓用戶察覺到明顯的終端,所以,HDFS并不需要運(yùn)行在高可靠且昂貴的服務(wù)器上,普通的PC server即可。
- 流式數(shù)據(jù)訪問:HDFS認(rèn)為,一次寫入,多次讀取是最搞笑的訪問模式。HDFS 的數(shù)據(jù)集作為Hadoop的分析對象,在數(shù)據(jù)集生成以后,會長時(shí)間在吃數(shù)據(jù)集上 進(jìn)行各種分析。每次分析都將涉及該數(shù)據(jù)集的大部分?jǐn)?shù)據(jù)甚至全部數(shù)據(jù),因此,讀取整個數(shù)據(jù)集的時(shí)間延遲比讀取第一條記錄的時(shí)間延遲更重要~。
短板:
- 實(shí)時(shí)數(shù)據(jù)訪問弱:如果應(yīng)用要求數(shù)據(jù)訪問的時(shí)間在秒或者毫秒級別,那么,HDFS是做不到的,由于HDFS針對高書記吞吐做了優(yōu)化,因而犧牲了讀取數(shù)據(jù)的速度,隊(duì)友相應(yīng)時(shí)間是秒或者是毫秒的數(shù)據(jù)藩王,可以考慮使用HBase.
- 大量的小文件:當(dāng)hadoop啟動的時(shí)候,NameNode會將所有元數(shù)據(jù)讀到內(nèi)存,以此構(gòu)建目錄樹。一般來講,一個HDFS上的 文件、目錄和數(shù)據(jù)塊的存儲信息,大約在150字節(jié)左右,那么,可以推算出,如果NameNode的內(nèi)存為16GB的話,大概只能存放480萬個文件,對于一個超大規(guī)模的集群,這個數(shù)字很快就能達(dá)到。
- 多用戶寫入,任意修改文件:HDFS中的文件只能有一個寫入者,并且寫數(shù)據(jù)操作總是在文件末。它不支持多個寫入者,也不支持在數(shù)據(jù)寫入之后,在文件的任意位置進(jìn)行修改。事實(shí)上,如果不講hdfs-site.xml中的dfs.support.append設(shè)置為true,HDFS也不支持對文件進(jìn)行追加操作。
HDFS-架構(gòu):
- 塊:
使用塊的好處就: (1)可以保存比存儲節(jié)點(diǎn)單一磁盤大的文件。 (2)簡化存儲子系統(tǒng):實(shí)現(xiàn)了元數(shù)據(jù)和數(shù)據(jù)的分塊管理與存儲。 (3)容錯性高:將dfs.relication 設(shè)置為2,即配置每個HDFS的塊在hadoop中保存的份數(shù),值越高,冗余性越好,默認(rèn)為3.
- NameNode和SecondaryNameNode :
SecondaryNameNode,也被稱之為第二名字節(jié)點(diǎn),是用于定期合并命名空間鏡像和命名空間鏡像的編輯日志的輔助守護(hù)進(jìn)程。每個HDFS集群都有一個SecondaryNameNode,在生產(chǎn)環(huán)境下,一般SecondaryNameNode也會單獨(dú)運(yùn)行在一臺服務(wù)器上。
- DataNode?
DataNode會不斷地向NameNode報(bào)告。初始化時(shí),每個DateNode將當(dāng)前存儲的塊告知NameNode,在集群正常工作時(shí),DateNode任然會不斷的更新NameNode,為止提供本地修改的相關(guān)信息,同時(shí)接受來自NameNode的指令,創(chuàng)建,移動或者刪除本地磁盤上的數(shù)據(jù)。
- HDFS客戶端
轉(zhuǎn)載于:https://www.cnblogs.com/DeepRunning/p/9205996.html
總結(jié)
以上是生活随笔為你收集整理的hadoop基石HDFS的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android利用canvas画各种图形
- 下一篇: handler机制的原理