十堰网站seo技巧,免费建站哪个网站最好,上海中小企业网站,网站建设平台排行榜作者 | Tai_Park责编 | Carol来源 | CSDN 博客封图 | CSDN付费下载于东方 IC今天来聊聊 Hadoop 的压缩。压缩#xff1a;原始数据通过压缩手段产生目标数据#xff0c;要求输入和输出的内容是一样的#xff08;大部分#xff09;#xff0c;但体积是不一样的。对于单机用户… 作者 | Tai_Park责编 | Carol来源 | CSDN 博客封图 | CSDN付费下载于东方 IC今天来聊聊 Hadoop 的压缩。压缩原始数据通过压缩手段产生目标数据要求输入和输出的内容是一样的大部分但体积是不一样的。对于单机用户来说磁盘空间的限制导致了文件压缩的需求对于Hadoop用户来说由于DataNode的限制也要对HDFS上的数据进行压缩。压缩的目的是减少存储在HDFS上的数据所占用的空间磁盘的角度提升网络的传输效率网络的角度。对于分布式计算框架来说Shuffle是一个主要的技术瓶颈。大数据处理流程基本上是输入处理输出举例来说在离线处理方面Spark可以HDFSSparkHDFS在实时处理方面Spark Streaming可以KafkaSpark StreamingRDBMS。压缩可以使用在输入时也可以使用在处理时比如map作为中间状态它的输出可以压缩以减少Shuffle的量输出时。MR在进行压缩数据处理时不需要手工去处理。但是MR执行过程中是需要一个动作进行数据压缩、解压的MR根据后缀名进行处理。在处理压缩、解压的过程中是有CPU资源的消耗的。如果集群本来CPU使用率很高就会对其他作业产生影响不建议使用压缩。常见的压缩格式有GZIP、BZIP2、LZO、SNAPPY。选择压缩格式要从压缩比、压缩速度考虑。不同的压缩格式对应不同的codec。BZip2Codec压缩package com.bigdata.compression;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.io.IOUtils;
import org.apache.hadoop.io.compress.CompressionCodec;
import org.apache.hadoop.io.compress.CompressionOutputStream;
import org.apache.hadoop.util.ReflectionUtils;import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;public class CompressionApp {public static void main(String[] args) throws Exception{String filename ip.txt;String method org.apache.hadoop.io.compress.BZip2Codec;compress(filename,method);}private static void compress(String filename, String method) throws Exception{FileInputStream fis new FileInputStream(new File(filename));Class? codecClass Class.forName(method);CompressionCodec codec (CompressionCodec) ReflectionUtils.newInstance(codecClass, new Configuration());FileOutputStream fos new FileOutputStream(new File(filename codec.getDefaultExtension()));CompressionOutputStream cos codec.createOutputStream(fos);IOUtils.copyBytes(fis,cos,1024*102485);cos.close();fos.close();fis.close();}
}
读取输入流通过类名反射出对应的codec写出输出流通过IOUtils.copyBytes写出去压缩前后对比BZip2Codec解压private static void decompression(String filename) throws Exception{CompressionCodecFactory factory new CompressionCodecFactory(new Configuration());CompressionCodec codec factory.getCodec(new Path(filename));CompressionInputStream fis codec.createInputStream(new FileInputStream(new File(filename)));FileOutputStream fos new FileOutputStream(new File(filename) .decoded);IOUtils.copyBytes(fis,fos,1024*102485);fos.close();fos.close();fis.close();}
解压前后对比Map端压缩控制mapred-default.xml中有mapreduce.map.output.compress参数控制map输出时的压缩mapreduce.map.output.compress.codec控制压缩类型。代码层面可以用configuration.setBoolean(mapreduce.map.output.compress,true);
configuration.setClass(mapreduce.map.output.compress.codec,BZip2Codec.class,CompressionCodec.class);
进行设置即可。若要在配置层面更改core-site.xml需要加上propertynameio.compression.codecs/namevalueorg.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.BZip2Codec,org.apache.hadoop.io.compress.SnappyCodec/value
/propertymapred-site.xml添加mapreduce.map.output.compresstrue
mapreduce.map.output.compress.codecorg.apache.hadoop.io.compress.BZip2Codemapreduce.output.fileoutputformat.compresstrue
mapreduce.output.fileoutputformat.compress.codecorg.apache.hadoop.io.compress.BZip2Code
配置文件修改完重启Hadoop即可。Reduce端压缩控制mapred-default.xml中有mapreduce.output.fileoutputformat.compress参数控制reduce端输出时的压缩mapreduce.output.fileoutputformat.compress.codec控制压缩类型。设置同上。你还有什么 Hadoop 整合压缩相关知识点欢迎评论告诉我们 ~《原力计划【第二季】- 学习力挑战》正式开始即日起至 3月21日千万流量支持原创作者更有专属【勋章】等你来挑战推荐阅读6 个步骤教你在Ubuntu虚拟机环境下用Docker自带的DNS配置Hadoop | 附代码
删库跑路事件发生SaaS云服务如何守护数据安全
释放低代码小宇宙微软 Power Platform 震撼来袭
闪电网络的 5 个优点和4 个缺点、本质、来源与工作原理……一文带你读懂闪电网络
乔布斯遗孀裸捐 250 亿美元财产没兴趣累积财富
赔偿谷歌1.8亿美元前Uber自动驾驶主管被告到破产
真香朕在看了