IT十年-大資料系列講解之HDFS(二)
HDFS優點
高容錯性
資料自動儲存多個副本
副本丟失後,自動恢復
適合批處理
移動計算而非資料
資料位置暴露給計算框架
適合大資料處理
GB、TB、甚至PB級資料
百萬規模以上的檔案數量
10K+節點規模
流式檔案訪問
一次性寫入,多次讀取
保證資料一致性
可構建在廉價機器上
通過多副本提高可靠性
提供了容錯和恢復機制
HDFS缺點,不適合以下操作方式:
低延遲資料訪問
比如毫秒級
低延遲與高吞吐率
小檔案存取
佔用NameNode大量記憶體
尋道時間超過讀取時間
併發寫入、檔案隨機修改
一個檔案只能有一個寫者
僅支援append
感謝你的觀看,如果感覺寫的不錯,你可以關注一下我的微信公眾號,也可以加入我們的大數家庭群。
微信公眾號:程式設計師OfHome
程式設計師OfHomeQQ群:610535338
HDFS不適合儲存小檔案
元資訊儲存在NameNode記憶體中
一個節點的記憶體是有限的
存取大量小檔案消耗大量的尋道時間
類比拷貝大量小檔案與拷貝同等大小的一個大檔案
NameNode儲存block數目是有限的
一個block元資訊消耗大約150 byte記憶體
儲存1億個block,大約需要20GB記憶體
如果一個檔案大小為10K,則1億個檔案大小僅為1TB(但要消耗掉NameNode 20GB記憶體)
HDFS架構
HDFS使用典型的master-slave結構
HDFS設計思想
hdfs架構
Active Namenode:主Master(只有一個)
管理HDFS的名稱空間
管理資料塊對映資訊
配置副本策略
處理客戶端讀寫請求
Standby Namenode:NameNode的熱備;
定期合併fsimage和fsedits,推送給NameNode;
當Active NameNode出現故障時,快速切換為新的 Active NameNode。
Datanode:Slave(有多個)
儲存實際的資料塊
執行資料塊讀/寫
Client:檔案切分
與NameNode互動,獲取檔案位置資訊;
與DataNode互動,讀取或者寫入資料;
管理HDFS;
訪問HDFS。
HDFS資料塊(block)
檔案被切分成固定大小的資料塊
預設資料塊大小為64MB,可配置
若檔案大小不到64MB,則單獨存成一個block
為何資料塊如此之大
資料傳輸時間超過尋道時間(高吞吐率)
一個檔案儲存方式
按大小被切分成若干個block,儲存到不同節點上
預設情況下每個block有三個副本
HDFS寫流程
HDFS讀流程
HDFS典型的物理拓撲結構
HDFSBlock副本放置策略
副本1: 同Client的節點上
副本2: 不同機架中的節點上
副本3: 與第二個副本同一機架的另一個節點上
其他副本:隨機挑選
HDFS可靠性策略
HDFS訪問方式
HDFS Shell命令 :和linux命令很像
HDFS Java API :org.apache.hadoop.fs,很簡單
HDFS REST API
HDFS Fuse:實現了fuse協議
HDFS lib hdfs:C/C++訪問介面
HDFS 其他語言程式設計API
使用thrift實現
支援C++、Python、php、C#等語言
HDFS2.0新特性(還沒有完全實現,謹慎使用):
NameNode HA
NameNode Federation
HDFS 快照(snapshot)
HDFS 快取(in-memory cache)
HDFS ACL
異構層級儲存結構(Heterogeneous Storage hierarchy)
PS:
關注微信公眾號“程式設計師OfHome”,傳送“領取資料”可以免費領取視訊資料。
對大資料感興趣的朋友可以加入到我們的程式設計師OfHomeQQ群:610535338 群裡有都是從事或者在學習大資料的朋友,在此我也邀請你進群一起學習,群內沒有廣告,也是禁止打廣告的,大家也可以關注一下我的微信公共號“程式設計師OfHome”下方掃掃可關注。
相關文章
- IT十年-大資料系列講解之hadoop生態系統及版本演化大資料Hadoop
- 大資料小白系列——HDFS(4)大資料
- 大資料小白系列——HDFS(2)大資料
- 大資料小白系列——HDFS(1)大資料
- 大資料小白系列——HDFS(3)大資料
- Hadoop系列之HDFS 資料塊Hadoop
- 大資料系列2:Hdfs的讀寫操作大資料
- 大資料系列1:一文初識Hdfs大資料
- Hadoop大資料實戰系列文章之HDFS檔案系統Hadoop大資料
- Mysql系列第二講 詳解mysql資料型別(重點)MySql資料型別
- Hadoop 學習系列(二)之 HDFS 詳細解析Hadoop
- 漫畫講解HDFS原理
- 大資料之Flume(二)大資料
- 大資料專案實踐(一)——之HDFS叢集配置大資料
- 09 大資料之Hadoop(第四部 HDFS)大資料Hadoop
- 大資料3-Flume收集資料+落地HDFS大資料
- Swoole 系列之二(Websocket 要點講解)Web
- Redis原始碼系列之rename講解Redis原始碼
- 軟體測試之資料庫系列二資料庫
- 玩轉大資料系列之二:資料分析與處理大資料
- 大資料 | 分散式檔案系統 HDFS大資料分散式
- 大資料檔案儲存系統HDFS大資料
- 大資料計算生態之資料計算(二)大資料
- 原始碼|HDFS之DataNode:寫資料塊(2)原始碼
- 原始碼|HDFS之DataNode:寫資料塊(3)原始碼
- 原始碼|HDFS之DataNode:寫資料塊(1)原始碼
- HDFS資料平衡
- 扣丁學堂大資料開發之Hive基礎知識精華講解大資料Hive
- 年薪500萬大資料工程師:講解大資料建模方法和經驗大資料工程師
- 小白學習大資料測試之hadoop hdfs和MapReduce小實戰大資料Hadoop
- 大資料時代之hadoop(四):hadoop 分散式檔案系統(HDFS)大資料Hadoop分散式
- Sqoop解決關係型資料庫與HDFS之間進行資料轉換OOP資料庫
- 大資料教程系列之Kafka和activemq對比大資料KafkaMQ
- 大資料謝列3:Hdfs的HA實現大資料
- 【大資料】【hadoop】檢視hdfs檔案命令大資料Hadoop
- vue原始碼分析系列之響應式資料(二)Vue原始碼
- Android 註解系列之Annotation(二)Android
- Hadoop 學習系列(四)之 MapReduce 原理講解Hadoop