hadoop簡介


hadoop簡介

Hadoop 是一個由 Apache 基金會所開發的開源分布式系統基礎架構。用戶可以在不了解分布式底層細節的情況下,開發分布式程序,充分利用集群的威力進行高速運算和存儲。解決了大數據(大到一台計算機無法進行存儲,一台計算機無法在要求的時間內進行處理)的可靠存儲和處理。適合處理非結構化數據,包括 HDFS,MapReduce等基本組件。

Hadoop應用場景

(1)hadoop采用分布式集群的方式處理海量數據(存儲和分析);

(2)可以把hadoop理解為一個編程框架(比如structs、spring),有着自己特定的API封裝和用戶編程規范,用戶可借助這些API來實現數據處理邏輯;

(3)從另一個角度,hadoop又可以理解為一個提供服務的軟件(比如數據庫服務oracle/mysql、索引服務solr,緩存服務redis等),用戶程序的功能都是通過客戶端向hadoop集群請求服務來實現;

(4)具體來說,hadoop兩個大的功能:海量數據的存儲;海量數據的分析;

(5)Hadoop有3大核心組件:

  • HDFS:
    hadoop分布式文件系統海量數據的存儲集群。
  • MapReduce:
    運算框架,海量數據運算分析(替代品:storm /spark/tez等 )。
  • Yarn:
    資源調度管理集群。

(6)Hadoop產生的歷史

  • 最早來自於google的三大論文(為什么google會需要這么一種技術)
  • Nutch的開發人員完成了相應的開源實現HDFS和MAPREDUCE,並從Nutch中剝離成為獨立項目HADOOP
  • 經過演化,hadoop的組件又多出一個yarn(mapreduce+ yarn + hdfs),而且,hadoop外圍產生了越來越多的工具組件,形成一個龐大的hadoop生態體系。

hadoop版本

第一代 Hadoop 包含三個大版本 , 分別是 0.20.x ,0.21.x 和 和 0.22.x,其中,0.20.x 最后演化成 1.0.x,變成了穩定版。

第二代 Hadoop 包含兩個版本,分別是 0.23.x 和 和 2.x,它們完全不同於 Hadoop 1.0,是一套全新的架構,均包含 HDFS Federation 和 YARN 兩個系統,相比於 0.23.x,2.x 增加了NameNode HA 和 Wire-compatibility 兩個重大特性。

hadoop生態圈

對於一些人來說,Hadoop 是一個數據管理系統。他們認為 Hadoop 是數據分析的核心,匯集了結構化和非結構化的數據,這些數據分布在傳統的企業數據棧的每一層。

對於其他人,Hadoop 是一個大規模並行處理框架,擁有超級計算能力,定位於推動企業級應用的執行。

還有一些人認為 Hadoop 作為一個開源社區,主要為解決大數據的問題提供工具和軟件。因為 Hadoop 可以用來解決很多問題,所以很多人認為 Hadoop 是一個基本框架。

雖然 Hadoop 提供了這么多的功能,但是仍然應該把它歸類為多個組件組成的 Hadoop生態圈,這些組件包括數據存儲、數據集成、數據處理和其它進行數據分析的專門工具。

  1. HDFS:Hadoop 生態圈的基本組成部分是 Hadoop 分布式文件系統(HDFS)。HDFS 是一種數據分布式保存機制,數據被保存在計算機集群上。數據寫入一次,讀取多次。HDFS為 HBase 等工具提供了基礎。

  2. MapReduce:Hadoop 的主要執行框架是 MapReduce,它是一個分布式、並行處理的編程模型。MapReduce 把任務分為 map(映射)階段和 reduce(化簡)。開發人員使用存儲在HDFS 中數據(可實現快速存儲),編寫 Hadoop 的 MapReduce 任務。由於 MapReduce工作原理的特性, Hadoop 能以並行的方式訪問數據,從而實現快速訪問數據。

  3. Hbase:HBase 是一個建立在 HDFS 之上,面向列的 NoSQL 數據庫,用於快速讀/寫大量數據。HBase 使用Zookeeper 進行管理,確保所有組件都正常運行。

  4. ZooKeeper:用於 Hadoop 的分布式協調服務。Hadoop 的許多組件依賴於 Zookeeper,它運行在計算機集群上面,用於管理 Hadoop 操作。

  5. Hive:Hive 類似於 SQL 高級語言,用於運行存儲在 Hadoop 上的查詢語句,Hive 讓不熟悉 MapReduce 開發人員也能編寫數據查詢語句,然后這些語句被翻譯為 Hadoop 上面的 MapReduce 任務。像 Pig 一樣,Hive 作為一個抽象層工具,吸引了很多熟悉 SQL 而不是 Java 編程的數據分析師。

  6. Pig:它是 MapReduce 編程的復雜性的抽象。Pig 平台包括運行環境和用於分析 Hadoop數據集的腳本語言(Pig Latin)。其編譯器將 Pig Latin 翻譯成 MapReduce 程序序列。

  7. Sqoop:是一個連接工具,用於在關系數據庫、數據倉庫和 Hadoop 之間轉移數據。Sqoop利用數據庫技術描述架構,進行數據的導入/導出;利用 MapReduce 實現並行化運行和容錯技術。

8)Flume提供了分布式、可靠、高效的服務,用於收集、匯總大數據,並將單台計算機的大量數據轉移到HDFS。它基於一個簡單而靈活的架構,並提供了數據流的流。它利用簡單的可擴展的數據模型,將企業中多台計算機上的數據轉移Hadoop。

9)Whirr——Whirr是一組用來運行雲服務的Java類庫,使用戶能夠輕松地將Hadoop集群運行於Amazon EC2、Rackspace等虛擬雲計算平台。

10)Mahout——Mahout是一個機器學習和數據挖掘庫,它提供的MapReduce包含很多實現,包括聚類算法、回歸測試、統計建模。通過使用 Apache Hadoop 庫,可以將Mahout有效地擴展到雲中。

11)BigTop —— BigTop作為Hadoop子項目和相關組件,是一個用於打包和互用性測試的程序和框架。

12)Ambari——Ambar為配置、管理和監控Hadoop集群提供支持,簡化了Hadoop的管理。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM