Hadoop HDFS(一)

huxd發表於2018-05-24

微信公眾號:碼農小胡

大吼一聲,我胡漢三又回來了,最近太忙,終於可以學習自己的東西了,開始更新中,逐步的把hadoop這個補全,工作都是眼淚啊。

Hadoop HDFS(一)

由於時間關係,經常忙著工作,很少寫一些文章了,現在重新開始,記錄一下自己在學習中所遇到的問題,這次學習Hadoop和其他的文章不一樣,減去繁瑣的教程,直接記錄自己學習的東西,為什麼不從搭建環境開始寫呢,網上一堆,太多了,所以,自己百度一下全部可以搞定,這裡直接從hdfs開始。

HDFS的概念

首先,hdfs是一個檔案系統,用來儲存檔案,通過統一的名稱空間---目錄樹來定位檔案 其次,它是分散式的,由多個伺服器聯合起來,實現功能。

重要特性:

(1)HDFS中的檔案在物理上是分塊儲存的,塊的大小是可以通過配置引數來規定,預設的是128M,老版本的是64M。 (2)HDFS檔案系統會給客戶端提供一個統一的抽象目錄樹,客戶端通過路徑來訪問檔案。 (3)目錄結構及檔案分塊資訊的管理由namenode節點承擔 namenode是HDFS叢集主節點,負責維護整個HDFS檔案系統的目錄樹,以及每一個路徑所對應的block塊資訊(包括block的id,以及所在的datanode伺服器) (4)檔案的各個block的儲存管理由datanode節點承擔 dateanode是HDFS叢集從節點,每一個block都可以在多個datanode上儲存多啊個副本,並可以通過引數設定。 (5)需要注意的是HDFS是設計成適應一詞寫入,多次讀取的場景,且不支援檔案的修改 (注意:適合做資料分析,不能做網盤,不便修改,延遲大,網路開銷大,成本高,還是使用百度網盤吧)

HDFS工作機制

1、概述

(1)HDFS兩個角色:namenode,datanode (2)Namenode負責管理檔案系統後設資料 (3)Datanode負責管理使用者檔案資料塊 (4)檔案按照固定大小切成若干塊後分布式儲存在若干datanode上 (5)每一額檔案塊可以有多個副本,放在不用的datanode上 (6)Datanode會定期向Namenode彙報自身儲存檔案block資訊,而namenode則會負責爆出檔案的副本數量 (7)HDFS內部工作機制對客戶端保持透明,客戶端請求訪問HDFS都是通過向namenode申請來進行

2、HDFS寫資料流程

1、namenode通訊請求上傳檔案,namenode檢查目標檔案是否存在,父目錄是否存在。 2、namenode返回是否可以上傳。 3、client請求第一個block傳輸到哪個datanode伺服器上 4、namenode返回三個伺服器datanade。 5、client請求3臺datanode中的一臺上傳資料(其實是一個RPC呼叫,建立pipeline),A收到請求會呼叫B,B呼叫C將pipline建立完成,返回客戶端一個響應,告訴客戶端以及準備好. 6、client開始往A上傳第一額block,以pcaket為短文,A收到一個packet就會傳輸給B,B傳給C,A每傳一個packet會放入一個應答佇列等待應答 7、當一個block傳輸完成之後,client再次請求namenode上傳第二個block (注:上傳資料時,datanode選擇策略: 1、第一給副本先考慮client 端最近的(同機架)2、第二個副本考慮跨機架挑選,增加副本可靠性,3、第三個副本就在第一個副本同機架另外選一臺datanode存放 如何知道哪個機器在哪個機架上,可配置機架感知)

你想輸入的替代文字

3、HDFS讀資料流程

1、跟namenode通訊查詢後設資料,找到檔案所在大datanode伺服器。 2、挑選一臺datanode伺服器,請求建立scoket流。 3、datanode傳送資料,以packet 為單位做校驗 4、客戶端以packet為單位接受,先在本地快取,然後寫入目標檔案

你想輸入的替代文字

相關文章