MaxCompute多團隊協同數據開發項目管理最佳實踐
背景:
之前各種數據開發、數據支持、數據挖掘都在同一個項目中,隨著公司規模的不斷壯大,參與大數據開發的部門(團隊)也越來越多,單項目的弊端慢慢顯現出來:
弊端:
許可權管理混亂,任務和數據經常被他人修改、覆蓋
開發人員眾多,水平參差不齊,任務依賴比較混亂,一旦有任務失敗,會導致多條業務線無法正常產出數據
爭搶計算資源,導致重要任務因搶不到資源無法如期完成
由於人員眾多數據許可權設置不規範,常常都是給多個角色許可權的,風險比較高
各團隊成本核算問題,無法準確評估各個團隊所佔用的資源情況
基於以上的種種弊端,經評估決定引入多個項目,先來個整體架構圖
多項目架構圖:
這樣子各個團隊都有自己的項目,自己管理自己的項目,優點就很明顯
優點
通過項目隔離,有效的防止數據和任務被其他團隊修改和刪除等問題
除非是pro項目任務出錯,否則不會影響到其他業務線的任務,最大程度降低各業務間的影響
針對不同的項目可以配置不同的收費策略:例如mining項目,可能只有當做數據挖掘的時候會消耗大量的計算資源,而通常可能一周才會訓練一次;因此按量計費會比較划算,也避免搶佔其他項目任務的資源(計量計費說明參看:https://help.aliyun.com/document_detail/27989.html?spm=5176.doc35455.6.557.7aee7V)
各個項目的資源獨立計費,每個團隊的資源消耗情況如下圖各個項目所使用情況一目了然
各個項目由各自團隊管理,減少項目管理員的工作量,並且可以根據各自團隊的實際情況細分許可權
雖然有以上這些優點,但是同時也會帶來其他的不便
缺點
項目間的數據表,資源,udf共享(主要還是讀操作)
解決方案
現在介紹如果解決跨項目帶來的不便:
MaxCompute有個package的概念,現在我就通過命令行的方式向大家介紹如何通過package來解決跨項目的共享問題:**以pro項目中的Table共享給其他項目:BI為例**(其他項目類似)
操作步驟
在pro項目中創建1個package (可根據實際情況創建,我這邊是創建3個package:tables_package,functions_package,resources_package) 命令是:
use pro ; create package tables_package;
(以下以tables_package為例,其他的類似)往tables_package中添加數據表(function,資源):
add Table ** to package tables_package ;
( add function ** to package function_package ; | add resource ** to package resources_package在pro項目中允許其他(BI)項目install package 包:
allow project BI to install package tables_package;
在BI項目中,安裝package tables_package 包:
use BI ; install package pro.tables_package ;
在BI項目中,授權給用戶或角色:
use BI ; grant read on package pro.tables_package to user aliyun$odps_test@aliyun.com;
(具體授權可以參考MaxCompute官方幫助文檔:https://help.aliyun.com/document_detail/27935.html?spm=5176.doc27807.2.6.D6aL6R)在B項目從查詢tables_package所包含的表、資源、UDF:
desc package pro.tables_package;
在B項目中使用pro項目的表,udf:
select pro:udf() from pro.table where **** ;
udf調用時項目名加冒號pro:udf(),表調用時項目名加點pro.table.
需要注意的是: 第5項這樣是針對特定的人或角色,我們目前的做法是將pro項目下的表和udf以只讀的方式共享給其他的項目的所有成員,因此可以通過Policy授權的方式統一授權只讀許可權給B項目下的所有人(policy相關的官方文檔:),方法如下:
use BI; install package pro.tables_package; put policy /tmp/policy.txt;
/tmp/policy.txt內容如下:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "odps:Read",
"Resource": [
"acs:odps:*:projects/BI/packages/pro.functions_package"
]
}
]
}
最後在這提出一點可以再改進的地方:
在pro項目中新增表的時候,希望能夠自動add到對應的package里,免得每新建一張表就得再執行
add table *** to package *** ;
以上是我公司在使用MaxCompute的一個最佳實踐
※打造雲上代碼交付鏈,CodePipeline實踐分享
※重磅!完美融合Kubernetes,Ghostcloud企業級容器雲平台EcOS率先實現雙容器調度
※專訪|楊強教授談CCAI、深度學習泡沫與人工智慧入門
※擁抱開發過程中的「黑天鵝」
TAG:雲棲社區 |
※使用Jira software+Structure實現大規模跨團隊項目管理
※OpenStack自己的容器管理項目Zun的實踐
※Python web開發:Flask的項目配置
※如何在 Emacs 中使用 Magit 管理 Git 項目
※Karmin更新Aripuan?鋅項目開發
※項目評級——RewardMob
※700 Manhattan Development項目在Koreatown開工建設
※MR內容創作分發平台Minsar入選Magic Leap創作者計劃項目
※為刺激VR/AR領域發展 Digital Catapult再次啟動Augmentor項目
※開啟第一個WeChat Applet項目開發之旅
※Servlet+MyBatis項目轉Spring Cloud微服務,多數據配置修改建議
※IBM介紹Project Debater人工智慧辯手項目最新進展
※歐貳國際 International O2 Design 建築設計項目部
※flask 項目中使用 bootstrapFileInput
※Apache頂級項目孵化的故事-CarbonData成長史
※Decred 的未來:項目負責人 Jake Yocom-Piatt 獨家專訪
※重磅項目—ContentBox
※VMware 收編 Serverless OpenFaaS 創始人;戴爾關閉開源項目
※Adobe的Aero項目旨在幫助創作者開發AR內容
※Github 項目推薦 用PyTorch 實現 OpenNMT