大數據導論複習筆記

文章目錄

大數據導論

第1章 大數據概述

數據類型、數據組織形式、數據的使用

數據類型
類型 含義 本質 舉例 技術
結構化數據 直接可以用傳統關係數據庫存儲和管理的數據 先有結構,後有管理 數字、符號、表格 SQL
非結構化數據 無法用傳統關係數據庫存儲和管理的數據 難以發現同一的結構 語音、圖像、文本 NoSQL,NewSQL,雲技術
半結構化數據 經過轉換用傳統關係數據庫存儲和管理的數據 先有數據,後有結構 HTML、XML RDF、OWL
數據組織形式

計算機系統中的數據組織形式主要有兩種,即文件和數據庫。

  1. 文件:計算機系統中的很多數據都是以文件形式存在的,比如一個WORD文件、一個文本文件、一個網頁文件、一個圖片文件等等。

  2. 數據庫:計算機系統中另一種非常重要的數據組織形式就是數據庫,數據庫已經成爲計算機軟件開發的基礎和核心。

數據的使用
  • 數據清洗

  • 數據管理

  • 數據分析

  • 信息化浪潮、信息科技爲大數據時代提供技術支撐

  1. 存儲設備容量不斷增加
  2. CPU處理能力大幅提升
  3. 網絡帶寬不斷增加

大數據的概念(4V)

科學研究四種範式

  • 實驗

  • 理論

  • 計算機

  • 數據

第2章 大數據與雲計算、物聯網、人工智能

雲計算概念、雲計算服務模式和類型

五個特徵
  • 寬帶接入

  • 彈性架構

  • 可測量服務

  • 按需自服務

  • 虛擬化的資源池

四個部署模型
  • 公有云

  • 私有云

  • 混合雲

  • 社區雲

服務模式

IaaS(Infrastructure as a Service):基礎設施級服務。消費者通過因特網可以從完善的計算機基礎設施獲得服務。

IaaS通過網絡向用戶提供計算機(物理機和虛擬機)、存儲空間、網絡連接、負載均衡和防火牆等基本計算資源;用戶在此基礎上部署和運行各種軟件,包括操作系統和應用程序。例如,通過亞馬遜的AWS,用戶可以按需定製所要的虛擬主機和塊存儲等,在線配置和管理這些資源。

PaaS(Platform as a Service):平臺級服務。PaaS實際上是指將軟件研發的平臺作爲一種服務,以SaaS的模式提交給用戶。因此,PaaS也是SaaS模式的一種應用。但是,PaaS的出現可以加快SaaS的發展,尤其是加快SaaS應用的開發速度。

平臺通常包括操作系統、編程語言的運行環境、數據庫和 Web服務器,用戶在此平臺上部署和運行自己的應用。用戶不能管理和控制底層的基礎設施,只能控制自己部署的應用。目前常見的PaaS提供商有CloudFoundry、谷歌的GAE等。

SaaS(Software as a Service):軟件級服務。它是一種通過因特網提供軟件的模式,用戶無需購買軟件,而是向提供商租用基於Web的軟件,來管理企業經營活動,例如郵件服務、數據處理服務、財務管理服務等

大數據系統與雲安全、雲安全及其關鍵技術

  • 認證授權問題

  • 訪問控制問題

  • 操作審計問題

  • 敏感數據保護問題

  • 認證授權問題

物聯網概念、物聯網三要素、物聯網層次架構

大數據與雲計算、物聯網的關係

人工智能概念、人工智能關鍵技術

人工智能(Artificial Intelligence),英文縮寫爲AI,是研究、開發用於模擬、延伸和擴展人的智能的理論、方法、技術及應用系統的一門新的技術科學。

關鍵技術:機器學習、專家系統、知識圖譜、計算機視覺、自然語言處理、生物特徵識別、人機交互、VR/AR、模式識別

大數據與人工智能的關係

  1. 人工智能需要數據來建立其智能,特別是機器學習
  2. 大數據技術爲人工智能提供了強大的存儲能力和計算能力

第3章 大數據技術

大數據技術的不同層面及其功能

在這裏插入圖片描述

傳統的數據採集與大數據採集的區別

在這裏插入圖片描述

互聯網爬蟲基本架構、爬取策略

  1. 將這些URL放入待抓取URL隊列;
  2. 讀取URL,Download對應頁面;
  3. 解析頁面,嗅探新的URL去重加入隊列;
  4. Goto step 3

ETL概念

ETL(Extract、Transform、load)

ETL是數據獲取的重要手段,需要知道具體格式

數據清洗的主要內容

大數據時代的數據存儲和管理技術

  1. 分佈式文件系統
  2. NewSQL和NoSQL數據庫

數據挖掘和機器學習算法、深度學習概念和應用領域

大數據處理分析技術類型及解決的主要問題

大數據計算模式 解決問題 代表產品
批處理計算 針對大規模數據的批量處理 MapReduce、Spark等
流計算 針對流數據的實時計算 Storm、S4、Flume、Streams、Puma、DStream、Super Mario、銀河流數據處理平臺等
圖計算 針對大規模圖結構數據的處理 Pregel、GraphX、Giraph、PowerGraph、Hama、GoldenOrb等
查詢分析計算 大規模數據的存儲管理和查詢分析 Dremel、Hive、Cassandra、Impala等

數據可視化概念

數據可視化是指將大型數據集中的數據以圖形圖像形式表示,並利用數據分析和開發工具發現其中未知信息的處理過程

數據安全技術

  1. 身份認證技術
  2. 防火牆技術
  3. 訪問控制技術
  4. 入侵檢測技術
  5. 加密技術

第4、5、6章 大數據應用、大數據安全、大數據思維

推薦系統、推薦方法、推薦系統

推薦系統是自動聯繫用戶和物品的一種工具,和搜索引擎相比,推薦系統通過研究用戶的興趣偏好,進行個性化計算。推薦系統可發現用戶的興趣點,幫助用戶從海量信息中去發掘自己潛在的需求。
在這裏插入圖片描述

大數據應用領域

  1. 互聯網領域
  2. 生物醫學領域
  3. 物流領域
  4. 城市管理領域
  5. 金融領域
  6. 汽車領域
  7. 零售領域
  8. 餐飲領域
  9. 電信領域
  10. 能源領域
  11. 體育和娛樂領域
  12. 安全領域
  13. 政府領域

大數據安全與傳統數據安全的不同

  1. 大數據成爲網絡攻擊的顯著目標
  2. 大數據加大隱私泄露風險
  3. 大數據技術被應用到攻擊手段中
  4. 大數據成爲高級可持續攻擊(APT)的載體

大數據思維方式

  1. 全樣而非抽樣
  2. 效率而非精確
  3. 相關而非因果
  4. 以數據爲中心
  5. 我爲人人,人人爲我

第9章 Hadoop、HDFS、MapReduce、Hive、Spark簡介

Hadoop的特性、項目結構

特性:

  • 高可靠性
  • 高效性
  • 高可擴展性
  • 高容錯性
  • 成本低
  • 運行在Linux平臺上
  • 支持多種編程語言

項目結構:

在這裏插入圖片描述

組件 功能
HDFS 分佈式文件系統
MapReduce 分佈式並行編程模型
YARN 資源管理和調度器
Tez 運行在YARN之上的下一代Hadoop查詢處理框架,它會將很多的mr任務分析優化後構建一個有向無環圖,保證最高的工作效率
Hive Hadoop上的數據倉庫
HBase Hadoop上的非關係型的分佈式數據庫
Pig 一個基於Hadoop的大規模數據分析平臺,提供類似SQL的查詢語言Pig Latin
Sqoop 用於在Hadoop與傳統數據庫之間進行數據傳遞
Oozie Hadoop上的工作流管理系統
Zookeeper 提供分佈式協調一致性服務
Storm 流計算框架
Flume 一個高可用的,高可靠的,分佈式的海量日誌採集、聚合和傳輸的系統
Ambari Hadoop快速部署工具,支持Apache Hadoop集羣的供應、管理和監控
Kafka 一種高吞吐量的分佈式發佈訂閱消息系統,可以處理消費者規模的網站中的所有動作流數據
Spark 類似於Hadoop MapReduce的通用並行框架

HDFS相關概念、體系結構、數據存取策略、數據錯誤與恢復

相關概念
  • HDFS默認一個塊128MB,一個文件被分成多個塊,以塊作爲存儲單位。

    • 支持大規模文件存儲
    • 簡化系統設計
    • 適合數據備份
  • NameNode和DataNode

    NameNode DataNode
    存儲元數據 存儲文件內容
    元數據保存在內存中 文件內容保存在磁盤
    保存文件,block,datanode之間的映射關係 維護了block id和datanode本地文件的映射關係
    • NameNode

      • 在HDFS中,名稱節點(NameNode)負責管理分佈式文件系統的命名空間,保存了兩個核心的數據結構,即FsImage和EditLog

      • 名稱節點記錄了每個文件中各個塊所在的數據節點的位置信息
        在這裏插入圖片描述

    • FsImage文件

      • FsImage文件包含文件系統中所有目錄和文件inode的序列化形式。
      • FsImage文件沒有記錄塊存儲在哪個數據節點。而是由名稱節點把這些 映射保留在內存中
    • SecondaryNameNode

      第二名稱節點是HDFS架構中的一個組成部分,它是用來保存名稱節點中對HDFS 元數據信息的備份,並減少名稱節點重啓的時間。SecondaryNameNode一般是單獨運行在一臺機器上

    • 數據節點(DataNode)

      • 數據節點是分佈式文件系統HDFS的工作節點,負責數據的存儲和讀取,會根據

      客戶端或者是名稱節點的調度來進行數據的存儲和檢索,並且向名稱節點定期發

      送自己所存儲的塊的列表

      • 每個數據節點中的數據會被保存在各自節點的本地Linux文件系統中
HDFS體系結構

HDFS採用了主從(Master/Slave)結構模型,一個HDFS集羣包括一個名稱節點(NameNode)和若干個數據節點(DataNode)。名稱節點作爲中心服務器,負責管理文件系統的命名空間及客戶端對文件的訪問。集羣中的數據節點一般是一個節點運行一個數據節點進程,負責處理文件系統客戶端的讀/寫請求,在名稱節點的統一調度下進行數據塊的創建、刪除和複製等操作。每個數據節點的數據實際上是保存在本地Linux文件系統中的

在這裏插入圖片描述

數據存取策略
  1. 數據存放
    • 第一個副本:放置在上傳文件的數據節點;如果是集羣外提交,則隨機挑選一臺磁
    • 盤不太滿、CPU不太忙的節點
    • 第二個副本:放置在與第一個副本不同的機架的節點上
    • 第三個副本:與第一個副本相同機架的其他節點上
    • 更多副本:隨機節點

在這裏插入圖片描述

  1. 數據讀取
    • HDFS提供了一個API可以確定一個數據節點所屬的機架ID,客戶端也可以調用API獲取自己所屬的機架ID
    • •當客戶端讀取數據時,從名稱節點獲得數據塊不同副本的存放位置列表,列表中包含了副本所在的數據節點,可以調用API來確定客戶端和這些數據節點所屬的機架ID,當發現某個數據塊副本對應的機架ID和客戶端對應的機架ID相同時,就優先選擇該 副本讀取數據,如果沒有發現,就隨機選擇一個副本讀取數據
數據錯誤與恢復
  1. 名稱節點出錯

    HDFS設置了備份機制,把這些核心文件同步複製到備份服務器SecondaryNameNode上。當名稱節點出錯時,就可以根據備份服務器SecondaryNameNode中的FsImage和Editlog數據進行恢復。

  2. 數據節點出錯

    • 每個數據節點會定期向名稱節點發送“心跳”信息,向名稱節點報告自己的狀態

    • 當數據節點發生故障,或者網絡發生斷網時,名稱節點就無法收到來自一些數據節點的心跳信息,這時,這些數據節點就會被標記爲“宕機”,節點上面的所有數據都會被標記爲“不可讀”,名稱節點不會再給它們發送任何I/O請求

    • 這時,有可能出現一種情形,即由於一些數據節點的不可用,會導致一些數據塊的副本數量小於冗餘因子

    • 名稱節點會定期檢查這種情況,一旦發現某個數據塊的副本數量小於冗餘因子,就會啓動數據冗餘複製,爲它生成新的副本

    • HDFS和其它分佈式文件系統的最大區別就是可以調整冗餘數據的位置

  3. 數據出錯

    • 每個數據節點會定期向名稱節點發送“心跳”信息,向名稱節點報告自己的狀態

    • 當數據節點發生故障,或者網絡發生斷網時,名稱節點就無法收到來自一些數據節點的 心跳信息,這時,這些數據節點就會被標記爲“宕機”,節點上面的所有數據都會被標 記爲“不可讀”,名稱節點不會再給它們發送任何I/O請求

    • 這時,有可能出現一種情形,即由於一些數據節點的不可用,會導致一些數據塊的副本

    數量小於冗餘因子

    • 名稱節點會定期檢查這種情況,一旦發現某個數據塊的副本數量小於冗餘因子,就會啓

    動數據冗餘複製,爲它生成新的副本

    • HDFS和其它分佈式文件系統的最大區別就是可以調整冗餘數據的位置

HDFS如何減輕名稱節點的負擔

MapReduce相較於傳統並行計算框架的優勢

傳統並行計算框架 MapReduce
集羣架構/容錯性 共享式(共享內存/共享存儲),容錯性差 非共享式,容錯性好
硬件/價格/擴展性 刀片服務器、高速網、SAN,價格貴,擴展性差 普通PC機,便宜,擴展性好
編程/學習難度 what-how,難 what,簡單
適用場景 實時、細粒度計算、計算密集型 批處理、非實時、數據密集型

MapReduce體系結構、應用程序執行過程

體系結構

MapReduce體系結構主要由四個部分組成,分別是:Client、JobTracker、TaskTracker以及Task

在這裏插入圖片描述

  • Client

    • 用戶編寫的MapReduce程序通過Client提交到JobTracker端
    • 用戶可通過Client提供的一些接口查看作業運行狀態
  • JobTracker

  • JobTracker負責資源監控和作業調度

  • JobTracker 監控所有TaskTracker與Job的健康狀況,一旦發現失敗,就將相

    應的任務轉移到其他節點

  • JobTracker 會跟蹤任務的執行進度、資源使用量等信息,並將這些信息告訴任務調度器(TaskScheduler,可插拔,可自定義),而調度器會在資源出現空閒時,選擇合適的任務去使用這些資源

  • TaskTracker

    • TaskTracker 會週期性地通過“心跳”將本節點上資源的使用情況和任務的

      運行進度彙報給JobTracker,同時接收JobTracker 發送過來的命令並執行相

      應的操作(如啓動新任務、殺死任務等)

    • TaskTracker 使用”slot(槽)”等量劃分本節點上的資源量(CPU、內存等)。

    • 一個Task 獲取到一個slot 後纔有機會運行,而Hadoop調度器的作用就是將各個TaskTracker上的空閒slot分配給Task使用。slot 分爲Map slot 和 Reduce slot 兩種,分別供MapTask 和Reduce Task 使用

  • Task

    Task 分爲Map Task 和Reduce Task 兩種,均由TaskTracker 啓動

MapReduce應用程序執行過程

在這裏插入圖片描述

數據倉庫概念、 Hive特點

數據倉庫(Data Warehouse)是一個面向主題的(Subject Oriented)、集成的(Integrated)、相對穩定的(Non-Volatile)、反映歷史變化(Time Variant)的數據集合,用於支持管理決策。

在這裏插入圖片描述

  • Hive是一個構建於Hadoop頂層的數據倉庫工具

  • 支持大規模數據存儲、分析,具有良好的可擴展性

  • 某種程度上可以看作是用戶編程接口,本身不存儲和處理數據

  • 依賴分佈式文件系統HDFS存儲數據

  • 依賴分佈式並行計算模型MapReduce處理數據

  • 定義了簡單的類似SQL 的查詢語言——HiveQL

  • 用戶可以通過編寫的HiveQL語句運行MapReduce任務

  • 可以很容易把原來構建在關係數據庫上的數據倉庫應用程序移植到Hadoop平臺上

  • 是一個可以提供有效、合理、直觀組織和使用數據的分析工具

Hive具有的特點非常適用於數據倉庫

  • 採用批處理方式處理海量數據
    • Hive需要把HiveQL語句轉換成MapReduce任務進行運行
    • 數據倉庫存儲的是靜態數據,對靜態數據的分析適合採用批處理方式,不需要快速響應給出結果,而且數據本身也不會頻繁變化
  • 提供適合數據倉庫操作的工具
    • Hive本身提供了一系列對數據進行提取、轉換、加載(ETL)的工具,可以存儲、查詢和分析存儲在Hadoop中的大規模數據
    • 這些工具能夠很好地滿足數據倉庫各種應用場景

Hive與Hadoop生態系統中其他組件的關係

  • Hive依賴於HDFS存儲數據

  • Hive依賴於MapReduce 處理數據

  • 在某些場景下Pig可以作爲Hive的替代工具

  • HBase 提供數據的實時訪問

Spark特點、Spark基本概念

  • 運行速度快:使用DAG執行引擎以支持循環數據流與內存計算

  • 容易使用:支持使用Scala、Java、Python和R語言進行編程,可以通過Spark Shell進行交互式編程

  • 通用性:Spark提供了完整而強大的技術棧,包括SQL查詢、流式計算、機器學習和圖算法組件

  • 運行模式多樣:可運行於獨立的集羣模式中,可運行於Hadoop中,並且可以訪問HDFS、HBase、Hive等多種數據源

Spark與Hadoop的對比、Spark RDD

Hadoop存在如下一些缺點:

  • 表達能力有限

  • 磁盤IO開銷大

  • 延遲高

  • 任務之間的銜接涉及IO開銷

  • 在前一個任務執行完成之前,其他任務就無法開始,難以勝任複雜、多階段的計算任務

相比於Hadoop MapReduce,Spark主要具有如下優點:

  • Spark的計算模式也屬於MapReduce,但不侷限於Map和Reduce操作,還提供了多 種數據集操作類型,編程模型比Hadoop MapReduce更靈活

  • Spark提供了內存計算,可將中間結果放到內存中,對於迭代運算效率更高

  • Spark基於DAG的任務調度執行機制,要優於Hadoop MapReduce的迭代執行機制

image-20200524155242251
MapReduce Spark
數據存儲結構:磁盤HDFS文件系統的split 使用內存構建彈性分佈式數據集RDD 對數據進行運算和cache
編程範式:Map + Reduce DAG: Transformation + Action
計算中間結果落到磁盤,IO代價大 計算中間結果在內存中維護 存取速度比磁盤高几個數量級
Task以進程的方式維護,需要數秒時間才能啓動任務 Task以線程的方式維護 對於小數據集讀取能夠達到亞秒級的延遲
Spark RDD

RDD提供了一個抽象的數據架構,我們不必 擔心底層數據的分佈式特性,只需將具體的應用邏輯表達爲一系列轉換處理,不同RDD之間的轉換操作形成依賴關係,可以實現管道化,避免中間數據存儲

RDD典型的執行過程如下:

  • RDD讀入外部數據源進行創建

  • RDD經過一系列的轉換(Transformation)操作,每一次都會產生不同的RDD,供給下一個轉換操作使用

  • 最後一個RDD經過“動作”操作進行轉換,並輸出到外部數據源

image-20200524155704707

RDD特性

  • 高效的容錯性

    現有容錯機制:數據複製或者記錄日誌

    RDD:血緣關係、重新計算丟失分區、無需回滾系統、重算過程在不同

    節點之間並行、只記錄粗粒度的操作

  • 中間結果持久化到內存,數據在內存中的多個RDD操作之間進行傳遞,避免 了不必要的讀寫磁盤開銷

擔心底層數據的分佈式特性,只需將具體的應用邏輯表達爲一系列轉換處理,不同RDD之間的轉換操作形成依賴關係,可以實現管道化,避免中間數據存儲

RDD典型的執行過程如下:

  • RDD讀入外部數據源進行創建

  • RDD經過一系列的轉換(Transformation)操作,每一次都會產生不同的RDD,供給下一個轉換操作使用

  • 最後一個RDD經過“動作”操作進行轉換,並輸出到外部數據源
    在這裏插入圖片描述

RDD特性

  • 高效的容錯性

    現有容錯機制:數據複製或者記錄日誌

    RDD:血緣關係、重新計算丟失分區、無需回滾系統、重算過程在不同

    節點之間並行、只記錄粗粒度的操作

  • 中間結果持久化到內存,數據在內存中的多個RDD操作之間進行傳遞,避免 了不必要的讀寫磁盤開銷

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章