天天看點

大資料技術原理與應用(最後三天備考!!!)

大資料原理與應用期末備考 三天速成不挂科

☆ 内容期末大機率考

選擇部分直達 → 選擇部分

導航

    • 大資料原理與應用期末備考 三天速成不挂科
      • 第一章 大資料概述
      • 第二章 大資料處理架構 Hadoop
      • 第三章 分布式檔案系統 HDFS
      • 第四章 分布式資料庫 HBase
      • 第五章 NoSql 資料庫
      • 第六章 雲資料庫
      • 第七章 MapReduce
      • 第八章 Hadoop 再探讨

第一章 大資料概述

1. 試述大資料的四個基本特征。

資料量大:人類進入資訊社會後,資料以自然方式增長,資料每兩年就會增加一倍多。

資料類型繁多:大資料的資料類型非常豐富,包括結構化資料和非結構化資料,如郵件、音頻、視訊等,給資料處理和分析技術提出了新的挑戰。

處理速度快:由于很多應用都需要基于快速生成的資料給出實時分析結果,是以新興的大資料分析技術通常采用叢集處理和獨特的内部設計。

價值密度低:有價值的資料分散在海量資料中。

2. 舉例說明大資料的關鍵技術。
大資料技術層面 功能
資料采集與預處理 利用 ETL 工具将分布在異構資料源中的資料抽到臨時中間層後進行清洗、轉換和內建後加載到資料倉庫中,成為聯機分析處理、資料挖掘的基礎,也可以利用日志采集工具(如 Flume、Kafka 等)将實時采集的資料作為流計算系統的輸入,進行實時處理分析。
資料存儲和管理 利用分布式檔案系統、NoSQL 資料庫等實作對資料的存儲和管理。
資料處理與分析 利用分布式并行程式設計模型和計算架構,結合機器學習和資料挖掘算法,實作對海量資料的處理和分析,并進行可視化呈現。
資料安全和隐私保護 建構資料安全體系和隐私資料保護體系。
3. 詳細闡述大資料、雲計算和物聯網三者之間的差別與聯系
差別 聯系
大資料側重于海量資料的存儲、處理與分析,從海量資料中發現價值,服務于生産和生活;雲計算旨在整合和優化各種 IT 資源并通過網絡以服務的方式,廉價地提供給使用者;物聯網的發展目标是實作 “ 物物相連 ”,應用創新是物聯網的核心。 從整體上看,大資料、雲計算和物聯網這三者是相輔相成的。大資料根植于雲計算,大資料分析的很多技術都來自于雲計算,雲計算的分布式存儲和管理系統提供了海量資料的存儲和管理能力,分布式并行處理架構 MapReduce 提供了資料分析能力。沒有這些雲計算技術作為支撐,大資料分析就無從談起。物聯網的傳感器源源不斷的産生大量資料,構成了大資料的重要資料來源,物聯網需要借助于雲計算和大資料技術,實作物聯網大資料的存儲、分析和處理。

第二章 大資料處理架構 Hadoop

☆☆☆ 1. 試述 Hadoop 具有哪些特性。
  1. 高可靠性。采用備援資料存儲方式,即使一個副本發生故障,其他副本也可以保證正常對外提供服務。
  2. 高效性。作為并行分布式計算平台,Hadoop 采用分布式存儲和分布式處理兩大核心技術能夠高效地處理 PB 級資料。
  3. 高可擴充性。Hadoop 的設計目标是可以高效穩定地運作在廉價的計算機叢集上,可以擴充到數以千計的計算機節點上。
  4. 高容錯性。采用備援資料存儲方式,自動儲存資料的多個副本,并且能夠自動将失敗的任務進行重新配置設定。
  5. 成本低。Hadoop 采用廉價的計算機叢集,成本比較低,普通使用者也很容易用自己的 PC 搭建 Hadoop 運作環境。
  6. 運作在 Linux 作業系統上。Hadoop 是基于 Java 開發的,可以較好的運作在 Linux 系統上。
  7. 支援多種程式設計語言。Hadoop 上的應用程式也可以使用其他語言編寫,如 C++。
2. 試述 Hadoop 的項目結構以及每個部分的具體功能。
  1. HDFS 是 Hadoop 項目的兩個核心之一,它是針對谷歌檔案系統的開源實作。
  2. HBase 是一個提供高可靠性、高性能、可伸縮、實時讀寫、分布式的列式資料庫,一般采用 HDFS 作為其底層資料存儲系統。
  3. Hadoop MapReduce 是針對谷歌 MapReduce 的開源實作。MapReduce 是一種程式設計模型,用于大規模資料集(大于 1 TB)的并行運算。
  4. Hive 是一個基于 Hadoop 的資料倉庫工具,可以用于對 Hadoop 檔案中的資料集進行資料整理、特殊查詢和分析存儲。
  5. Pig 是一種資料流語言和運作環境,适合于使用 Hadoop 和 MapReducce 平台上查詢大型半結構化資料集。
  6. ZooKeeper 是針對谷歌 Chubby 的一個開源實作,是高效和可靠的協同工作系統,提供分布式鎖之類的基本服務,用于建構分布式應用,減輕分布式應用程式所承擔的協調任務。
  7. Sqoop 主要用來在 Hadoop 和關系資料庫之間交換資料,可以改進資料的互操作性。
3. 試列舉單機模式和僞分布式模式的異同點。

單機模式: Hadoop 隻在一台機器上運作,存儲采用本地檔案系統,沒有采用分布式檔案系統 HDFS。

僞分布式模式: Hadoop 存儲采用分布式檔案系統 HDFS,但是,HDFS 的名稱節點和資料節點都在同一台機器上。

第三章 分布式檔案系統 HDFS

1. 試述 HDFS 中的名稱節點和資料節點的具體功能。

名稱節點 負責管理分布式檔案系統系統的命名空間(Namespace),記錄分布式檔案系統中的每個檔案中各個塊所在的資料節點的位置資訊。

資料節點 是分布式檔案系統 HDFS 的工作節點,負責資料的存儲和讀取,會根據用戶端或者名稱節點的排程來進行資料的存儲和檢索,并向名稱節點定期發送自己所存儲的塊的清單資訊。

2. HDFS 隻設定唯一一個名稱節點,在簡化系統設計的同時也帶來了一些明顯的局限性,請闡述局限性具體表現在哪些方面。
  1. 命名空間的限制。名稱節點是儲存在記憶體中的,是以名稱節點能夠容納對象(檔案、塊)的個數會受到記憶體空間大小的限制。
  2. 性能的瓶頸。整個分布式檔案系統的吞吐量受限于單個名稱節點的吞吐量。
  3. 隔離問題。由于叢集中隻有一個名稱節點,隻有一個命名空間,是以無法對不同的應用程式進行隔離。
  4. 叢集的可用性。一旦這個唯一的名稱節點發生故障,會導緻整個叢集變得不可用。
3. 試述 HDFS 的備援資料儲存政策。
采用了多副本方式多資料進行存儲。即先在叢集内挑選一個磁盤不太滿、CPU 不太忙的資料節點作為第一個副本存放點;選取不同的機架的資料節點作為第二副本存放點;選擇與第一副本存放點同機架的不同節點作為第三副本存放點;第四副本存放點從叢集中随機挑選節點。
4. 資料複制主要是在資料寫入和資料恢複的時候發生,HDFS 資料複制是使用流水線複制的政策,請闡述該政策的細節。
每個塊都會向 HDFS 叢集中的名稱節點發出寫請求,名稱節點會傳回一個資料節點清單給用戶端,用戶端将資料寫入清單中第一個資料節點時,同時把清單傳給第一個節點;第一個節點在接收到資料寫入本地的同時,會把自己已經接收到的資料傳給第二個資料節點,同時第二個資料節點接收到資料時,會在寫入的同時将資料發送給第三個節點,以此類推。最後,當檔案寫完的時候,資料複制也同時完成了。
5. 請闡述 HDFS 在不發生故障的情況下讀檔案的過程。

1) 用戶端打開檔案,建立輸入流;

2) 輸入流通過遠端調用名稱節點,獲得檔案開始部分資料塊的儲存位置;

3) 用戶端得到位置後開始讀取資料,輸入流選擇距離用戶端最近的資料節點建立連接配接并讀取資料;

4) 資料從該資料節點讀取至用戶端,當該資料塊讀取完畢時,關閉連接配接;

5) 輸入流查找下一個資料塊;

6) 找到該資料塊的最佳資料節點,讀取資料;

7) 當用戶端讀取完資料時,關閉輸入流。

6. 請闡述 HDFS 在不發生故障的情況下寫檔案的過程。

1) 用戶端建立檔案和輸出流;

2) HDFS 調用名稱節點,在檔案系統的命名空間中建一個新的檔案,并執行檢查;檢查通過後,名稱節點會構造一個新檔案夾,并添加檔案資訊;

3) 用戶端通過輸出流向 HDFS 的檔案寫入資料;

4) 用戶端寫入的資料首先會被分成一個個的分包,将分包放入輸出流對象的内部隊列,并向名稱節點申請若幹個資料節點,然後通過流水線複制政策打包成資料包發送出去;

5) 為保證所有資料節點的資料都是準确的,需要資料節點向發送者發送 “ 确認包 ”,當用戶端收到應答時,将對應的分包從内部隊列移除。不斷執行 3~5 直至資料寫完;

6) 用戶端關閉輸出流,通知名稱節點關閉檔案。

第四章 分布式資料庫 HBase

1. 請闡述 HBase 和傳統關系資料庫的差別。
主要差別 HBase 傳統關系資料庫
資料類型 資料模型 關系模型
資料操作 插入、查詢、删除、清空,無法實作表與表之間關聯 插入、删除、更新、查詢、多表連接配接
存儲模式 基于列存儲,每個列族都由幾個檔案儲存,不同列族的檔案是分離的 基于行模式存儲,元組或行會被連續地存儲在磁盤中
資料索引 隻有一個行鍵索引 針對不同列建構複雜的多個索引
資料維護 更新操作不會删除資料舊的版本,而是生成一個新的版本 用最新的目前值去替換記錄中原來的舊值
可伸縮性 輕易地通過在叢集中增加或者減少硬體數量來實作性能的伸縮 很難實作橫向擴充,縱向擴充的空間也比較有限
☆☆☆ 2. 試述 HBase 各功能元件及其作用。

(1)庫函數:連結到每個用戶端;

(2)一個 Master 主伺服器:主伺服器 Master 主要負責管理和維護 HBase 表的分區資訊和 Region 伺服器清單;

(3)許多個 Region 伺服器:Region 伺服器是 HBase 中最核心的子產品,負責維護配置設定給自己的 Region,并響應使用者的讀寫請求。

3. 試述 HBase 的三層結構中各層次的名稱和作用。
層次 名稱 作用
第一層 ZooKeeper 檔案 記錄了 -ROOT- 表的位置資訊
第二層 -ROOT- 表 記錄了 .META. 表的 Region 位置資訊, -ROOT- 表隻能有一個 Region。通過 -ROOT- 表,就可以通路.META.表中的資料
第三層 .META. 表 記錄了使用者資料表的 Region 位置資訊, .META. 表可以有多個 Region,儲存了 HBase 中所有使用者資料表的 Region 位置資訊
4. 試述 HBase 系統基本架構以及每個組成部分的作用。

(1)用戶端

用戶端包含通路 HBase 的接口,同時在緩存中維護着已經通路過的 Region 位置資訊,用來加快後續資料通路過程。

(2)ZooKeeper 伺服器

ZooKeeper 可以幫助選舉出一個 Master 作為叢集的總管,并保證在任何時刻總有唯一一個 Master 在運作,這就避免了 Master 的 “ 單點失效 ” 問題。

(3)Master 主伺服器

Master 主伺服器主要負責表和 Region 的管理工作:管理使用者對表的增加、删除、修改、查詢等操作;實作不同 Region 伺服器之間的負載均衡;在Region分裂或合并後,負責重新調整 Region 的分布;對發生故障失效的 Region 伺服器上的 Region 進行遷移。

(4)Region 伺服器

Region 伺服器是 HBase 中最核心的子產品,負責維護配置設定給自己的 Region,并響應使用者的讀寫請求。

第五章 NoSql 資料庫

1. 請比較關系資料庫和 NoSQL 資料庫的優缺點。
資料庫 優點 缺點
關系資料庫 以完善的關系代數理論作為基礎,有嚴格的标準,支援事務 ACID 四性,借助索引機制可以實作高效的查詢,技術成熟,有專業公司的技術支援 可擴充性較差,無法較好地支援海量資料存儲,資料模型過于死闆,無法較好支援 Web2.0 應用,事務機制影響了系統的整體性能等
NoSQL 資料庫 可以支援超大規模資料存儲,靈活的資料模型可以很好支援 Web2.0 應用,具有強大的橫向擴充能力等 缺乏數學理論基礎,複雜查詢性能不高,一般不能實作事務強一緻性、很難實作資料完整性,技術尚不成熟,缺乏專業團隊的技術支援,維護較困難等
2. 試述 NoSQL 資料庫的四大類型。

鍵值資料庫:使用一個哈希表,表中有一個特定的 Key 和一個指針指向特定的 Value,Key 可以用來定位 Value,即存儲和檢索具體的 Value。

列族資料庫:一般采用列族資料模型,資料庫由多個行構成,每行資料包含多個列族,不同的行可以具有不同數量的列族,屬于同一列族的資料會被存放在一起。

文檔資料庫:以文檔作為最小機關,大都假定文檔以某種标準化格式封裝并對資料進行加密,同時用多種格式進行解碼。

圖資料庫:使用圖作為資料模型來存儲資料。

☆☆☆ 3. 試述鍵值資料庫、列族資料庫、文檔資料庫和圖資料庫的适用場合和優缺點。(主要是優缺點,相應産品了解即可)
資料庫類型 優點 缺點 場合 産品
鍵值資料庫 擴充性好、靈活性好、大量寫操作是性能高 無法存儲結構化 内容緩存 Redis、SimpleDB
列族資料庫 查找速度快、可擴充性強、容易進行分布式擴充、複雜性低 功能較少大都不支援強事務一緻性 分布式資料存儲與管理 BigTable、HBase、HadoopDB
文檔資料庫 性能好、靈活性高、複雜性低、資料結構靈活 缺乏統一的查詢文法 存儲、索引并管理面向文檔的資料或者類似的半結構化資料 MongoDB、SisoDB
圖資料庫 靈活性高、支援複雜的圖算法、可用于建構複雜的關系圖譜 複雜性高、隻能支援一定的資料規模 應用于大量複雜、互連接配接、低結構化的圖結構場合 Neo4J、OrientDB
4. 試述 CAP 理論的具體含義。

C(Consistency):一緻性。在分布式環境中,多點的資料是一緻的。

A(Availability):可用性。指能夠快速擷取資料,且在确定的時間内傳回操作結果。

P(Tolerance of Network Partition):分區容忍性,指當出現網絡分區的情況時,分離的系統也能正常運作。

5. 述資料庫的 ACID 四性的含義。

A(Atomicity):原子性。 指事務必須是原子工作單元,對于其資料修改,要麼全都執行,要麼全都不執行。

C(Consistency):一緻性。 指事務在完成時,必須使所有的資料都保持一緻狀态。

I(Isolation):隔離性。 指并發事務所做的修改必須與其他并發事務所做的修改隔離。

D(Durability):持久性。 指事務完成之後,它對于系統的影響是永久性的,該修改即使出現緻命的系統故障也将一直保持。

第六章 雲資料庫

1. 雲資料庫有哪些特性。
動态可擴充、高可用性、較低的使用代價、易用性、高性能、免維護、安全。
2. 試述 UMP 系統的功能。

UMP 系統建構在一個大的叢集之上的,通過多個元件的協同作業,整個系統實作了對使用者透明的 容災、讀寫分離、分庫分表、資源管理、資源排程、資源隔離和資料安全等功能。

1. 容災

雲資料庫必須向使用者提供一直可用的資料庫連接配接,當 MySQL 執行個體發生故障時,系統必須自動執行故障恢複,所有故障處理過程對于使用者而言是透明的,使用者不會感覺到背景發生的一切。

為了實作容災,UMP 系統會為每個使用者建立兩個 MySQL 執行個體,一個是主庫,一個是從庫,而且,這兩個 MySQL 執行個體之間互相把對方設定為備份機,任意一個 MySQL 執行個體上面發生的更新都會複制到對方。同時,Proxy 伺服器可以保證隻向主庫寫人資料。

2. 讀寫分離

由于每個使用者都有兩個 MySQL 執行個體,即主庫和從庫,是以 UMP 系統可以充分利用主從庫實作使用者讀寫操作的分離,實作負載均衡。UMP 系統實作了對于使用者透明的讀寫分離功能,當整個功能被開啟時,負責向使用者提供通路MySQL資料庫服務的 Proxy 伺服器,就會對使用者發起的 SQL 語句進行解析,如果屬于寫操作,就直接發送到主庫,如果是讀操作,就會被均衡地發送到主庫和從庫上執行。

3. 分庫分表

UMP 支援對使用者透明的分庫分表(Shard/Horizontal Partition)。但是,使用者在建立賬号的時候需要指定類型為多執行個體,并且設定執行個體的個數,系統會根據使用者設定來建立多組 MySQL 執行個體。除此以外,使用者還需要自己設定分庫分表規則,如需要确定分區字段,也就是根據哪個字段進行分庫分表,還要确定分區字段裡的值如何映射到不同的 MySQL 執行個體上。

4. 資源管理

UMP 系統采用資源池機制來管理資料庫伺服器上的 CPU、記憶體、磁盤等計算資源,所有的計算資源都放在資源池内進行統一配置設定,資源池是為 MySQL 執行個體配置設定資源的基本機關。整個叢集中的所有伺服器會根據其機型、所在機房等因素被劃分為多個資源池,每台伺服器會被加人到相應的資源池。在資源池劃分的基礎上,UMP還在每台伺服器内部采用 Cgroup 将資源進一步地細化,進而可以限制每個程序組使用資源的上限,同時保證程序組之間互相隔離。

5. 資源排程

UMP 系統中有 3 種規格的使用者,分别是資料量和流量比較小的使用者、中等規模使用者以及需要分庫分表的使用者。多個小規模使用者可以共享同一個 MySQL 執行個體。對于中等規模的使用者,每個使用者獨占個MySQL 執行個體。使用者可以根據自己的需求來調整記憶體空間和磁盤空間,如果使用者需要更多的資源,就可以遷移到資源有空閑或者具有更高配置的伺服器上對于分庫分表的使用者,會占有多個獨立的MySQL 執行個體,這些執行個體既可以共存在同一台實體機上,也可以每個執行個體獨占一台實體機。

UMP 通過 MySQL 執行個體的遷移來實作資源排程。借助于阿裡集團中間件團隊開發的愚公系統,UMP 可以實作在不停機的情況下動态擴容、縮容和遷移。

6. 資源隔離

當多個使用者共享同一個 MySQL 執行個體或者多個 MySQL 執行個體共存在同一個實體機上時,為了保護使用者應用和資料的安全,必須實作資源隔離,否則,某個使用者過多消耗系統資源會嚴重影響到其他使用者的操作性能。

7. 資料安全

資料安全是讓使用者放心使用雲資料庫産品的關鍵,尤其是企業使用者,資料庫中存放了很多業務資料,有些屬于商業機密,一旦洩露,會給企業造成損失。UMP 系統設計了多種機制來保證資料安全。

1.SSL 資料庫連接配接。

2.資料通路 IP 白名單。

3.記錄使用者記錄檔。

4.SQL 攔截。

3. 試述 UMP 系統的元件及其具體作用。

1. Controller 伺服器:向 UMP 叢集提供各種管理服務,實作叢集成員管理、中繼資料存儲、MySQL 執行個體管理、故障恢複、備份、遷移、擴容等功能。

2. Web 控制台:向使用者提供系統管理界面。

3. Proxy 伺服器:向使用者提供通路 MySQL 資料庫的服務。除了資料路由的基本功能外,Proxy 伺服器中還實作了屏蔽MySQL執行個體故障、讀寫分離、分庫分表、資源隔離、記錄使用者通路日志等功能。

4. Agent伺服器:管理每台實體機上的 MySQL 執行個體,執行主從切換、建立、删除、備份、遷移等操作,同時還負責收集和分析 MySQL 程序的統計資訊、慢查詢日志(Slow Query Log)和 bin-log。

5. 日志分析伺服器:存儲和分析 Proxy 伺服器傳入的使用者通路日志,并支援實時查詢一段時間内的慢日志和統計報表。

6. 資訊統計伺服器:定期對采集到的使用者的連接配接數、QPS 數值以及 MySQL 執行個體的程序狀态用 RRDtool 進行統計。

7. 愚公系統:是一個進行增量複制的工具,它結合了全量複制和 bin-log 分析,可以實作在不停機的情況下動态擴容、縮容和遷移。

第七章 MapReduce

1. 試述 Map 函數和 Reduce 函數的輸入、輸出以及處理過程。

Map 函數的輸入為分布式檔案系統的檔案塊,這些檔案快的格式是任意的。Map 函數将輸入的元素轉換成 <key, value> 形式的鍵值對,鍵和值的類型也是任意的。

Reduce函數的輸入是 Map 函數輸出的結果即中間結果,其任務是将輸入的一系列具有相同鍵的鍵值對以某種方式組合起來,輸出處理後的鍵值對,輸出結果會合并成一個檔案。

2. 試述 MapReduce 的工作流程。(需包括送出任務、Map、Shuffle、Reduce 的過程)

1) MapReduce 架構使用 InputFormat 子產品做 Map 前的預處理,然後将輸入檔案切分為邏輯上的多個 InputSplit。

2) 通過 RecordReader 根據 InputSplit 中的資訊來處理 InputSplit 中的具體記錄,加載資料并轉換為适合 Map 任務讀取的鍵值對,輸入給Map任務。

3) Map 任務會根據使用者自定義的映射規則,輸出一系列的 <key, value> 作為中間結果。

4) Shuffle:對 Map 任務輸出結果進行分區、排序、合并、歸并等操作,得到 <key,value-list> 形式的中間結果,再交給對應的 Reduce 進行處理。

5) Reduce 以一系列 <key, value-list> 中間結果作為輸入,執行使用者定義的邏輯,輸出結果給 OutputFormat 子產品。

6) OutputFormat 子產品會驗證輸出目錄是否存在以及輸出結果類型是否符合配置檔案中的配置類型,如果都滿足,就輸出 Reduce 的結果到分布式檔案系統。

☆☆☆ 3. Shuffle 過程是 MapReduce 過程的核心,也被稱為奇迹發生的地方,試分析 Shuffle 過程的作用。(答案不全,看書 P135)
對 Map 任務輸出結果進行分區、排序、合并、歸并等處理并交給 Reduce 的過程,減少磁盤 I/O 的讀寫次數,并減小從 Map 到 Reduce 之間的資料傳遞量。
4. 早期版本的 HDFS,其預設塊(Block)大小為 64MB,而較新的版本預設為 128MB,采用較大的塊有什麼影響和優缺點。

采用較大的塊說明分片的數量較小,那麼 Map 任務也較少,導緻任務的并行化程度不高,不能充分利用叢集資源,拖慢作業運作速度。

采用較小的塊,說明 Map 任務較多,而建立多個 Map 任務程序需要耗費大量時間。

塊的大小設定主要從以下考慮:減少磁盤尋道時間、減少 NameNode 記憶體消耗、Map 崩潰問題、監管時間問題、問題分解問題、限制 Map 輸出。

第八章 Hadoop 再探讨

1. 請描述 HDFS HA 架構組成元件及其具體功能。
在一個典型的 HA 叢集中,一般設定兩個名稱節點,其中一個名稱節點處于 “ 活躍 ” 狀态,另一個處于 “ 待命 ” 狀态。處于活躍狀态的名稱節點負責對外處理所有用戶端的請求,處于待命狀态的名稱節點則作為備用節點,儲存足夠多的系統中繼資料,當名稱節點出現故障時提供快速恢複能力。也就是說,在 HDFS HA 中,處于待命狀态的名稱節點提供了 “ 熱備份 ”,一旦活躍名稱節點出現故障,就可以立即切換到待命名稱節點,不會影響到系統的正常對外服務。
2. 請分析 HDFS HA 架構中資料節點如何和名稱節點保持通信。
在 HDFS 聯邦中,所有名稱節點會共享底層的資料節點存儲資源。每個資料節點要向叢集中所有的名稱節點注冊,并周期性地向名稱節點發送 “ 心跳 ” 和塊資訊,報告自己的狀态,同時也會處理來自名稱節點的指令。
3. 請闡述 MapReduce 1.0 體系結構中存在的問題。

1)存在單點故障問題。

2)JobTracker “ 大包大攬 ” 導緻任務過重。

3)容易出現記憶體溢出。

4)資源劃分不合理。

繼續閱讀