盤點(diǎn)13種流行的數(shù)據(jù)處理工具
本文轉(zhuǎn)載自微信公眾號(hào)「大數(shù)據(jù)DT」,作者斯里瓦斯塔瓦 。轉(zhuǎn)載本文請(qǐng)聯(lián)系大數(shù)據(jù)DT公眾號(hào)。
數(shù)據(jù)分析是對(duì)數(shù)據(jù)進(jìn)行攝取、轉(zhuǎn)換和可視化的過(guò)程,用來(lái)發(fā)掘?qū)I(yè)務(wù)決策有用的洞見。
在過(guò)去的十年中,越來(lái)越多的數(shù)據(jù)被收集,客戶希望從數(shù)據(jù)中獲得更有價(jià)值的洞見。他們還希望能在最短的時(shí)間內(nèi)(甚至實(shí)時(shí)地)獲得這種洞見。他們希望有更多的臨時(shí)查詢以便回答更多的業(yè)務(wù)問題。為了回答這些問題,客戶需要更強(qiáng)大、更高效的系統(tǒng)。
批處理通常涉及查詢大量的冷數(shù)據(jù)。在批處理中,可能需要幾個(gè)小時(shí)才能獲得業(yè)務(wù)問題的答案。例如,你可能會(huì)使用批處理在月底生成賬單報(bào)告。
實(shí)時(shí)的流處理通常涉及查詢少量的熱數(shù)據(jù),只需要很短的時(shí)間就可以得到答案。例如,基于MapReduce的系統(tǒng)(如Hadoop)就是支持批處理作業(yè)類型的平臺(tái)。數(shù)據(jù)倉(cāng)庫(kù)是支持查詢引擎類型的平臺(tái)。
流數(shù)據(jù)處理需要攝取數(shù)據(jù)序列,并根據(jù)每條數(shù)據(jù)記錄進(jìn)行增量更新。通常,它們攝取連續(xù)產(chǎn)生的數(shù)據(jù)流,如計(jì)量數(shù)據(jù)、監(jiān)控?cái)?shù)據(jù)、審計(jì)日志、調(diào)試日志、網(wǎng)站點(diǎn)擊流以及設(shè)備、人員和商品的位置跟蹤事件。
圖13-6展示了使用AWS云技術(shù)棧處理、轉(zhuǎn)換并可視化數(shù)據(jù)的數(shù)據(jù)湖流水線。
▲圖13-6 使用數(shù)據(jù)湖ETL流水線處理數(shù)據(jù)
在這里,ETL流水線使用Amazon Athena對(duì)存儲(chǔ)在Amazon S3中的數(shù)據(jù)進(jìn)行臨時(shí)查詢。從各種數(shù)據(jù)源(例如,Web應(yīng)用服務(wù)器)攝取的數(shù)據(jù)會(huì)生成日志文件,并持久保存在S3。然后,這些文件將被Amazon Elastic MapReduce(EMR)轉(zhuǎn)換和清洗成產(chǎn)生洞見所需的形式并加載到Amazon S3。
用COPY命令將這些轉(zhuǎn)換后的文件加載到Amazon Redshift,并使用Amazon QuickSight進(jìn)行可視化。使用Amazon Athena,你可以在數(shù)據(jù)存儲(chǔ)時(shí)直接從Amazon S3中查詢,也可以在數(shù)據(jù)轉(zhuǎn)換后查詢(從聚合后的數(shù)據(jù)集)。你可以在Amazon QuickSight中對(duì)數(shù)據(jù)進(jìn)行可視化,也可以在不改變現(xiàn)有數(shù)據(jù)流程的情況下輕松查詢這些文件。
以下是一些最流行的可以幫助你對(duì)海量數(shù)據(jù)進(jìn)行轉(zhuǎn)換和處理的數(shù)據(jù)處理技術(shù):
01 Apache Hadoop
Apache Hadoop使用分布式處理架構(gòu),將任務(wù)分發(fā)到服務(wù)器集群上進(jìn)行處理。分發(fā)到集群服務(wù)器上的每一項(xiàng)任務(wù)都可以在任意一臺(tái)服務(wù)器上運(yùn)行或重新運(yùn)行。集群服務(wù)器通常使用HDFS將數(shù)據(jù)存儲(chǔ)到本地進(jìn)行處理。
在Hadoop框架中,Hadoop將大的作業(yè)分割成離散的任務(wù),并行處理。它能在數(shù)量龐大的Hadoop集群中實(shí)現(xiàn)大規(guī)模的伸縮性。它還設(shè)計(jì)了容錯(cuò)功能,每個(gè)工作節(jié)點(diǎn)都會(huì)定期向主節(jié)點(diǎn)報(bào)告自己的狀態(tài),主節(jié)點(diǎn)可以將工作負(fù)載從沒有積極響應(yīng)的集群重新分配出去。
Hadoop最常用的框架有Hive、Presto、Pig和Spark。
02 Apache Spark
Apache Spark是一個(gè)內(nèi)存處理框架。Apache Spark是一個(gè)大規(guī)模并行處理系統(tǒng),它有不同的執(zhí)行器,可以將Spark作業(yè)拆分,并行執(zhí)行任務(wù)。為了提高作業(yè)的并行度,可以在集群中增加節(jié)點(diǎn)。Spark支持批處理、交互式和流式數(shù)據(jù)源。
Spark在作業(yè)執(zhí)行過(guò)程中的所有階段都使用有向無(wú)環(huán)圖(Directed Acyclic Graph,DAG)。DAG可以跟蹤作業(yè)過(guò)程中數(shù)據(jù)的轉(zhuǎn)換或數(shù)據(jù)沿襲情況,并將DataFrames存儲(chǔ)在內(nèi)存中,有效地最小化I/O。Spark還具有分區(qū)感知功能,以避免網(wǎng)絡(luò)密集型的數(shù)據(jù)改組。
03 Hadoop用戶體驗(yàn)
Hadoop用戶體驗(yàn)(Hadoop User Experience,HUE)使你能夠通過(guò)基于瀏覽器的用戶界面而不是命令行在集群上進(jìn)行查詢并運(yùn)行腳本。
HUE在用戶界面中提供了最常見的Hadoop組件。它可以基于瀏覽器查看和跟蹤Hadoop操作。多個(gè)用戶可以登錄HUE的門戶訪問集群,管理員可以手動(dòng)或通過(guò)LDAP、PAM、SPNEGO、OpenID、OAuth和SAML2認(rèn)證管理訪問。HUE允許你實(shí)時(shí)查看日志,并提供一個(gè)元存儲(chǔ)管理器來(lái)操作Hive元存儲(chǔ)內(nèi)容。
04 Pig
Pig通常用于處理大量的原始數(shù)據(jù),然后再以結(jié)構(gòu)化格式(SQL表)存儲(chǔ)。Pig適用于ETL操作,如數(shù)據(jù)驗(yàn)證、數(shù)據(jù)加載、數(shù)據(jù)轉(zhuǎn)換,以及以多種格式組合來(lái)自多個(gè)來(lái)源的數(shù)據(jù)。除了ETL,Pig還支持關(guān)系操作,如嵌套數(shù)據(jù)、連接和分組。
Pig腳本可以使用非結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù)(如Web服務(wù)器日志或點(diǎn)擊流日志)作為輸入。相比之下,Hive總是要求輸入數(shù)據(jù)滿足一定模式。Pig的Latin腳本包含關(guān)于如何過(guò)濾、分組和連接數(shù)據(jù)的指令,但Pig并不打算成為一種查詢語(yǔ)言。Hive更適合查詢數(shù)據(jù)。Pig腳本根據(jù)Pig Latin語(yǔ)言的指令,編譯并運(yùn)行以轉(zhuǎn)換數(shù)據(jù)。
05 Hive
Hive是一個(gè)開源的數(shù)據(jù)倉(cāng)庫(kù)和查詢包,運(yùn)行在Hadoop集群之上。SQL是一項(xiàng)非常常見的技能,它可以幫助團(tuán)隊(duì)輕松過(guò)渡到大數(shù)據(jù)世界。
Hive使用了一種類似于SQL的語(yǔ)言,叫作Hive Query語(yǔ)言(Hive Query Language,HQL),這使得在Hadoop系統(tǒng)中查詢和處理數(shù)據(jù)變得非常容易。Hive抽象了用Java等編碼語(yǔ)言編寫程序來(lái)執(zhí)行分析作業(yè)的復(fù)雜性。
06 Presto
Presto是一個(gè)類似Hive的查詢引擎,但它的速度更快。它支持ANSI SQL標(biāo)準(zhǔn),該標(biāo)準(zhǔn)很容易學(xué)習(xí),也是最流行的技能集。Presto支持復(fù)雜的查詢、連接和聚合功能。
與Hive或MapReduce不同,Presto在內(nèi)存中執(zhí)行查詢,減少了延遲,提高了查詢性能。在選擇Presto的服務(wù)器容量時(shí)需要小心,因?yàn)樗枰凶銐虻膬?nèi)存。內(nèi)存溢出時(shí),Presto作業(yè)將重新啟動(dòng)。
07 HBase
HBase是作為開源Hadoop項(xiàng)目的一部分開發(fā)的NoSQL數(shù)據(jù)庫(kù)。HBase運(yùn)行在HDFS上,為Hadoop生態(tài)系統(tǒng)提供非關(guān)系型數(shù)據(jù)庫(kù)。HBase有助于將大量數(shù)據(jù)壓縮并以列式格式存儲(chǔ)。同時(shí),它還提供了快速查找功能,因?yàn)槠渲泻艽笠徊糠謹(jǐn)?shù)據(jù)被緩存在內(nèi)存中,集群實(shí)例存儲(chǔ)也同時(shí)在使用。
08 Apache Zeppelin
Apache Zeppelin是一個(gè)建立在Hadoop系統(tǒng)之上的用于數(shù)據(jù)分析的基于Web的編輯器,又被稱為Zeppelin Notebook。它的后臺(tái)語(yǔ)言使用了解釋器的概念,允許任何語(yǔ)言接入Zeppelin。Apache Zeppelin包括一些基本的圖表和透視圖。它非常靈活,任何語(yǔ)言后臺(tái)的任何輸出結(jié)果都可以被識(shí)別和可視化。
09 Ganglia
Ganglia是一個(gè)Hadoop集群監(jiān)控工具。但是,你需要在啟動(dòng)時(shí)在集群上安裝Ganglia。Ganglia UI運(yùn)行在主節(jié)點(diǎn)上,你可以通過(guò)SSH訪問主節(jié)點(diǎn)。Ganglia是一個(gè)開源項(xiàng)目,旨在監(jiān)控集群而不影響其性能。Ganglia可以幫助檢查集群中各個(gè)服務(wù)器的性能以及集群整體的性能。
10 JupyterHub
JupyterHub是一個(gè)多用戶的Jupyter Notebook。Jupyter Notebook是數(shù)據(jù)科學(xué)家進(jìn)行數(shù)據(jù)工程和ML的最流行的工具之一。JupyterHub服務(wù)器為每個(gè)用戶提供基于Web的Jupyter Notebook IDE。多個(gè)用戶可以同時(shí)使用他們的Jupyter Notebook來(lái)編寫和執(zhí)行代碼,從而進(jìn)行探索性數(shù)據(jù)分析。
11 Amazon Athena
Amazon Athena是一個(gè)交互式查詢服務(wù),它使用標(biāo)準(zhǔn)ANSI SQL語(yǔ)法在Amazon S3對(duì)象存儲(chǔ)上運(yùn)行查詢。Amazon Athena建立在Presto之上,并擴(kuò)展了作為托管服務(wù)的臨時(shí)查詢功能。Amazon Athena元數(shù)據(jù)存儲(chǔ)與Hive元數(shù)據(jù)存儲(chǔ)的工作方式相同,因此你可以在Amazon Athena中使用與Hive元數(shù)據(jù)存儲(chǔ)相同的DDL語(yǔ)句。
Athena是一個(gè)無(wú)服務(wù)器的托管服務(wù),這意味著所有的基礎(chǔ)設(shè)施和軟件運(yùn)維都由AWS負(fù)責(zé),你可以直接在Athena的基于Web的編輯器中執(zhí)行查詢。
12 Amazon Elastic MapReduce
Amazon Elastic MapReduce(EMR)本質(zhì)上是云上的Hadoop。你可以使用EMR來(lái)發(fā)揮Hadoop框架與AWS云的強(qiáng)大功能。EMR支持所有最流行的開源框架,包括Apache Spark、Hive、Pig、Presto、Impala、HBase等。
EMR提供了解耦的計(jì)算和存儲(chǔ),這意味著不必讓大型的Hadoop集群持續(xù)運(yùn)轉(zhuǎn),你可以執(zhí)行數(shù)據(jù)轉(zhuǎn)換并將結(jié)果加載到持久化的Amazon S3存儲(chǔ)中,然后關(guān)閉服務(wù)器。EMR提供了自動(dòng)伸縮功能,為你節(jié)省了安裝和更新服務(wù)器的各種軟件的管理開銷。
13 AWS Glue
AWS Glue是一個(gè)托管的ETL服務(wù),它有助于實(shí)現(xiàn)數(shù)據(jù)處理、登記和機(jī)器學(xué)習(xí)轉(zhuǎn)換以查找重復(fù)記錄。AWS Glue數(shù)據(jù)目錄與Hive數(shù)據(jù)目錄兼容,并在各種數(shù)據(jù)源(包括關(guān)系型數(shù)據(jù)庫(kù)、NoSQL和文件)間提供集中的元數(shù)據(jù)存儲(chǔ)庫(kù)。
AWS Glue建立在Spark集群之上,并將ETL作為一項(xiàng)托管服務(wù)提供。AWS Glue可為常見的用例生成PySpark和Scala代碼,因此不需要從頭開始編寫ETL代碼。
Glue作業(yè)授權(quán)功能可處理作業(yè)中的任何錯(cuò)誤,并提供日志以了解底層權(quán)限或數(shù)據(jù)格式問題。Glue提供了工作流,通過(guò)簡(jiǎn)單的拖放功能幫助你建立自動(dòng)化的數(shù)據(jù)流水線。
小結(jié)
數(shù)據(jù)分析和處理是一個(gè)龐大的主題,值得單獨(dú)寫一本書。本文概括地介紹了數(shù)據(jù)處理的流行工具。還有更多的專有和開源工具可供選擇。
關(guān)于作者:所羅伯·斯里瓦斯塔瓦(Saurabh Shrivastava)是一位技術(shù)領(lǐng)導(dǎo)者、作家、發(fā)明家和公開演說(shuō)家,在IT行業(yè)擁有超過(guò)16年的工作經(jīng)驗(yàn)。他目前在Amazon Web Services(AWS)擔(dān)任解決方案架構(gòu)師團(tuán)隊(duì)負(fù)責(zé)人,幫助全球咨詢合作伙伴和企業(yè)客戶展開云計(jì)算之旅。他還牽頭了全球技術(shù)伙伴的合作,并且擁有云平臺(tái)自動(dòng)化領(lǐng)域的專利。
內(nèi)拉賈利·斯里瓦斯塔夫(Neelanjali Srivastav)是一位技術(shù)領(lǐng)導(dǎo)者、敏捷教練和云計(jì)算從業(yè)者,在軟件行業(yè)擁有超過(guò)14年的經(jīng)驗(yàn)。她擁有昌迪加爾旁遮普大學(xué)生物信息學(xué)和信息技術(shù)專業(yè)的學(xué)士和碩士學(xué)位。
本文摘編自《解決方案架構(gòu)師修煉之道》,經(jīng)出版方授權(quán)發(fā)布。(ISBN:9787111694441)
作者:所羅伯·斯里瓦斯塔瓦(Saurabh Shrivastava)、內(nèi)拉賈利·斯里瓦斯塔夫(Neelanjali Srivastav)
來(lái)源:大數(shù)據(jù)DT(ID:hzdashuju)