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

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 本文主要介绍厦门美柚科技有限公司在基于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)
  • 各个项目的资源独立计费,每个团队的资源消耗情况如下图各个项目所使用情况一目了然TIM_20170705162725
  • 各个项目由各自团队管理,减少项目管理员的工作量,并且可以根据各自团队的实际情况细分权限

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

待解决问题

项目间的数据表,资源,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项目的一个最佳实践,欢迎有兴趣的同学互相交流

image

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

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
30天前
|
存储 机器学习/深度学习 分布式计算
大数据技术——解锁数据的力量,引领未来趋势
【10月更文挑战第5天】大数据技术——解锁数据的力量,引领未来趋势
|
9天前
|
数据采集 监控 数据管理
数据治理之道:大数据平台的搭建与数据质量管理
【10月更文挑战第26天】随着信息技术的发展,数据成为企业核心资源。本文探讨大数据平台的搭建与数据质量管理,包括选择合适架构、数据处理与分析能力、数据质量标准与监控机制、数据清洗与校验及元数据管理,为企业数据治理提供参考。
42 1
|
1月前
|
分布式计算 关系型数据库 MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
47 3
|
3天前
|
存储 大数据 定位技术
大数据 数据索引技术
【10月更文挑战第26天】
13 3
|
3天前
|
存储 大数据 OLAP
大数据数据分区技术
【10月更文挑战第26天】
18 2
|
6天前
|
消息中间件 分布式计算 大数据
数据为王:大数据处理与分析技术在企业决策中的力量
【10月更文挑战第29天】在信息爆炸的时代,大数据处理与分析技术为企业提供了前所未有的洞察力和决策支持。本文探讨了大数据技术在企业决策中的重要性和实际应用,包括数据的力量、实时分析、数据驱动的决策以及数据安全与隐私保护。通过这些技术,企业能够从海量数据中提取有价值的信息,预测市场趋势,优化业务流程,从而在竞争中占据优势。
32 1
|
8天前
|
数据采集 分布式计算 大数据
数据治理之道:大数据平台的搭建与数据质量管理
【10月更文挑战第27天】在数字化时代,数据治理对于确保数据资产的保值增值至关重要。本文探讨了大数据平台的搭建和数据质量管理的重要性及实践方法。大数据平台应包括数据存储、处理、分析和展示等功能,常用工具如Hadoop、Apache Spark和Flink。数据质量管理则涉及数据的准确性、一致性和完整性,通过建立数据质量评估和监控体系,确保数据分析结果的可靠性。企业应设立数据治理委员会,投资相关工具和技术,提升数据治理的效率和效果。
35 2
|
10天前
|
存储 安全 大数据
大数据隐私保护:用户数据的安全之道
【10月更文挑战第31天】在大数据时代,数据的价值日益凸显,但用户隐私保护问题也愈发严峻。本文探讨了大数据隐私保护的重要性、面临的挑战及有效解决方案,旨在为企业和社会提供用户数据安全的指导。通过加强透明度、采用加密技术、实施数据最小化原则、加强访问控制、采用隐私保护技术和提升用户意识,共同推动大数据隐私保护的发展。
|
14天前
|
SQL 存储 大数据
大数据中数据提取
【10月更文挑战第19天】
37 2
|
30天前
|
SQL 消息中间件 大数据
大数据-159 Apache Kylin 构建Cube 准备和测试数据(一)
大数据-159 Apache Kylin 构建Cube 准备和测试数据(一)
45 1

相关产品

  • 云原生大数据计算服务 MaxCompute