Hadoop 從 0 到 1 學習 ——第一章 Hadoop 介紹

dwjf321發表於2020-10-29

1. 大資料概論

1.1 大資料概念

大資料 (Big Data):指無法在一定時間範圍內用常規軟體工具進行捕捉、管理和處理的資料集合,是需要新處理模式才能具有更強的決策力、洞察發現力和流程優化能力的海量、高增長率和多樣化的資訊資產。

大資料主要解決:海量資料的儲存和海量資料的分析計算問題。

1.2 大資料特點 (4V)

  1. Volume (大量)

    截止目前,人類產生的所有印刷彩禮的資料量是200PB,而歷史上全人類總共說過的話的資料量大約是5EB。當前、典型個人計算機硬碟的容量為TB量級,而一些大企業的資料量已經接近EB量級。

  2. Velocity (高速)

    這是大資料區分於傳統資料探勘的最顯著的特徵。根據 IDC 的 “數字宇宙” 的報告,預計到 2020 年,全球資料使用量將達到 35.2 ZB。在如此海量的資料面前,處理資料的效率就是企業的生命。

  3. Variety (多樣)

    這種型別的多樣性也讓資料被分為結構化資料和非結構化資料。相對於以往便於儲存的以資料庫/文字為主的結構化資料非結構化資料越來越多,包括網路日誌、音訊、視訊、圖片、地理位置資訊等,這些多型別的資料對資料的處理能力提出了更高德要求。

  4. Value (低價值密度)

    價值密度的高低與資料總覽的大小成反比。如何快速對有價值資料 “提純” 成為目前大資料背景下待解決的難題。

1.3 大資料應用場景

  1. 物流倉儲:大資料分析系統助力商家精細化運營、提升銷售量、節約成本。

    在這裡插入圖片描述

  2. 零售:分析使用者消費習慣,為使用者購買商品提供方便,從而提升商品銷量。
    在這裡插入圖片描述

  3. 旅遊:深度結合大資料能力與旅遊行業需求,共建旅遊產業智慧管理、智慧服務和智慧營銷的未來。
    在這裡插入圖片描述

  4. 商品廣告推薦:給使用者推薦可能喜歡的商品
    在這裡插入圖片描述

  5. 保險:海量資料探勘及風險預測,助力保險行業精準營銷,提升精細化定價能力。

  6. 金融:多維度體現使用者特徵,幫助金融機構推薦優質客戶、防範欺詐風險。

  7. 房產:大資料全面助力房產行業,打造精準投策與營銷,選出更合適的地,建造更合適的樓,賣給更合適的人。

  8. 人工智慧
    在這裡插入圖片描述

1.4 大資料部門業務流程分析

在這裡插入圖片描述

1.5 大資料部門組織結構

在這裡插入圖片描述

2. 從Hadoop框架討論大資料生態

2.1 Hadoop 是什麼

  1. Hadoop 是一個由 Apache 基金會所開發的分散式系統基礎架構。

  2. 主要解決海量資料的儲存和海量資料的分析計算問題。

  3. 廣義上來說,Hadoop 通常是指一個更廣泛的概念—— Hadoop 生態圈。
    在這裡插入圖片描述

2.2 Hadoop 發展歷史

  1. Lucene 框架是 Doug Cutting 開創的開源軟體,用 Java 書寫程式碼,實現與 Google 類似的全文搜尋功能,它提供了全文搜尋引擎的架構,包括完整的查詢引擎和索引引擎。

    在這裡插入圖片描述

  2. 2001 年底 Lucene 成為 Apache 基金會的一個子專案。

  3. 對應海量資料的場景,Lucene 面對與 Google 同樣的困難,儲存資料困難,檢索資料慢

  4. 學習和模仿 Goolgle 解決這些問題的辦法:微型版 Nutch。

  5. 可以說 Google 是 Hadoop的思想之源 (Google 在大資料方面的三篇論文)

    在這裡插入圖片描述

  6. 2003-2004 年,Google 公開了部分 GFS 和 MapReduce 思想的細節,以此為基礎 Doug Cutting 等人用了2年業餘時間實現了 DFS 和 MapReduce 機制,使 Nutch 效能飆升。

  7. 2005 年 Hadoop 作為 Lucene 的子專案 Nutch 的一部分正式引入 Apache 基金會。

  8. 2006 年 3 月份, Map-Reduce 和 Nutch Distrbuted File System (NDFS) 分別被納入到 Hadoop 專案中,Hadoop 就此正式誕生,標誌著大資料時代來臨。

  9. 名字來源於 Doung Cutting 兒子的玩具 大象,如圖:

    在這裡插入圖片描述

2.3 Hadoop 三大發行版本

Hadoop三大發行版本:Apache、Cloudera、Hortonworks。

  • Apache 版本最原始(最基礎)的版本,對於入門學習最好。

  • Cloudera 在大型網際網路企業中用的較多。

  • Hortonworks 文件較好。

  1. Apache Hadoop

官網地址:http://hadoop.apache.org/releases.html

下載地址:https://archive.apache.org/dist/hadoop/common/

  1. Cloudera Hadoop

    官網地址:https://www.cloudera.com/downloads/cdh/5-10-0.html

    下載地址:http://archive-primary.cloudera.com/cdh5/cdh/5/

    (1)2008年成立的Cloudera是最早將Hadoop商用的公司,為合作伙伴提供Hadoop的商用解決方案,主要是包括支援、諮詢服務、培訓。

    (2)2009年Hadoop的創始人 Doug Cutting 也加盟 Cloudera公司。Cloudera產品主要為CDH,Cloudera Manager,Cloudera Support

    (3)CDH是Cloudera的Hadoop發行版,完全開源,比Apache Hadoop在相容性,安全性,穩定性上有所增強。

    (4)Cloudera Manager是叢集的軟體分發及管理監控平臺,可以在幾個小時內部署好一個Hadoop叢集,並對叢集的節點及服務進行實時監控。Cloudera Support即是對Hadoop的技術支援。

    (5)Cloudera的標價為每年每個節點4000美元。Cloudera開發並貢獻了可實時處理大資料的Impala專案。

  2. Hortonworks Hadoop

    官網地址:https://hortonworks.com/products/data-center/hdp/

    下載地址:https://hortonworks.com/downloads/#data-platform

    (1)2011年成立的Hortonworks是雅虎與矽谷風投公司Benchmark Capital合資組建。

    (2)公司成立之初就吸納了大約 25 名至 30 名專門研究 Hadoop 的雅虎工程師,上述工程師均在 2005 年開始協助雅虎開發 Hadoop,貢獻了 Hadoop80% 的程式碼。

    (3)雅虎工程副總裁、雅虎Hadoop開發團隊負責人Eric Baldeschwieler出任Hortonworks的執行長。

    (4)Hortonworks的主打產品是Hortonworks Data Platform(HDP),也同樣是100%開源的產品,HDP除常見的專案外還包括了Ambari,一款開源的安裝和管理系統。

    (5)HCatalog,一個後設資料管理系統,HCatalog現已整合到Facebook開源的Hive中。Hortonworks的Stinger開創性的極大的優化了Hive專案。Hortonworks為入門提供了一個非常好的,易於使用的沙盒。

    (6)Hortonworks開發了很多增強特性並提交至核心主幹,這使得Apache Hadoop能夠在包括Window Server和Windows Azure在內的Microsoft Windows平臺上本地執行。定價以叢集為基礎,每10個節點每年為12500美元。

2.4 Hadoop的優勢(4高)

Hadoop1.x 和 Hadoop2.x 區別

在這裡插入圖片描述

在 Hadoop1.x 時代,Hadoop 中的 MapReduce 同時處理業務邏輯運算和資源的排程,耦合性較大,在 Hadoop2.x 時代,增加了 Yarn。Yarn 只負責資源的排程, MapReduce 只負責運算。

3. Hadoop 組成(面試重點)

3.1 HDFS 架構概述

  1. NameNode (nm):儲存檔案的後設資料,如:檔名、檔案目錄、檔案屬性(生成時間、副本數、檔案許可權),以及每個檔案的塊列表和塊輸在的 DataNode 位置等。

    在這裡插入圖片描述

  2. DataNode (dn):在本地檔案系統儲存檔案塊的資料,以及塊資料的校驗。

在這裡插入圖片描述

  1. Secondary NameNode (2nn):用來監控 HDFS 狀態的輔助後臺程式,每隔一段時間獲取 HDFS 後設資料的快照。

3.2 YARN 架構概述

在這裡插入圖片描述

3.3 MapReduce 架構概述

MapReduce 將計算過程分為兩個階段:Map 和 Reduce。

  1. Map 階段並行處理輸入資料。
  2. Reduce 階段對 Map 結果進行彙總。

4. 大資料技術生態體系

在這裡插入圖片描述

圖中涉及的技術名詞解釋如下:

  1. Sqoop:Sqoop是一款開源的工具,主要用於在Hadoop、Hive與傳統的資料庫(MySql)間進行資料的傳遞,可以將一個關係型資料庫(例如 :MySQL,Oracle 等)中的資料導進到Hadoop的HDFS中,也可以將HDFS的資料導進到關係型資料庫中。

  2. Flume:Flume是 Cloudera 提供的一個高可用的,高可靠的,分散式的海量日誌採集、聚合和傳輸的系統,Flume支援在日誌系統中定製各類資料傳送方,用於收集資料;同時,Flume提供對資料進行簡單處理,並寫到各種資料接受方(可定製)的能力。

  3. Kafka:Kafka是一種高吞吐量的分散式釋出訂閱訊息系統,有如下特性:

    (1)通過O(1)的磁碟資料結構提供訊息的持久化,這種結構對於即使數以TB的訊息儲存也能夠保持長時間的穩定效能。

    (2)高吞吐量:即使是非常普通的硬體Kafka也可以支援每秒數百萬的訊息。

    (3)支援通過Kafka伺服器和消費機叢集來分割槽訊息。

    (4)支援Hadoop並行資料載入。

  4. Storm:Storm用於“連續計算”,對資料流做連續查詢,在計算時就將結果以流的形式輸出給使用者。

  5. Spark:Spark是當前最流行的開源大資料記憶體計算框架。可以基於Hadoop上儲存的大資料進行計算。

  6. Oozie:Oozie是一個管理Hdoop作業(job)的工作流程排程管理系統。

  7. Hbase:HBase是一個分散式的、面向列的開源資料庫。HBase不同於一般的關聯式資料庫,它是一個適合於非結構化資料儲存的資料庫。

  8. Hive:Hive是基於Hadoop的一個資料倉儲工具,可以將結構化的資料檔案對映為一張資料庫表,並提供簡單的SQL查詢功能,可以將SQL語句轉換為MapReduce任務進行執行。 其優點是學習成本低,可以通過類SQL語句快速實現簡單的MapReduce統計,不必開發專門的MapReduce應用,十分適合資料倉儲的統計分析。

  9. R語言:R是用於統計分析、繪圖的語言和操作環境。R是屬於GNU系統的一個自由、免費、原始碼開放的軟體,它是一個用於統計計算和統計製圖的優秀工具。

  10. Mahout:Apache Mahout是個可擴充套件的機器學習和資料探勘庫。

  11. ZooKeeper:Zookeeper是Google的Chubby一個開源的實現。它是一個針對大型分散式系統的可靠協調系統,提供的功能包括:配置維護、名字服務、 分散式同步、組服務等。ZooKeeper的目標就是封裝好複雜易出錯的關鍵服務,將簡單易用的介面和效能高效、功能穩定的系統提供給使用者。

5. 推薦系統框架圖

在這裡插入圖片描述

相關文章