天天看點

MaxCompute多團隊協同資料開發項目管理最佳實踐MaxCompute多項目管理最佳實踐

廈門美柚科技有限公司,創始于2013年4月,是一家專注為女性服務的網際網路公司。秉承“讓女人更美更健康”的理念,美柚以經期管理為切入點,為女性提供備孕、懷孕、育兒、社群交流等功能服務。目前,美柚使用者超過1億,日活躍使用者近千萬,擁有約160個高活躍的女性話題圈,社群内使用者日均互動量超500萬帖,日均浏覽量超過1.8億次。之前各種資料開發、資料支援、資料挖掘都在同一個項目中,随着公司業務線的不斷擴充,規模的不斷壯大,參與大資料開發的部門(團隊,人數)也越來越多,單項目的弊端慢慢顯現出來:

權限管理混亂,任務和資料經常被他人修改、覆寫

開發人員衆多,水準參差不齊,任務依賴比較混亂,一旦有任務失敗,會導緻多條業務線無法正常産出資料

争搶計算資源,導緻重要任務因搶不到資源無法如期完成

由于人員衆多資料權限設定不規範,常常都是賦予較高的角色權限,風險比較高

各團隊成本核算問題,無法準确評估各個團隊所占用的資源情況

基于以上的種種弊端,經評估決定引入多個項目,先來個整體架構圖

MaxCompute多團隊協同資料開發項目管理最佳實踐MaxCompute多項目管理最佳實踐

這樣子各個團隊都有自己的項目,自己管理自己的項目,優點就很明顯

通過項目隔離,有效的防止資料和任務被其他團隊修改和删除等問題

除非是pro項目任務出錯,否則不會影響到其他業務線的任務,最大程度降低各業務間的影響

各個項目的資源獨立計費,每個團隊的資源消耗情況如下圖各個項目所使用情況一目了然

MaxCompute多團隊協同資料開發項目管理最佳實踐MaxCompute多項目管理最佳實踐

各個項目由各自團隊管理,減少項目管理者的工作量,并且可以根據各自團隊的實際情況細分權限

雖然有以上這些優點,但是同時也會帶來其他的不便

項目間的資料表,資源,udf共享(主要還是讀操作)

現在介紹如何解決跨項目帶來的不便:

maxcompute有個package的概念,現在我就通過指令行的方式向大家介紹如何通過package來解決跨項目的共享問題:以pro項目中的table共享給其他項目:bi為例(其他項目類似)

在pro項目中建立1個package (可根據實際情況建立,我這邊是建立3個package:tables_package,functions_package,resources_package) 指令是: <code>use pro ; create package tables_package;</code> (以下以tables_package為例,其他的類似)

往tables_package中添加資料表(function,資源): <code>add table ** to package tables_package ;</code> ( add function ** to package function_package ; | add resource ** to package resources_package ;)

在pro項目中允許其他(bi)項目install package 包: <code>allow project bi to install package tables_package;</code>

在bi項目中,安裝package tables_package 包: <code>use bi ; install package pro.tables_package ;</code>

在b項目從查詢tables_package所包含的表、資源、udf: <code>desc package pro.tables_package;</code>

在b項目中使用pro項目的表,udf: <code>select pro:udf() from pro.table where **** ;</code> udf調用時項目名加冒号pro:udf(),表調用時項目名加點pro.table.

需要注意的是: 第5項這樣是針對特定的人或角色,我們目前的做法是将pro項目下的表和udf以隻讀的方式共享給其他的項目的所有成員,是以可以通過policy授權的方式統一授權隻讀權限給b項目下的所有人(policy相關的官方文檔:),方法如下:

<code>use bi; install package pro.tables_package; put policy /tmp/policy.txt;</code>

/tmp/policy.txt内容如下:

`{

}

`

最後在這提出一點可以改進的地方:

在pro項目中新增表的時候,希望能夠自動add到對應的package裡,免得每建立一張表就得再執行<code>add table *** to package *** ;</code>

以上是我們廈門美柚科技有限公司在管理maxcompute項目的一個最佳實踐,歡迎有興趣的同學互相交流

MaxCompute多團隊協同資料開發項目管理最佳實踐MaxCompute多項目管理最佳實踐

最後要感謝阿裡雲的maxcompute團隊給我們提供這樣的大資料平台,特别要感謝雲郎和海清,求助于他們才得以順利解決跨項目的資料和資源的共享問題.

繼續閱讀