本期导读 :【数据迁移】第四讲
主题:如何将 Hive 数据按分区归档到 OSS
讲师:健身,阿里巴巴计算平台事业部 EMR 技术专家
内容框架:
- 背景/具体功能介绍
- 实现原理详解
- 使用实例
直播回放链接:(3/4讲)
https://developer.aliyun.com/live/246750
一、背景/功能简述
传统集群架构
- 存储计算一体
- 存储量与计算量无法始终匹配
- 存储无法水平扩展
- 存储与计算竞争硬盘资源
存储分层架构
- 计算资源动态伸缩
- 存储资源使用云存储作为 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
二、实现原理
- Jindodistcp 作为底层工具
- 使用 jindodistcp 事务模式
- 使用 HDFS 文件锁保证同一时间每个分区只有一个作业在操作
- 先修改分区元数据再清理 hdfs 数据确保数据可用
三、使用示例
数据准备
移动分区字段 ds 大于 ‘b’的分区
检查移动后的分区情况
直接观看视频回放,获取实例讲解~https://developer.aliyun.com/live/246750
⭐Github链接:
https://github.com/aliyun/alibabacloud-jindofs
不错过每次直播信息、探讨更多数据湖 JindoFS+OSS 相关技术问题,欢迎扫码加入钉钉交流群!