大數(shù)據(jù)處理
為了對智能湖倉存儲層(Amazon S3與Amazon Redshift)上托管的大量半結(jié)構(gòu)化、非結(jié)構(gòu)化或高度結(jié)構(gòu)化數(shù)據(jù)進行集成處理,您可以使用Apache Spark構(gòu)建大數(shù)據(jù)處理作業(yè),并在AWS Glue或Amazon EMR上加以運行。這些作業(yè)可以使用Spark的原生及其他開源連接器進行訪問,并將Amazon Redshift中存儲的關(guān)系型數(shù)據(jù)同Amazon S3中存儲的復(fù)雜平面或分層結(jié)構(gòu)化數(shù)據(jù)結(jié)合起來。處理完成后,這些作業(yè)可以將結(jié)果數(shù)據(jù)集存儲回S3數(shù)據(jù)湖、Amazon Redshift數(shù)據(jù)倉庫或者二者共同構(gòu)成的智能湖倉存儲層。
AWS Glue提供無服務(wù)器、按使用量計費的ETL功能,其ETL管道能夠處理規(guī)模達數(shù)十TB的海量數(shù)據(jù),且無需啟動或管理任何服務(wù)器或集群。為了加快ETL開發(fā),AWS Glue還能自動生成ETL代碼并提供常用的數(shù)據(jù)結(jié)構(gòu)與ETL轉(zhuǎn)換(用于驗證、清洗、轉(zhuǎn)換及展平數(shù)據(jù))。AWS Glue還提供內(nèi)置功能,用于處理存儲在Amazon Redshift以及S3數(shù)據(jù)湖內(nèi)的數(shù)據(jù)。在同一作業(yè)之內(nèi),AWS Glue還可以加載并處理使用平面表格式存儲的Amazon Redshift數(shù)據(jù)、以及其他使用常見開源格式(例如CSV、JSON、Parquet以及Avro)存儲的S3數(shù)據(jù)湖托管數(shù)據(jù)集。AWS Glue ETL作業(yè)可通過公共Lake Formation目錄(AWS Glue crawlers會爬取Amazon S3及Amazon Redshift以獲取數(shù)據(jù))訪問這些數(shù)據(jù),借此以統(tǒng)一方式引用Amazon Redshift與Amazon S3托管表。AWS Glue ETL還能夠?qū)Ψ謪^(qū)數(shù)據(jù)執(zhí)行增量處理。此外,AWS Glue也提供觸發(fā)器與工作流功能,可用于構(gòu)建包含作業(yè)依賴項、并發(fā)運行等多個步驟的端到端數(shù)據(jù)處理管道。
您可以自動擴展EMR集群,滿足PB級別大數(shù)據(jù)處理管道的嚴苛資源需求。這些管道還可以使用不同的Amazon Elastic Compute Cloud(Amazon EC2)競價實例隊列,進一步改善資源成本優(yōu)化效果。關(guān)于實例選項的更多詳細信息,請參閱支持的實例類型。
運行在Amazon EMR上的基于Spark數(shù)據(jù)處理管道能夠?qū)崿F(xiàn)以下功能:
·Spark內(nèi)置的讀取器與寫入器能夠處理采用多種開源格式的數(shù)據(jù)湖托管數(shù)據(jù)集。
·開源Spark-Amazon Redshift連接器能夠直接對Amazon Redshift數(shù)據(jù)倉庫中的數(shù)據(jù)進行讀取與寫入。
要讀取由數(shù)據(jù)湖托管的復(fù)雜結(jié)構(gòu)化數(shù)據(jù)集schema,Amazon EMR上的Spark ETL作業(yè)可以接入Lake Formation目錄。這是通過AWS Glue兼容性配合AWS身份與訪問管理(IAM)策略共同實現(xiàn),負責(zé)對指向AWS Glue表以及底層S3對象的訪問進行分別授權(quán)。同樣,Spark作業(yè)還可以使用Spark-Amazon Redshift連接器讀取Amazon Redshift托管數(shù)據(jù)集的數(shù)據(jù)與schema。您也可以使用Spark及Apache Hudi構(gòu)建高效的增量數(shù)據(jù)處理管道Amazon EMR。
近實時ETL
要執(zhí)行多個現(xiàn)代分析用例,您需要以近實時方式執(zhí)行以下操作:
·攝取大量高頻或流式數(shù)據(jù)
·驗證、清洗與豐富數(shù)據(jù)
·將數(shù)據(jù)放入智能湖倉存儲以供消費
您可以使用以下方法構(gòu)建起能夠輕松擴展、并近實時處理大量數(shù)據(jù)的管道:
·Amazon Kinesis Data Analytics for SQL/Flink
·在AWS Glue或Amazon EMR上使用Spark Streaming
·將Kinesis Data Firehose與AWS Lambda相集成
Kinesis Data Analytics、AWS Glue與Kinesis Data Firehose可幫助您建立起近實時數(shù)據(jù)處理管道,且無需創(chuàng)建或管理任何計算基礎(chǔ)設(shè)施。Kinesis Data Firehose與Kinesis Data Analytics管道能夠彈性擴展以匹配源吞吐量,而基于Amazon EMR與AWS Glue的Spark Streaming作業(yè)則可以根據(jù)指定的擴展參數(shù)、在幾分鐘內(nèi)完成規(guī)模擴展。
基于Kinesis Data Analytics for Flink/SQL的流式管道通常會從Amazon Kinesis Data Streams(位于我們智能湖倉架構(gòu)的攝取層中)讀取記錄、對其進行轉(zhuǎn)換,而后將處理完成的數(shù)據(jù)寫入至Kinesis Data Firehose。Spark Streaming管道則通常從Kinesis Data Streams(位于我們智能湖倉架構(gòu)的攝取層中)讀取記錄、對其進行轉(zhuǎn)換,而后將處理完成的數(shù)據(jù)寫入至另一Kinesis數(shù)據(jù)流,且后者又接入Kinesis Data Firehose交付流。Firehose交付流能夠?qū)⑻幚砗蟮臄?shù)據(jù)交付至智能湖倉存儲層內(nèi)的Amazon S3或Amazon Redshift。要構(gòu)建起簡單、不涉及狀態(tài)轉(zhuǎn)換的近實時管道,您可以將數(shù)據(jù)直接攝取至Kinesis Data Firehose中,并使用Kinesis Data Firehose調(diào)用的Lambda函數(shù)對傳入記錄進行微批處理。Kinesis Data Firehose會將轉(zhuǎn)換后的微批記錄交付至智能湖倉存儲層中的Amazon S3或Amazon Redshift。
憑借著將數(shù)據(jù)交付至Amazon S3與Amazon Redshift的能力,Kinesis Data Firehose得以為處理層中的近實時ETL管道提供統(tǒng)一的智能湖倉存儲寫入器接口。在Amazon S3上,Kinesis Data Firehose可以將數(shù)據(jù)存儲在有效的Parquet或ORC文件中,您可以靈活使用ZIP、GZIP及Snappy等開源編解碼器對這些文件進行壓縮。
數(shù)據(jù)消費層
我們的智能湖倉參考架構(gòu)提供多種專用AWS服務(wù),能夠讓不同角色類型之間的數(shù)據(jù)消費方式互連互通,包括支持交互式SQL查詢、商務(wù)智能與機器學(xué)習(xí)等多種分析用例。這些服務(wù)使用統(tǒng)一的智能湖倉接口訪問存儲在Amazon S3、Amazon Redshift以及Lake Formation目錄中的所有數(shù)據(jù)與元數(shù)據(jù)。此外,各項服務(wù)還可以通過開放文件格式(例如JSON、Avro、Parquet以及ORC)使用Amazon Redshift表中存儲的平面關(guān)系數(shù)據(jù)以及S3對象中存儲的平面或復(fù)雜結(jié)構(gòu)化或非結(jié)構(gòu)化數(shù)據(jù)。
交互式SQL
要使用交互式SQL探索智能湖倉內(nèi)存儲的所有數(shù)據(jù),商務(wù)分析師與數(shù)據(jù)科學(xué)家可以使用Amazon Redshift(配合Redshift Spectrum)或者Athena輕松實現(xiàn)。您可以運行SQL查詢,這些查詢會將Amazon Redshift集群中托管的平面、關(guān)系、結(jié)構(gòu)化維度數(shù)據(jù),連同Amazon S3中存儲的TB級規(guī)模的平面或復(fù)雜結(jié)構(gòu)化歷史事實數(shù)據(jù)結(jié)合起來,而且允許在數(shù)據(jù)中使用JSON、Avro、Parquet以及ORC等開放文件格式。在Amazon S3中查詢數(shù)據(jù)集時,Athena與Redshift Spectrum都將獲取存儲在Lake Formation目錄中的schema,并將其應(yīng)用于讀取操作(schema-on-read)。您可以在Athena或Amazon Redshift各自的控制臺上運行查詢,也可以將面向JDBC或ODBC端點提交查詢。關(guān)于更多詳細信息,請參閱使用ODBC與JDBC驅(qū)動程序接入Amazon Athena,以及在Amazon Redshift中配置連接。
Athena能夠針對存儲在Amazon S3中的TB級數(shù)據(jù)運行復(fù)雜的ANSI SQL,而且您無需預(yù)先將其加載至數(shù)據(jù)庫內(nèi)。Athena具有無服務(wù)器特性,因此不存在需要設(shè)置或管理的基礎(chǔ)設(shè)施,您只需要為運行查詢所產(chǎn)生的數(shù)據(jù)掃描量付費。Athena還提供聯(lián)合查詢功能,允許在同一SQL查詢中將Amazon S3托管的事實數(shù)據(jù)與Amazon Redshift集群內(nèi)托管的維度表結(jié)合起來。Athena利用存儲在Lake Formation目錄內(nèi)的數(shù)據(jù)集分區(qū)信息減少數(shù)據(jù)掃描量,由此更快提供結(jié)果并降低查詢成本。您可以使用Athena CTAS語句存儲重復(fù)的查詢結(jié)果,這將進一步降低查詢成本。
Amazon Redshift提供強大的SQL功能,可對智能湖倉存儲(跨Amazon Redshift MPP集群與S3存儲湖)內(nèi)的超大型數(shù)據(jù)集進行快速在線分析處理(OLAP)。Amazon Redshift還提供功能強大的查詢優(yōu)化器,能夠通過類似于PostgreSQL的語法編寫出復(fù)雜的用戶查詢,并生成可在Amazon Redshift MPP集群與Redshift Spectrum節(jié)點隊列(以查詢Amazon S3中的數(shù)據(jù))上運行的高性能查詢計劃。Amazon Redshift則提供結(jié)果緩存功能,可將同一查詢的重復(fù)操作次數(shù)降低幾個數(shù)量級,借此顯著縮短查詢運行時間。借助Amazon Redshift中的物化視圖,您只需要對復(fù)雜join進行一次預(yù)先計算(后續(xù)以增量方式進行刷新),借此簡化并加快用戶所需編寫的下游查詢。Amazon Redshift還提供并發(fā)擴展,可在幾秒鐘內(nèi)啟動更多瞬態(tài)集群,借此支持幾乎無限數(shù)量的并發(fā)查詢。您可以將查詢結(jié)果寫入回Amazon Redshift原生表或者S3數(shù)據(jù)湖上托管的外部表(使用Redshift Spectrum)。
機器學(xué)習(xí)
數(shù)據(jù)科學(xué)家們往往需要探索、整理并特征化各類結(jié)構(gòu)化與非結(jié)構(gòu)化數(shù)據(jù)集,為機器學(xué)習(xí)模型的訓(xùn)練作業(yè)做好準備。智能湖倉接口(用于將Amazon Redshift與Athena及Spark接口配合使用的交互式SQL接口)能夠為數(shù)據(jù)科學(xué)家提供以下功能,由此大大簡化并加快數(shù)據(jù)準備進程:
·統(tǒng)一的Lake Formation目錄,用于搜索及發(fā)現(xiàn)智能湖倉存儲中托管的所有數(shù)據(jù)。
·基于Amazon Redshift SQL與Athena的交互式SQL功能,用于訪問、瀏覽及轉(zhuǎn)換智能湖倉存儲中的所有數(shù)據(jù)。
·基于Spark的統(tǒng)一訪問機制,能夠整理并轉(zhuǎn)換智能湖倉存儲中托管的所有數(shù)據(jù)集(包括結(jié)構(gòu)化與非結(jié)構(gòu)化),并將其轉(zhuǎn)換為特征集。
接下來,數(shù)據(jù)科學(xué)家可以將Amazon SageMaker接入智能湖倉的存儲層并訪問訓(xùn)練特征集,借此完成機器學(xué)習(xí)模型的開發(fā)、訓(xùn)練與部署。
SageMaker是一項完全托管服務(wù),提供一套名為SageMaker Studio交互式開發(fā)環(huán)境(IDE)以構(gòu)建、訓(xùn)練及部署機器學(xué)習(xí)的各組件。在Studio中,您可以使用統(tǒng)一的可視化界面統(tǒng)一上傳數(shù)據(jù)、創(chuàng)建新notebook、訓(xùn)練及調(diào)整模型、在各步驟間往來移動以調(diào)整實驗過程、比較結(jié)果并將模型部署至生產(chǎn)環(huán)境中。
SageMaker還提供托管Jupyter notebook,您只需單擊幾下即可啟動notebook。SageMaker notebook提供彈性計算資源、git集成、輕松共享、預(yù)置機器學(xué)習(xí)算法、幾十種現(xiàn)成機器學(xué)習(xí)示例以及AWS Marketplace集成功能,您可以輕松部署數(shù)百種經(jīng)過預(yù)訓(xùn)練的算法。SageMaker notebook還預(yù)先配置了所有主要深度學(xué)習(xí)框架,包括TensorFlow、PyTorch、Apache MXNet、Chainer、Keras、Gluon、Horovod、Scikit-learn以及Deep Graph Library等。
各機器學(xué)習(xí)模型在SageMaker托管的計算實例上進行訓(xùn)練,其中也包括成本效益極高的EC2競價實例。您可以使用SageMaker Experiments組織多項訓(xùn)練作業(yè),也可以使用SageMaker的內(nèi)置算法、自定義算法或AWS Marketplace提供的數(shù)百種算法構(gòu)建訓(xùn)練作業(yè)。SageMaker Debugger則提供對于模型訓(xùn)練作業(yè)的完全可見性。最后,SageMaker也為機器學(xué)習(xí)訓(xùn)練作業(yè)提供強大的自動超參數(shù)調(diào)優(yōu)選項。
只需要單擊幾下,您就可以將SageMaker訓(xùn)練完成的模型部署至生產(chǎn)中,并輕松通過一組完全托管EC2實例進行擴展。您可以在多種EC2實例類型中做出選擇,并附加具有成本效益的GPU驅(qū)動實例實現(xiàn)推理加速。模型部署完成后,SageMaker即可監(jiān)控關(guān)鍵模型指標以提高推理準確性,同時檢測一切概念漂移跡象。
商務(wù)智能
Amazon QuickSight提供無服務(wù)器功能,可供您輕松創(chuàng)建并發(fā)布包含豐富信息的交互式商務(wù)智能儀表板。商務(wù)分析師們可以使用Athena或Amazon Redshift的交互式SQL接口,通過智能湖倉存儲中的數(shù)據(jù)為QuickSight儀表板提供素材支持。此外,您也可以直接將QuickSight接入可操作數(shù)據(jù)庫(例如MS SQL、Postgres)以及各類SaaS應(yīng)用(例如Salesforce、Square以及ServiceNow等)。為了保證儀表板擁有出色的性能表現(xiàn),QuickSight還提供一款名為SPICE的內(nèi)存緩存與計算引擎。SPICE能夠自動復(fù)制數(shù)據(jù)以實現(xiàn)高可用性,允許成千上萬用戶同時執(zhí)行快速交互式分析,并有效保護底層數(shù)據(jù)基礎(chǔ)設(shè)施。
QuickSight憑借開箱即用、自動生成的機器學(xué)習(xí)洞見(包括預(yù)測、異常檢測與敘述重點等)極大豐富了儀表板信息與視覺效果。QuickSight與SageMaker原生集成,可在商務(wù)智能儀表板上實現(xiàn)其他基于機器學(xué)習(xí)模型的自定義洞見。您可以使用QuickSIght應(yīng)用程序經(jīng)由任意設(shè)備訪問QuickSight儀表板,也可以將儀表板靈活嵌入至Web應(yīng)用程序、門戶與網(wǎng)站中。QuickSight能夠自動擴展至成千上萬用戶,并以經(jīng)濟高效的按會話計費方式提供極具性價比的服務(wù)體驗。
總結(jié)
基于專用服務(wù)組合建立的智能湖倉架構(gòu)將幫助您從海量數(shù)據(jù)中快速獲取面向所有用戶的洞察見解,同時充分預(yù)留升級空間,供您隨后續(xù)發(fā)展隨時引入新的分析方法與技術(shù)成果。
在本文中,我們介紹了多種專用AWS服務(wù),您可以利用它們構(gòu)建起智能湖倉架構(gòu)中的五個核心邏輯層。我們還提供多種選項,介紹如何在正確的工作中使用正確的AWS服務(wù)以實現(xiàn)良好的靈活性與豐富的功能性。