本期导读 :【JindoTable 计算加速】第二十二讲
主题:对 Hive 数仓表进行高效小文件合并d+JindoFS 对 OSS 上数据进行训练加速
讲师:辰石,阿里巴巴计算平台事业部 技术专家
内容框架:
- 背景介绍
- 主要功能
- 实操演示
直播回放链接:(22讲)
https://developer.aliyun.com/live/247112
一、背景介绍
小文件如何产生
- 动态分区插入数据,产生大量的小文件,从而导致 map 数量剧增
- reduce 数量越多,小文件也越多( reduce 的个数和输出文件是对应的)
- 数据源本身就包含大量的小文件
小文件带来的问题
- 小文件会开很多 map,一个 map 开一个 JVM 去执行,所以这些任务的初始化,启动,执行会浪费大量的资源,严重影响性能
- 小文件会给底层文件系统带来很大压力, 如在 HDFS 中,每个小文件对象约占150 byte,如果小文件过多会占用大量内存。这样 NameNode 内存容量严重制约了集群的扩展。
小文件解决方案
- 从小文件产生的途经就可以从源头上控制小文件数量
• 使用 Sequencefile 作为表存储格式,不要用 textfile,在一定程度上可以减少小文 件
• 减少 reduce 的数量(可以使用参数进行控制)
• 少用动态分区,用时记得按 distribute by 分区
- 对于已有的小文件,我们可以通过以下几种方案解决
• 通过参数进行调节,设置 map/reduce 端的相关参数
• 重建表,建表时减少 reduce 数量
• 使用 hadoop archive 命令把小文件进行归档
二、主要功能
JindoTable
- JindoTable 提供表或分区级别的热度统计、存储分层和表文件优化的功能,常见命令如下
• -accessStat/-leastUseStat
• -cache/-uncache/-archive/-unarchive/-archiveTable/-unarchiveTable/-status
• -optimize
• -showTable/-showPartition/-listTables
• -dumpmc
• -moveTo
Hive表小文件合并
- Jindo table –showTable/-showPartition –t <db.tablename> -p <partitionSpec> 显示表格或者分区的状态,如果表文件过小会提示文件过小
- Jindo table –optimize <db.tablename> 优化表存储层的数据组织
- Jindo table –optimize <db.tablename> 优化后检查表的状态以及目录格式如下
三、实操演示
- 对 hive 数仓表进行小文件高效合并演示
⭐点击回放链接,直接观看第22讲视频回放,获取讲师实例讲解:
https://developer.aliyun.com/live/247112
⭐Github链接:
https://github.com/aliyun/alibabacloud-jindofs
不错过每次直播信息、探讨更多数据湖 JindoFS+OSS 相关技术问题,欢迎扫码加入钉钉交流群!