1. 程式人生 > >什麼是大資料? Hadoop?

什麼是大資料? Hadoop?

首先學大資料必會Java

  • Java是一門面向物件程式語言,不僅吸收了C++語言的各種優點,還摒棄了C++裡難以理解的多繼承指標等概念,因此Java語言具有功能強大和簡單易用兩個特徵。Java語言作為靜態面向物件程式語言的代表,極好地實現了面向物件理論,允許程式設計師以優雅的思維方式進行復雜的程式設計 。
  • Java具有簡單性、面向物件、分散式健壯性安全性、平臺獨立與可移植性、多執行緒、動態性等特點 。Java可以編寫桌面應用程式Web應用程式分散式系統嵌入式系統應用程式等 。
  • 最重要的是,Hadoop以及其他大資料處理技術很多都是用Java,例如Apache的基於Java的HBase和Accumulo以及 ElasticSearchas,因此學習Hadoop的一個首要條件,就是掌握Java語言程式設計。

什麼是大資料

  • 大資料(big data),指無法在一定時間範圍內用常規軟體工具進行捕捉、管理和處理的資料集合,是需要新處理模式才能具有更強的決策力、洞察發現力和流程優化能力的海量、高增長率和多樣化的資訊資產。
  • 維克托·邁爾-舍恩伯格及肯尼斯·庫克耶編寫的《大資料時代》  中大資料指不用隨機分析法(抽樣調查)這樣捷徑,而採用所有資料進行分析處理。大資料的5V特點(IBM提出):Volume(大量)、Velocity(高速)、Variety(多樣)、Value(低價值密度)、Veracity(真實性)。
  • 狹義的Hadoop:是一個適合大資料分散式儲存(HDFS)、分散式計算(MapReduce)和資源排程(YARN)的平臺 
  • 廣義的Hadoop:指的是Hadoop生態系統,Hadoop生態系統是一個很龐大的概念,Hadoop是其中最重要最基礎的一個部分,生態系統中的每一個子系統只解決某一個特定的問題域(甚至可能很窄),不搞統一型的一個全能系統,而是小而精的多個小系統。
  • 生態圈特點:開源、社群活躍、囊括了大資料處理的方方面面、成熟的生態圈。
Hadoop生態圈
Hadoop生態圈

        當下的 Hadoop 已經成長為一個龐大的體系,隨著生態系統的成長,新出現的專案越來越多,其中不乏一些非 Apache 主管的專案,這些專案對 HADOOP 是很好的補充或者更高層的抽象。比如:

  • Hadoop:是一個由Apache基金會所開發的分散式系統基礎架構。
    • HDFS
      :分散式檔案系統
    • YARN:在Hadoop2.x中加入的,新的 Hadoop 通用資源管理系統
  • hive:基於 Hadoop 的分散式資料倉庫,提供基於 SQL 的查詢資料操作
  • HBase:基於 Hadoop 的分散式海量資料庫
  • sqoop:資料匯入匯出工具(比如用於 mysql 和 HDFS 之間)
  • flume:日誌資料採集框架
  • Impala:基於 Hadoop 的實時分析

Hadoop能做什麼?

  • 搜尋引擎(Doug Cutting  設計Hadoop的初衷,為了針對大規模的網頁快速建立索引)。
  • 大資料儲存,利用Hadoop的分散式儲存能力,例如資料備份、資料倉庫等。
  • 大資料處理,利用Hadoop的分散式處理能力,例如資料探勘、資料分析等。
  • 科學研究,Hadoop是一種分散式的開源框架,對於分散式計算有很大程度地參考價值。
  • 總結,Hadoop可以搭建大型資料倉庫,可以做PB級資料的儲存、處理、分析、統計等業務,還可以做搜尋引擎、日誌分析、商業智慧、資料探勘等等。

Hadoop發展?

  • Hadoop 是 Apache Lucene 創始人 Doug Cutting 建立的。最早起源於 Nutch,它是 Lucene 的子專案。Nutch 的設計目標是構建一個大型的全網搜尋引擎,包括網頁抓取、索引、查詢等功能,但隨著抓取網頁數量的增加,遇到了嚴重的可擴充套件性問題:如何解決數十億網頁的儲存和索引問題。
  • 2003 年 Google 發表了一篇論文為該問題提供了可行的解決方案。論文中描述的是谷歌的產品架構,該架構稱為:谷歌分散式檔案系統(GFS),可以解決他們在網頁爬取和索引過程中產生的超大檔案的儲存需求。
  • 2004 年 Google 發表論文向全世界介紹了谷歌版的 MapReduce 系統。同時期,Nutch 的開發人員完成了相應的開源實現 HDFS 和 MAPREDUCE,並從Nutch 中剝離成為獨立專案 HADOOP,到 2008 年 1 月,HADOOP 成為 Apache 頂級專案,迎來了它的快速發展期。
  • 2006 年 Google 發表了論文是關於 BigTable 的,這促使了後來的 Hbase 的發展。因此,Hadoop 及其生態圈的發展離不開 Google 的貢獻。

Hadoop的發展離不開Google的幾篇論文

  • 源自Google的GFS論文,發表於2003年10月,後為Hadoop的HDFS。
  • 源自Google的MapReduce論文,發表於2004年12月 ,後為Hadoop的MapReduce。
  • 源自Google的BigTable論文,發表於2006年,後為Hadoop生態圈中的HBase。

Hadoop  特性優點

  • 擴容能力(Scalable):Hadoop 可在計算機叢集間分配資料並完成計算任務,這些叢集可方便的擴充套件到數以千計的節點中。
  • 成本低(Economical):Hadoop 通過普通廉價的機器組成伺服器叢集來分發以及處理資料,以至於成本很低。
  • 高效率(Efficient):通過併發資料,Hadoop 可在節點之間動態並行的移動資料,使得速度非常快。
  • 可靠性(Rellable):能自動維護資料多份複製,並且在任務失敗後能自動地重新部署計算任務。所以Hadoop 的按位儲存和處理資料的能力值得人們信賴。

Hadoop  國內外應用

  • 不管是國內還是國外,Hadoop 最受青睞的行業是網際網路領域,可以說網際網路公司是 hadoop 的主要使用力量。
  • 國外來說,Yahoo、Facebook、IBM 等公司都大量使用 hadoop 叢集來支撐業務。比如:
    • Yahoo 的 Hadoop 應用在支援廣告系統、使用者行為分析、支援 Web 搜尋等。
    • Facebook 主要使用 Hadoop 儲存內部日誌與多維資料,並以此作為報告、分析和機器學習的資料來源。
  • 國內來說,BAT 領頭的網際網路公司是當仁不讓的 Hadoop 使用者、維護者。比如Ali 雲梯(14 年國內最大 Hadoop 叢集)、百度的日誌分析平臺、推薦引擎系統等。
  • 國內其他非網際網路領域也有不少 hadoop 的應用,比如:
    • 金融行業: 個人徵信分析
    • 證券行業: 投資模型分析
    • 交通行業: 車輛、路況監控分析
    • 電信行業: 使用者上網行為分析
  • 總之:hadoop 並不會跟某種具體的行業或者某個具體的業務掛鉤,它只是一種用來做海量資料分析處理的工具。

Hadoop發行版的選擇