天天看點

Hadoop核心元件之HDFS

HDFS:分布式檔案系統

一句話總結

一個檔案先被拆分為多個Block塊(會有Block-ID:友善讀取資料),以及每個Block是有幾個副本的形式存儲

1個檔案會被拆分成多個Block

blocksize:128M(Hadoop2.0以後預設的塊大小,可以自定義配置)

130M ==> 2個Block: 128M 和 2M

HDFS設計目标

  • 巨大的分布式檔案系統
  • 滿足大資料場景基本資料存儲的要求
  • 廉價的機器上
  • 當你的存儲空間不夠,你可以水準橫向擴充機器方式提高

HDFS架構

NameNode + N個DataNode

典型的主從架構,即:

1 Master(NameNode/NN) 帶 N個Slaves(DataNode/DN)

建議:NN和DN是部署在不同的節點上

PS:

常見的主從架構還有:HDFS/YARN/HBase

主從架構一個難題就是:如何保證HA的問題,很多時候會使用Zookeeper來配置使用

NameNode/NN:主節點Master

1)負責用戶端請求的響應

2)負責中繼資料(檔案的名稱、副本系數、Block存放的DN)的管理

DataNode/DN:從節點Slaves

1)存儲使用者的檔案對應的資料塊(Block)

2)要定期向NN發送心跳資訊,彙報本身及其所有的block資訊,健康狀況

HDFS副本機制

  • replication factor:副本系數、副本因子
  • 一個大的檔案會被拆分為許多塊,最終以多副本的方式存儲在多個節點上
  • 一個檔案,除了最後一個,其餘所有塊的大小都是一緻的
問題:那麼如何為每個Block選擇存儲在哪些節點上呢?
Hadoop核心元件之HDFS

Rack代表的是機架:一般三份副本分别是這樣存儲的

第一份副本:存儲在目前送出存儲的機架中目前節點上

第二份副本:存儲在非目前機架上的某一節點上

第三份副本:和第二副本統一機架的不同節點之上

建議:生産隻能夠,起碼劃分兩個及其以上的機架

HDFS Shell

Usage: hdfs dfs [COMMAND [COMMAND_OPTIONS]]

hadoop fs -ls / 等價 hdfs dfs -ls /

[[email protected] data]# ls
hadoop-tmp  hello.txt
上傳:
 [[email protected] data]# hadoop fs -put hello.txt /
下載下傳:
[[email protected] data]# hadoop fs -get /test/a/b/h.txt
檢視内容:
[[email protected] data]# hadoop fs -text /hello.txt
[[email protected] data]# hadoop fs -cat /hello.txt
建立目錄;
[[email protected] data]# hadoop fs -mkdir /test
建立遞歸的目錄
[[email protected] data]# hadoop fs -mkdir -p /test/a/b
遞歸展示目錄檔案:
[[email protected] data]# hadoop fs -ls -R /
本地拷貝到hdfs:
[[email protected] data]# hadoop fs -copyFromLocal hello.txt /test/a/b/h.txt
删除檔案:
[[email protected] data]# hadoop fs -rm /hello.txt
遞歸删除檔案夾:
[[email protected] data]# hadoop fs -rm -R /test

           

HSFS的讀寫流程,工作原理(面試)

漫畫圖解

https://blog.csdn.net/eric_sunah/article/details/41546863

Client:用戶端,通過HDFS Shell或Java API發起讀寫請求

1個NameNode:全局把控

N 個DataNode: 資料存儲

寫資料流程:

1.用戶端把檔案拆分為多個Block

2.NameNode:提供剛才拆分出來的Block塊的具體datanode存儲位置

3.DataNode:存儲Block塊的資料,把3個副本資料寫完

讀資料流程:

1.使用者提供檔案名就可以給用戶端

2.用戶端發起請求給NameNode

3.NameNode就會告訴用戶端具體的存儲位置和塊

4.發起最近距離節點請求給DataNode下載下傳資料

HDFS的優缺點

優點:

資料備援,硬體容錯

一次寫入,多次讀取資料

适合存儲大檔案

建構在廉價機器上

缺點:

延時性高

不适合小檔案存儲

繼續閱讀