天天看點

初識Hadoop 之 HDFS 及安裝【持續更新中......】HDFS

目錄

HDFS

概念

HDFS的概念

存儲模型:位元組

架構模型

常用指令:

HDFS

概念

當資料集的大小超過一台獨立的計算機的存儲能力的時候,這個時候就有必要對檔案進行分區(partiiton)存儲在若幹台計算集上。管理網絡中跨多台計算機存儲的檔案系統,叫做分布式檔案系統(Distribute FileSystem )。該系統架構于網絡之上,勢必會引入網絡程式設計的複雜性,是以分布式檔案系統比普通磁盤檔案系統更為複雜,比如說:必須要容忍因為節點故障且不會引起資料丢失。

Hadoop 自帶一個稱為HDFS分布式檔案系統(Hadoop Distribute FileSuystem)。HDFS 以流式資料通路模式來存儲超大檔案,運作與商用硬體叢集上。

  • 超大檔案:在這裡指的是具有幾百MB、幾百GB、甚至幾百TB大小的檔案。
  • 流式資料通路模式:一次寫入,多次讀取是最高效的設計模式。
  • 低時間延遲的資料通路:要求低延遲的資料通路的應用,例如幾十毫秒,不适合在HDFS上運作。(HDFS是為高吞吐量優化的,這可能會以提高時間延遲為代價)
  • 大量小檔案:
  • 多使用者寫入,任意修改檔案:HDFS中的檔案寫入隻支援單寫入者,而且寫入者隻以“追加”的方式在檔案末尾寫資料,不支援多個寫入者,也不支援在任意位置修改資料。

HDFS的概念

  • 資料塊(block):預設128MB。
  • namenode 和 datenode 
  • 塊緩存:
  • 聯邦HDFS: viewfs://URI

存儲模型:位元組

  • 檔案線性切割成塊(Block):偏移量Offset(byte)(Block切割字元的下标)
  • Block分散存儲在叢集節點上
  • 單一檔案Block塊大小一緻,不同檔案的Block塊大小可以不一緻。
  • Block可以設定副本數,副本(資料的可靠性。可用性)分散在叢集不同的節點中。

        --副本數不可以超過節點數量

  • 檔案上傳可以設定Block大小和副本數量
  • 已上傳的Block副本數可以調整,大小不變
  • 隻支援一次寫入(append追加在檔案末尾),多次讀寫,同一時刻隻允許有一個寫入者

架構模型

  • 檔案中繼資料MataData,檔案資料
  1. (從)資料本身(Block資料)存儲在DateNode:多節點
  2. (主)中繼資料(檔案名、大小、塊資訊等)存儲在namenode:單節點
  • DataNode 和NameNode保持心跳,送出Block清單資訊
  • HdfsClient和NameNode交換中繼資料資訊
  • HdfsClient和DataNode交換Block資料

初識Hadoop 之 HDFS 及安裝【持續更新中......】HDFS

NameNode(NN)

  • 基于記憶體存儲:不會和磁盤發生交換
  1. 隻存在記憶體中
  2. 持久化(運作是單向落在磁盤中,重新開機的時候讀回來,具體方法後面)
  • NameNode主要功能 
  1. 接收用戶端的讀寫功能
  2. 收集DateNode彙報的Block資訊
  • NamoNode儲存的metaData資訊包括
  1. Block塊清單(偏移量)(持久化存儲的資訊),位置資訊(資料存儲的位置)
  2. 副本的存儲位置(由DataNode(心跳)上報)
  3. 檔案大小,時間

NameNode持久化

  • NameNode的metadata資訊會在啟動會加載到記憶體
  • matadata存儲到磁盤的名稱為fsimage
  • Block塊資訊不回儲存到fsimage
  • edits(editsLog)記錄對metadata的記錄檔
  • (合并fsimage 和 editsLog ,縮短叢集恢複的時間)

DataNode(DN)

  • 本地磁盤存儲資料(Block),檔案形式
  • 同時存儲Block的中繼資料資訊
  • 啟動DN時會向NN彙報block資訊
  • 通過向NN發送心跳保持與其聯系(3秒一次),如果NN十分鐘沒有收到DN的心跳,認為其已經lost,會copy其上的block到其他DN

SecondaryNameNode(SNN)(1.x)

  • 它不是NN的備份(但是可以做備份),它的主要工作是幫助NN合并editslog,減少NN啟動時間
  • SNN執行合并時機
  1. 根據配置檔案設定的時間間隔<fs.checkpoint.period>,預設3600秒
  2. 根據配置檔案設定的edits log 大小,fs.checkpoint.size,預設大小64MB
初識Hadoop 之 HDFS 及安裝【持續更新中......】HDFS

Block的副本放置政策

  • 第一個副本放置在上傳檔案的DN上,
  • 第二個副本放置在與第一個副本不同的機架的節點上
  • 第三個副本放置在與第二個副本相同的機架上不同節點上

HDFS寫流程

  • 初識Hadoop 之 HDFS 及安裝【持續更新中......】HDFS

HDFS讀流程

  • open-->getBlockLocationInfo-->read

HDFS安裝

  • 環境:CentOS-6.10-x86_64-minimal.iso
  • JDK:jdk-8u171-linux-x64.tar.gz
  • Hadoop:hadoop-2.6.0.tar.gz
  • 1、首先安裝上傳下載下傳功能 

root 賬号登陸後執行以下指令:

yum

install

-y lrzsz

  • 2、mkdir -p /usr/local/java
  • 3、cd /usr/local/java/
  • 4、rz -e jdk-8u171-linux-x64.tar.gz   或者 rz -be jdk-8u171-linux-x64.tar.gz
  • 5、tar -zxvf jdk-8u171-linux-x64.tar.gz 
  • 6、pwd  (複制目前路徑)
  • 初識Hadoop 之 HDFS 及安裝【持續更新中......】HDFS
  • 7、vim /etc/profile
  • 8、JAVA_HOME=/usr/local/java/jdk1.8.0_181

          JRE_HOME=/usr/local/java/jdk1.8.0_181/jre

          CLASSPATH=.:$JAVA_HOME:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$JAVA_HOME/lib/dt.jar

          PATH=$JAVA_HOME/bin:

          export PATH JAVA_HOME CLASSPATH

  • 9、 source /etc/profile
  • 10、java -version
    初識Hadoop 之 HDFS 及安裝【持續更新中......】HDFS

常用指令:

  • default.fs="hdfs://localhost/"
  • dfs.replication=3
  • hdfs 預設端口8020 運作namenode

繼續閱讀