ODPS

2024-08-30 19:18
文章标签 odps

本文主要是介绍ODPS,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ODPS

ODPS 功能之概述篇

概述

ODPS是阿里云基于自有的云计算技术研发一套开放数据处理服务(Open Data Processing Service,简称 ODPS),具有TB/PB级数据计算能力,主要用于大数据仓库、挖掘、分析以及数据分享等场景。 今天阿里内部包括阿里贷款、数据魔方、DMP(阿里妈妈广告联盟)、余额宝等多款产品的数据分析都在使用ODPS。

ODPS 整体架构如下图,

主要分为三层:

接入层:以RESTful API方式提供服务,用户及数据应用通过Http/Https与接入层建立链接上传数据及提交数据分析作业;

逻辑层:ODPS的核心控制层,负责用户认证、签权、作业分发、Meta管理以及存储计算集群管理;

存储计算层:数据的存储及计算作业运行。该层是由多个集群构成,所有集群挂接到ODPS控制层。数据存储在飞天的盘古上,每个文件分三份存储。控制层将用户提交的计算作业调度不同的集群上。

ODPS功能

用户项目空间-Project

Project是用户使用ODPS时最先接触的概念,它类似Oracle的schema或者Mysql中的database。Project 也是ODPS中最基本的资源隔离单位,每个用户数据及计算任务都隶属于一个Project。 各Project 之间也可以通过授权建立共享通道,进行数据交换。Project 也是ODPS中的计量单元,收费也是以一个Project为基本单位的。

用户在使用ODPS之前,需要申请创建一个Project,有了Project之后,用户就可以上传数据做数据分析了。

数据处理流程

一般的大数据处理流程分为三部分,如下图所示:

1. 数据主要来源于在线系统,如业务数据库Mysql、Oracle,网站的日志文件。 这些数据都可以通过ODPS提供的数据通道功能导入到ODPS中;

2. 数据导入后,可以使用SQL、MR做数据分析,也可以使用流计算对数据进行聚合等操作,还可以使用机器学习算法对数据建模、预测。ODPS提供的是“All in One ”服务,只要数据导入到ODPS后,各种高大尚分析挖掘工具都可以直接拿过来使用,用户只需要关注在自己的数据业务,根本不需要关于底层是如何工作的;

3. 数据处理完毕后,如果是算法模型,可以使用ODPS的在线预测服务,将模型Push到在线预测系统中进行在线的数据预测。如果是分析结果,可以通过数据通道导回到Mysql 、Oracle中,与业务应用系统对接;

围绕这样的一个数据处理流程,ODPS在各个阶段提供了不同的功能。

数据存储

用户的数据上传到ODPS后,默认会以结构化的方式存储到ODPS的表。表隶属于Project,可以进行分区,有自己的数据类型,如Bigint, Boolean, Double, Datetime, String, Decimal。 数据上传后,以列压缩的方式存储到盘古上。这种压缩方式的好处就是对于文本类型的数据,一般都能取得较好的压缩比,一般是4:1,即10G的数据,在ODPS上的size为2.5G。每个文件默认会保存三份。

数据通道

根据数据分析的性质, ODPS提供两种数据通道-批量数据上传及实时数据上传两种。

批量数据上传适合大量数据的上传,批量上传通道限制每个写入ODPS的数据块最大为100G。每次上传完成后,调用Commit方法,数据即可保存到表中;

实时上传适合数据流处理的场景,如流计算,每次上传数据的packet为2M。通过实时通道上传的数据可以直接使用ODPS Stream SQL 进行流计算,也可以使用数据订阅接口将数据转发到第三方的流计算应用中,这个功能就类似于AWS的Kinesis。 通过实时上传的数据,默认会保存一份到ODPS表中,所以也可以通过实时通道向ODPS实时导入数据;

批量通道提供了上传和下载的接口,实时通道只提供了上传的接口,但同时也提供了订阅接口,允许数据被其它应用所订阅。

使用可以使用CLT中的数据上传命令将本地的文本文件上传至ODPS,也可以使用Java、Python SDK通过编程上传数据。 同时ODPS也引入了两个开源社区中日志数据上传的两大利器:Flume和Fluentd。用户可以使用这两个工具将各种源的数据上传到ODPS中。今天ODPS的用户大部分都在通过这两款工具将Web 日志实时导入到ODPS中做数据分析。

SQL

用户最熟悉使用SQL对数据分析了。ODPS也支持SQL查询操作,而且语法类似于Hive 的HQL。SQL操作的主要对象是表,数据量可在T级到P级。SQL中提供的功能有:

DLL:表、列、分区、视图、生命周期等操作 ;

DML:数据更新、多路输出以及动态分区输出 ;

Join:多表关联分析,支持 inner , left , right full join 以及mapjoin;

窗口函数:支持常见的窗口函数如avg,count 也支持滑动窗口;

UDF: 支持通过Java、Python编写UDF、UDAF和UDTF;

Stream SQL

通过实时通道上传的数据,可以直接使用Stream SQL做流计算。 ODPS 的流计算是一种创新的流计算方式,可以通过类SQL的语法就能定义流计算的作业,如:

创建一个流计算的任务,该任务引用stream_in表作为数据源,并且将结果写入stream_out表中

create streamjob streamjob1 as

insert into stream_out

select count(*)

from stream_in ;

end streamjob;

随着数据的上传,在ODPS客户端窗口中执行若干次

select * from stream_out;

会发现有一系列逐渐累积增长的汇总数据。

Stream SQL 支持单流计算、多流Join、同时还支持流与维表的Join,并提供了聚合、排序及子查询的功能。

MapReduce

ODPS提供了MapReduce的编程接口。用户在处理数据时,如果SQL满足不了要求,可以使用MapReduce。

MapReduce处理数据过程主要分成2个阶段:Map阶段和Reduce阶段。首先执行Map阶段,再执行Reduce阶段。Map和Reduce的处理逻辑由用户自定义实现, 但要符合MapReduce框架的约定。

• 在正式执行Map前,需要将输入数据进行”分片”。所谓分片,就是将输入数据切分为大小相等的数据块,每一块作为单个Map Worker的输入被处理, 以便于多个Map Worker同时工作。

• 分片完毕后,多个Map Worker就可以同时工作了。每个Map Worker在读入各自的数据后,进行计算处理,最终输出给Reduce。Map Worker在输出数据时, 需要为每一条输出数据指定一个Key。这个Key值决定了这条数据将会被发送给哪一个Reduce Worker。Key值和Reduce Worker是多对一的关系, 具有相同Key的数据会被发送给同一个Reduce Worker,单个Reduce Worker有可能会接收到多个Key值的数据。

• 在进入Reduce阶段之前,MapReduce框架会对数据按照Key值排序,使得具有相同Key的数据彼此相邻。如果用户指定了”合并操作”(Combiner), 框架会调用Combiner,将具有相同Key的数据进行聚合。Combiner的逻辑可以由用户自定义实现。与经典的MapReduce框架协议不同,在ODPS中, Combiner的输入、输出的参数必须与Reduce保持一致。这部分的处理通常也叫做”洗牌”(Shuffle)。

• 接下来进入Reduce阶段。相同的Key的数据会到达同一个Reduce Worker。同一个Reduce Worker会接收来自多个Map Worker的数据。 每个Reduce Worker会对Key相同的多个数据进行Reduce操作。最后,一个Key的多条数据经过Reduce的作用后,将变成了一个值。

由于目前ODPS MR只能处理ODPS中表里的数据,与Hadoop MR相比,不同的地方就在Map和Reduce 的声明上,如下:

ODPS MR的输入数据是表的Record,可以通过Record对象来获取每列的值,如:

ODPS对用户提供了JAVA的MR编程接口,同时还可以使用开源的Eclipse 开源插件在本地编写、调度MR程序,成功后再部署到ODPS上运行。

图模型-Graph

ODPS 提供了类似Google Pregel的图编程模型。 用户可以用来编写满足聚类、Pagerank以及求最短路径这样场景的算法。

ODPS GRAPH能够处理的图必须是是一个由点(Vertex)和边(Edge)组成的有向图。由于ODPS仅提供二维表的存储结构, 因此需要用户自行将图数据分解为二维表格式存储在ODPS中,在进行图计算分析时, 使用自定义的GraphLoader将二维表数据转换为ODPS Graph引擎中的点和边。

点的结构可以简单表示为 < ID, Value, Halted, Edges >,分别表示点标识符(ID),权值(Value),状态(Halted, 表示是否要停止迭代), 出边集合(Edges,以该点为起始点的所有边列表)。边的结构可以简单表示为<DestVertexID, Value >,分别表示目标点(DestVertexID)和权值(Value)。如下图所示:

典型的Graph 程序逻辑包括三步:

1. 加载图:通过自定义的GraphLoader将数据解析为点或边,并对数据分片,分配到相应的Worker上;

2. 迭代计算:遍历所有非结束状态的点或收到消息的点,并调用其Compute方法进行计算;

3. 迭代终止:所有点处于结束或达到最大迭代次数后,程序终止;

机器学习平台 DT PAI

DT PAI是阿里巴巴推出的基于云计算的机器学习平台。在这个平台上,用户可以使用多种算法及在线预测服务。

DT PAI的功能包括

  • 与ODPS完美集成,基于Project级别数据访问;
  • 提供特征工程工具,如基本统计、拆分、随机采样、归一化等 ;
  • 提供部分数据统计工具模块,如全表统计、直方图、百分位等;
  • 提供多种机器学习算法,包括逻辑回归、随机森林、SVM、朴素贝叶斯、GBDT回归以及聚类算法等;
  • 提供标准的模型评估方法,如ROC、混淆矩阵、AUC;
  • 提供离线预测,将预测数据导入到ODPS表中,通过模型预测完成后,直接输出到结果表中;
  • 提供在线预测,通过将Offline Model发布到Online Model 服务中,即可以使用API使用实时在线预测服务;
  • 提供PAI 命令, 基于ODPS CLT运行所有算法;
  • 通过PAI Web 控制台轻松搭建算法实验,PAI Web 如下:

安全

大家在使用ODPS的时候,最关心的就是自己的数据放到ODPS是否安全,是否会被泄露。 ODPS 支持多租户的使用场景,满足不同用户在ODPS中独立、协同、共享等不同数据操作的需求,可以说ODPS的安全机制是ODPS能在对外服务核心。

ODPS的安全由如下功能构成:

  • 访问ODPS的用户必须在阿里云官网上进行注册,在使用ODPS的时候,都需要进一步认证;
  • 用户在访问ODPS Project中每个对象时都需要授权,用户在读取数据或执行作业时都会被检查权限;
  • ODPS中支持ACL授权,允许管理者使用Grant、Revoke等命令对用户、角色进行管理;
  • ODPS中还支持Policy授权,允许Project Owner使用JSON格式的描述语言对主体(访问者)、资源(访问对象)、操作三者之前通过访问限制及效力策略进行管理、控制;
  • ODPS还支持Package方式授权。将Project A中的对象打到Package中,然后安装到Package B,满足跨Project B访问A中数据的需求;
  • ODPS中的Project 还有保护模型,即数据只能在本Project中计算,不允许导到本地或导到其他project输出,但可以通过白名单导出;
  • ODPS中所有计算是在受限的沙箱中运行的,多层次的应用沙箱,从KVM级到Kernel级。系统沙箱配合鉴权管理机制,用来保证数据的安全;
posted @ 2017-04-23 21:13 酸奶加绿茶 阅读( ...) 评论( ...) 编辑 收藏

这篇关于ODPS的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1121706

相关文章

ODPS JDBC链接方式

这里写目录标题 MAVEN正文 MAVEN <dependency><groupId>com.aliyun.odps</groupId><artifactId>odps-jdbc</artifactId><version>3.0.1</version></dependency> 正文 特别注意: url jdbc:odps:http://service.cn.maxcom

ODPS的Java连接(2)

maven <dependency><groupId>com.aliyun.odps</groupId><artifactId>odps-jdbc</artifactId><version>3.0.1</version></dependency> 正文 package org.apache.dolphinscheduler.common.utils;import com.aliyun.o

ODPS MR开发 WordCount

参考: ODPS初始篇--客户端配置和使用:http://blog.itpub.net/26613085/viewspace-1327313/ odps dship客户端使用:http://blog.itpub.net/26613085/viewspace-1328434/ 有了上面两篇文章,就可以使用ODPS的客户端;使用ODPS DSHIP往ODPS上上传数据。 1、 在Eclipse中

阿里巴巴的相关-----ODPS技术架构、Java Web架构、PAI机器学习平台

摘要:ODPS是分布式的海量数据处理平台,提供了丰富的数据处理功能和灵活的编程框架。本文从ODPS面临的挑战、技术架构、Hadoop迁移到ODPS、应用实践注意点等方面带领我们初步了解了ODPS的现状与前景。 初识ODPS ODPS是分布式的海量数据处理平台,提供了丰富的数据处理功能和灵活的编程框架,主要的功能组件有如下几个。 Tunnel服务:数据进出ODPS的唯一通道,提供高并

【大数据】-- dataworks 创建odps 的 hudi 外表

文档:创建OSS外部表_云原生大数据计算服务 MaxCompute(MaxCompute)-阿里云帮助中心 举例:创建 odps 的 hudi 外表 CREATE EXTERNAL TABLE IF NOT EXISTS my_project.ods_hudi_mysql_words_h_all(id BIGINT COMMENT '主键id',`words`

常用ODPS命令

odps命令行客户端工具 可以通过官方下载 odpscmd-0.24.1-1.noarch.rpm 安装以后的配置 修改配置文件 vim odpscmd/conf/odps_config.ini project_name=testdb access_id=XXX access_key=9aBSFAE01JouMQKcx4olw6YYtXsbzw end_

阿里云学习七 - 数据存储计算:开放数据处理服务(ODPS) 开放结构化数据服务(OTS)

很可惜,我想学习的数据存储计算的这2个服务目前都已经停止服务了。 开放数据处理服务(ODPS) 提供云端数据仓库服务。适用于金融、零售、制造业和电商企业的BI团队进行海量数据分析和挖掘 ODPS(Open Data Processing Service) 是基于阿里云完全自主知识产权的云计算平台构建的数据存储与分析的平台。ODPS提供大规模数据存储与数据分析,用户可以使用ODPS平台上

解析 ODPS SQL 任务优化方法原理

一文解析 ODPS SQL 任务优化方法原理 本文重点尝试从ODPS SQL的逻辑执行计划和Logview中的执行计划出发,分析日常数据研发过程中各种优化方法背后的原理,覆盖了部分调优方法的分析,从知道怎么优化,到为什么这样优化,以及还能怎样优化。 一、背景 使用ODPS SQL进行离线数据研发时,开发同学不可避免会碰到任务性能问题,需要经常对ODPS SQL执行任务进行调优,以对重点场景

阿里音乐预测 之 初探ODPS SQL

一、主要操作平台 数据的处理,表格的生成读取,都可以在 数据开发 和 机器学习平台 下进行。 二、读取与统计赛题数据 -- 分别读取用户表和歌曲表: create table if not exists users as select * from odps_tc_257100_f673506e024.mars_tianchi_use

python连接阿里云odps

怎么下载他的库这个就自行百度了,配置完毕之后就用以下代码即可用python连接阿里云odps的数据库了。 from odps import ODPS o = ODPS('嘿嘿嘿', #这个地方是阿里云的Access Key ID'哈哈哈哈', #这个地方是阿里云的Access Key Secret'kf_gdsw_xxzx',endpoint='http://service.cn-某个阿里云