大資料基本複習
阿新 • • 發佈:2020-09-08
大學的最後幾門課了,DJ同學加油啊!!!
(概要)第一章
- 資訊科技需要處理的三大核心問題
- 第一次浪潮:資訊處理
- 第二次浪潮:資訊傳輸
- 第三次浪潮:資訊爆炸
- 資料產生方式的變革
- 運營式系統階段:資料往往伴隨著一定的運營活動而產生並記錄在資料庫中
- 使用者原創內容階段:Web2.0時代的到來,而其最重要的標誌就是使用者原創內容
- 感知式系統階段:人類社會資料量的飛躍導致大資料的產生
- 大資料4V的概念
- 資料量大(資訊爆炸,web2.0)
- 資料型別繁多
- 是由結構化和非結構化資料組成
- 處理速度快
- 價值密度低(一大堆資料真正有用的資料不多)
- 大資料對思維方式的影響(選擇題)
- 全樣而非抽樣
- 效率而非精確(採用的方法)
- 相關而非因果
- 大資料應用四大層面的關鍵技術
- 資料採集和預處理(大量的資料是非結構化的,就需要經過清洗和轉換)
- 資料儲存和管理(比如利用分散式檔案系統、NoSQL資料庫)
- 資料處理和分析(利用分散式計算,不同資料分佈到不同的結點)
- 資料隱私和安全
- 大資料四大計算模式:除圖計算外詳細瞭解
- 批處理計算:針對大規模資料的批量處理(Mapreduce,Spark)
- 流計算:針對流資料的實時計算(突然冒出的資料,比如淘寶買東西),資料的價值隨時間流逝的而降低
- 圖計算 Pregel
- 查詢分析計算:從一堆資料找出我要的資料
- 雲端計算關鍵技術
- 虛擬化(將一臺實際計算機虛擬成多臺邏輯計算機)
- 分散式儲存
- 分散式計算(MapReduce)
- 多租戶(使得大量使用者能夠共享同一堆疊的軟硬體資源)
- 物聯閘道器鍵技術
- 識別和感知技術(二維碼、感測器)
- 網路與通訊技術
- 資料探勘和融合技術
(hdfs)第二章、第三章
- 分散式檔案系統的概念
是一種通過網路實現檔案在多臺主機上進行分散式儲存的檔案系統。
- HDFS檔案塊
- 將一個檔案分成若干塊,分散到多個節點。
- 注意:HDFS無法高效的儲存小檔案
- HDFS設計的塊大小要大於傳統的檔案系統
- 最小化定址開銷
- 優點
- 支援大規模檔案儲存,切成小塊容易存放東西
- 簡化系統設計(檔案塊大小是固定的,容易計算一個節點可以儲存多少個檔案塊)
- 適合資料備份(可以冗餘儲存,提高容錯性)
- 將一個檔案分成若干塊,分散到多個節點。
- 名稱節點、資料節點的功能和工作原理
- 主節點
- 功能:儲存元資料,儲存在記憶體中
- 工作原理:名稱節點啟動,將FsImage(檔案系統檢視)的內容載入到記憶體中,然後執行EditLog檔案的各個操作,使得記憶體元資料保持最新。名稱節點正常啟動,HDFS的更新操作會寫入到Editlog。
- 從節點
- 功能:負責資料的儲存(存在磁碟)和讀取
- 主節點
- 第二名稱節點的意義與功能(簡答題)
- 可以完成EditLog與FsImage的合併操作,減少EditLog檔案大小,縮短名稱節點重啟時間
- 工作流程
- 名稱節點使用新的日誌
- 第二名稱節點從名稱節點獲得FsImage和EditLog
- 合併
- 把檢查點回傳給名稱節點(FsImage)
- 將名稱節點的FsImage和EditLog替換
- 工作流程
- 作為名稱節點的“檢查點”,儲存名稱節點元資料資訊
- 名稱節點發生故障時,可以用第二節點的FSImage和EditLog替換
- 但是,如果在上面5的時候發生錯誤也有資料更新,就還是會丟失資料。
- 可以完成EditLog與FsImage的合併操作,減少EditLog檔案大小,縮短名稱節點重啟時間
- HDFS冗餘儲存的定義和意義
- 定義:一個數據塊的多個副本會被分佈到不同的資料節點上
- 意義:
- 加快資料傳輸速度
- 容易檢查資料錯誤
- 保證資料的可靠性(某一個節點發生故障,也不會造成資料丟失)
- HDFS資料存放策略、讀取策略
- 存放策略
- HDFS預設的冗餘複製因子3
- 兩份副本放在同一個機架的不同機器上
- 第三個放在不同機架的機器上面
- 讀取策略
- 客戶端可以呼叫HDFS提供的確定一個數據節點所屬的機架ID的API
- 從名稱節點獲得資料塊不同副本的存放位置
- 發現某個資料塊副本對應的機架ID和客戶端對應的機架ID相同,優先選擇改副本讀取
- 否則隨機選一個
- HDFS三種資料錯誤及其恢復方法
- namenode出錯:首先到遠端掛載的網路檔案系統中獲取備份的資料資訊,放到第二名稱節點上進行恢復,並把第二名稱節點作為名稱節點來使用
- datanode出錯:datanode會向namenode傳送“心跳資訊”,如果namenode收不到“心跳資訊”,namenode不會發送任何IO請求,datanode會標記成"宕機",當副本數量小於冗餘因子,就會啟動資料冗餘複製
- data出錯:讀取檔案,資料塊校驗出錯,客戶端請求到另外一個數據節點讀取檔案塊
- 存放策略
(hbase)第四章
-
Hbase生態系統
- 利用Hadoop MapReduce來處理Hbase的海量資料
- 利用Zookeeper作為協同服務,實現穩定服務和失敗恢復
- 使用HDFS作為高可靠的底層儲存
-
Hbase的資料模型相關概念
- 列族是儲存的基本單位
-
資料座標的含義
- [行鍵,列族,列限定符,時間戳]
-
概念檢視和物理檢視
-
從概念檢視看:Hbase由許多行組成,但是在物理檢視上,它採用了基於列的儲存方式
-
Hbase的三層結構
-
層次 名稱 作用 第一層 Zookeeper檔案 記錄了-ROOT-表的位置資訊 第二層 -Root-表 記錄了.META.表的Region資訊;通過-ROOT-表,就可以訪問.META表中的資料 第三層 .META.表 記錄使用者資料表的Region位置資訊,儲存了Hbase中所有的使用者資料表的Region位置資訊
-
(NoSQL)第五章
-
NoSQL資料庫的含義與特點
-
含義:是對非關係型資料庫的統稱
-
特點:
- 靈活的擴充套件性
- 靈活的資料模型
- 與雲端計算緊密融合
-
-
關係資料庫在WEB 2.0時代的侷限 與WEB 2.0不適用關係型資料庫的原因
- 侷限
- 無法滿足海量資料的管理需求
- 無法滿足資料高併發的需求
- 無法滿足高擴充套件性和高可用性的需求
- 原因
- web2.0網站系統通常不要求嚴格的資料庫事務
- web2.0並不要求嚴格的讀寫實時性
- web2.0通常不包括大量複雜的SQL查詢
- 四大型別NoSQL資料庫的定義,特點,代表性產品
- 鍵值資料庫
- 使用特定的雜湊表
- 鍵值放在記憶體,可以直接存,直接取
- Redis,Memcached
- 列族資料庫
- 資料庫由多個行構成,每行資料包含多個列族
- 可擴充套件性強
- Hbase,BigTable
- 文件資料庫
- 文件資料庫通過鍵來定義一個文件
- 效能好,資料結構靈活
- MongDB
- 圖資料庫
- 使用圖作為資料模型來儲存資料,高效儲存不同頂點之間的關係
- 適合圖結構場景
- Neo4J
- NOSQL的三大基石, 理解三大要點的準確意義和內容,要求全部掌握,並能用自己語言說明
- CAP
- C一致性:多點的資料是一致的
- A可用性:在確定時間返回操作結果,保證每個請求成功失敗都有響應
- P分割槽容忍性:系統任意資訊丟失、失敗不會系統繼續執行
- CAP理論告訴我們一個分散式系統不可能滿足三個,最多隻有2個
- CA 把所有事物相關的內容放在同一臺機器上,比如傳統資料庫MySQL
- 當出現網路分割槽,受影響的服務需要等待資料一致,等待期間無法對外服務,比如NoSQL
- 允許寫回的資料不一致,比如NoSQL
- BASE
- 基本可用
- 一個分散式系統一部分發生問題不可以用,其他部分仍然可用
- 軟狀態
- 有一段時間資料不同步,具有一定的滯後性
- 最終一致性
- 基本可用
- 最終一致性
- 因果一致性:程序A改了資料,通知程序B.B後續訪問的一定是A的最新值
- ”讀己之所寫“一致性:自己改的資料,自己讀的一定是最新值
- 單調讀一致性:程序已經看到過資料物件的某個值,那麼後續訪問都不會返回在那個值之前的值
- CAP
- 鍵值資料庫
- 侷限
(雲資料庫) 第六章
-
雲資料庫的概念:部署和虛擬化在雲端計算環境中的資料庫(簡答)
-
雲資料庫的特性:(選擇題)
- 動態可擴充套件
- 高可用性
- 較低的使用代價
- 易用性
- 高效能
- 免維護
- 安全
(MapReduce)第七章、第八章
-
MapReduce基本概念與計算向資料靠攏
1. MapReduce是一個分散式並行程式設計框架,將大規模資料集切分成很多獨立小資料塊,被多個Map任務並行處理,完成的結果由Reduce合併,寫入分散式檔案系統 2. 理念:計算向資料靠攏 1. 資料放在不同伺服器,根據伺服器已有的資料算一部分再傳到需要的伺服器上 2. 從而減少網路開銷
-
MapReduce工作流程與各個執行階段工作
1. 分而治之;將大規模資料集切分成很多獨立小資料塊,被多個Map任務並行處理,完成的結果由Reduce合併,寫入分散式檔案系統 2. 階段工作 1. 使用==InputFormat==模組做Map前的預處理,將輸入檔案切分成邏輯上多個InputSplit 2. 需要通過RR處理InputSplit的具體內容,輸入給Map任務 3. Map根據使用者==自定義的對映規則==,輸出一系列中間結果<key,value> 4. 經過Shuffle,從無序的<key,value>轉成<key,value-list> 5. 將中間結果<key,value-list>輸入到Reduce,之後輸出給OutputFormat 6. OutputFormat驗證成功後,輸出Reduce結果到分散式檔案系統 3. ![image-20200906090632177](https://img2020.cnblogs.com/blog/1235676/202009/1235676-20200908201927889-451014590.png)
-
MapReduce的WORKCOUNT執行例項計算過程
-
MapReduce實現關係運算
(Spark)第九章
-
Spark與Hadoop對比,Spark高效能的原因
- Spark的計算模式也是屬於MapReduce,但不侷限於Map和Reduce操作,還提供了多種資料集操作型別
- Spark提供了記憶體計算,中間結果放在記憶體 中,帶來更高的迭代運算效率
- Spark基於DAG的任務排程執行機制,優於MapReduce的迭代執行機制
-
大資料處理的三種類型與其適用的Spark技術棧(選擇題)
-
型別 Spark技術棧 複雜的批量資料處理 Spark Core 基於歷史資料的互動式查詢 Spark SQL 基於實時資料流的資料處理 Spark Streaming
-
-
RDD的設計與執行原理
- 概念:RDD(彈性分散式資料集)是只讀的記錄分割槽的集合
- 資料運算:收集(Collection)和轉換(Transfomation)
- 依賴關係:
- 窄依賴:一個RDD對應一個父RDD
- 寬依賴:一個RDD對應多個父RDD
- 執行過程
- 建立一個RDD物件
- SparkContext負責計算RDD之間的依賴關係,構造DAG
- DAGScheduler負責把DAG圖分解成多個階段,每個階段包含多個任務,每個任務分發給各個工作節點上的Executor去執行
(流計算)第十章
- 流資料的特徵
- 資料快速持續到達
- 資料眾多
- 資料量大
- 注重資料的整體價值
- 資料順序顛倒或不完整
- 批量計算與實時計算的含義
- 批量計算以“靜態資料”為物件,可以在充裕的時間內對海量資料進行批量處理,計算得到有 價值的資訊
- 實時計算最重要的一個需求是能夠實時得到計算結果,一般要求響應時間為秒級
- 流計算的要求,Hadoop不合適流計算的原因
- 需求
- 高效能:每秒處理幾萬條資料
- 海量式:資料規模
- 實時性:秒級
- 分散式
- 易用性
- 可靠性
- Hadoop不合適流計算的原因
- MapReduce切成小的片段增加了任務處理的開銷,還需要處理片段之前的關係
- 如果一定要使用MapReduce,需要改造以支援流式處理
- 降低使用者程式的可伸縮性,因為使用者必須使用MapReduce介面來定義流式作業
- 需求
- 流計算處理流程
- 資料實時採集
- 資料採集系統的基本架構包括 Agent、Collector、Store
- 資料實時計算
- 實時查詢服務
- 資料實時採集