Alluxio在百度数据工厂Pingo中的应用

来自百度数据工厂Pingo核心团队的技术负责人张志宏作的题为“Alluxio在百度数据工厂Pingo中的应用”的报告。此次报告,他首先介绍了百度数据工厂Pingo的定位和解决的问题。接着分享了,基于Alluxio在Pingo中实现了一个文件管理服务层,并且扩展了Alluxio的UFS,新增了基于继承的ACL权限机制,提供了基于文件的UDF管理功能。最后,李老师还简单介绍Pingo其他功能点。

展开查看详情

1.Alluxio在百度数据工厂Pingo 中的应用 张志宏 百度资深研发工程师 百度数据工厂Pingo核心团队技术负责人

2.CONTENT 目录 A Pin go 整 体 介 绍 B A llu xio 在 Pin go 中 的 应 用 C 进 一 步 了 解 Pin go

3.PART A Pingo整体介绍

4.A Pingo整体介绍 • 基于Spark的数据工厂,增强版 的数据湖 • 能够对异地、异构的非结构化数 据、结构化数据、计算资源进行 统一接入、访问和权限管 • 查询语言SparkSQL,Dataframe • 提供WebUI、客户端、Rest接口三 种交互方式 • 在百度内部提供离线计算服务, 作为商业产品在百度公有云、 私有云对外提供

5.A Pingo整体介绍 – 开源方案 • 组件繁多、运维复杂 日志 MySQL • 对接已有大数据组件困难 Flume • 不止一套Meta甚至版本不一致 传输 Apache • 想“利旧”已部署Yarn Ranger • 联合查询MySQL、对象存储 HDFS HiveMeta 存储 • 认证、鉴权不易用 认证鉴权 • 无法接入公司SSO账号体系 Yarn Spark • 权限体系无法覆盖所有组件 计算 Kerberos • 权限代理? • 深度需求 作业 • 安全加密,流批一体,行权限、 Airflow Jupyter 管理 脱敏,数据治理,Adhoc,……

6.A Pingo整体介绍 – 架构 • 更方便的融合已有组件 • 从功能集上而非产品组 件上覆盖用户需求 • 全方位的交互接口 • WebUI,命令行,RESTful 接口,JDBC • 安全 • 4A,数据加密,脱敏

7.A Pingo整体介绍 – 基于Alluxio的PFS • 基于Alluxio实现 Pingo的文件管理 服务PFS • 提供各种非结构化 数据的挂载、接入 能力 • 提供统一的权限管 理服务 • 基于PFS可以构建 更复杂的上层功能

8. Alluxio在Pingo中 PART B 的应用 认证和权限 表权限代理文件权限 基于文件的UDF 管理

9.B 认证和权限 - 接入Pingo认证 • 新增AuthType.PINGO • Alluxio Server端认证 • PingoAuthenticationProvider, 请求PingoUserService进行认证 • 客户端认证 • PingoLoginModule读取Pingo token • HDFS FileSystem接口 • alluxio.hadoop. AbstractFileSystem中读取Pingo token

10. B 认证和权限 – 传统权限模型限制 Traditional Unix permissions POSIX Access Control Lists Limitation alice: read Three permission triads first triad what the owner can do second tom: read what the group members can do triad jerry: read third what other users can do triad Each triad root first r: readable character second w: writable character $ getfacl --omit-header dir x: executable s or t: setuid/setgid or sticky (also user::rwxgroup::r-x file … file10000 third character executable) mask::rwx S or T: setuid/setgid or sticky (not other::--- executable) default:user::rwx default:group::r-x 批量增、删权限困难

11.B 认证和权限 – 可继承的ACL权限 • 提供READ、WRITE、MANAGE 授权记录样例 三种权限类型 • READ、WRITE覆盖原生权限, inherit: true/false MANAGE和原生的owner权限取 USER: uname_1 READ/WRITE/MANAGE ... 并集 USER: uname_n READ/WRITE/MANAGE • 沿着文件路径向上直到inherit GROUP: gname_1 READ/WRITE/MANAGE 为false的所有权限的并集 ... • 默认inherit为true,可以实现 GROUP: gname_n READ/WRITE/MANAGE 一次授权影响所有子目录

12.B 认证和权限 – 可继承的ACL权限样例 • amy read /a/b/d forbid • 由于整条路径没有amy的ACL记录 • sam read /a/b/d permit • 由于继承了节点b的权限 • tom read /a/b/d forbid • 由于节点b上关闭了继承 • amy read /a/c • 由于amy拥有节点c的读权限

13. Alluxio在Pingo中 PART B 的应用 认证和权限 表权限代理文件权限 基于文件的UDF 管理

14.B 表权限代理文件权限 – 现状 • 传统数仓MySQL • frm文件保存表结构信息,ibd文件保存数据文件 • 用户很难绕开MySQL服务直接读取ibd文件 • 以Hive为代表的大数据离线数仓 • 表的元数据信息通过HiveMeta最终存在MySQL里 • 表的物理数据Location指向的是HDFS地址 • 用户既可以通过表读取数据,也可以直接读取HDFS数据 • Hive表权限问题 • 给用户赋予表权限的同时还要给用户赋予HDFS路径权限?

15.B 表权限代理文件权限 – 实现 • jack有表sails_table的 权限,但是没有该表 virtual_tieba_user location的权限 <virtual_tieba_user, ttoken> <sam , stoken> • 建表时可以指定读取 location的账号 • 运行时Meta返回Location virtual_tieba_user 的同时返回鉴权FS使用的 账号、临时token jack

16.B 表权限代理文件权限 – 收益 • 更安全的权限管理 • 表可以作为单独的实体进行授权。对一个用户撤销表的权限后,自然失 去了HDFS文件读取权限 • 支持更深入的存储、计算分离 • 绝大部分的数据使用者永远都不会拥有直接读取HDFS文件的权限 • 支撑更丰富的上层应用 • 方便构建大数据平台(中台),建立表权限审批流程

17. Alluxio在Pingo中 PART B 的应用 认证和权限 表权限代理文件权限 基于文件的UDF 管理

18.B 基于文件的UDF管理 – Spark UDF现状 • UDF资源文件产品线自行手动管理, DFS 不利于共享 • UDF元数据与资源文件分离,不易使 C reato r 用 • UDF资源文件升级不透明,易导致兼 容性问题 • UDF使用方法需要额外文档,查询费 U ser 力,时效性差 UDF UDF

19. B 基于文件的UDF管理 – 原理 P FS P FS M aster P FS W orker • 1,2,3,4为上传过 UDF 程。用户把UDF jar文 P FS W orker 件上传到PFS。PFS UDF Worker分析生成UDF P FS W orker Info并发给Master UDF • A,B,C,D为使用过程, DFS 在Spark中查询时直 接获取到UDF信息并 U D F.function_nam e.1.jar 在运行时使用 U ser1 C reato r

20.B 基于文件的UDF管理 – 对比 之前 现在 UDF文件手动管理, 在PFS中统一管理, 不利于共享 随时查看,随时共享 需要注册临时函数, 元数据与资源文件统一, 不易使用 查询引擎直接调用 升级不透明, 支持多版本共存和 易导致兼容问题 指定版本调用 需要额外使用文档, 文档置于资源文件内, 容易过时 与UDF随时保持同步

21.PART C 进一步了解Pingo

22.C 进一步了解Pingo • 提供数据安全加密方案,防止数据被拖走 • 可对表配置安全属性,只能用SQL访问安全表 • 安全表的select结果数有限制,并且不可以将查询结果写入非安全表 • 基于SQL的流批一体解决方案,可以用SQL读写流式、普通表 • 扩展Spark SQL语法,新增stream关键字 • 混合云解决方案 • 企业的数据不上云也可以使用百度云的计算资源 • 打通百度公有云生态 • 分布式读写百度开源OLAP数据库Apache Doris • 扩展Alluxio支持BOS(Baidu Object Storage) UnderFileSystem

23. THANK YOU https://cloud.baidu.com/product/pingo.html