天天看點

阿裡雲大資料ACP認證知識點梳理1——産品特點(MAXCOMPUTE)

大資料計算服務(MaxCompute,原名ODPS)是一種快速、完全托管的GB/TB/PB級資料倉庫解決方案。

MaxCompute服務于批量結構化資料的存儲和計算,提供海量資料倉庫的解決方案及分析模組化服務。

MaxCompute支援SQL、MapReduce、Graph等計算類型及MPI疊代類算法。

TUNNEL是MaxCompute為您提供的資料傳輸服務,提供高并發的離線資料上傳下載下傳服務。支援每天TB/PB級别的資料導入導出,特别适合于全量資料或曆史資料的批量導入。Tunnel 為您提供Java程式設計接口,并且在MaxCompute的用戶端工具中,有對應的指令實作本地檔案與服務資料的互通。

針對實時資料上傳的場景,MaxCompute提供了延遲低、使用友善的DataHub服務,特别适用于增量資料的導入。DataHub還支援多種資料傳輸插件,例如Logstash、Flume、Fluentd、Sqoop等,同時支援日志服務Log Service中的投遞日志到MaxCompute,進而使用DataWorks進行日志分析和挖掘。

MaxCompute以表的形式存儲資料,支援多種資料類型,并對外提供SQL查詢功能。您可以将MaxCompute作為傳統的資料庫軟體操作,但其卻能處理TB、PB級别的海量資料。

MaxCompute SQL不支援事務、索引及Update/Delete等操作。

MaxCompute的SQL文法與Oracle、MySQL有一定差别,您無法将其他資料庫中的SQL語句無縫遷移到MaxCompute上來。

在使用方式上,MaxCompute SQL最快可以在分鐘、乃至秒級别完成查詢,無法在毫秒級别傳回結果。

UDF:即使用者自定義函數。

MaxCompute提供了很多内建函數來滿足您的計算需求,同時您還可以通過建立自定義函數來滿足不同的計算需求。

MapReduce:MaxCompute MapReduce是MaxCompute提供的Java MapReduce程式設計模型,它可以簡化開發流程,更為高效。您若使用MaxCompute MapReduce,需要對分布式計算概念有基本了解,并有相對應的程式設計經驗。MaxCompute MapReduce為您提供Java程式設計接口。

Graph:MaxCompute提供的Graph功能是一套面向疊代的圖計算處理架構。圖計算作業使用圖進行模組化,圖由點 (Vertex)和邊(Edge)組成,點和邊包含權值(Value)。通過疊代對圖進行編輯、演化,最終求解出結果,典型應用:PageRank、單源最短距離算法 、K-均值聚類算法等。

項目空間(Project)是MaxCompute的基本組織單元,它類似于傳統資料庫的Database或Schema的概念,是進行多使用者隔離和通路控制的主要邊界。

一個使用者可以同時擁有多個項目空間的權限,通過安全授權,可以在一個項目空間中通路另一個項目空間中的對象,例如表(Table)、資源(Resource)、函數(Function)和執行個體(Instance)。

表是MaxCompute的資料存儲單元,它在邏輯上也是由行和列組成的二維結構,每行代表一條記錄,每清單示相同資料類型的一個字段,一條記錄可以包含一個或多個列,各個列的名稱和類型構成這張表的Schema。

MaxCompute的表格有兩種類型:内部表和外部表。

對于内部表,所有的資料都被存儲在MaxCompute中,表中的列可以是MaxCompute支援的任意一種資料類型。

對于外部表,MaxCompute并不真正持有資料,表格的資料可以存放在OSS或OTS中 。MaxCompute僅會記錄表格的Meta資訊,您可以通過MaxCompute的外部表機制處理OSS或OTS上的非結構化資料,例如視訊、音頻、基因、氣象、地理資訊等。

分區表是指在建立表時指定分區空間,即指定表内的某幾個字段作為分區列。

分區表的意義在于優化查詢。查詢表時通過where字句查詢指定所需查詢的分區,避免全表掃描,提高處理效率,降低計算費用。

MaxCompute将分區列的每個值作為一個分區(目錄),您可以指定多級分區,即将表的多個字段作為表的分區,分區之間如多級目錄的關系。

目前MaxCompute支援Tinyint、Smallint、Int、Bigint、Varchar和String分區類型。

單表分區層級最多6級。單表分區數最多允許60000個分區。一次查詢最多查詢分區數為10000個分區。

MaxCompute2.0支援的資料類型,包括基本資料類型和複雜類型。

MaxCompute2.0支援的基本資料類型如下表所示,新增類型有TINYINT、SMALLINT、 INT、 FLOAT、VARCHAR、TIMESTAMP和BINARY,MaxCompute表中的列必須是下列描述的任意一種類型。

MaxCompute表的生命周期(LIFECYCLE),指表(分區)資料從最後一次更新的時間算起,在經過指定的時間後沒有變動,則此表(分區)将被MaxCompute自動回收。這個指定的時間就是生命周期。

生命授權機關:days(天),隻接受正整數。非分區表若指定生命周期,自最後一次資料被修改的時間(LastDataModifiedTime)開始計算,經過days天後資料仍未被改動,則此表無需您幹預,将會被MaxCompute自動回收(類似drop table操作)。分區表若指定生命周期,則根據各個分區的LastDataModifiedTime判斷該分區是否該被回收。不同于非分區表,分區表的最後一個分區被回收後,該表不會被删除。

生命周期隻能設定到表級别,不能在分區級設定生命周期。建立表時即可指定生命周期。

表若不指定生命周期,則表(分區)不會根據生命周期規則被MaxCompute自動回收。

MaxCompute支援上傳的單個資源大小上限為500MB,資源包括以下幾種類型:File類型。Table類型:MaxCompute中的表。Jar類型:編譯好的Java Jar包。Archive類型:通過資源名稱中的字尾識别壓縮類型,支援的壓縮檔案類型包括.zip/.tgz/.tar.gz/.tar/jar。

自定義函數(UDF)可以進一步分為标量值函數(UDF),自定義聚合函數(UDAF)和自定義表值函數(UDTF)三種類型。

您在開發完成UDF代碼後,需要将代碼編譯成Jar包,并将此Jar包以Jar資源的形式上傳到MaxCompute,最後在MaxCompute中注冊此UDF。

任務(Task)是MaxCompute的基本計算單元,SQL及MapReduce功能都是通過任務完成的。

目前,執行計劃邏輯上可以被看做一個有向圖,圖中的點是執行階段,各個執行階段的依賴關系是圖的邊。MaxCompute會依照圖(執行計劃)中的依賴關系執行各個階段。在同一個執行階段内,會有多個程序,也稱之為Worker,共同完成該執行階段的計算工作。同一個執行階段的不同Worker隻是處理的資料不同,執行邏輯完全相同。計算型任務在執行時,會被執行個體化,您可以操作這個執行個體(Instance)的資訊,例如擷取執行個體狀态(Status Instance)、終止執行個體運作(Kill Instance)等。

另一方面,部分MaxCompute任務并不是計算型的任務,例如SQL中的DDL語句,這些任務本質上僅需要讀取、修改MaxCompute中的中繼資料資訊。是以,這些任務無法被解析出執行計劃。

在MaxCompute中,部分任務(Task)在執行時會被執行個體化,以MaxCompute執行個體(下文簡稱為執行個體或Instance)的形式存在。執行個體會經曆運作(Running)和結束(Terminated)兩個階段。

運作階段的狀态為Running(運作中),而結束階段則會有Success(成功)、Failed(失敗)和Canceled(被取消)三種狀态。