數據分析是對數據進行攝取、轉換和可視化的過程,用來發掘對業務決策有用的洞見。
在過去的十年中,越來越多的數據被收集,客戶希望從數據中獲得更有價值的洞見。他們還希望能在最短的時間內(甚至實時地)獲得這種洞見。他們希望有更多的臨時查詢以便回答更多的業務問題。為了回答這些問題,客戶需要更強大、更高效的系統。
批處理通常涉及查詢大量的冷數據。在批處理中,可能需要幾個小時才能獲得業務問題的答案。例如,你可能會使用批處理在月底生成賬單報告。
實時的流處理通常涉及查詢少量的熱數據,只需要很短的時間就可以得到答案。例如,基於MapReduce的系統(如Hadoop)就是支持批處理作業類型的平台。數據倉庫是支持查詢引擎類型的平台。
流數據處理需要攝取數據序列,並根據每條數據記錄進行增量更新。通常,它們攝取連續產生的數據流,如計量數據、監控數據、審計日誌、調試日誌、網站點擊流以及設備、人員和商品的位置跟蹤事件。
圖13-6展示了使用AWS雲技術棧處理、轉換並可視化數據的數據湖流水線。
▲圖13-6 使用數據湖ETL流水線處理數據
在這裡,ETL流水線使用Amazon Athena對存儲在Amazon S3中的數據進行臨時查詢。從各種數據源(例如,Web應用服務器)攝取的數據會生成日誌文件,並持久保存在S3。然後,這些文件將被Amazon Elastic MapReduce(EMR)轉換和清洗成產生洞見所需的形式並加載到Amazon S3。
用COPY命令將這些轉換後的文件加載到Amazon Redshift,並使用Amazon QuickSight進行可視化。使用Amazon Athena,你可以在數據存儲時直接從Amazon S3中查詢,也可以在數據轉換後查詢(從聚合後的數據集)。你可以在Amazon QuickSight中對數據進行可視化,也可以在不改變現有數據流程的情況下輕鬆查詢這些文件。
以下是一些最流行的可以幫助你對海量數據進行轉換和處理的數據處理技術:
01 Apache Hadoop

Apache Hadoop使用分布式處理架構,將任務分發到服務器集群上進行處理。分發到集群服務器上的每一項任務都可以在任意一台服務器上運行或重新運行。集群服務器通常使用HDFS將數據存儲到本地進行處理。
在Hadoop框架中,Hadoop將大的作業分割成離散的任務,並行處理。它能在數量龐大的Hadoop集群中實現大規模的伸縮性。它還設計了容錯功能,每個工作節點都會定期向主節點報告自己的狀態,主節點可以將工作負載從沒有積極響應的集群重新分配出去。
Hadoop最常用的框架有Hive、Presto、Pig和Spark。
02 Apache Spark

Apache Spark是一個內存處理框架。Apache Spark是一個大規模並行處理系統,它有不同的執行器,可以將Spark作業拆分,並行執行任務。為了提高作業的並行度,可以在集群中增加節點。Spark支持批處理、交互式和流式數據源。
Spark在作業執行過程中的所有階段都使用有向無環圖(Directed Acyclic Graph,DAG)。DAG可以跟蹤作業過程中數據的轉換或數據沿襲情況,並將DataFrames存儲在內存中,有效地最小化I/O。Spark還具有分區感知功能,以避免網絡密集型的數據改組。
03 Hadoop用戶體驗
Hadoop用戶體驗(Hadoop User Experience,HUE)使你能夠通過基於瀏覽器的用戶界面而不是命令行在集群上進行查詢並運行腳本。
HUE在用戶界面中提供了最常見的Hadoop組件。它可以基於瀏覽器查看和跟蹤Hadoop操作。多個用戶可以登錄HUE的門戶訪問集群,管理員可以手動或通過LDAP、PAM、SPNEGO、OpenID、OAuth和SAML2認證管理訪問。HUE允許你實時查看日誌,並提供一個元存儲管理器來操作Hive元存儲內容。
04 Pig

Pig通常用於處理大量的原始數據,然後再以結構化格式(SQL表)存儲。Pig適用於ETL操作,如數據驗證、數據加載、數據轉換,以及以多種格式組合來自多個來源的數據。除了ETL,Pig還支持關係操作,如嵌套數據、連接和分組。
Pig腳本可以使用非結構化和半結構化數據(如Web服務器日誌或點擊流日誌)作為輸入。相比之下,Hive總是要求輸入數據滿足一定模式。Pig的Latin腳本包含關於如何過濾、分組和連接數據的指令,但Pig並不打算成為一種查詢語言。Hive更適合查詢數據。Pig腳本根據Pig Latin語言的指令,編譯並運行以轉換數據。
05 Hive

Hive是一個開源的數據倉庫和查詢包,運行在Hadoop集群之上。SQL是一項非常常見的技能,它可以幫助團隊輕鬆過渡到大數據世界。
Hive使用了一種類似於SQL的語言,叫作Hive Query語言(Hive Query Language,HQL),這使得在Hadoop系統中查詢和處理數據變得非常容易。Hive抽象了用Java等編碼語言編寫程序來執行分析作業的複雜性。
06 Presto
Presto是一個類似Hive的查詢引擎,但它的速度更快。它支持ANSI SQL標準,該標準很容易學習,也是最流行的技能集。Presto支持複雜的查詢、連接和聚合功能。
與Hive或MapReduce不同,Presto在內存中執行查詢,減少了延遲,提高了查詢性能。在選擇Presto的服務器容量時需要小心,因為它需要有足夠的內存。內存溢出時,Presto作業將重新啟動。
07 HBase

HBase是作為開源Hadoop項目的一部分開發的NoSQL數據庫。HBase運行在HDFS上,為Hadoop生態系統提供非關係型數據庫。HBase有助於將大量數據壓縮並以列式格式存儲。同時,它還提供了快速查找功能,因為其中很大一部分數據被緩存在內存中,集群實例存儲也同時在使用。
08 Apache Zeppelin
Apache Zeppelin是一個建立在Hadoop系統之上的用於數據分析的基於Web的編輯器,又被稱為Zeppelin Notebook。它的後台語言使用了解釋器的概念,允許任何語言接入Zeppelin。Apache Zeppelin包括一些基本的圖表和透視圖。它非常靈活,任何語言後台的任何輸出結果都可以被識別和可視化。
09 Ganglia
Ganglia是一個Hadoop集群監控工具。但是,你需要在啟動時在集群上安裝Ganglia。Ganglia UI運行在主節點上,你可以通過SSH訪問主節點。Ganglia是一個開源項目,旨在監控集群而不影響其性能。Ganglia可以幫助檢查集群中各個服務器的性能以及集群整體的性能。
10 JupyterHub
JupyterHub是一個多用戶的Jupyter Notebook。Jupyter Notebook是數據科學家進行數據工程和ML的最流行的工具之一。JupyterHub服務器為每個用戶提供基於Web的Jupyter Notebook IDE。多個用戶可以同時使用他們的Jupyter Notebook來編寫和執行代碼,從而進行探索性數據分析。
11 Amazon Athena

Amazon Athena是一個交互式查詢服務,它使用標準ANSI SQL語法在Amazon S3對象存儲上運行查詢。Amazon Athena建立在Presto之上,並擴展了作為託管服務的臨時查詢功能。Amazon Athena元數據存儲與Hive元數據存儲的工作方式相同,因此你可以在Amazon Athena中使用與Hive元數據存儲相同的DDL語句。
Athena是一個無服務器的託管服務,這意味着所有的基礎設施和軟件運維都由AWS負責,你可以直接在Athena的基於Web的編輯器中執行查詢。
12 Amazon Elastic MapReduce
Amazon Elastic MapReduce(EMR)本質上是雲上的Hadoop。你可以使用EMR來發揮Hadoop框架與AWS雲的強大功能。EMR支持所有最流行的開源框架,包括Apache Spark、Hive、Pig、Presto、Impala、HBase等。
EMR提供了解耦的計算和存儲,這意味着不必讓大型的Hadoop集群持續運轉,你可以執行數據轉換並將結果加載到持久化的Amazon S3存儲中,然後關閉服務器。EMR提供了自動伸縮功能,為你節省了安裝和更新服務器的各種軟件的管理開銷。
13 AWS Glue
AWS Glue是一個託管的ETL服務,它有助於實現數據處理、登記和機器學習轉換以查找重複記錄。AWS Glue數據目錄與Hive數據目錄兼容,並在各種數據源(包括關係型數據庫、NoSQL和文件)間提供集中的元數據存儲庫。
AWS Glue建立在Spark集群之上,並將ETL作為一項託管服務提供。AWS Glue可為常見的用例生成PySpark和Scala代碼,因此不需要從頭開始編寫ETL代碼。
Glue作業授權功能可處理作業中的任何錯誤,並提供日誌以了解底層權限或數據格式問題。Glue提供了工作流,通過簡單的拖放功能幫助你建立自動化的數據流水線。
小結
數據分析和處理是一個龐大的主題,值得單獨寫一本書。本文概括地介紹了數據處理的流行工具。還有更多的專有和開源工具可供選擇。
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/226776.html
微信掃一掃
支付寶掃一掃