数据湖技术圈

本期导读  :【数据迁移】第四讲

主题:如何将 Hive 数据按分区归档到 OSS

讲师:健身,阿里巴巴计算平台事业部 EMR 技术专家

内容框架:

  • 背景/具体功能介绍

  • 实现原理详解

  • 使用实例

直播回看链接:(3/4讲)

https://developer.aliyun.com/live/246750

1

背景/功能简述

传统集群架构

  • 存储计算一体

  • 存储量与计算量无法始终匹配

  • 存储无法水平扩展

  • 存储与计算竞争硬盘资源

存储分层架构

  • 计算资源动态伸缩

  • 存储资源使用云存储作为 HDFS 的替代或补充

  • 相比存算分离架构,对于已有 HDFS 数据比较平滑,可以逐渐过渡到存算分离架构

数据仓库

  • 数据仓库是大数据的典型场景

  • 每天的 ETL 作业新增大量数据

  • Hive 支持分区表,使用分区可以快速裁剪数据

  • Hive 数仓中大量 Hive 表以时间日期作为分区字段

  • 在数仓中很多表的较老的日期分区平常一般不会被访问,可以考虑把这部分数据移出 HDFS

  • Hive 的每个分区都有自己的 storagedescriptor,可以有单独的存储路径

分区表的结构

partitioned_table_xx

  • dt=2021-05-16/category=1/

  • dt=2021-05-16/category=2/

  • dt=2021-05-16/category=5/

  • dt=2021-05-16/category=8/

  • dt=2021-05-15/category=2/

  • dt=2021-05-15/category=3/

  • dt=2021-05-15/category=4/

  • ……

使用 JindoTable 按分区归档数据

  • 在本地盘机型上,HDFS 可以提供较好的性能,对集群已有存储空间也能较好利用

  • 一般情况下用不到的数据移动到 OSS,释放集群存储空间,减小 NameNode 压力

  • 需要读取这部分数据时,也可以直接从 OSS 读取,不影响上层作业

  • 每天 ETL 完成后可以移动数据

⭐具体文档下载和参考见 Github:

https://github.com/aliyun/alibabacloud-jindofs/blob/master/docs/tools/table_moveto.md

2

实现原理

  • Jindodistcp 作为底层工具

  • 使用 jindodistcp 事务模式

  • 使用 HDFS 文件锁保证同一时间每个分区只有一个作业在操作

  • 先修改分区元数据再清理 hdfs 数据确保数据可用

3

使用示例

jindo table -moveTo -t <dbName.tableName> -d <destination path> [-c "<condition>" | -fullTable] [-b/-before <before days>] [-p/-parallel <parallelism>] [-o/-overWrite] [-r/-removeSource] [-e/-explain] [-l/-logDir <log directory>]

‍

  • 数据准备

  • 移动分区字段 ds 大于 ‘b’的分区

  • 检查移动后的分区情况


点击文章下方阅读原文,直接观看第二课(3/4讲)视频回放,获取实例讲解~

⭐Github链接:

https://github.com/aliyun/alibabacloud-jindofs


不错过每次直播信息、探讨更多数据湖 JindoFS+OSS 相关技术问题,欢迎扫码加入钉钉交流群!


数据湖技术圈

长按扫码关注公众号

获取最新技术资讯

更多推荐