- 熟悉大数据计算服务基本概念,包括项目空间、表、分区、资源、任务、生命周期、实例、函数、ACID特性
- MaxCompute的输入和输出都是表
- 生命周期只能指定到表级别,而不是在分区级设定生命周期
- 在MaxCompute中,并不是所有的请求都会被转换成任务,如:项目空间、资源、实例、自定义函数的 *** 作
- 了解大数据计算服务的组成架构和各组成部分功能
- 客户端有:RESTful API、Java、R、Web、Command
- 接入层:返回Account ID给HTTP Server
- 逻辑层(控制层):项目空间的管理、对象管理(表、资源和作业)、授权管理、命令解析、元数据
- 请求处理器Woker:本地能处理的作业有用户空间、表、资源等,需要提交给调度器的作业有SQL、MapReduce的分布式任务
- 作业是静态概念,作业对象生成了XML文件
- 作业实例是动态概念,每个作业实例只运行1次
- 调度器:对task进行排序、把Instance分解成task、生成DAG
- 作业执行器:向TaskPool申请Task,并将计算任务提交给计算层
- 计算层:计算层就是飞天内核
- 女娲:高可用的协同服务
- 盘古:存储资源
- 伏羲:资源管理和调度
- 夸父:远程过程调用
- 钟馗:安全管理
- MaxCompute的元数据存储在OTS上,大规模、高性能(毫秒级别和千万QPS)、可扩展
- 掌握大数据计算服务的特点、优势以及适用场景
- MaxCompute的特点
- 分布式:分布式集群、跨集群技术、可灵活扩展
- 安全性:自动存储纠错、沙箱机制、多份备份
- 易用:标准API、全面支持SQL、上传下载工具
- 权限控制:多租户管理、用户权限策略、数据访问策略
- 优势:
- 大规模计算存储
- 多种计算模型
- 强数据安全
- 低成本
- 面运维
- 极致d性扩展
- 使用场景
- 基于SQL构建大规模数据仓库系统和BI系统
- 基于DAG/Graph构建大型分布式应用系统
- 基于统计和机器学习的大数据统计和数据挖掘
- 掌握大数据计算服务的连接和使用方式,包括使用客户端、管理控制台、JavaSDK等
- 掌握大数据计算服务的数据上传和下载,可以熟练的使用
- MaxCompute提供了两种数据上传下载的通道:
- DataHub实时数据通道:包含的工具有OGG插件、Flume插件、LogStash插件和Fluentd插件。
- Tunnel批量数据通道:包含的工具有MaxCompute客户端、DataWorks、DTS、Sqoop、Kettle 插件以及MMA迁移工具。
- DataHub和Tunnel各自也提供了SDK,而基于这些SDK衍生的数据上传下载的工具,方便您在各种场景下的数据进行上传/下载的需求
- Tunnel命令行工具,了解TunnelSDK
- Tunnel是MaxCompute数据对外的统一通道
- Tunnel的上传和下载都只支持一个表或者一个分区,有分区的表一定要指明分区名和末级分区;上传支持目录上传,下载只能下载单个文件
- 上传支持断点上传,下载则不支持断点下载
- Resume:网络的原因可以通过该命令进行续传
- Purge:清理Session目录
- 列分隔符:-fd,支持多个字符、不可见字符、转义字符来做分隔符,但是列分隔符不能包含行分隔符,默认为逗号
- 行分隔符:-rd,同列分隔符,默认值为rn
- insert overwrite来写入表中,分区可以不用存在;tunnel写入数据时,分区一定要存在,否则通过-acp来指明
- 掌握大数据计算服务的SQL命令,包括DDL、DML以及常见内置函数
- like和as的区别
- as可以复制表的数据,而like不能复制表的数据
- as不能复制生命周期、分区键信息、注释等,而like只是不能复制生命周期
- 多路输出Multi Insert
- 单个SQL里最多可以写255路输出
- 对于分区表,同一个目标分区不可以出现多次
- 对于未分区表,该表不能作为目标表出现多次
- 对于同一张分区表的不同分区,不能同时有 insert overwrite 和 insert into *** 作
- MapJoin HINT
- 使用情景:一个大表和一个或多个小表做join
- 基本原理:将小表加载到内存中,加快join的速度
- 注意:
- left outer join 的左表必须是大表
- right outer join 的右表必须是大表
- inner join 左表或右表均可以作为大表
- full outer join不能使用 mapjoin
- 支持小表为子查询
- 引用小表或是子查询时,需要使用别名
- 可以使用不等值连接或者使用 or 连接多个条件
- 目前最多支持指定128张小表
- 所有小表占用的内存总和不得超过512M
- 利用MaxCompute里对表的Archive功能,可以将存储空间压缩50%左右。Archive功能将数据存为raid file,数据不再简单的存三份,而是6份数据+3份校验块的方式,这样有效的存储比约为从1:3提高到1:1.5,可以节省一半的物理空间,另外也采用了更高压缩比的压缩算法。
ALTER TABLE [table_name]ARCHIVE;
- 熟悉大数据计算服务的用户自定义函数,包括UDF、UDAF以及UDTF,可以编写简单的自定义函数
- UDF:用于传递给它的一个或多个参数值进行处理和计算,并返回一个单一的值
- 可以使用在where语句中
- 输入和输出是1对1
- UDTF:解决一次函数调用输出多行多列数据场景的唯一能返回多个字段的用户自定义函数
- 不支持在同一个select子句中与 group by、distribute by / sort by 联用UDTF
- 函数输入和输出是一对多的
- 同一个 SELECT子句中不允许有其他表达式
- 不能嵌套使用
- UDAF:将多条输入记录聚合成一条输出值后输出。
- 输入与输出是多对一的关系
- 可以与 SQL中的Group By语句联用
- 熟悉大数据计算服务的MapReduce编程框架,可以配置
- MapReduce的输入不支持视图
- 核心接口:
- Mapperbase
- Reducebase
- Task Context
- JobClient
- RunningJob
- JobConf
- MR注意事项
- 表 String 列长度不允许超过 8 MB
- 单个任务引用的资源数量不超过256个
- 单个任务引用的资源总计字节数大小不超过2GB
- 单个任务的输入/输出路数不能超过1024/256
- 单个任务中自定义Counter数不能超过64。
- 单个任务Map Worker个数小于100000,不可配置
- 单个任务默认Reduce Worker个数为Map Worker个数的1/4,不可配置
- 单个 MR Worker占用memory默认为2048,范围[256MB, 12GB]。
- 单个 MR Worker重复读一个资源次数限制不超过64次。
- Eclipse的环境,编写简单的MR程序
- 了解大数据计算服务的Graph编程框架,包括基本概念、处理流程等,可以编写简单的Graph程序
- 图的迭代计算终止条件:
- 所有点均处于已结束状态
- 达到最大迭代次数
- 某个Aggregator的terminate返回True
- 使用Jar命令来运行Graph作业
- Graph作业的输出和输入限制为表,支持多路输出,但是不支持分区过滤条件
- 处理流程:加载图、迭代计算、迭代终止
- Graph的优化
- 调整作业参数
- 运用Combiner
- 减少数据输入量
- 应用内置Jar包
- Java沙箱限制
- 不允许直接访问本地文件
- 通过 MaxCompute MapReduce/Graph 提供的接口间接访问,读取 resources 选项指定的资源,包括文件、jar 包和资源表等
- 通过 System.out 和 System.err 输出
- 日志信息,可以通过 MaxCompute 客户端的 Log 命令查看日志信息
- 不允许直接访问分布式文件系统,只能通过 MaxCompute MapReduce/Graph 访问到表的记录
- 不允许 JNI 调用限制
- 不允许创建 Java 线程,不允许运行子进程执行 Linux 命令
- 不允许访问网络,包括获取本地 IP 地址等都会被禁止
- Java 反射限制:suppressAccessChecks 权限被禁止,无法 setAccessible 某个 private 的属性或方法以达到读取 private 属性或调用 private 方法的目的。具体的说,即在用户代码中直接使用上面的这些方法会报 access denied 异常
- 不允许直接访问本地文件
- 了解大数据计算服务DataHub的相关概念和使用方法
- 熟悉大数据计算服务的安全和权限管理的概念和实际 *** 作,包括用户、角色、授权(ACL&Policy)、项目空间保护、例外以及安全等级等
- Super_Administrator角色:内置的管理角色,拥有 *** 作项目内所有类型资源的权限和管理类权限。
- Admin角色:内置的管理角色,拥有 *** 作项目内所有资源的权限和部分基础管理类权限。
- Admin角色的权限不能被修改,没被使用的角色才可以被删除
- 授权的三要素:主体、客体和 *** 作;授权的两方法:ACL和Policy
- Policy 主要解决 ACL 无法实现的一些复杂授权场景
- 一次 *** 作对一组对象进行授权(即黑名单授权)
- 带限制条件的授权
- 支持通配符(*)授权
- ACL授权要求主客体必须存在,删除对象也会自动撤销相关的权限;而Policy不会
- 基于标签的安全控制是项目空间级别的一种强制访问控制策略 (Mandatory Access Control, MAC),它的引入是为了让项目空间管理员能更加灵活地控制用户对列级别敏感数据的访问。(0-9级) 强制访问控制机制(MAC)独立于自主访问控制机制(DAC)
- LabelSecurity的注意事项:
- 用户的安全许可标签和文件敏感等级取值均为 0 到 9 ,两者相互对应
- 显式设置的列的敏感等级优先级高于表的敏感等级,和顺序、等级高低无关
- 设置包时,若省略[using label ],则默认为 0 级,即只可以访问非敏感数据
- 跨项目空间访问敏感数据时,包安装者的项目空间中的所有用户都将使用此许可的访问级别
- LabelSecurity 安全机制开关必须由 owner 打开,admin 角色没有此权限
- 设置ProjectProtection,数据只能流入不能流出
- 如果需要设置合规数据流出,需要:
- 设置例外策略
- 项目互信
- 如果需要设置合规数据流出,需要:
- 熟悉DataWorks的基本功能模块,包括数据开发、数据管理、运维中心、组织管理以及项目管理等
- DataWorks支持多种计算和存储引擎服务,包括离线计算MaxCompute、开源大数据引擎EMapReduce、实时计算(基于Flink)、机器学习PAI、图计算服务Graph Compute和交互式分析服务等,并且支持用户自定义接入计算和存储服务。
- 了解DataWorks的基本特点,包括角色隔离、环境隔离等可以使用项目管理和组织管理模块搭建环境
- 角色隔离
- 组织管理员:可新建计算引擎、新建项目空间、新建调度资源、添加组织成员、为组织成员赋予组织管理员角色、配置数据类目等
- 项目管理员:指项目空间的管理者,可针对项目空间基本属性、数据源、当前项目空间计算引擎配置和项目成员进行管理,并为成员赋予项目管理员、开发、运维、部署、访客角色
- 开发:开发角色用户能够创建工作流、脚本文件、资源和UDF, 新建表,同时可以创建发布包,但不能执行发布 *** 作
- 运维:项目空间的运维人员,由项目管理员/项目所有者分配运维权限;拥有发布及线上运维的 *** 作权限,无数据开发的 *** 作权限
- 部署:部署角色与运维角色相似,但是其没有线上运维 *** 作权限
- 访客:访客角色的用户只具备查看权限,而无权限进行编辑工作流和代码等
- 安全员:安全员安全管理员仅在数据保护伞中用到,用于敏感规则配置,数据风险审计等
- 熟练使用DataWorks的数据开发模块进行设计开发,包括建表、任务开发、资源上传、数据上传、新增函数等
- 熟练使用DataWorks的数据开发模块进行工作流任务和节点任务的开发设计,并且可以配置合适的依赖和周期性调度熟练使用数据管理模块进行数据管理,包括血缘分析、表的使用权限申请和授权等
- 对于使用过程中出现的问题,能够识别、定位,对其中基本的问题能进行修复
- 了解数据集成的基本概念和工作流程
- 熟练使用数据集成进行多种场景下的数据同步,可以从不同的数据源同步数据到大数据计算服务
- 数据同步通常会对接源端和目标端的数据存储,需要根据来源和目标两端数据源的具体信息适配和转换相应的数据内容。在传输过程中,可能存在由于两端元数据不匹配或者本身的业务数据传输转换失败的情况,数据集成自动识别“脏”数据并提供容错机制。
- 脏数据可能产生的原因:
- 数据类型转换出错,如String[""]不能转为 Long ;
- 数据超出定义范围(Out of range value),如源端设置的是 smallint(5),目标端是 int(11) unsigned,因为smallint(5)范围有负数,unsigned 不允许有负数,所以产生脏数据;
- 存储表情符emoj,数据表配置成了可以存储 emoj 的,同步时报脏数据;
- 空字段引起的脏数据
- 通道控制参数并发控制
- 并发:可视为数据同步任务内,从源并行读取或并行写入数据存储端的最大线程数;
- 向导模式通过界面化配置并发数,指定任务所使用的并行度;脚本模式通过代码设置。
- 并发配置的越大,则所需要的系统资源越多,在网络状况和读写端数据源能力满足的情况下,同步速度可以呈线性增长。
- 错误记录数:错误记录数,表示脏数据的最大容忍条数。
- 配置为0,表示严格不允许脏数据存在;
- 配置为大于0的数,表示错误记录达到此数,同步任务结束;
- 不填此项,则代表允许存在脏数据,即如果出现脏数据,数据集成会记录并打印部分脏数据;
- 切分键:为最大化数据同步的 Job 传输吞吐量,数据集成将对 Job 进行更细粒度的任务切分, 并启动多个数据传输单元进行并行数据同步。
- 数据集成的切分规则由数据集成框架定义接口,具体切分规则交由具体传输插件负责实现,默认为源表的主键或有索引的列作为切分键。
- 字段映射配置:数据集成数据同步面向是结构化、半结构化的数据同步,数据集成对于源宿两端数据源均会抽象为一张二维表进行传输和映射。数据集成对于字段的映射是按照配置字段顺序进行一一映射,而非依赖源宿两端字段名称。
- 配置约定:
- 源端字段和目标端字段个数一致,数据集成推荐配置源宿两端数据字段个数一致,避免数据字段补空情况。
- 源端字段比目标端字段多,意味着一定存在数据丢失情况,为避免数据丢失,建议目标增加相应字段。
- 源端字段比目标端字段少,数据集成对该类情况直接在导入数据末尾添加 null,做补空处理。
- 配置约定:
- 了解数据售成中的DataX组件,包括概念、功能以及实际使用
- 了解并能正确使用数据集成中的字段映射、常量使用、变量使用、导入导出规则等
- 了解数据集成的最佳实践,比如切分键配置等
- 能够对使用过程中出现的常见问题进行排查,并能解决其中的基本问题
- 对于数据集成中的脏数据能够进行正确的处理
- 了解QuickBl的产品特点和使用场景
- 掌握服务开通、数据源配置、数据分析等基本 *** 作
- Quick BI支持本地上传数据源(csv文件或者excel文件)
- 了解各种常见统计图表的适用场景和使用方法(视频)
- 能够使用QuickBI进行仪表盘设计、报表门户设计
- 了解机器学习的基本知识掌握常见的机器学习算法
- 能够使用机器学习PAI对数据集进行数据处理和探索式统计分析
- 能够使用机器学习PAI对数据集进行聚类、分类等数据分析
- 能够使用DataWorks部署应用机器学习中的模型
- 了解其他相关云产品的特点和应用场景,包括云数据库、RDS、分布式关系型数据库DRDS表格存储(Table Store)、分析型数据库(AnalyticDB)、对象存储OSS等
- 了解大数据计算服务数据工场DataWorks、数据集成
- QuickBl及机器学习PAI等如何与其他相关产品配合使用能根据实际的应用场景,结合阿里云产品的特点设计合理的基础架构
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)