大資料筆記01--大資料概述
大資料基礎
什麼是大資料?
短時間內快速的產生海量的多種多樣的有價值的資料
大資料的技術
1. 分散式儲存
2. 分散式計算
分散式批處理
即攢一段時間的資料,然後在未來的某一個時間進行處理
分散式流處理
即資料不需要積攢,每產生一條資料立即進行處理,並推送到前端進行顯示,或儲存到資料庫中,形成報表提交給老闆
分散式檔案系統(HDFS)
Hadoop分散式檔案系統,Hadoop Distributed File System(簡稱HDFS)
角色
NameNode :
- 掌控全域性,管理datanode和後設資料1,包括:
- 檔案上傳時間
- 檔案的屬主和許可權
- block2的數量和位置
- 接受客戶端的寫請求,返回一組地址
- 收集datenode彙報的block地址資訊
- 接受客戶端的讀請求,返回地址資訊
DataNode:
- 儲存block塊,向NN彙報地址
- 向NN傳送心跳
- 接受client的讀請求
SecondNameNode:
並不是作為NN的備份,而是NN的助理
將namenode中的後設資料持久化
寫資料的總體流程
- client拿到檔案,計算block的數量:檔案大小/128M=block數
- 彙報要上傳檔案資訊(上傳時間、屬主、許可權、block數量)
- 彙報成功後,client切割出一個block
- 對每個block,client向NN請求一個blockid和地址
- NN將一個負載不高的DN地址,兩個備份地址給client
- client拿到地址後向DN上傳資料
- DN儲存block完畢後向NN彙報當前儲存情況
備份機制
預設共有三個副本
- 第一個block儲存在一個負載相對低的伺服器上
(如果是叢集內提交,第一個地址是本地伺服器) - 第二個儲存在與第一個不同的機架(rack)上的隨機伺服器上
- 第三個儲存在與第二個相同機架的不同伺服器上
- 更多副本則隨機存放
向DN寫資料的詳細流程
- client請求到三個地址後,DN上三個伺服器間形成管道(pipeline)
- block被切割成packet(64k)
- packet在管道中源源不斷的傳輸,實現並行寫入
後設資料的持久化
原因:
後設資料儲存在記憶體中不穩定,且斷電後會丟失,若在本地磁碟讀寫將耗費大量資源,所以由secondary namenode作為namenode的助理進行持久化
實現方式:
- NN在初始化時建立了兩個檔案edits和fsimage,edits儲存執行的操作,fsimage儲存後設資料
- 滿足一定條件時,SNN拉取兩個檔案,讀取edits中的操作進行重演,合併寫入fsimage.ckpt
- 這個過程中NN生成edits.new繼續寫入操作
- SNN將fsimage.ckpt返回給NN
- edits.new和fsimage.ckpt重新命名回原名稱,繼續進行儲存
合併觸發機制
edits檔案超過64M或超過3600s(預設)
被持久化的後設資料
除block位置資訊,其他後設資料都會持久化
叢集啟動時的工作
- DN向NN傳送資訊(block位置資訊,DN地址)
- 進入安全模式
- 載入fsimage,還原後設資料
- 若edits不為空,根據edits重演出後設資料資訊併合並fsimage(順序?)
- 檢查DN是否存活
- 若有因DN掛掉導致的備份缺失,補充備份
處於安全模式中時,NN對於客戶端是隻讀的,若fsimage已經載入完畢,客戶端可以檢視到檔案目錄,但是無法進行寫、刪除、重新命名等操作
HDFS的優點
- 高容錯性
- 資料自動儲存多個副本
- 副本丟失後,自動恢復
- 適合批處理
- 移動計算而非資料
- 資料位置暴露給計算框架(Block偏移量)
- 適合大資料處理
- GB 、TB 、甚至PB 級資料
- 百萬規模以上的檔案數量
- 10K+ 節點
- 可構建在廉價機器上
- 通過多副本提高可靠性
- 提供了容錯和恢復機制
HDFS的缺點
- 不適合低延遲資料訪問
- 比如毫秒級的低延遲與高吞吐率的訪問
- 小檔案存取
- 佔用NameNode 大量記憶體
- 尋道時間超過讀取時間
- 併發寫入、檔案隨機修改
- 一個檔案只能有一個寫者
- 僅支援append
其他細節
- HDFS叢集不允許修改、檔案一旦上傳成功不能修改block塊大小,防止叢集泛洪
可以使用append新增資料 - 同一時間只允許一個寫入者
- 許可權控制
基於linux的許可權控制,僅用於隔離不同使用者,不對使用者進行驗證(防君子不防小人) - 角色在叢集中是用程式來表現的(一臺伺服器並不一定只是一個角色)
- block的副本總數<=DN數
- NN也會執行合併,僅在啟動時一次
相關文章
- 大資料概述大資料
- 大資料基本概述大資料
- 大資料學習筆記(十五)-大資料排程框架大資料筆記框架
- 大資料技術原理與應用——大資料概述大資料
- 大資料開發筆記大資料筆記
- 大資料個人筆記(一)大資料筆記
- 資料結構筆記——概述資料結構筆記
- 筆記:大話資料結構筆記資料結構
- 大資料學習筆記(四)大資料筆記
- 大資料學習筆記(五)大資料筆記
- 大資料學習筆記(六)大資料筆記
- 大資料3.2 -- 實時筆記大資料筆記
- 大資料,大資料,大資料大資料
- OpenStack大資料專案Sahara概述大資料
- 大資料學習筆記(十七)-MapReduce大資料筆記
- 大資料學習筆記(十八)-MRUnit大資料筆記
- 大資料教程分享Actor學習筆記大資料筆記
- 大資料之 Hadoop學習筆記大資料Hadoop筆記
- 大資料學習筆記(十四)-Sqoop大資料筆記OOP
- 電商大資料學習筆記:理論大資料筆記
- 電商大資料學習筆記:實戰大資料筆記
- 大資料的系統學習:大資料學習的三個階段概述大資料
- 工業大資料筆記2020大資料筆記
- 大資料學習筆記(十三)-Hive高階大資料筆記Hive
- 走進大資料,感受大資料大資料
- 大資料VS大擁堵:大資料治理交通大資料
- 大資料資料收集大資料
- 大資料概念:史上最全大資料解析大資料
- 大資料大利潤–資料資訊圖大資料
- 大資料實驗記錄大資料
- 【筆記】關於大資料的一些想法筆記大資料
- 【大資料】BigTable分散式資料儲存系統分散式資料庫 | 複習筆記大資料分散式資料庫筆記
- 大資料與資訊保安(六)天網系統與大資料 大資料大資料
- 大資料學習筆記之十二 雲端計算資源管理大資料筆記
- 大資料如何採集資料?大資料的資料從何而來?大資料
- 大資料:大資料之基礎語法大資料
- 大資料治理——搭建大資料探索平臺大資料
- 什麼叫大資料 大資料的概念大資料