大数据迁移实践通过HDFS审计日志解析输出增量文件列表方案

举报
kevin_chen 发表于 2020/11/19 17:53:49 2020/11/19
【摘要】 在进行大数据迁移过程中,往往老集群上还会不断地生产新文件,当老集群上整体数据量不大的时候,可以直接借助CDM的全量扫描+跳过重复文件的方式来迁移新增的文件。但是当老集群上数据量较大(比如>1PB以上,又存在大量小文件5千万以上甚至上亿个),CDM的全量扫描会耗费大量时间,搬迁效率较低。因此本文给出了一种借助HDFS审计日志解析来识别出增量的文件范围,然后将该列表输出给CDM,由CDM只按照列表中的

 在进行大数据迁移过程中,往往老集群上还会不断地生产新文件,当老集群上整体数据量不大的时候,可以直接借助CDM的全量扫描+跳过重复文件的方式来迁移新增的文件。但是当老集群上数据量较大(比如>1PB以上,又存在大量小文件5千万以上甚至上亿个),CDM的全量扫描会耗费大量时间,搬迁效率较低。因此本文给出了一种借助HDFS审计日志解析来识别出增量的文件范围,然后将该列表输出给CDM,由CDM只按照列表中的文件进行迁移的方法,可以在增量文件迁移期间,避免全量扫描老集群的文件。 以下的操作步骤实际操作过程中可以考虑自行开发脚本自动定时运行。


  操作方式:

  将HDFS namenode审计日志定期上传到HDFSOBS,由Hive分区表加载每天的日志信息。通过hive sql查询获取每天或者某个时间段之后的新增的文件列表。

 

(1)       按照每天一个文件夹方式,借助公有云的hdfs客户端或者Obsutil 上传HDFS namenode审计日志到公有云HDFS或者OBS路径下。

hdfs dfs –put 2020-07-06 /user/audit/2020-07-06/ -r



(2)       在公有云集群上创建Hive分区表,以日期作为主键,表名可以自己指定,当前演示的表名叫audit.  备注:由于HDFS审计日志格式不同集群可能配置输出不一致,表中各个字段需要根据实际HDFS审计日志的格式进行修改调整

CREATE    TABLE `audit`( 
    `allow` String,  
    `ugi` string,  
    `ip` string,
    `cmd` string,
    `src` string,
    `dst` string,
    `perm` string,
    `proto` string)
partitioned by(`date_time` string )
ROW FORMAT DELIMITED FIELDS TERMINATED BY   '\t' ;

 


(3)       加载每天的分区数据到Hive表中 

LOAD DATA INPATH   '/user/audit/2020-07-06/' INTO TABLE audit PARTITION (date_time =   '2020-07-06');


(4)       查询某天,或者某个时间段的新增文件列表, 并将输出结果写到OBS路径上 

// create 过滤掉.hive-staging 和_temporary临时文件 
INSERT OVERWRITE DIRECTORY   'obs://obs-auditlog-chenkaifeng/auditlog/output-2020-07-08' select   regexp_extract(src,'src=(.*)',1) as output from audit where src like   'src=/apps/hive/warehouse%' and src not rlike '.*/\.hive-staging.*' and src   not rlike '.*/_.*' and cmd='cmd=create' and date_time>='2020-07-06';
 
// rename结果
INSERT OVERWRITE DIRECTORY   'obs://obs-auditlog-chenkaifeng/auditlog/output-2020-07-08' select   regexp_extract(dst,'dst=(.*)',1) as output from audit where dst like   'dst=/apps/hive/warehouse%' and dst not rlike '.*/\.hive-staging_hive_.*' and   dst not rlike '.*/_.*' and cmd='cmd=rename' and date_time>='2020-07-06'
 
// apend
INSERT OVERWRITE DIRECTORY   'obs://obs-auditlog-chenkaifeng/auditlog/output-2020-07-08' select   regexp_extract(src,'src=(.*)',1) as output from audit where src like   'src=/apps/hive/warehouse%' and src not rlike '.*/\.hive-staging_hive_.*' and   src not rlike '.*/_.*' and cmd='cmd=append' and date_time>='2020-07-06';


(5)       查找某天或某个时间段的删除文件列表SQL,并将输出结果存到OBS

//查询删除语句delete
INSERT OVERWRITE DIRECTORY   'obs://obs-auditlog-chenkaifeng/auditlog/output-2020-07-08' select   regexp_extract(src,'src=(.*)',1) as output from audit where src like   'src=/apps/hive/warehouse%' and src not rlike '.*/\.hive-staging.*' and src   not rlike '.*/_.*' and cmd='cmd=delete' and date_time>='2020-07-06';
 
//rename操作引起的删除
INSERT OVERWRITE DIRECTORY   'obs://obs-auditlog-chenkaifeng/auditlog/output-2020-07-08' select   regexp_extract(src,'src=(.*)',1) as output from audit where src like   'src=/apps/hive/warehouse%' and src not rlike '.*/\.hive-staging.*' and src   not rlike '.*/_.*' and cmd='cmd=rename' and date_time>='2020-07-06';


 (6)配置CDM作业

在CDM(华为云云迁移服务)作业上选择步骤4中输出的新增文件列表作为迁移的范围,进行新增文件迁移。



【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。