一、MaxCompute介紹
大數據計算服務( MaxCompute,原ODPS )由阿里雲自主研發,提供針對TB/PB級數據、實時性要求不高的分布式處理能力,應用於數據分析、挖掘、商業智能等領域。阿里巴巴的數據業務都運行在MaxCompute上。
分布式
分布式集群架構,跨集群技術突破,集群規模可擴展
安全性
自動存儲容錯,安全沙箱機制,冗余存儲機制
易用性
標准接口服務,數據上傳下載,支持SQL語句
管理與授權
多用戶的管理協同,多種方式權限管理,靈活訪問控制策略
1.Maxcompute對象
2.Maxcompute分區
分區表指在創建表時指定分區鍵,即指定表內的某幾個字段作為分區列
在使用數據時如果指定了需要訪問的分區名稱,則只會讀取相應的分區,避免全表掃描,提高了處理效率,降低費用
3.其他概念
任務( Task) :
MaxCompute 基本計算單元, SQL及MR都是通過任務完成的
實例( Instance) :
任務的一個具體實例,表示實際運行的task
沙箱( SandBox) :
按照安全策略限制程序行為的執行環境不允許直接訪問本地文件
■不允許直接訪問分布式文件系統
■不允許JNI調用機制
■Java反射限制
■不允許起子進程執行Linux命令
■不允許獲取本地IP地址等
4.MaxComputer數據類型
二、MaxComputer架構
1.MaxComputer客戶端
2.MaxComputer接入層
3.MaxComputer邏輯層
4.MaxComputer計算層
三、連接使用MaxComputer
eclipse連接 MaxComputer流程
在阿里雲官網下載 odps-for-eclipse 組件(eclipse插件),解壓,進入plugins文件夾,復制 odps-eclipse-plugin-bundle_0.15.0.jar 包到 eclipse 文件夾下的plugins文件夾里,然后打開eclipse,顯示如下圖所示的效果則說明配置成功
eclipse界面 -> File -> new -> Other...
四、數據的上傳和下載
Tunnel 命令
數據上傳
tunnel upload [options] <path> <[project.]table[/partition]>
數據下載
tunnel download [options] <[project.]table[/partition]> <path>
常用的參數
五、數據定義語言DDL
1.建表
2.刪除表
3.修改表名
4.添加分區
5.刪除分區
6.修改表屬性
添加列
修改列
修改表注釋
修改列注釋
修改生命周期
修改時間
7.快捷建表CTAS
8.創建視圖
CREATE [OR REPLACE] VIEW [IF NOT EXISTS] view_name
[(col_name[COMMENT col_comment],...)]
[COMMENT view_comment]
[AS select_statement]
刪除視圖
DROP VIEW [IF NOT EXISTS] view_name;
9.表的生命周期
生命周期( LifeCycle ) : MaxCompute表中的數據,從最后一次更新時間算起,在經過指定的時間后沒有變動,則此表將被MaxCompute自動回收(刪除)。此指定時間就是該MaxCompute表的生命周期。(單位:天)
10.MULTI INSERT
六、數據操作語言 DML
1.查詢操作
2.更新數據
輸出到普通表或者靜態分區
輸出到動態分區
如果目標表有多級分區,在運行insert語句時允許指定部分分區為靜態,但是靜態分區必須是高級分區(分區字段靠前的分區),動態生成的分區值不可以為null
3.多路輸出 MULTI INSERT
4.表關聯
5.MAPJOIN
6.分支表達式
第一種
CASE <value>
WHEN <condition_1> then <result_1>
WHEN <condition_2> then <result_2>
...
else <result_n>
END
第二種
CASE
WHEN <condition_1> then <result_1>
WHEN <condition_2> then <result_2>
...
else <result_n>
END
七、用戶自定義函數
八、MapReduce
MapReduce是由Google最早提出的分布式數據處理模型, MR是一種簡單 易用編程框架,基於該框架的程序可以運行在多個機器的集群上,並以-種安全可靠的方式處理TB、PB級別的海量數據。
MR框架處理數據過程主要分成兩個階段:
Map階段和Reduce階段。通常會把輸入的數據集切分為若干獨立的數據塊,由map任務以完全並行的方式處理它們。框架會對map的輸出先進行排序,然后把結果輸入給reduce任務。
MapReduce框架
MR框架運轉在<key, value>鍵值對上,也就是說,框架把作業的輸入看為是一組<key, value>鍵值對,同樣也產出一組<key, value>鍵值對做為作業的輸出, 這兩組鍵值對的類型可能不同。
九、Graph
MaxCompute Graph是一套面向迭代的圖計算處理框架。圖計算作業使用圖進行建模,圖由點(Vertex)和邊(Edge)組成,點和邊包含權值(Value)。通過迭代對圖進行編輯、演化,最終求解出結果,典型應用: PageRank ,單源最短距離算法, K-均值聚類算法等等。用戶可以使用MaxCompute GRAPH提供的接口Java SDK編寫圖計算程序。
圖計算用於挖掘人、物等實體之間的潛在的不易觀察的行為和聯系,這些聯系很難通過傳統的關系型數據庫表示。
■最短路徑:好友推薦、轉賬檢測、計算關系緊密程度
■最小連通圖:洗錢、虛假交易等
■關鍵人物識別:尋找意見領袖,防止客戶流失的群體效應
■PageRank :傳播影響力分析
十、MaxCompute安全與權限
1.授權
授權操作一般涉及到三個要素:主體(Subject ,可以是用戶或者角色),客體(Object)和操作(Action)。在MaxCompute中,主體是指用戶或角色,客體是指項目空間中的各種類型對象, 操作則與特定對象類型有關,不同類型的對象支持的操作也不盡相同。
關於授權的一些說明:
■主題主要包括用戶、角色等
■客體包括項目空間Project、 表Table、 函數Function等
■操作和授權的對象相關 ,以表為例,支持: Describe、Select、 Update、 Drop、 All等
■主要的動作包括授予( grant)、收回( revoke)、查看( show grants )等:
➢grant actions on object to subject
➢revoke actions on object from subject
➢show grants for subject
2.添加用戶並授權
決定對另一個用戶授權時,需要先將該用戶添加到自己的項目空間中來。添加用戶的語法如下:
add user <username>;
當一個用戶離開此項目團隊時,需要將該用戶從項目空間中移除。用戶一旦從項目空間中被移除,該用戶將不再擁有任何訪問項目空間資源的權限。移除用戶的命令如下:
remove user <username> ;
用戶授權需注意:
➢當一個用戶被移除后,該用戶不再擁有訪問該項目空間資源的任何權限。
➢移除一個用戶之前,如果該用戶已被賦予某些角色,則需要先撤銷該用戶的所有角色。
➢當一個用戶被移除后,與該用戶有關的ACL授權仍然會被保留。一旦該用戶以后被再添加到該項目空間時,該用戶的歷史的ACL授權訪問權限將被重新激活。
➢MaxCompute目前不支持在項目空間中徹底移除個用戶及其所有權限數據
3.角色管理
角色( Role )是一組訪問權限的集合,當需要對一組用戶賦予相同的權限時,可以使用角色授權,可以大大簡化授權流程,降低授權管理成本。
角色管理基本語法:
創建角色:
create role <rolename>
刪除角色:
drop role <rolename> ;
給用戶指派某種角色:
grant <rolename> to <username> ;
撤銷角色指派:
revoke < rolename> from <username> ;
角色授權需注意:
■創建項目空間時會自動創建一 個admin角色,被授予固定權限,不能被修改
■刪除一個角色時,只有在該角色的所有用戶都被撤銷后才會成功
■大數據開發套件中成員角色類型對應 了不同的MaxCompute角色
4.項目空間安全設置
MaxCompute是一個支持多租戶的數據處理平台,不同的租戶對數據安全需求不盡相同。為了滿足不同租戶對數據安全的靈活需求, MaxCompute支持項目空間級別的安全配置, ProjectOwner可以定制適合自己的外部賬號支持和鑒權模型。
查看鑒權模型的語句:
show SecurityConfiguration ;
5.鑒權模型
6.項目空間保護
ProjectProtection :項目空間的數據保護,是否允許數據流出項目空間。缺省值為關閉( false )。一旦當項目空間開啟項目空間的數據保護機制后,無法將項目空間中的數據轉移到項目空間之外,所有的數據只能在項目空間內部流動。
set ProjectProtection=true ;
TrustedProject :可信項目空間。項目空間( prj1 )保護選項打開后,數據無法流出,若有一個項目空間( prj2 ) ,按照業務需求項目空間prj2可以從項目空間prj1中正常獲取數據,則可以在項目空間prj1中把項目空間prj2設置為可信項目空間,設置成功后,prj1中的數據可以正常流轉至項目空間prj2。不過是單向的
add trustedproject prj2;