隨著信息技術(shù)的發(fā)展,各行各業(yè)產(chǎn)生的數(shù)據(jù)越多越多,數(shù)據(jù)量越來越大。傳統(tǒng)數(shù)據(jù)處理模式已經(jīng)滿足不了大數(shù)據(jù)的增長。
數(shù)據(jù)庫存儲:假設(shè)每天每個人訪問簡書,瀏覽5文章,如果有1億人瀏覽,簡書后臺會產(chǎn)生5億左右的記錄,如果這些記錄存到數(shù)據(jù)庫,存放這些數(shù)據(jù)的數(shù)據(jù)庫服務(wù)器性能要非常高,往往這樣的服務(wù)器價格要比普通服務(wù)器貴很多倍。
按照各個來算,每天增加一臺高性能服務(wù)器用來存儲新數(shù)據(jù),并且也解決不了根本問題。
大數(shù)據(jù)存儲:可以作用在低成本的硬件上,服務(wù)器不需要很高的性能,并且會把數(shù)據(jù)存到磁盤上,并且可以備份。 如果磁盤空間滿了,就增加磁盤,再存儲即可。
大數(shù)據(jù)分析:分布式計算,實時處理技術(shù)。
磁盤計算:在計算過程中,多次落地磁盤,離線計算,mapreduce。
內(nèi)存計算:在內(nèi)存中進行計算,類似實時處理技術(shù),spark。
Hadoop 是Apache的頂級項目。Apache:APACHE軟件基金會,支持Apache的開源軟件社區(qū)項目,為公眾提供好的軟件產(chǎn)品。
Apache項目主頁:http://hadoop.apache.org
Hadoop項目是以可靠、可擴展和分布式計算為目的而發(fā)展而來的開源軟件。
可靠:存儲可靠,數(shù)據(jù)有備份。優(yōu)點:某個磁盤或機器壞了,數(shù)據(jù)不會丟失,可以從備份的機器上拿數(shù)據(jù)。
可以橫向擴展:擴展存儲空間,擴展磁盤,擴展機器磁盤;可以擴展計算節(jié)點,加機器,擴展計算內(nèi)存。
第一, 數(shù)據(jù)容量大(Volume)。從TB級別,躍升到PB級別。
第二, 數(shù)據(jù)類型繁多(Variety)。相對于以往便于存儲的以文本為主的結(jié)構(gòu)化數(shù)據(jù),非結(jié)構(gòu)化數(shù)據(jù)越來越多,包括網(wǎng)絡(luò)日志、音頻、視頻、圖片、地理位置信息等,這些多類型的數(shù)據(jù)對數(shù)據(jù)的處理能力提出了更高要求。
第三, 商業(yè)價值高(Value)??蛻羧后w細分,提供定制化服務(wù);發(fā)掘新的需求同時提高投資的回報率;降低服務(wù)成本。
第四, 處理速度快(Velocity)。這是大數(shù)據(jù)區(qū)分于傳統(tǒng)數(shù)據(jù)挖掘的最顯著特征。根據(jù)IDC的“數(shù)字宇宙”的報告,預(yù)計到2020年,全球數(shù)據(jù)使用量將達到35.2ZB。在如此海量的數(shù)據(jù)面前,處理數(shù)據(jù)的效率就是企業(yè)的生命。
創(chuàng)始人: Doug Cutting 和 Mike Cafarella
2002開始,兩位創(chuàng)始人開發(fā)開源搜索引擎解決方案: Nutch
2004年受Google Lab 開發(fā)的 Map/Reduce 和 Google File System(GFS) 的啟發(fā),NDFS( Nutch Distributed File System )引入Nutch
2006年 在Yahoo! 工作的Doug Cutting將這套大數(shù)據(jù)處理軟件命名為Hadoop
hadoop主要用于解決兩個核心問題:存儲和計算。
1)Hadoop Common:一組分布式文件系統(tǒng)和通用I/O的組件與接口(序列化、Java RPC和持久化數(shù)據(jù)結(jié)構(gòu))。
2)Hadoop Distributed FileSystem(Hadoop分布式文件系統(tǒng)HDFS)
3)Hadoop MapReduce(分布式計算框架)
4)Hadoop YARN(分布式資源管理器)
Hadoop1.0 的 MapReduce(MR1):集資源管理和任務(wù)調(diào)用、計算功能綁在一起,擴展性較差,不支持多計算框架。
Hadoop2.0 的Yarn(MRv2):將資源管理和任務(wù)調(diào)用兩個功能分開,提高擴展性,并支持多計算框架 。
1)HDFS(Hadoop分布式文件系統(tǒng))
HDFS是一種數(shù)據(jù)分布式保存機制,數(shù)據(jù)被保存在計算機集群上。數(shù)據(jù)寫入一次,讀取多次。HDFS 為HBase等工具提供了基礎(chǔ)。
2)Hadoop YARN(分布式資源管理器)
YARN是下一代MapReduce,即MRv2,是在第一代MapReduce基礎(chǔ)上演變而來的,主要是為了解決原始Hadoop擴展性較差,不支持多計算框架而提出的。
其核心思想:將MR1中JobTracker的資源管理和作業(yè)調(diào)用兩個功能分開,分別由ResourceManager和ApplicationMaster進程來實現(xiàn)。
1)ResourceManager:負責(zé)整個集群的資源管理和調(diào)度
2)ApplicationMaster:負責(zé)應(yīng)用程序相關(guān)事務(wù),比如任務(wù)調(diào)度、任務(wù)監(jiān)控和容錯等
3)MapReduce(分布式計算框架)
MapReduce是一種分布式計算模型,用以進行大數(shù)據(jù)量的計算,是一種離線計算框架。
這個 MapReduce 的計算過程簡而言之,就是將大數(shù)據(jù)集分解為成若干個小數(shù)據(jù)集,每個(或若干個)數(shù)據(jù)集分別由集群中的一個結(jié)點(一般就是一臺主機)進行處理并生成中間結(jié)果,然后將每個結(jié)點的中間結(jié)果進行合并, 形成最終結(jié)果。
4)Spark(內(nèi)存計算模型)
Spark提供了一個更快、更通用的數(shù)據(jù)處理平臺。和Hadoop相比,Spark可以讓你的程序在內(nèi)存中運行時速度提升100倍,或者在磁盤上運行時速度提升10倍。
5)Storm(流示計算、實時計算)
Storm是一個免費開源、分布式、高容錯的實時計算系統(tǒng)。Storm令持續(xù)不斷的流計算變得容易,彌補了Hadoop批處理所不能滿足的實時要求。Storm經(jīng)常用于在實時分析、在線機器學(xué)習(xí)、持續(xù)計算、分布式遠程調(diào)用和ETL等領(lǐng)域。
6)HBASE(分布式列存數(shù)據(jù)庫)
HBase是一個建立在HDFS之上,面向列的NoSQL數(shù)據(jù)庫,用于快速讀/寫大量數(shù)據(jù)。HBase使用Zookeeper進行管理,確保所有組件都正常運行。
7)Hive(數(shù)據(jù)倉庫)
Hive定義了一種類似SQL的查詢語言(HQL),將SQL轉(zhuǎn)化為MapReduce任務(wù)在Hadoop上執(zhí)行。通常用于離線分析。HQL用于運行存儲在Hadoop上的查詢語句,Hive讓不熟悉MapReduce開發(fā)人員也能編寫數(shù)據(jù)查詢語句,然后這些語句被翻譯為Hadoop上面的MapReduce任務(wù)。
8)Zookeeper(分布式協(xié)作服務(wù))
Hadoop的許多組件依賴于Zookeeper,它運行在計算機集群上面,用于管理Hadoop操作。
作用:解決分布式環(huán)境下的數(shù)據(jù)管理問題:統(tǒng)一命名,狀態(tài)同步,集群管理,配置同步等。
9)Sqoop(數(shù)據(jù)ETL/同步工具)
Sqoop是SQL-to-Hadoop的縮寫,主要用于傳統(tǒng)數(shù)據(jù)庫和Hadoop之間傳輸數(shù)據(jù)。
10)flume(分布式日志收集系統(tǒng))
Flume是一個分布式、可靠、和高可用的海量日志聚合的系統(tǒng),如日志數(shù)據(jù)從各種網(wǎng)站服務(wù)器上匯集起來存儲到HDFS,HBase等集中存儲器中。
11)Pig(ad-hoc腳本)
Pig定義了一種數(shù)據(jù)流語言—Pig Latin,它是MapReduce編程的復(fù)雜性的抽象,Pig平臺包括運行環(huán)境和用于分析Hadoop數(shù)據(jù)集的腳本語言(Pig Latin)。其編譯器將Pig Latin 翻譯成MapReduce 程序序列將腳本轉(zhuǎn)換為MapReduce任務(wù)在Hadoop上執(zhí)行。通常用于進行離線分析。
12)Oozie(工作流調(diào)度器)
Oozi可以把多個Map/Reduce作業(yè)組合到一個邏輯工作單元中,從而完成更大型的任務(wù)。
13)Mahout(數(shù)據(jù)挖掘算法庫)
Mahout的主要目標(biāo)是創(chuàng)建一些可擴展的機器學(xué)習(xí)領(lǐng)域經(jīng)典算法的實現(xiàn),旨在幫助開發(fā)人員更加方便快捷地創(chuàng)建智能應(yīng)用程序。
14)Tez(DAG計算模型)
一個運行在YARN之上支持DAG(有向無環(huán)圖)作業(yè)的計算框架。Tez的目的就是幫助Hadoop處理這些MapReduce處理不了的用例場景,如機器學(xué)習(xí)。
聯(lián)系客服