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




































