MaxCompute多团队协同数据开发项目管理最佳实践

MaxCompute多项目管理最佳实践

背景介绍:

厦门美柚科技有限公司,创始于2013年4月,是一家专注为女性服务的互联网公司。秉承“让女人更美更健康”的理念,美柚以经期管理为切入点,为女性提供备孕、怀孕、育儿、社区交流等功能服务。目前,美柚用户超过1亿,日活跃用户近千万,拥有约160个高活跃的女性话题圈,社区内用户日均互动量超500万帖,日均浏览量超过1.8亿次。之前各种数据开发、数据支持、数据挖掘都在同一个项目中,随着公司业务线的不断扩充,规模的不断壮大,参与大数据开发的部门(团队,人数)也越来越多,单项目的弊端慢慢显现出来:

发现弊端:

  • 权限管理混乱,任务和数据经常被他人修改、覆盖
  • 开发人员众多,水平参差不齐,任务依赖比较混乱,一旦有任务失败,会导致多条业务线无法正常产出数据
  • 争抢计算资源,导致重要任务因抢不到资源无法如期完成
  • 由于人员众多数据权限设置不规范,常常都是赋予较高的角色权限,风险比较高
  • 各团队成本核算问题,无法准确评估各个团队所占用的资源情况

基于以上的种种弊端,经评估决定引入多个项目,先来个整体架构图

多项目架构图:

这样子各个团队都有自己的项目,自己管理自己的项目,优点就很明显

优点

  • 通过项目隔离,有效的防止数据和任务被其他团队修改和删除等问题
  • 除非是pro项目任务出错,否则不会影响到其他业务线的任务,最大程度降低各业务间的影响
  • 针对不同的项目可以配置不同的收费策略:例如mining项目,可能只有当做数据挖掘的时候会消耗大量的计算资源,而通常可能一周才会训练一次;因此按量计费会比较划算,也避免抢占其他项目任务的资源(计量计费说明参看:https://help.aliyun.com/document_detail/27989.html?spm=5176.doc35455.6.557.7aee7V)
  • 各个项目的资源独立计费,每个团队的资源消耗情况如下图各个项目所使用情况一目了然
  • 各个项目由各自团队管理,减少项目管理员的工作量,并且可以根据各自团队的实际情况细分权限

虽然有以上这些优点,但是同时也会带来其他的不便

待解决问题

项目间的数据表,资源,udf共享(主要还是读操作)

解决方案

现在介绍如何解决跨项目带来的不便:

MaxCompute有个package的概念,现在我就通过命令行的方式向大家介绍如何通过package来解决跨项目的共享问题:以pro项目中的Table共享给其他项目:BI为例(其他项目类似)

操作步骤

  1. 在pro项目中创建1个package (可根据实际情况创建,我这边是创建3个package:tables_package,functions_package,resources_package) 命令是: use pro ; create package tables_package; (以下以tables_package为例,其他的类似)
  2. 往tables_package中添加数据表(function,资源): add Table ** to package tables_package ; ( add function ** to package function_package ; | add resource ** to package resources_package ;)
  3. 在pro项目中允许其他(BI)项目install package 包: allow project BI to install package tables_package;
  4. 在BI项目中,安装package tables_package 包: use BI ; install package pro.tables_package ;
  5. 在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)
  6. 在B项目从查询tables_package所包含的表、资源、UDF: desc package pro.tables_package;
  7. 在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项目的一个最佳实践,欢迎有兴趣的同学互相交流

最后要感谢阿里云的MaxCompute团队给我们提供这样的大数据平台,特别要感谢云郎和海清,求助于他们才得以顺利解决跨项目的数据和资源的共享问题.

时间: 2024-08-31 09:31:30

MaxCompute多团队协同数据开发项目管理最佳实践的相关文章

Hadoop+Spark+MongoDB+MySQL+C#大数据开发项目最佳实践

随着IT技术的飞速发展,各行各业都已在广泛尝试使用大数据技术提供更稳健和优质的服务.目前,医疗IT系统收集了大量极具价值的数据,但这些历史医疗数据并没有发挥出其应有的价值.为此,本文拟利用医院现有的历史数据,挖掘出有价值的基于统计学的医学规则.知识,并基于这些信息构建专业的临床知识库,提供诊断.处方.用药推荐功能,基于强大的关联推荐能力,极大地提高医疗服务质量,减轻医疗人员的工作强度.   二.Hadoop&Spark  目前大数据处理领域的框架有很多.   从计算的角度上看,主要有MapRed

Hadoop+Spark 大数据开发项目最佳实践

随着IT技术的飞速发展,各行各业都已在广泛尝试使用大数据技术提供更稳健和优质的服务.目前,医疗IT系统收集了大量极具价值的数据,但这些历史医疗数据并没有发挥出其应有的价值.为此 ,本文拟利用医院现有的历史数据,挖掘出有价值的基于统计学的医学规则.知识,并 基于这些信息构建专业的临床知识库,提供诊断.处方.用药推荐功能,基于强大的关联推荐能力,极大地提高医疗服务质量,减轻医疗人员的工作强度. 二.Hadoop&Spark 目前大数据处理领域的框架有很多. 从计算的角度上看,主要有MapReduce

数据产品经理最佳实践-数据战略规划

一.前言 到目前为止,取得这样的成果,我总结了一条经验:就是预先要把事情想清楚,把战略目的.步骤,尤其是出了问题如何应对,一步步一层层都想清楚:要有系统地想,这不是一个人或者董事长来想,而是有一个组织来考虑.当然,尽管不可能都想得和实际中完全一样,那么意外发生时要很快知道问题所在,情况就很好处理了.                                                                                                    

给大家推荐一本学习Web Service开发的最佳实践教程

问题描述 给大家推荐一本学习WebService开发的最佳实践教程.CSDN上传不了,PDF版下载地址http://down.51cto.com/data/265669 解决方案 解决方案二:现在不用下载了,这个地址可以看书的视频http://school.itzcn.com/special-spid-60.html解决方案三:下载下来的内容不全啊,才两章解决方案四:该回复于2011-12-23 09:05:24被版主删除解决方案五:你发不我的箱邮吧.ADDR:[email=c_oo_p@sin

数加DataWorks/MaxCompute在国网浙江电力的最佳实践

摘要:2017云栖大会dataworks专场,国网浙江电力大数据平台架构师陈振带来Dataworks/MaxCompute在国网应用的实践.本文主要从建设数据仓库的三个痛点开始谈起,引出企业级数仓架构设计,着重通过数据集成和企业级管理为大家分享了具体的应用情况,最后作了简要的展望.   以下是精彩内容整理: 背景&动机 由于长期业务系统的竖井式发展,导致业务系统中数据存储分散,当你要进行多个业务系统中数据的联合统计场景时,我们通常不得不汇总三到四个以上的业务系统数据,久而久之就会在数据中心里形成

【PHP】Yii2团队基于接口(interface)开发方式最佳实践

前言 貌似很多公司都转向了使用Yii2做项目开发~ 当团队开发人员过多的时候,对接口的定义就成了困难,再说,命名本来就是个玄学的东西. 之前早就听说过面向接口开发,这几天就试了下,感觉还不错,分享出来,一起进步. 最佳实践 单独存放的文件夹 我把接口文件放在项目中的custominterface中,再和相应控制器所在文件夹进行对应存放,保证项目的目录的存放合理 interface namespace app\custominterface\v2; /** * Created by PhpStor

LINQ快速开发设计最佳实践(二) 构建Model模型

一.摘要 第一篇文章我简要介绍了项目的设计框架和LINQ实现思想. 本篇文章将是最实际和具有技巧性的地方, 就是如何创建LINQ TO SQL 的模型对象. 二. 前言1.LINQ与LINQ TO SQL 姜敏同学提醒我要注意LINQ TO SQL和LINQ的不同.的确这两者就类似C#和.NET. 老赵曾写文章特别强调过两者的不同.这里再简单提一下. LINQ是Language-Integrated Query的缩写, 翻译后是"集成语言查询", 我将LINQ看做是一种查询框架, 拥有

【CURL】PHP的CURL开发项目最佳实践

前言 最近自己做了团队内部的http调试工具,github开源地址 https://github.com/diandianxiyu/ApiTesting ,通过这个项目又重新操作了PHP的curl函数,通过本篇博客进行记录,和大家一起学习~ Code 本代码通过PHP7环境运行. function curl($url, $method='GET',$fields = [], $headers=[],$auth = false){ //如果是get的获取方式,拼接参数到url上 if($metho

阿里云「MaxCompute最佳实践」征文大赛获奖文章公布

DT时代,越来越多的企业应用数据步入云端.与传统Hadoop相比,阿里云数加MaxCompute(原名ODPS)向用户提供了完善的数据导入方案以及多种经典的分布式计算模型,能够更快速的解决用户海量数据计算问题,有效降低企业成本,并保障数据安全.比如东润环能在3个月内业务全面交付云端,数据处理时间不到原来自建方式的1/3,并确保云上数据安全无忧.墨迹天气日志分析业务迁移到数加MaxCompute后,开发效率提升了超过5倍,存储和计算费用节省了70%,每天处理分析2TB的日志数据,更高效的赋能其个性