[发明专利]一种面向SparkSql的HDFS小文件实时合并实现方法有效
申请号: | 201810142899.9 | 申请日: | 2018-02-11 |
公开(公告)号: | CN108256115B | 公开(公告)日: | 2022-02-25 |
发明(设计)人: | 马秉楠;吕雁飞;张鸿;何清林;惠榛 | 申请(专利权)人: | 国家计算机网络与信息安全管理中心 |
主分类号: | G06F16/182 | 分类号: | G06F16/182;G06F16/172;G06F16/14 |
代理公司: | 北京永创新实专利事务所 11121 | 代理人: | 祗志洁 |
地址: | 100029*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 面向 sparksql hdfs 文件 实时 合并 实现 方法 | ||
1.一种面向SparkSql的HDFS小文件实时合并实现方法,其特征在于,包括四方面:
(1)定期筛选HDFS中待合并的小文件,包括:为每个业务库表设置一个文件合并策略;将设置的文件合并策略预先存放在Hive metastore中;从Hive metastore获取各个数据库表信息和文件合并策略;根据得到的数据库表信息在HDFS中遍历获取相应的文件元数据,根据文件合并策略对获取的文件元数据进行筛选,将符合合并策略的小文件筛选出,并缓存至内存中;
(2)对得到的待合并小文件,生成合并小文件的Spark任务,并提交至Yarn上执行;对完成小文件合并的结果信息放置于待替换列表中;
(3)结合Zookeeper保持SparkSql在使用合并后文件替换被合并文件时维持正常运行;根据SparkSql实时检索数据库表的情况,在Zookeeper中注册和注销相应数据库表的读状态;
(4)在文件替换时,通过网络在SparkSql中进行文件元数据缓存增量更新;
在SparkSql中对库表的文件元数据进行缓存,在SparkSql中启动一个Http服务线程,通过该线程接收小文件合并服务发来的合并结果,来达到SparkSql文件元数据增量更新的目的;
小文件合并服务向Http服务发送合并结果,SparkSql将根据待替换列表,移除相应库表中被合并小文件的文件元数据,并且将合并生成的文件所对应的文件元数据放置到SparkSql相应缓存中;
在替换过程中,读取Zookpeeper中相应数据库表的状态,如果相应数据库表处于在读的状态,将延迟进行文件的替换;在文件进行替换时,将在Zookeeper中注册相应数据库表为正在替换的状态,此时SparkSql将对相应数据库表的检索操作做延迟等待处理。
2.根据权利要求1所述的方法,其特征在于,所述的(2)中,根据文件合并策略和集群实际可用资源数量,生成合并小文件的Spark任务,并将任务提交到Yarn上,使用集群资源分布式执行。
3.根据权利要求1或2所述的方法,其特征在于,所述的(2)中,在合并任务执行完成之后,将读取合并生成的文件以及被合并的相应小文件,通过对两个数据集合的对比来确定文件合并任务是否执行成功,以保证数据合并前后的一致性。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国家计算机网络与信息安全管理中心,未经国家计算机网络与信息安全管理中心许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810142899.9/1.html,转载请声明来源钻瓜专利网。