千家信息网

hdfs如何实现数据压缩

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章主要介绍hdfs如何实现数据压缩,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!公司一共不到30台的hadoop集群,hdfs大小共有120T,最近监控老是报警,磁盘不足
千家信息网最后更新 2025年12月02日hdfs如何实现数据压缩

这篇文章主要介绍hdfs如何实现数据压缩,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

公司一共不到30台的hadoop集群,hdfs大小共有120T,最近监控老是报警,磁盘不足(低于5%时候报警),之前一直忙于业务,没时间整理集群,整理之后发现现有文件一共在34T左右,加上3份冗余,整个hdfs占用在103T,之前清洗的时候直接是文本存入,且没有进行任何压缩,这块儿应该会有很大的优化空间。其中有一份记录用户手机安装应用的日志文件占用在5T左右,先拿他下手。

因为hive有三种文件存储格式,TEXTFILE、SEQUENCEFILE、RCFILE,其中前两个是基于行存储,RCFile是Hive推出的一种专门面向列的数据格式。 它遵循"先按列划分,再垂直划分"的设计理念,当查询过程中,针对它并不关心的列时,它会在IO上跳过这些列,所以选择RCFILE,再用Gzip压缩。

之间还犯了一个比较2的错误:因为之前有同事调研过rcfile(已离职),所以用show create table XX的方式查看建表语句,发现是

CREATE EXTERNAL TABLE XX(  ......  )PARTITIONED BY (   day int)ROW FORMAT DELIMITED   FIELDS TERMINATED BY '\t'   COLLECTION ITEMS TERMINATED BY ','   LINES TERMINATED BY '\n' STORED AS INPUTFORMAT   'org.apache.hadoop.hive.ql.io.RCFileInputFormat' OUTPUTFORMAT   'org.apache.hadoop.hive.ql.io.RCFileOutputFormat'LOCATION  '/user/hive/data/XX';

就照搬改一下字段,建了一张app_install的RCFile表,sql导入之前的数据

set mapred.job.priority=VERY_HIGH;set hive.merge.mapredfiles=true;set hive.merge.smallfiles.avgsize=200000000;set hive.exec.compress.output=true;set mapred.output.compress=true;  set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;  set io.compression.codecs=org.apache.hadoop.io.compress.GzipCodec; set mapred.job.name=app_install.$_DAY;insert overwrite table app_install1 PARTITION (day=$_DAY)select XXX from tb1 where day=$_DAY

报错,查看hadoop运行日志,发现是

FATAL ExecReducer: java.lang.UnsupportedOperationException: Currently the writer can only accept BytesRefArrayWritableat org.apache.hadoop.hive.ql.io.RCFile$Writer.append(RCFile.java:880)at org.apache.hadoop.hive.ql.io.RCFileOutputFormat$2.write(RCFileOutputFormat.java:140)at org.apache.hadoop.hive.ql.exec.FileSinkOperator.processOp(FileSinkOperator.java:588)at org.apache.hadoop.hive.ql.exec.Operator.process(Operator.java:471)at org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:762)at org.apache.hadoop.hive.ql.exec.SelectOperator.processOp(SelectOperator.java:84)at org.apache.hadoop.hive.ql.exec.Operator.process(Operator.java:471)at org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:762)at org.apache.hadoop.hive.ql.exec.CommonJoinOperator.createForwardJoinObject(CommonJoinOperator.java:389)at org.apache.hadoop.hive.ql.exec.CommonJoinOperator.genObject(CommonJoinOperator.java:715)at org.apache.hadoop.hive.ql.exec.CommonJoinOperator.genObject(CommonJoinOperator.java:697)at org.apache.hadoop.hive.ql.exec.CommonJoinOperator.genObject(CommonJoinOperator.java:697)at org.apache.hadoop.hive.ql.exec.CommonJoinOperator.checkAndGenObject(CommonJoinOperator.java:856)at org.apache.hadoop.hive.ql.exec.JoinOperator.endGroup(JoinOperator.java:265)at org.apache.hadoop.hive.ql.exec.ExecReducer.reduce(ExecReducer.java:198)at org.apache.hadoop.mapred.ReduceTask.runOldReducer(ReduceTask.java:519)at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:420)at org.apache.hadoop.mapred.Child$4.run(Child.java:255)at javax.security.auth.Subject.doAs(Subject.java:396)at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121)at org.apache.hadoop.mapred.Child.main(Child.java:249)

网上说是hive的一个bug,一直以为就是这个bug,折腾了一天,最后试着按照网上的方式修改了一下建表语句

REATE EXTERNAL TABLE XX(  ......  )PARTITIONED BY (   day int)ROW FORMAT DELIMITED   FIELDS TERMINATED BY '\t'   COLLECTION ITEMS TERMINATED BY ','   LINES TERMINATED BY '\n' STORED AS RCFILELOCATION  '/user/hive/data/XX';

结果正常运行,然后用show create table XX查看语句发现又变成了

STORED AS INPUTFORMAT   'org.apache.hadoop.hive.ql.io.RCFileInputFormat' OUTPUTFORMAT   'org.apache.hadoop.hive.ql.io.RCFileOutputFormat'

郁闷死了,就是建表语句然后用show create table显示的不一样导致,虽然是个小问题,但是也颇费经历。

以上是"hdfs如何实现数据压缩"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

数据 语句 文件 内容 就是 方式 日志 时候 格式 篇文章 集群 存储 报警 运行 很大 郁闷 业务 两个 之间 价值 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库技术面 长宁区企业数据库价格大全 微信小程序访问腾讯云数据库 四川服务器硬盘价格 网络技术公司政策补贴 互联网科技公司行业风险分析 陕西什么学校有网络安全专业 成都 软件开发人力外包 服务器管理器默认打开 黎明觉醒服务器会爆满么 服务器脚本的区别 银河破裂者 战役数据库 不显示 系统集成商和软件开发商的区别 刚毕业做软件开发什么都不会 互联网抗疫黑科技 软件开发工程师学费多少 网络安全 专报 海口软件开发工作 网络安全薅羊毛是什么意思 关系数据库中表间的关系正确的是 重庆数字化城管软件开发公司 四川微信分销软件开发 提高分布式数据库性能的技术 2021年中考网络安全热点 java连接异构数据库 郑州祥瑞网络技术怎么样 首都网络安全日口号 计算机网计算机网络技术 智能手机软件开发里的分工 郑州网络安全科技馆的意义
0