1. 程式人生 > 實用技巧 >大資料基本複習

大資料基本複習

大學的最後幾門課了,DJ同學加油啊!!!

(概要)第一章

  1. 資訊科技需要處理的三大核心問題
    1. 第一次浪潮:資訊處理
    2. 第二次浪潮:資訊傳輸
    3. 第三次浪潮:資訊爆炸
  2. 資料產生方式的變革
    1. 運營式系統階段:資料往往伴隨著一定的運營活動而產生並記錄在資料庫
    2. 使用者原創內容階段:Web2.0時代的到來,而其最重要的標誌就是使用者原創內容
    3. 感知式系統階段:人類社會資料量的飛躍導致大資料的產生
  3. 大資料4V的概念
    1. 資料量大(資訊爆炸,web2.0)
    2. 資料型別繁多
      1. 是由結構化和非結構化資料組成
    3. 處理速度快
    4. 價值密度低(一大堆資料真正有用的資料不多)
  4. 大資料對思維方式的影響(選擇題)
    1. 全樣而非抽樣
    2. 效率而非精確(採用的方法)
    3. 相關而非因果
  5. 大資料應用四大層面的關鍵技術
    1. 資料採集和預處理(大量的資料是非結構化的,就需要經過清洗和轉換)
    2. 資料儲存和管理(比如利用分散式檔案系統、NoSQL資料庫)
    3. 資料處理和分析(利用分散式計算,不同資料分佈到不同的結點)
    4. 資料隱私和安全
  6. 大資料四大計算模式:除圖計算外詳細瞭解
    1. 批處理計算:針對大規模資料的批量處理(Mapreduce,Spark)
    2. 流計算:針對流資料的實時計算(突然冒出的資料,比如淘寶買東西),資料的價值隨時間流逝的而降低
    3. 圖計算 Pregel
    4. 查詢分析計算:從一堆資料找出我要的資料
  7. 雲端計算關鍵技術
    1. 虛擬化(將一臺實際計算機虛擬成多臺邏輯計算機)
    2. 分散式儲存
    3. 分散式計算(MapReduce)
    4. 多租戶(使得大量使用者能夠共享同一堆疊的軟硬體資源)
  8. 物聯閘道器鍵技術
    1. 識別和感知技術(二維碼、感測器)
    2. 網路與通訊技術
    3. 資料探勘和融合技術

(hdfs)第二章、第三章

  1. 分散式檔案系統的概念

是一種通過網路實現檔案在多臺主機上進行分散式儲存的檔案系統。

  1. HDFS檔案塊
    1. 將一個檔案分成若干塊,分散到多個節點。
      1. 注意:HDFS無法高效的儲存小檔案
    2. HDFS設計的塊大小要大於傳統的檔案系統
      1. 最小化定址開銷
    3. 優點
      1. 支援大規模檔案儲存,切成小塊容易存放東西
      2. 簡化系統設計(檔案塊大小是固定的,容易計算一個節點可以儲存多少個檔案塊)
      3. 適合資料備份(可以冗餘儲存,提高容錯性)
  2. 名稱節點、資料節點的功能和工作原理
    1. 主節點
      1. 功能:儲存元資料,儲存在記憶體中
      2. 工作原理:名稱節點啟動,將FsImage(檔案系統檢視)的內容載入到記憶體中,然後執行EditLog檔案的各個操作,使得記憶體元資料保持最新。名稱節點正常啟動,HDFS的更新操作會寫入到Editlog
    2. 從節點
      1. 功能:負責資料的儲存(存在磁碟)和讀取
  3. 第二名稱節點的意義與功能(簡答題)
    1. 可以完成EditLog與FsImage的合併操作,減少EditLog檔案大小,縮短名稱節點重啟時間
      1. 工作流程
        1. 名稱節點使用新的日誌
        2. 第二名稱節點從名稱節點獲得FsImage和EditLog
        3. 合併
        4. 把檢查點回傳給名稱節點(FsImage)
        5. 將名稱節點的FsImage和EditLog替換
    2. 作為名稱節點的“檢查點”,儲存名稱節點元資料資訊
      1. 名稱節點發生故障時,可以用第二節點的FSImage和EditLog替換
      2. 但是,如果在上面5的時候發生錯誤也有資料更新,就還是會丟失資料。
  4. HDFS冗餘儲存的定義和意義
    1. 定義:一個數據塊的多個副本會被分佈到不同的資料節點上
    2. 意義:
      1. 加快資料傳輸速度
      2. 容易檢查資料錯誤
      3. 保證資料的可靠性(某一個節點發生故障,也不會造成資料丟失)
  5. HDFS資料存放策略、讀取策略
    1. 存放策略
      1. HDFS預設的冗餘複製因子3
      2. 兩份副本放在同一個機架的不同機器上
      3. 第三個放在不同機架的機器上面
    2. 讀取策略
      1. 客戶端可以呼叫HDFS提供的確定一個數據節點所屬的機架ID的API
      2. 從名稱節點獲得資料塊不同副本的存放位置
      3. 發現某個資料塊副本對應的機架ID和客戶端對應的機架ID相同,優先選擇改副本讀取
      4. 否則隨機選一個
    3. HDFS三種資料錯誤及其恢復方法
      1. namenode出錯:首先到遠端掛載的網路檔案系統中獲取備份的資料資訊,放到第二名稱節點上進行恢復,並把第二名稱節點作為名稱節點來使用
      2. datanode出錯:datanode會向namenode傳送“心跳資訊”,如果namenode收不到“心跳資訊”,namenode不會發送任何IO請求,datanode會標記成"宕機",當副本數量小於冗餘因子,就會啟動資料冗餘複製
      3. data出錯:讀取檔案,資料塊校驗出錯,客戶端請求到另外一個數據節點讀取檔案塊

(hbase)第四章

  1. Hbase生態系統

    1. 利用Hadoop MapReduce來處理Hbase的海量資料
    2. 利用Zookeeper作為協同服務,實現穩定服務和失敗恢復
    3. 使用HDFS作為高可靠的底層儲存
  2. Hbase的資料模型相關概念

    1. 列族是儲存的基本單位

    1. 資料座標的含義

      1. [行鍵,列族,列限定符,時間戳]
    2. 概念檢視和物理檢視

      1. 從概念檢視看:Hbase由許多行組成,但是在物理檢視上,它採用了基於列的儲存方式

    3. Hbase的三層結構

      1. 層次 名稱 作用
        第一層 Zookeeper檔案 記錄了-ROOT-表的位置資訊
        第二層 -Root-表 記錄了.META.表的Region資訊;通過-ROOT-表,就可以訪問.META表中的資料
        第三層 .META.表 記錄使用者資料表的Region位置資訊,儲存了Hbase中所有的使用者資料表的Region位置資訊

(NoSQL)第五章

  1. NoSQL資料庫的含義與特點

    1. 含義:是對非關係型資料庫的統稱

    2. 特點:

      1. 靈活的擴充套件性
      2. 靈活的資料模型
      3. 與雲端計算緊密融合
  2. 關係資料庫在WEB 2.0時代的侷限 與WEB 2.0不適用關係型資料庫的原因

    1. 侷限
      1. 無法滿足海量資料的管理需求
      2. 無法滿足資料高併發的需求
      3. 無法滿足高擴充套件性和高可用性的需求
    2. 原因
      1. web2.0網站系統通常不要求嚴格的資料庫事務
      2. web2.0並不要求嚴格的讀寫實時性
      3. web2.0通常不包括大量複雜的SQL查詢
    3. 四大型別NoSQL資料庫的定義,特點,代表性產品
      1. 鍵值資料庫
        1. 使用特定的雜湊表
        2. 鍵值放在記憶體,可以直接存,直接取
        3. Redis,Memcached
      2. 列族資料庫
        1. 資料庫由多個行構成,每行資料包含多個列族
        2. 可擴充套件性強
        3. Hbase,BigTable
      3. 文件資料庫
        1. 文件資料庫通過鍵來定義一個文件
        2. 效能好,資料結構靈活
        3. MongDB
      4. 圖資料庫
        1. 使用圖作為資料模型來儲存資料,高效儲存不同頂點之間的關係
        2. 適合圖結構場景
        3. Neo4J
      5. NOSQL的三大基石, 理解三大要點的準確意義和內容,要求全部掌握,並能用自己語言說明
        1. CAP
          1. C一致性:多點的資料是一致的
          2. A可用性:在確定時間返回操作結果,保證每個請求成功失敗都有響應
          3. P分割槽容忍性:系統任意資訊丟失、失敗不會系統繼續執行
          4. CAP理論告訴我們一個分散式系統不可能滿足三個,最多隻有2個
            1. CA 把所有事物相關的內容放在同一臺機器上,比如傳統資料庫MySQL
            2. 當出現網路分割槽,受影響的服務需要等待資料一致,等待期間無法對外服務,比如NoSQL
            3. 允許寫回的資料不一致,比如NoSQL
        2. BASE
          1. 基本可用
            1. 一個分散式系統一部分發生問題不可以用,其他部分仍然可用
          2. 軟狀態
            1. 有一段時間資料不同步,具有一定的滯後性
          3. 最終一致性
        3. 最終一致性
          1. 因果一致性:程序A改了資料,通知程序B.B後續訪問的一定是A的最新值
          2. ”讀己之所寫“一致性:自己改的資料,自己讀的一定是最新值
          3. 單調讀一致性:程序已經看到過資料物件的某個值,那麼後續訪問都不會返回在那個值之前的值

(雲資料庫) 第六章

  1. 雲資料庫的概念:部署和虛擬化在雲端計算環境中的資料庫(簡答)

  2. 雲資料庫的特性:(選擇題)

    1. 動態可擴充套件
    2. 高可用性
    3. 較低的使用代價
    4. 易用性
    5. 高效能
    6. 免維護
    7. 安全

(MapReduce)第七章、第八章

  1. MapReduce基本概念與計算向資料靠攏

     1. MapReduce是一個分散式並行程式設計框架,將大規模資料集切分成很多獨立小資料塊,被多個Map任務並行處理,完成的結果由Reduce合併,寫入分散式檔案系統
       	2. 理念:計算向資料靠攏
           	1. 資料放在不同伺服器,根據伺服器已有的資料算一部分再傳到需要的伺服器上
               	2. 從而減少網路開銷
    
  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)
    
  3. MapReduce的WORKCOUNT執行例項計算過程

    參考視訊

  4. MapReduce實現關係運算

(Spark)第九章

  1. Spark與Hadoop對比,Spark高效能的原因

    1. Spark的計算模式也是屬於MapReduce,但不侷限於Map和Reduce操作,還提供了多種資料集操作型別
    2. Spark提供了記憶體計算,中間結果放在記憶體 中,帶來更高的迭代運算效率
    3. Spark基於DAG的任務排程執行機制,優於MapReduce的迭代執行機制
  2. 大資料處理的三種類型與其適用的Spark技術棧(選擇題)

    1. 型別 Spark技術棧
      複雜的批量資料處理 Spark Core
      基於歷史資料的互動式查詢 Spark SQL
      基於實時資料流的資料處理 Spark Streaming
  3. RDD的設計與執行原理

    1. 概念:RDD(彈性分散式資料集)是只讀的記錄分割槽的集合
    2. 資料運算:收集(Collection)和轉換(Transfomation)
    3. 依賴關係:
      1. 窄依賴:一個RDD對應一個父RDD
      2. 寬依賴:一個RDD對應多個父RDD
    4. 執行過程
      1. 建立一個RDD物件
      2. SparkContext負責計算RDD之間的依賴關係,構造DAG
      3. DAGScheduler負責把DAG圖分解成多個階段,每個階段包含多個任務,每個任務分發給各個工作節點上的Executor去執行

(流計算)第十章

  1. 流資料的特徵
    1. 資料快速持續到達
    2. 資料眾多
    3. 資料量
    4. 注重資料的整體價值
    5. 資料順序顛倒或不完整
  2. 批量計算與實時計算的含義
    1. 批量計算以“靜態資料”為物件,可以在充裕的時間內對海量資料進行批量處理,計算得到有 價值的資訊
    2. 實時計算最重要的一個需求是能夠實時得到計算結果,一般要求響應時間為秒級
  3. 流計算的要求,Hadoop不合適流計算的原因
    1. 需求
      1. 高效能:每秒處理幾萬條資料
      2. 海量式:資料規模
      3. 實時性:秒級
      4. 分散式
      5. 易用性
      6. 可靠性
    2. Hadoop不合適流計算的原因
      1. MapReduce切成小的片段增加了任務處理的開銷,還需要處理片段之前的關係
      2. 如果一定要使用MapReduce,需要改造以支援流式處理
      3. 降低使用者程式的可伸縮性,因為使用者必須使用MapReduce介面來定義流式作業
  4. 流計算處理流程
    1. 資料實時採集
      1. 資料採集系統的基本架構包括 Agent、Collector、Store
    2. 資料實時計算
    3. 實時查詢服務