零基礎(chǔ)大數(shù)據(jù)入門3--大數(shù)據(jù)生態(tài)系統(tǒng)及其各組件簡(jiǎn)介

本篇引入了大數(shù)據(jù)hadoop生態(tài)系統(tǒng)的概念,并對(duì)其中各組件的功能優(yōu)勢(shì)和出現(xiàn)的背景做了一個(gè)簡(jiǎn)單介紹。關(guān)于部分組件的詳細(xì)介紹將會(huì)在后期博客中給出,不正確之處歡迎各位看官指正。

什么是大數(shù)據(jù)生態(tài)系統(tǒng)

What does Hadoop Ecosystem mean?

Definition 1:

The Hadoop ecosystem refers to the various components of the Apache Hadoop software library, as well as to the accessories and tools provided by the Apache Software Foundation for these types of software projects, and to the ways that they work together.

Definition 2:

Hadoop EcosyHstem is neither a programming language nor a service, it is a platform or framework which is extremely popular for handling and analyzing large sets of data.You can consider it as a suite which encompasses a number of services (ingesting, storing, analyzing and maintaining) inside it.

大數(shù)據(jù)生態(tài)系統(tǒng)習(xí)慣被稱為Hadoop生態(tài)系統(tǒng),這其中主要包含兩個(gè)原因:

? 1. 由多個(gè)具備各自特點(diǎn)或功能的組件共同構(gòu)成,并能夠相互協(xié)作完成大數(shù)據(jù)處理任務(wù)

? 2. hadoop組件是其中最早出現(xiàn)也是最基礎(chǔ)的組件

Hadoop 生態(tài)系統(tǒng)一覽圖

hadoop生態(tài)圈中的組件的角色如圖所示(關(guān)于各組件的詳細(xì)介紹會(huì)在下一節(jié)給出),特別有趣的是,hadoop生態(tài)圈的組件大多具有動(dòng)物或者昆蟲類的圖標(biāo),而作為管理者zookeeper即表示動(dòng)物園管理員,即管理動(dòng)物園生態(tài)圈。

圖1-1.? ?Hadoop 生態(tài)系統(tǒng)一覽圖

Hadoop: 分布式存儲(chǔ)HDFS、分布式計(jì)算MAPREDUCE、資源管理和調(diào)度YARN

Hadoop:當(dāng)人們思考大數(shù)據(jù)的時(shí)候,他們會(huì)立即想到 Hadoop。Hadoop 是一個(gè)開源軟件架構(gòu)(logo 是一頭可愛的大象),它由 Hadoop 分布式文件系統(tǒng)(HDFS)構(gòu)成,它允許使用分布式硬件對(duì)大數(shù)據(jù)進(jìn)行存儲(chǔ)、抽象和分析。如果你真的想讓某人對(duì)這個(gè)東西印象深刻,你可以跟他說 YARN(Yet Another Resource Scheduler),顧名思義,就是另一個(gè)資源調(diào)度器。提出 Hadoop 的 Apache 基金會(huì),還負(fù)責(zé) Pig、Hive 以及 Spark(這都是一些軟件的名字)等項(xiàng)目。

hadoop 1.x版本包含兩大部分:hdfs和mapreduce,其中hdfs(Hadoop distributed file system)負(fù)責(zé)數(shù)據(jù)高可靠性的分布式的存儲(chǔ);mapreduce作為一種計(jì)算框架負(fù)責(zé)對(duì)海量數(shù)據(jù)進(jìn)行快速的分布式的計(jì)算。hadoop 2.x版本則在1.x的版本上添加了第三個(gè)部分YARN (Yet Another Resource Negotiator) ,YARN作為一種通用的資源管理系統(tǒng),可為上層應(yīng)用提供統(tǒng)一的資源管理和調(diào)度,控制整個(gè)集群并管理應(yīng)用程序向基礎(chǔ)計(jì)算資源的分配,通俗地講像是“管家”,其不僅限于MapReduce一種框架,也可以為其他框架使用,如Tez、Spark、Storm等(關(guān)于spark設(shè)置yarn模式將會(huì)在今后的博客中詳細(xì)介紹)。此外2.x版本對(duì)hdfs和mapreduce的功能進(jìn)行了擴(kuò)展,對(duì)其性能也進(jìn)行了優(yōu)化。

圖1-2.? ?Hadoop 1.x和2.x比較

Hive: 基于hdfs中的數(shù)據(jù)查詢

基于Hadoop的一個(gè)數(shù)據(jù)倉(cāng)庫(kù)工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫(kù)表,并提供簡(jiǎn)單的sql查詢功能,可以將sql語句轉(zhuǎn)換為MapReduce任務(wù)進(jìn)行運(yùn)行。

在hive出現(xiàn)之前,要查詢hdfs中的數(shù)據(jù)需要編寫mapreduce程序,然后mapreduce的程序語法復(fù)雜難懂、不易上手,而DBA(database administor)在數(shù)據(jù)庫(kù)中查詢的時(shí)候只需要編寫簡(jiǎn)單易懂的sql查詢語句(簡(jiǎn)單的類 SQL 查詢語言,稱為 HQL)。為了解決這一問題,facebook開發(fā)了hive,其能夠?qū)⒑?jiǎn)單常用的sql語句轉(zhuǎn)換成復(fù)雜難懂的mapreduce任務(wù),顯著降低使用者的學(xué)習(xí)成本。Hive由Facebook開源,最初用于解決海量結(jié)構(gòu)化的日志數(shù)據(jù)統(tǒng)計(jì)問題。

HBASE:

hbase是一個(gè)針對(duì)結(jié)構(gòu)化數(shù)據(jù)的可伸縮,高可靠,高性能,分布式和面向列的動(dòng)態(tài)模式數(shù)據(jù)庫(kù)。和傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)不同,hbase采用了bigtable的數(shù)據(jù)模型:增強(qiáng)了稀疏排序映射表(key/value)。其中,鍵由行關(guān)鍵字,列關(guān)鍵字和時(shí)間戳構(gòu)成,hbase提供了對(duì)大規(guī)模數(shù)據(jù)的隨機(jī),實(shí)時(shí)讀寫訪問,同時(shí),hbase中保存的數(shù)據(jù)可以使用mapreduce來處理,它將數(shù)據(jù)存儲(chǔ)和并行計(jì)算完美結(jié)合在一起。

Spark:

spark是一個(gè)基于內(nèi)存計(jì)算的大數(shù)據(jù)框架,

? ● Spark Core:包含Spark的基本功能;尤其是定義RDD的API、操作以及這兩者上的動(dòng)作。

? ● Spark SQL:提供通過Apache Hive的SQL變體Hive查詢語言(HiveQL)與Spark進(jìn)行交互的API。

? ● Spark Streaming:對(duì)實(shí)時(shí)數(shù)據(jù)流進(jìn)行處理和控制。

? ● MLlib:一個(gè)常用機(jī)器學(xué)習(xí)算法庫(kù),算法被實(shí)現(xiàn)為對(duì)RDD的Spark操作。這個(gè)庫(kù)包含可擴(kuò)展的學(xué)習(xí)算法,比如分類、回歸等需要對(duì)大量數(shù)據(jù)集進(jìn)行迭代的操作。

? ● GraphX:控制圖、并行圖操作和計(jì)算的一組算法和工具的集合。

spark本身并不具備分布式文件系統(tǒng),因此spark可以依賴于HDFS,也可以基于其他的數(shù)據(jù)

相比于Mapreduce的離線的批量處理batch processing,spark的速度更快,更適用于實(shí)時(shí)的迭代計(jì)算,且spark提供的功能更加豐富

zookeeper:

ZooKeeper是一個(gè)分布式的,開放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù),它是一個(gè)為分布式應(yīng)用提供一致性服務(wù)的軟件,提供的功能包括:配置維護(hù)、域名服務(wù)、分布式同步、組服務(wù)等。

HUE:

Hue全稱Hadoop User Experience,是一個(gè)開源的Apache Hadoop UI系統(tǒng),最早是由Cloudera Desktop演化而來,由Cloudera貢獻(xiàn)給開源社區(qū),它是基于Python Web框架Django實(shí)現(xiàn)的。通過使用Hue我們可以在瀏覽器端的Web控制臺(tái)上與Hadoop集群進(jìn)行交互來分析處理數(shù)據(jù),例如操作HDFS上的數(shù)據(jù),運(yùn)行MapReduce Job等等。在hue上配置notebook(實(shí)現(xiàn)多語言自動(dòng)匹配),可以進(jìn)行hive和spark查詢等操作。

Apache Zeppelin:

Apache Zeppelin是一個(gè)提供了web版的類似ipython的notebook,用于做數(shù)據(jù)分析和可視化。背后可以接入不同的數(shù)據(jù)處理引擎,包括spark, hive, tajo等,原生支持scala, java, shell, markdown等。

Storm:

分布式實(shí)時(shí)計(jì)算系統(tǒng)。Storm為分布式實(shí)時(shí)計(jì)算提供了一組通用原語,可被用于“流處理”之中,實(shí)時(shí)處理消息并更新數(shù)據(jù)庫(kù)。

Flume:

Flume(日志收集工具)是Cloudera提供的一個(gè)高可用的,高可靠的,分布式的海量日志采集、聚合和傳輸?shù)南到y(tǒng),F(xiàn)lume支持在日志系統(tǒng)中定制各類數(shù)據(jù)發(fā)送方,用于收集數(shù)據(jù);同時(shí),F(xiàn)lume提供對(duì)數(shù)據(jù)進(jìn)行簡(jiǎn)單處理,并寫到各種數(shù)據(jù)接受方(可定制)的能力,在具體的數(shù)據(jù)流中,數(shù)據(jù)源支持在flume中定制數(shù)據(jù)發(fā)送方,從而支持收集各種不同協(xié)議數(shù)據(jù)。

pig:

數(shù)據(jù)流語言和運(yùn)行環(huán)境,用以探究非常龐大的數(shù)據(jù)集。pig運(yùn)行在MapReduce和HDFS之上

定義了一種數(shù)據(jù)流語言-pig latin,將腳本轉(zhuǎn)換為mapreduce任務(wù)在hadoop上執(zhí)行。

kafka:

Kafka是一種高吞吐量的分布式發(fā)布訂閱消息系統(tǒng)。Kafka是一個(gè)分布式的,可劃分的,冗余備份的持久性的日志服務(wù)。它主要用于處理活躍的流式數(shù)據(jù)。降低系統(tǒng)組網(wǎng)復(fù)雜度。降低編程復(fù)雜度,各個(gè)子系統(tǒng)不在是相互協(xié)商接口,各個(gè)子系統(tǒng)類似插口插在插座上,Kafka承擔(dān)高速數(shù)據(jù)總線的作用。具有高吞吐率,支持Kafka Server間的消息分區(qū),及分布式消費(fèi),同時(shí)保證每個(gè)Partition內(nèi)的消息順序傳輸,同時(shí)支持離線數(shù)據(jù)處理和實(shí)時(shí)數(shù)據(jù)處理。

redis:

Redis是一個(gè)開源的使用ANSI C語言編寫、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value數(shù)據(jù)庫(kù),并提供多種語言的API。Redis 本質(zhì)上是一個(gè)高性能的key-value數(shù)據(jù)庫(kù)。 redis的出現(xiàn),很大程度補(bǔ)償了memcached這類key/value存儲(chǔ)的不足,在部 分場(chǎng)合可以對(duì)關(guān)系數(shù)據(jù)庫(kù)起到很好的補(bǔ)充作用。

Sqoop:

sql-to-hadoop的縮寫,主要用于在Hadoop(Hive)與傳統(tǒng)的數(shù)據(jù)庫(kù)(mysql、postgresql…)間進(jìn)行數(shù)據(jù)的傳遞,可以將一個(gè)關(guān)系型數(shù)據(jù)庫(kù)(例如 : MySQL ,Oracle ,Postgres等)中的數(shù)據(jù)導(dǎo)進(jìn)到Hadoop的HDFS中,也可以將HDFS的數(shù)據(jù)導(dǎo)進(jìn)到關(guān)系型數(shù)據(jù)庫(kù)中。對(duì)于某些NoSQL數(shù)據(jù)庫(kù)它也提供了連接器。Sqoop,類似于其他ETL工具\(yùn)

? Oozie:

該服務(wù)用于運(yùn)行和調(diào)度Hadoop作業(yè),可以理解為一個(gè)工作流調(diào)度系統(tǒng)

mahout(數(shù)據(jù)挖掘算法庫(kù)):

mahout的主要目標(biāo)是創(chuàng)建一些可擴(kuò)展的機(jī)器學(xué)習(xí)領(lǐng)域經(jīng)典算法的實(shí)現(xiàn),旨在幫助開發(fā)人員更加方便快捷地創(chuàng)建只能應(yīng)用程序。mahout現(xiàn)在已經(jīng)包含了聚類,分類,推薦引擎(協(xié)同過濾)和頻繁集挖掘等廣泛使用的數(shù)據(jù)挖掘方法。

資源管理器的簡(jiǎn)單介紹(YARN和mesos):

隨著互聯(lián)網(wǎng)的高速發(fā)展,基于數(shù)據(jù) 密集型應(yīng)用 的計(jì)算框架不斷出現(xiàn),從支持離線處理的mapreduce,到支持在線處理的storm,從迭代式計(jì)算框架到 流式處理框架s4,...,在大部分互聯(lián)網(wǎng)公司中,這幾種框架可能都會(huì)采用,比如對(duì)于搜索引擎公司,可能的技術(shù)方法如下:網(wǎng)頁(yè)建索引采用mapreduce框架,自然語言處理/數(shù)據(jù)挖掘采用spark,對(duì)性能要求到的數(shù)據(jù)挖掘算法用mpi等。公司一般將所有的這些框架部署到一個(gè)公共的集群中,讓它們共享集群的資源,并對(duì)資源進(jìn)行統(tǒng)一使用,這樣便誕生了資源統(tǒng)一管理與調(diào)度平臺(tái),典型的代表是mesos和yarn。

cloudrea impala:

? 一個(gè)開源的查詢引擎。與hive相同的元數(shù)據(jù),SQL語法,ODBC驅(qū)動(dòng)程序和用戶接口,可以直接在HDFS上提供快速,交互式SQL查詢。impala不再使用緩慢的hive+mapreduce批處理,而是通過與商用并行關(guān)系數(shù)據(jù)庫(kù)中類似的分布式查詢引擎??梢灾苯訌腍DFS或者Hbase中用select,join和統(tǒng)計(jì)函數(shù)查詢數(shù)據(jù),從而大大降低延遲。


關(guān)于大數(shù)據(jù)學(xué)習(xí)有很多開源資源,更多資源參考將會(huì)在下一期的分享中給出,歡迎閱讀!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容