大數據,Hadoop生態詳解

hadoop概述

1、為什麼會有大數據

隨著信息技術的發展,各行各業產生的數據越多越多,數據量越來越大。傳統數據處理模式已經滿足不了大數據的增長。

1)存儲問題

數據庫存儲:假設每天每個人訪問簡書,瀏覽5文章,如果有1億人瀏覽,簡書後臺會產生5億左右的記錄,如果這些記錄存到數據庫,存放這些數據的數據庫服務器性能要非常高,往往這樣的服務器價格要比普通服務器貴很多倍。

按照各個來算,每天增加一臺高性能服務器用來存儲新數據,並且也解決不了根本問題。

大數據存儲:可以作用在低成本的硬件上,服務器不需要很高的性能,並且會把數據存到磁盤上,並且可以備份。 如果磁盤空間滿了,就增加磁盤,再存儲即可。

2)分析數據問題

大數據分析:分佈式計算,實時處理技術。磁盤計算:在計算過程中,多次落地磁盤,離線計算,mapreduce。內存計算:在內存中進行計算,類似實時處理技術,spark。

大數據,Hadoop生態詳解

2、什麼是hadoop

Hadoop 是Apache的頂級項目。Apache:APACHE軟件基金會,支持Apache的開源軟件社區項目,為公眾提供好的軟件產品。Apache項目主頁:http://hadoop.apache.org

Hadoop項目是以可靠、可擴展和分佈式計算為目的而發展而來的開源軟件。可靠:存儲可靠,數據有備份。優點:某個磁盤或機器壞了,數據不會丟失,可以從備份的機器上拿數據。

可以橫向擴展:擴展存儲空間,擴展磁盤,擴展機器磁盤;可以擴展計算節點,加機器,擴展計算內存。

大數據,Hadoop生態詳解

3、大數據的主要特點(4V)

第一, 數據容量大(Volume)。從TB級別,躍升到PB級別。

第二, 數據類型繁多(Variety)。相對於以往便於存儲的以文本為主的結構化數據,非結構化數據越來越多,包括網絡日誌、音頻、視頻、圖片、地理位置信息等,這些多類型的數據對數據的處理能力提出了更高要求。

第三, 商業價值高(Value)。客戶群體細分,提供定製化服務;發掘新的需求同時提高投資的回報率;降低服務成本。

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

4、hadoop的歷史起源

創始人: Doug Cutting 和 Mike Cafarella2002開始,兩位創始人開發開源搜索引擎解決方案: Nutch2004年受Google Lab 開發的 Map/Reduce 和 Google File System(GFS) 的啟發,NDFS( Nutch Distributed File System )引入Nutch2006年 在Yahoo! 工作的Doug Cutting將這套大數據處理軟件命名為Hadoop

大數據,Hadoop生態詳解

5、hadoop核心組件

hadoop主要用於解決兩個核心問題:存儲和計算。

1)Hadoop Common:一組分佈式文件系統和通用I/O的組件與接口(序列化、Java RPC和持久化數據結構)。2)Hadoop Distributed FileSystem(Hadoop分佈式文件系統HDFS)3)Hadoop MapReduce(分佈式計算框架)4)Hadoop YARN(分佈式資源管理器)

6、hadoop的框架演變

大數據,Hadoop生態詳解

Hadoop1.0 的 MapReduce(MR1):集資源管理和任務調用、計算功能綁在一起,擴展性較差,不支持多計算框架。

Hadoop2.0 的Yarn(MRv2):將資源管理和任務調用兩個功能分開,提高擴展性,並支持多計算框架 。

7、hadoop生態圈

大數據,Hadoop生態詳解

1)HDFS(Hadoop分佈式文件系統)HDFS是一種數據分佈式保存機制,數據被保存在計算機集群上。數據寫入一次,讀取多次。HDFS 為HBase等工具提供了基礎。

2)Hadoop YARN(分佈式資源管理器)

YARN是下一代MapReduce,即MRv2,是在第一代MapReduce基礎上演變而來的,主要是為了解決原始Hadoop擴展性較差,不支持多計算框架而提出的。其核心思想:將MR1中JobTracker的資源管理和作業調用兩個功能分開,分別由ResourceManager和ApplicationMaster進程來實現。1)ResourceManager:負責整個集群的資源管理和調度2)ApplicationMaster:負責應用程序相關事務,比如任務調度、任務監控和容錯等

3)MapReduce(分佈式計算框架)MapReduce是一種分佈式計算模型,用以進行大數據量的計算,是一種離線計算框架。這個 MapReduce 的計算過程簡而言之,就是將大數據集分解為成若干個小數據集,每個(或若干個)數據集分別由集群中的一個結點(一般就是一臺主機)進行處理並生成中間結果,然後將每個結點的中間結果進行合併, 形成最終結果。

4)Spark(內存計算模型)Spark提供了一個更快、更通用的數據處理平臺。和Hadoop相比,Spark可以讓你的程序在內存中運行時速度提升100倍,或者在磁盤上運行時速度提升10倍。

5)Storm(流示計算、實時計算)Storm是一個免費開源、分佈式、高容錯的實時計算系統。Storm令持續不斷的流計算變得容易,彌補了Hadoop批處理所不能滿足的實時要求。Storm經常用於在實時分析、在線機器學習、持續計算、分佈式遠程調用和ETL等領域。

6)HBASE(分佈式列存數據庫)HBase是一個建立在HDFS之上,面向列的NoSQL數據庫,用於快速讀/寫大量數據。HBase使用Zookeeper進行管理,確保所有組件都正常運行。

7)Hive(數據倉庫)Hive定義了一種類似SQL的查詢語言(HQL),將SQL轉化為MapReduce任務在Hadoop上執行。通常用於離線分析。HQL用於運行存儲在Hadoop上的查詢語句,Hive讓不熟悉MapReduce開發人員也能編寫數據查詢語句,然後這些語句被翻譯為Hadoop上面的MapReduce任務。

8)Zookeeper(分佈式協作服務)Hadoop的許多組件依賴於Zookeeper,它運行在計算機集群上面,用於管理Hadoop操作。作用:解決分佈式環境下的數據管理問題:統一命名,狀態同步,集群管理,配置同步等。

9)Sqoop(數據ETL/同步工具)Sqoop是SQL-to-Hadoop的縮寫,主要用於傳統數據庫和Hadoop之間傳輸數據。

10)flume(分佈式日誌收集系統)Flume是一個分佈式、可靠、和高可用的海量日誌聚合的系統,如日誌數據從各種網站服務器上彙集起來存儲到HDFS,HBase等集中存儲器中。

11)Pig(ad-hoc腳本)Pig定義了一種數據流語言—Pig Latin,它是MapReduce編程的複雜性的抽象,Pig平臺包括運行環境和用於分析Hadoop數據集的腳本語言(Pig Latin)。其編譯器將Pig Latin 翻譯成MapReduce 程序序列將腳本轉換為MapReduce任務在Hadoop上執行。通常用於進行離線分析。

12)Oozie(工作流調度器)Oozi可以把多個Map/Reduce作業組合到一個邏輯工作單元中,從而完成更大型的任務。

13)Mahout(數據挖掘算法庫)Mahout的主要目標是創建一些可擴展的機器學習領域經典算法的實現,旨在幫助開發人員更加方便快捷地創建智能應用程序。

14)Tez(DAG計算模型)一個運行在YARN之上支持DAG(有向無環圖)作業的計算框架。Tez的目的就是幫助Hadoop處理這些MapReduce處理不了的用例場景,如機器學習。


分享到:


相關文章: