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

大資料複習

大資料複習

大資料概述

三次資訊化浪潮的標誌及解決的關鍵問題

資訊化浪潮 發生時間 特點 標誌 解決問題
第一次浪潮 1980 數字化 個人計算機 資訊處理
第二次浪潮 1995 網路化 網際網路 資訊傳輸
第三次浪潮 2010 智慧化 物聯網、雲端計算和大資料 資訊爆炸

資訊科技需要解決的最核心的三個問題:資訊儲存、資訊傳輸和資訊處理

資料產生方式經歷的三個階段:運營式系統階段、使用者原創內容階段、感知式系統階段

資料發展經歷的三個階段

階段 時間 內容
萌芽期 上世紀90年代至本世紀初 隨著資料探勘理論和資料庫技術的逐步成熟,一批商業智慧工具和知識管理技術開始被應用,如資料倉庫、專家系統、知識管理系統等。
成熟期 本世紀前十年 Web2.0應用迅猛發展,非結構化資料大量產生,傳統處理方法難以應對,帶動了大資料技術的快速突破,大資料解決方案逐漸走向 成熟,形成了平行計算與分散式系統兩大核心技術,谷歌的GFS和MapReduce等大資料技術受到追捧,Hadoop平臺開始大行其道
大規模應用期 2010年以後 大資料應用滲透各行各業,資料驅動決策,資訊社會智慧化程度大幅提高

大資料特徵及其含義

大資料是無法在一定時間範圍內用常規軟體工具進行捕捉、管理和處理的資料集合,是需要新處理模式才能具有更強的決策力、洞察發現力和流程優化能力的海量、高增長率和多樣化的資訊資產。其特徵是資料容量大、處理速度快、處理速度快、資料型別多、價值密度低。

人類科學研究上先後經歷的四種正規化:批處理計算、流計算、圖計算、查詢分析計算

大資料的基本處理流程有哪幾個環節:IT基礎設施層、資料來源層、資料管理層、資料分析層、資料平臺層、資料應用層

大資料處理最核心的兩大技術:分散式儲存、分散式處理

大資料產業主要涉及哪幾個層面:資料採集、資料儲存和管理、資料處理與分析、資料隱私和安全

大資料、雲端計算和物聯網三者之間的區別與聯絡:雲端計算、大資料和物聯網代表了IT領域最新的技術發展趨勢,三者相 輔相成,既有聯絡又有區別

大資料處理架構Hadoop

Hadoop的特性

  • 高可靠性::冗餘副本機制與容錯機制
  • 高效性:利用叢集做計算
  • 高可擴充套件性:僅僅通過增加節點就可
  • 高容錯性:多副本機制
  • 成本低:節點可使用低端PC機
  • 支援多平臺:主要執行在Linux上,也支援Windows
  • 支援多種程式語言:如java、C、C++、python

Hadoop兩個版本的本質區別:Hadoop 2.0完全不同於Hadoop 1.0,是一套全新的架構,包含HDFS Federation和YARN兩個系統

實際應用時,如何選擇Hadoop版本

  • 是否開源(即是否免費)
  • 是否有穩定版
  • 是否經實踐檢驗
  • 是否有強大的社群支援

Hadoop主要元件的作用與特徵

螢幕快照 2019-06-12 15.11.15.png

HDFS(Hadoop Distributed File System):由數百或數千個儲存著檔案資料片段的伺服器組成,適合批量處理,提供了高可靠性、高擴充套件性和高吞吐率的資料儲存服務

YARN(Yet Another Resource Negotiator):資源管理和排程器,負責叢集資源的統一管理和排程,Hadoop 2.0新增系統,減輕1.0版MapReduce的處理負擔,使得多種計算框架可以執行在一個叢集中

MapReduce:一種程式設計模型,可完成基於叢集的高效能平行計算,具有易於程式設計、高容錯性和高擴充套件性等優點

Tez:執行在YARN之上支援DAG(有向無環圖)作業的Hadoop查詢處理框架,可以將多個有依賴的作業轉換為一個作業從而大幅提升DAG作業的效能

Spark:類似於Hadoop MapReduce的通用並行框架,基於記憶體計算(MapReduce是基於磁碟的),效能比MapReduce高一個數量級

Hive:Hadoop上的資料倉庫,資料計算使用MR,資料儲存使用HDFS,定義了一種類SQL查詢語言HQL對資料進行處理,類似SQL但不完全相同

Pig:基於hadoop的大規模資料分析平臺,提供類似SQL的查詢語言Pig Latin進行流資料處理,相對於MapReduce,Pig是一個輕量級的程式語言,目的是響應對半結構化資料(如日誌檔案)的查詢

Oozie:Hadoop上的工作流管理系統,將工作氛圍多個工作環節,用工作流來進行管理

Zookeeper:提供分散式協調一致性服務,對叢集飯不是鎖進行管理

Hbase:Hadoop上的非關係型的分散式、列式儲存資料庫,支援對十幾億行上百萬列的超大型資料庫的隨機讀寫與實時應用

Flume:一個高可用、高可靠、分散式的海量日誌採集、聚合和傳輸的系統

Sqoop:一款開源的工具,用於在Hadoop於傳統資料庫之間進行資料交換

Ambari:Hadoop快速部署工具,支援Apache Hadoop叢集的供應、管理和監控

分散式檔案系統HDFS

計算機叢集結構:由以交換機相連線的、內部包含多個計算機節點的多個機架組成

HDFS的體系結構組成及其特點:HDFS採用了主從結構模型,一個HDFS叢集包括一個名稱節點(NameNode)和若干個資料節點(DataNode)

HDFS名稱節點包含的兩個核心資料結構

  • FsImage 用於儲存元資料(如訪問許可權、塊大小、檔案系統樹以及檔案樹中所有的檔案和資料夾等)
  • EditLog中記錄所有針對檔案的建立、刪除、重新命名等操作

第二名稱節點的作用:第二名稱節點是HDFS架構中的一個組成部分,用來儲存名稱節點中對HDFS元資料資訊的備份,減少名稱節點重啟的時間,解決名稱節點執行期間EditLog不斷變大的問題,一般是單獨執行在一臺機器上

HDFS設計上的侷限性

  • 不支援低延遲資料訪問
  • 無法高效儲存大量小檔案
  • 不支援多使用者寫入及任意修改檔案

HDFS的塊及其與檔案的關係:HDFS預設一個塊64MB,一個檔案被分成多個塊,以塊作為儲存單位,塊的大小遠遠大於普通檔案系統,可以最小化定址開銷

HDFS儲存原理

  • 冗餘資料儲存(多副本)
  • 資料存取策略
  • 資料錯誤與恢復

NoSQL與雲資料庫

通過對比分析瞭解關係資料庫與NoSQL資料庫各自的優勢與劣勢

NoSQL的特點:靈活的可擴充套件性、靈活的資料模型、與雲端計算緊密結合

關係資料庫的劣勢:無法滿足海量資料的管理需求、資料高併發的需求、高擴充套件性和高可用性需求

關係資料庫

優勢:以完善的關係代數理論作為基礎,有嚴格的標準,支援事務ACID四性,藉助索引機制可以實現高效的查詢,技術成熟,有專業公司的技術支援

劣勢:可擴充套件性較差,無法較好支援海量資料儲存,資料模型過於死板、無法較好支援Web2.0應用,事務機制影響了系統的整體效能等

NoSQL資料庫

優勢:可以支援超大規模資料儲存,靈活的資料模型可以很好地支援Web2.0應用,具有強大的橫向擴充套件能力等

劣勢:缺乏數學理論基礎,複雜查詢效能不高,大都不能實現事務強一致性,很難實現資料完整性,技術尚不成熟,缺乏專業團隊的技術
支援,維護較困難等

NoSQL包含哪四大型別:鍵值資料庫、列族資料庫、文件資料庫和圖形資料庫

鍵值資料庫、列族資料庫的資料模型與優缺點是什麼?

  • 鍵值資料庫

    • 優點:擴充套件性好,靈活性好,大量寫操作時效能高
    • 缺點:無法儲存結構化資訊,條件查詢效率較低
  • 列族資料庫

    • 優點:查詢速度快,可擴充套件性強,容易進行分散式擴充套件,複雜性低
    • 缺點:功能較少,大都不支援強事務一致性

文件資料庫不同與鍵值資料庫之處是什麼?

  • 資料是不規則的:每一條記錄包含了所有的有關“SequoiaDB”的資訊而沒有任何外部的引用,這條記錄就是“自包含”的
  • 資料遷移很容易:因為這條記錄的所有資訊都包含在裡面了,不需要考慮 還有資訊在別的表沒有一起遷移走
  • ACID保證與讀寫速度快:因為在移動過程中,只有被移動的那一條記錄(文件)需要操作,而不像關係型中每個有關聯的表都需要鎖住來保證一致性

瞭解基於圖形資料庫的特點和其典型應用

  • 優點:靈活性高,支援複雜的圖形演算法可用於構建複雜的關係圖譜
  • 缺點:複雜性高,只能支援一定的資料規模
  • 典型應用:專門用於處理具有高度相互關聯關係的資料,比較適合於社交網路、模式識別、依賴分析、推薦系統以及路徑尋找等問題

基於CPA理論,一個分散式系統不可能同時滿足哪幾個特性?

一個分散式系統不可能同時滿足一致性©、可用性(A)和分割槽容忍性§這三個需求,最多隻能同時滿足其中兩個

ACID與BASE的基本含義是什麼?

ACID:原子性、一致性、隔離性、永續性

BASE:基本可用、軟狀態(柔性事務)、最終一致性

BASE的“基本可用”最核心的特點是什麼?

指一個分散式系統的一部分發生問題變得不可用時,其他部分仍然可 以正常使用,也就是允許分割槽失敗的情形出現

BASE的“軟狀態”最核心的特點是什麼?

“軟狀態”是指狀態可以有一段時間不同步,具有一定的滯後性

NewSQL的兩個顯著共同特徵是什麼:都支援關係資料模型,都是用SQL作為其主要介面

雲資料庫是一種什麼樣的資料庫?

  • 是部署和虛擬化在雲端計算環境中的資料庫。
  • 是在雲端計算的大背景下發展起來的一種新興的共享基礎架構的方法
  • 它極大地增強了資料庫的儲存能力,消除了人員、硬體、軟體的重複配置,讓軟、硬體升級變得更加容易
  • 具有高可擴充套件性、高可用性、採用多租形式和支援資源有效分發等特點

MapReduce

MapReduce處理資料所採用的策略是什麼:採用“分而治之”策略儲存在分散式檔案系統中的大規模資料集,會被切分成許多獨立的分片(split),這些分片可以被多個Map任務並行處理

採用上述策略的主要目的是什麼:設計理念是“計算向資料靠攏”而非“資料向計算靠攏”,因為移動資料需要大量的網路傳輸開銷

MapReduce採用的是什麼框架:其框架採用主/從(Master/Slave)架構,包括一個Master和若干個Slave,Master上執行JobTracker,Slave上執行TaskTracker

MapReduce體系結構由哪四個部分組成:Client、JobTracker、TaskTracker、Task

MapReduce模型的兩個核心函式是什麼?

  • Map

    1. 將小資料集進一步解析成 一批<key,value>對,輸入 Map函式中進行處理
    2. 每一個輸入的<k1,v1>會輸出 一批<k2,v2>。<k2,v2>是計算 的中間結果
  • Reduce

    輸入的中間結果<k2,List(v2)> 中的List(v2)表示是一批屬於 同一個k2的value

Map處理前的資料分片(split)與HDFS資料塊(block)之間是什麼關係?

HDFS以block為基本單位儲存資料,而MapReduce處理單位是split,split是一個邏輯概念,它只包含一些元資料資訊,如資料起始位置、長度、所在節點等。它的劃分方法完全由使用者自己決定,一個split可跨越不同的block。每個分片會產生一個Map任務

Hive

什麼是資料倉庫:資料倉庫是一個面向主題的、整合的、相對穩定的、反映歷史變化的資料集合,用於支援管理決策。

傳統資料倉庫面臨哪些挑戰

  • 無法滿足快速增長的海量資料儲存需求
  • 無法有效處理不同型別的資料
  • 計算和處理能力不足

Hive自身儲存與處理資料嗎:某種程度上可以看作是使用者程式設計介面,本身不儲存和處理資料

Hive的資料儲存與處理資料分別依賴於什麼:依賴分散式檔案系統HDFS儲存資料,依賴分散式平行計算模型MapReduce處理資料

Hive具有的什麼特點導致其適用於資料倉庫:採用批處理的方式處理海量資料,提供適合資料倉庫操作的工具

Hive系統框架由哪三個部分組成:使用者介面模組、驅動模組和源資料儲存模組

Spark

什麼是spark:Spark是基於記憶體計算的大資料平行計算框架,使用簡練、優雅的Scala語言編寫,基於Scala提供了互動式程式設計體驗,可用於構建大型的、低延遲的資料分析應用程式

spark的主要特點是什麼

  • 執行速度快
  • 容易使用
  • 通用性
  • 執行模式多樣

Scala是什麼?與Spark有什麼關係?

Scala是一門現代的多正規化程式語言,運行於Java平臺(JVM,Java 虛擬機器),併兼容現有的Java程式

Scala是Spark的主要程式語言,但Spark還支援Java、Python、R作為程式語言

Scala的優勢是提供了REPL(Read-Eval-Print Loop,互動式直譯器),提高程式開發效率

實際應用中,大資料處理主要包括哪三個型別?各自用什麼軟體更為適合?

  • 複雜的批量資料處理:通常時間跨度在數十分鐘到數小時之間。MapReduce
  • 基於歷史資料的互動式查詢:通常時間跨度在數十秒到數分鐘之間。Impala
  • 基於實時資料流的資料處理:通常時間跨度在數百毫秒到數秒之間。Storm