天天看點

一文快速了解MaxCompute

一文快速了解MaxCompute

很多剛初次接觸MaxCompute的使用者,面對繁多的産品文檔内容以及社群文章,往往很難快速、全面了解MaxCompute産品全貌。同時,很多擁有大資料開發經驗的開發者,也希望能夠結合自身的背景知識,将MaxCompute産品能力與開源項目、商業軟體之間建立某種關聯和映射,以快速尋找或判斷MaxCompute是否滿足自身的需要,并結合相關經驗更輕松地學習和使用産品。

本文将站在一個更宏觀的視角來分主題地介紹MaxCompute産品,以期讀者能夠通過本文快速擷取對MaxCompute産品的認識。

概念篇

産品名稱:大資料計算服務(英文名:MaxCompute)

産品說明:MaxCompute(原ODPS)是一項大資料計算服務,它能提供快速、完全托管的PB級資料倉庫解決方案,使您可以經濟并高效的分析處理海量資料。

産品說明的前半部分,将MaxCompute定義為大資料計算服務,可以了解為它的功能定位于支援大資料計算,同時是一款基于雲的服務化的産品。後半部分,說明了它的适用場景:大規模資料倉庫、海量資料處理、分析。

單從這裡還不能了解到大資料計算服務提供了哪些的計算能力,具備怎樣的服務化?産品定義中出現了資料倉庫字眼,我們能夠了解到MaxCompute能夠處理較大規模(這裡提到了PB級别)結構化資料。而“海量資料處理”除了資料規模大之外,對于非結構化資料的處理有待驗證,同時”分析”是否在常見的SQL分析能力之外,提供了其他複雜分析的能力。

帶着這樣的問題,我們繼續開始介紹,希望在後面的内容中能夠清晰地回答這些問題。

架構篇

在介紹功能前,先提綱挈領從産品整體邏輯結構開始,讓讀者有個全貌了解。

一文快速了解MaxCompute

MaxCompute提供了雲原生、多租戶的服務架構,在底層大規模計算、存儲資源之上預先建構好了MaxCompute計算服務、服務接口,提供了配套的安全管控手段和開發工具管理工具,産品開箱即用。

使用者可以在阿裡雲控制台,在幾分鐘内完成服務開通并建立MaxCompute項目,無需進行底層資源開通、軟體部署、基礎設施運維,系統自動進行(由阿裡雲專業團隊)版本更新、問題修複。

功能篇

資料存儲

  • 支援大規模計算存儲,适用于TB以上規模的存儲及計算需求,最大可達EB級别。同一個MaxCompute項目支援企業從創業團隊發展到獨角獸的資料規模需求;
  • 資料分布式存儲,多副本備援,資料存儲對外僅開放表的操作接口,不提供檔案系統通路接口
  • 自研資料存儲結構,表資料列式存儲,預設高度壓縮,後續将提供相容ORC的Ali-ORC存儲格式
  • 支援外表,将存儲在OSS對象存儲、OTS表格存儲的資料映射為二維表
  • 支援Partition、Bucket的分區、分桶存儲
  • 更底層不是HDFS,是阿裡自研的盤古檔案系統,但可借助HDFS了解對應的表之下檔案的體系結構、任務并發機制
  • 使用時,存儲與計算解耦,不需要僅僅為了存儲擴大不必要的計算資源

多種計算模型

需要說明的是,傳統資料倉庫場景下,實踐中有大部分的資料分析需求可以通過SQL+UDF來完成。但随着企業對資料價值的重視以及更多不同的角色開始使用資料時,企業也會要求有更豐富的計算功能來滿足不同場景、不同使用者的需求。

MaxCompute不僅僅提供SQL資料分析語言,它在統一的資料存儲和權限體系之上,支援了多種計算類型。

MaxCompute SQL:

TPC-DS 100% 支援,同時文法高度相容Hive,有Hive背景開發者直接上手,特别在大資料規模下性能強大。

  • 完全自主開發的compiler,語言功能開發更靈活,疊代快,文法語義檢查更加靈活高效
  • 基于代價的優化器,更智能,更強大,更适合複雜的查詢
  • 基于LLVM的代碼生成,讓執行過程更高效
  • 支援複雜資料類型(array,map,struct)
  • 支援Java、Python語言的UDF/UDAF/UDTF
  • 文法:Values、CTE、SEMIJOIN、FROM倒裝、Subquery Operations、Set Operations(UNION /INTERSECT /MINUS)、SELECT TRANSFORM 、User Defined Type、GROUPING SET(CUBE/rollup/GROUPING SET)、腳本運作模式、參數化視圖
  • 支援外表(外部資料源+StorageHandler 支援非結構化資料)

MapReduce:

  • 支援MapReduce程式設計接口(提供優化增強的MaxCompute MapReduce,也提供高度相容Hadoop的MapReduce版本)
  • 不暴露檔案系統,輸入輸出都是表
  • 通過MaxCompute用戶端工具、Dataworks送出作業

MaxCompute Graph圖模型:

  • MaxCompute Graph是一套面向疊代的圖計算處理架構。圖計算作業使用圖進行模組化,圖由點(Vertex)和邊(Edge)組成,點和邊包含權值(Value)。
  • 通過疊代對圖進行編輯、演化,最終求解出結果
  • 典型應用有:PageRank,單源最短距離算法,K-均值聚類算法等
  • 使用MaxCompute Graph提供的接口Java SDK編寫圖計算程式并通過MaxCompute用戶端工具通過jar指令送出任務

PyODPS:

用熟悉的Python利用MaxCompute大規模計算能力處理MaxCompute資料。

PyODPS是MaxCompute 的 Python SDK,同時也提供 DataFrame 架構,提供類似 pandas 的文法,能利用 MaxCompute 強大的處理能力來處理超大規模資料。  

  • PyODPS 提供了對 ODPS 對象比如 表 、資源 、函數 等的通路。
  • 支援通過 run_sql/execute_sql 的方式來送出 SQL。
  • 支援通過 open_writer 和 open_reader 或者原生 tunnel API 的方式來上傳下載下傳資料
  • PyODPS 提供了 DataFrame API,它提供了類似 pandas 的接口,能充分利用 MaxCompute 的計算能力進行DataFrame的計算。
  • PyODPS DataFrame 提供了很多 pandas-like 的接口,但擴充了它的文法,比如增加了 MapReduce API 來擴充以适應大資料環境。
  • 利用map 、apply 、map_reduce 等友善在用戶端寫函數、調用函數的方法,使用者可在這些函數裡調用三方庫,如pandas、scipy、scikit-learn、nltk

Spark:

MaxCompute提供了Spark on MaxCompute的解決方案,使MaxCompute提供的相容開源的Spark計算服務,讓它在統一的計算資源和資料集權限體系之上,提供Spark計算架構,支援使用者以熟悉的開發使用方式送出運作Spark作業。

  • 支援原生多版本Spark作業:Spark1.x/Spark2.x作業都可運作;
  • 開源系統的使用體驗:Spark-submit送出方式(暫不支援spark-shell/spark-sql的互動式),提供原生的Spark WebUI供使用者檢視;
  • 通過通路OSS、OTS、database等外部資料源,實作更複雜的ETL處理,支援對OSS非結構化進行處理;
  • 使用Spark面向MaxCompute内外部資料開展機器學習,擴充應用場景;

互動式分析(Lightning)

MaxCompute産品的互動式查詢服務,特性如下:

  • 相容PostgreSQL:相容PostgreSQL協定的JDBC/ODBC接口,所有支援PostgreSQL資料庫的工具或應用使用預設驅動都可以輕松地連接配接到MaxCompute項目。支援主流BI及SQL用戶端工具的連接配接通路,如Tableau、帆軟BI、Navicat、SQL Workbench/J等。
  • 顯著提升的查詢性能:提升了一定資料規模下的查詢性能,查詢結果秒級可見,支援BI分析、Ad-hoc、線上服務等場景;

機器學習:

  • MaxCompute内建支援的上百種機器學習算法,目前MaxCompute的機器學習能力由PAI産品進行統一提供服務,同時PAI提供了深度學習架構、Notebook開發環境、GPU計算資源、模型線上部署的彈性預測服務。PAI産品與MaxCompute在項目和資料方面無縫內建。

對比篇

為便于讀者,特别是有開源社群經驗的讀者快速建立對MaxCompute主要功能的了解,這裡做簡單地映射說明。

項目 MaxCompute産品 對開源社群的一些比較說明
SQL MaxCompute SQL 阿裡自研SQL引擎,文法相容Hive,功能和性能更優
MapReduce MaxCompute MR 阿裡自研,類似并支援Hadoop MapReduce,MaxCompute Open MR做了優化和提升
互動式 MaxCompute Lightning Serverless的互動式查詢服務,功能類似開源生态的Presto、Hawk等
Spark Spark on MaxCompute 支援原生Spark運作在MaxCompute上,類似Spark on Yarn形态
機器學習 PAI 不同于開源社群的算法庫,PAI有更豐富的算法,超大規模處理能力,更是覆寫了ML/DL全流程需求的平台服務。
存儲 Pangu 阿裡自研分布式存儲服務,類似HDFS。MaxCompute對外目前隻暴露表接口,不能直接通路檔案系統。
資源排程 Fuxi 阿裡自研的資源排程系統,類似Yarn。
資料上傳下載下傳 Tunnel 不暴露檔案系統,通過Tunnel進行批量資料上傳下載下傳。
流式接入 Datahub MaxCompute配套的流式資料接入服務,粗略地類似kafka,能夠通過簡單配置歸檔topic資料到MaxCompute表
使用者接口 CLT/SDK 統一的指令行工具和JAVA/PYTHON SDK
開發&診斷 Dataworks/Studio/Logview 配套的資料同步、作業開發、工作流編排排程、作業運維及診斷工具。開源社群常見的Sqoop、Kettle、Ozzie等實作資料同步和排程。
整體 不是孤立的功能,完整的企業服務 不需要多元件內建、調優、定制,開箱即用。

問題篇

dataworks和MaxCompute之間的關系與差別?

這是2個産品,MaxCompute做資料存儲和資料分析處理,Dataworks是內建了資料內建、資料開發調試、作業編排及運維、中繼資料管理、資料品質管理、資料API服務等等功能的大資料開發IDE套件。類似Spark和HUE的關系,不知道這個對比是否準确。

想測試、體驗MaxCompute,成本費用高嗎?

不高,應該說很低。MaxCompute提供了按作業付費的模式,其中單個作業的費用有和作業處理的資料大小密切相關。開通按量付費服務,并建立1項目。利用MaxCompute用戶端工具(ODPSCMD)或者在dataworks裡,建立表并上傳測試資料,就可以開始測試體驗了。資料不大的話,10元錢可以用很長一段時間。

當然,MaxCompute還有獨占資源的模式,出于費用可控的考慮,也選擇了預付費的模式。

另外,MaxCompute馬上推出”開發者版”,每個月為開發者贈送一定的免費額度用于開發、學習。

MaxCompute存儲目前隻暴露表,能處理非結構化資料嗎?

可以,非結構化資料可以存放在OSS上,一種方式是通過外表方式,通過自定義

Extractor

來實作非結構化處理為結構化資料的邏輯。另外,也可以用

OSS

進行通路,通過

程式對

目錄下的檔案進行抽取轉換,結果寫入

MaxCompute

表。

支援哪些資料源接入到

通過

Dataworks

資料內建服務或者自己使用

DataX

,可以實作阿裡雲上的各種離線資料源如資料庫、

HDFS

FTP

等資料源的接入;

也可以用

MaxCompute Tunnel

工具

/SDK

,通過指令或

SDK

批量進行資料上傳、下載下傳;

流式資料,可以利用

提供的

Flume/logstash

插件,将流式資料寫入

,然後歸檔到

表;

支援阿裡雲

SLS DTS

服務資料寫入

總結

本文簡要介紹了MaxCompute這個産品基本概念和功能,并和大家熟悉的開源社群服務進行了對比映射,希望對大家快速了解阿裡雲大資料計算服務。

更多的内容見MaxCompute産品官方位址:

https://www.aliyun.com/product/odps

想了解更多阿裡巴巴大資料計算服務MaxCompute,可以加入社群一起交流。

一文快速了解MaxCompute