HDFS原理及操作

HDFS原理及操作

1巷疼、HDFS原理

HDFS(Hadoop Distributed File System)是一個分布式文件系統(tǒng),是谷歌的GFS山寨版本。它具有高容錯性并提供了高吞吐量的數(shù)據(jù)訪問,非常適合大規(guī)模數(shù)據(jù)集上的應用佛南,它提供了一個高度容錯性和高吞吐量的海量數(shù)據(jù)存儲解決方案梗掰。

高吞吐量訪問:HDFS的每個Block分布在不同的Rack上,在用戶訪問時嗅回,HDFS會計算使用最近和訪問量最小的服務器給用戶提供及穗。由于Block在不同的Rack上都有備份,所以不再是單數(shù)據(jù)訪問妈拌,所以速度和效率是非秤堤常快的。另外HDFS可以并行從服務器集群中讀寫尘分,增加了文件讀寫的訪問帶寬猜惋。

高容錯性:系統(tǒng)故障是不可避免的,如何做到故障之后的數(shù)據(jù)恢復和容錯處理是至關重要的培愁。HDFS通過多方面保證數(shù)據(jù)的可靠性著摔,多份復制并且分布到物理位置的不同服務器上,數(shù)據(jù)校驗功能定续、后臺的連續(xù)自檢數(shù)據(jù)一致性功能都為高容錯提供了可能谍咆。

線性擴展:因為HDFS的Block信息存放到NameNode上,文件的Block分布到DataNode上私股,當擴充的時候僅僅添加DataNode數(shù)量摹察,系統(tǒng)可以在不停止服務的情況下做擴充,不需要人工干預倡鲸。

2供嚎、HDFS架構

102233372688810.jpg

如上圖所示HDFS是Master和Slave的結構,分為NameNode峭状、Secondary NameNode和DataNode三種角色克滴。
NameNode:在Hadoop1.X中只有一個Master節(jié)點,管理HDFS的名稱空間和數(shù)據(jù)塊映射信息优床、配置副本策略和處理客戶端請求劝赔;

Secondary NameNode:輔助NameNode,分擔NameNode工作胆敞,定期合并fsimage和fsedits并推送給NameNode着帽,緊急情況下可輔助恢復NameNode;

DataNode:Slave節(jié)點移层,實際存儲數(shù)據(jù)仍翰、執(zhí)行數(shù)據(jù)塊的讀寫并匯報存儲信息給NameNode;

3幽钢、HDFS讀操作

222.gif

1、客戶端通過調用FileSystem對象的open()方法來打開希望讀取的文件傅是,對于HDFS來說匪燕,這個對象時分布文件系統(tǒng)的一個實例蕾羊;

2、DistributedFileSystem通過使用RPC來調用NameNode以確定文件起始塊的位置帽驯,同一Block按照重復數(shù)會返回多個位置龟再,這些位置按照Hadoop集群拓撲結構排序,距離客戶端近的排在前面尼变;

3利凑、 前兩步會返回一個FSDataInputStream對象,該對象會被封裝成DFSInputStream對象嫌术,DFSInputStream可以方便的管理datanode和namenode數(shù)據(jù)流哀澈,客戶端對這個輸入流調用read()方法;

4度气、存儲著文件起始塊的DataNode地址的DFSInputStream隨即連接距離最近的DataNode割按,通過對數(shù)據(jù)流反復調用read()方法,可以將數(shù)據(jù)從DataNode傳輸?shù)娇蛻舳耍?/p>

5磷籍、 到達塊的末端時适荣,DFSInputStream會關閉與該DataNode的連接,然后尋找下一個塊的最佳DataNode院领,這些操作對客戶端來說是透明的弛矛,客戶端的角度看來只是讀一個持續(xù)不斷的流;

6比然、 一旦客戶端完成讀取丈氓,就對FSDataInputStream調用close()方法關閉文件讀取

4、HDFS寫操作

333.gif

1谈秫、客戶端通過調用DistributedFileSystem的create()方法創(chuàng)建新文件扒寄;

2、DistributedFileSystem通過RPC調用NameNode去創(chuàng)建一個沒有Blocks關聯(lián)的新文件拟烫,創(chuàng)建前NameNode會做各種校驗该编,比如文件是否存在、客戶端有無權限去創(chuàng)建等硕淑。如果校驗通過课竣,NameNode會為創(chuàng)建新文件記錄一條記錄,否則就會拋出IO異常置媳;

3于樟、前兩步結束后會返回FSDataOutputStream的對象,和讀文件的時候相似拇囊,F(xiàn)SDataOutputStream被封裝成DFSOutputStream迂曲,DFSOutputStream可以協(xié)調NameNode和Datanode×认客戶端開始寫數(shù)據(jù)到DFSOutputStream路捧,DFSOutputStream會把數(shù)據(jù)切成一個個小的數(shù)據(jù)包关霸,并寫入內部隊列稱為“數(shù)據(jù)隊列”(Data Queue);

4杰扫、DataStreamer會去處理接受Data Queue队寇,它先問詢NameNode這個新的Block最適合存儲的在哪幾個DataNode里,比如重復數(shù)是3章姓,那么就找到3個最適合的DataNode佳遣,把他們排成一個pipeline.DataStreamer把Packet按隊列輸出到管道的第一個Datanode中,第一個DataNode又把Packet輸出到第二個DataNode中凡伊,以此類推零渐;

5、HFSOutputStream還有一個對列叫Ack Quene窗声,也是有Packet組成相恃,等待DataNode的收到響應,當Pipeline中的所有DataNode都表示已經(jīng)收到的時候笨觅,這時Akc Quene才會把對應的Packet包移除掉拦耐;

6、客戶端完成寫數(shù)據(jù)后調用close()方法關閉寫入流见剩;

7杀糯、ataStreamer把剩余的包都刷到Pipeline里然后等待Ack信息,收到最后一個Ack后苍苞,通知NameNode把文件標示為已完成固翰。

5、HDFS中常用到的命令

lhadoop fs

hadoop fs -ls /

hadoop fs -lsr

hadoop fs -mkdir /user/hadoop

hadoop fs -put a.txt /user/hadoop/

hadoop fs -get /user/hadoop/a.txt /

hadoop fs -cp src dst

hadoop fs -mv src dst

hadoop fs -cat /user/hadoop/a.txt

hadoop fs -rm /user/hadoop/a.txt

hadoop fs -rmr /user/hadoop/a.txt

hadoop fs -text /user/hadoop/a.txt

hadoop fs -copyFromLocal localsrc dst 與hadoop fs -put功能類似羹呵。

hadoop fs -moveFromLocal localsrc dst 將本地文件上傳到hdfs骂际,同時刪除本地文件。

lhadoop fsadmin

hadoop dfsadmin -report

hadoop dfsadmin -safemode enter | leave | get | wait

hadoop dfsadmin -setBalancerBandwidth 1000

lhadoop fsck

lstart-balancer.sh

6冈欢、測試例子

import java.io.InputStream;

import java.net.URI;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;
import org.apache.hadoop.io.IOUtils;

public class FileSystemCat {
    public static void main(String[] args) throws Exception {
        String uri = args[0];
        Configuration conf = new Configuration();
        FileSystem fs = FileSystem. get(URI.create (uri), conf);
        InputStream in = null;
    try {
            in = fs.open( new Path(uri));
            IOUtils.copyBytes(in, System.out, 4096, false);
        } finally {
            IOUtils.closeStream(in);
        }
    }
}

6.1 創(chuàng)建代碼目錄

使用如下命令啟動Hadoop

cd /app/hadoop-1.1.2/bin

./start-all.sh

在/app/hadoop-1.1.2目錄下使用如下命令建立myclass和input目錄:
cd /app/hadoop-1.1.2
mkdir myclass
mkdir input

6.2 建立例子文件上傳到HDFS中

進入/app/hadoop-1.1.2/input目錄歉铝,在該目錄中建立quangle.txt文件
cd /app/hadoop-1.1.2/input
touch quangle.txt
vi quangle.txt
內容為:
On the top of the Crumpetty Tree The Quangle Wangle sat,、 But his face you could not see, On account of his Beaver Hat.
使用如下命令在hdfs中建立目錄/class4
hadoop fs -mkdir /class4
hadoop fs -ls /
把例子文件上傳到hdfs的/class4文件夾中
cd /app/hadoop-1.1.2/input
hadoop fs -copyFromLocal quangle.txt /class4/quangle.txt
hadoop fs -ls /class4

6.3 編譯代碼

在/app/hadoop-1.1.2/myclass目錄中凑耻,使用如下命令編譯代碼:
javac -classpath ../hadoop-core-1.1.2.jar FileSystemCat.java

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末太示,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子香浩,更是在濱河造成了極大的恐慌类缤,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件邻吭,死亡現(xiàn)場離奇詭異餐弱,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進店門膏蚓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來猖败,“玉大人,你說我怎么就攤上這事降允。” “怎么了艺糜?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵剧董,是天一觀的道長。 經(jīng)常有香客問我破停,道長翅楼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任真慢,我火速辦了婚禮毅臊,結果婚禮上,老公的妹妹穿的比我還像新娘黑界。我一直安慰自己管嬉,他們只是感情好,可當我...
    茶點故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布朗鸠。 她就那樣靜靜地躺著蚯撩,像睡著了一般。 火紅的嫁衣襯著肌膚如雪烛占。 梳的紋絲不亂的頭發(fā)上胎挎,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天,我揣著相機與錄音忆家,去河邊找鬼犹菇。 笑死,一個胖子當著我的面吹牛芽卿,可吹牛的內容都是我干的揭芍。 我是一名探鬼主播,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼蹬竖,長吁一口氣:“原來是場噩夢啊……” “哼沼沈!你這毒婦竟也來了?” 一聲冷哼從身側響起币厕,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤列另,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后旦装,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體页衙,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了店乐。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片艰躺。...
    茶點故事閱讀 40,110評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖眨八,靈堂內的尸體忽然破棺而出腺兴,到底是詐尸還是另有隱情,我是刑警寧澤廉侧,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布页响,位于F島的核電站,受9級特大地震影響段誊,放射性物質發(fā)生泄漏闰蚕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一连舍、第九天 我趴在偏房一處隱蔽的房頂上張望没陡。 院中可真熱鬧,春花似錦索赏、人聲如沸盼玄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽强岸。三九已至,卻和暖如春砾赔,著一層夾襖步出監(jiān)牢的瞬間蝌箍,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工暴心, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留妓盲,地道東北人。 一個月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓专普,卻偏偏與公主長得像悯衬,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子檀夹,可洞房花燭夜當晚...
    茶點故事閱讀 45,047評論 2 355

推薦閱讀更多精彩內容

  • 首先筋粗,我們在使用前先看看HDFS是什麼?這將有助于我們是以后的運維使用和故障排除思路的獲得炸渡。 HDFS采用mast...
    W_Bousquet閱讀 4,196評論 0 2
  • 隨著數(shù)據(jù)量越來越大娜亿, 在 一個操作系統(tǒng)管轄的范圍存不下了, 那么就 分配到更多的操作系統(tǒng)管理的磁盤中蚌堵, 但是不方便...
    tracy_668閱讀 2,651評論 0 6
  • HDFS是Hadoop的一個重要組件买决,提供了分布式系統(tǒng)的文件存儲沛婴,下面就我學習到的知識點整理一下吧 一、相關概念 ...
    帥可兒妞閱讀 331評論 1 0
  • HDFS入門 hadoop架構 Hadoop 1.0中的資源管理方案 Hadoop 1.0指的是版本為Apache...
    依天立業(yè)閱讀 1,057評論 0 1
  • 《愛情變錯身》---洋洋 角色:男主(名哲)督赤,女主(洋洋)男室友(橙子)嘁灯,姐姐(月亮), 第一幕 女主樓下 男(抬...
    小洋妹閱讀 402評論 0 0