- 浏览: 219607 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (114)
- hbase (3)
- akka (7)
- hdfs (6)
- mapreduce (1)
- hive (0)
- zookeeper (8)
- storm (0)
- geese (0)
- leaf (0)
- stormbase (0)
- scala (2)
- oozie (11)
- zeromq (1)
- netty (3)
- mongodb (0)
- sqoop (2)
- flume (3)
- mahout (1)
- redis (0)
- lucene (1)
- solr (1)
- ganglia (3)
- 分布式理论 (2)
- hadoop (42)
- others (14)
- mq (1)
- clojure (3)
- flume ng (1)
- linux (1)
- esper (0)
最新评论
-
javalogo:
[b][i][u]引用[list]
[*][*][flash= ...
什么是Flume -
leibnitz:
what are they meanings
Hadoop Ganglia Metric Item -
di1984HIT:
没用过啊。
akka 介绍-Actor 基础 -
di1984HIT:
写的不错。
Hadoop管理-集群维护 -
developerinit:
很好,基本上介绍了
什么是Flume
文件压缩带来了两大益处1)减少存贮空间2)加速网络(磁盘)传输。基于大数据的传输,都需要经过压缩处理。
压缩格式 | 工具 | 算法 | 文件扩展名 | 可分块 |
DEFLATE | N/A | DEFLATE | .deflate | No |
gzip | gzip | DEFLATE | .gz | No |
bzip2 | bzip2 | bzip2 | .bz2 | Yes |
LZO | lzop | LZO | .lzo | No |
Snappy | N/A | Snappy | .snappy | No |
压缩及解压缩
文件解压实例
package com.bigdata.io; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.URI; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IOUtils; import org.apache.hadoop.io.compress.CompressionCodec; import org.apache.hadoop.io.compress.CompressionCodecFactory; public class FileDecompressor { public static void main(String[] args) throws IOException { String uri = args[0]; Configuration conf = new Configuration(); FileSystem fs = FileSystem.get(URI.create(uri),conf); Path inputPath = new Path(uri); CompressionCodecFactory factory = new CompressionCodecFactory(conf); // io.compression.codecs 定义列表中的一个 CompressionCodec codec = factory.getCodec(inputPath); if(null == codec){ System.err.println("No codec for " + uri); System.exit(-1); } String outputUri = CompressionCodecFactory.removeSuffix(uri, codec.getDefaultExtension()); InputStream in = null; OutputStream out = null; try{ in = codec.createInputStream(fs.open(inputPath)); out = fs.create(new Path(outputUri)); IOUtils.copyBytes(in, out, conf); }finally{ IOUtils.closeStream(in); IOUtils.closeStream(out); } } }
$hadoop jar stream.jar com.bigdata.io.FileDecompressor test.txt.gz
12/06/14 09:48:28 INFO util.NativeCodeLoader: Loaded the native-hadoop library
12/06/14 09:48:28 INFO zlib.ZlibFactory: Successfully loaded & initialized native-zlib library
Native Libraries
Native gzip 库减少解压缩时间在50%,压缩时间在10%(同java实现的压缩算法)
禁用Native Library , 需要设置属性hadoop.native.lib 为 false
package com.bigdata.io; import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.io.IOUtils; import org.apache.hadoop.io.compress.CodecPool; import org.apache.hadoop.io.compress.CompressionCodec; import org.apache.hadoop.io.compress.CompressionOutputStream; import org.apache.hadoop.io.compress.Compressor; import org.apache.hadoop.util.ReflectionUtils; public class PooledStreamCompressor { public static void main(String[] args) throws ClassNotFoundException { String codecClassName = args[0]; Class<?> codecClass = Class.forName(codecClassName); Configuration conf = new Configuration(); CompressionCodec codec = (CompressionCodec) ReflectionUtils.newInstance(codecClass, conf); Compressor compressor = null; try { compressor = CodecPool.getCompressor(codec); CompressionOutputStream out = codec.createOutputStream(System.out, compressor); IOUtils.copyBytes(System.in, out,4096,false); out.finish(); } catch (IOException e) { e.printStackTrace(); }finally{ CodecPool.returnCompressor(compressor); } } }
echo "Text" | hadoop jar stream.jar com.bigdata.io.PooledStreamCompressor org.apache.hadoop.io.compress.GzipCodec | gunzip -
12/06/14 10:57:49 INFO util.NativeCodeLoader: Loaded the native-hadoop library
12/06/14 10:57:49 INFO zlib.ZlibFactory: Successfully loaded & initialized native-zlib library
12/06/14 10:57:49 INFO compress.CodecPool: Got brand-new compressor
Text
使用压缩格式规则
压缩格式的使用取决于你的应用程序。你想最大化您的应用程序的速度,或者是你更关注关于保持存储成本下降?在一般情况下,你应该尝试不同的策略,根据数据集和基准测试,找到最好的办法。
对于大文件,如日志文件,选项有:
1.存储成非压缩格式
2.使用一个支持块分割的压缩格式,比如bzip2(当然bzip2比较慢)或者可以使用LZO(被索引后支持块分割)
3.把应用分割成大快,每个大快可以支持任意的压缩格式(不用关心在HDFS中是否可以分割)。在这种情况,你需要计算一下你的压缩后的尺寸,要同HDFS Block的大小相匹配
4.使用Sequence 文件,支持压缩及分块
5.使用Avro数据文件,支持压缩及分块,就像Sequence文件,但比Sequence要更高级,可以被多种语言支持
对于大文件,你不应该使用不支持分块的压缩。因为,你失去了地方,使MapReduce应用非常没有效率
为了归档目的,考虑Hadoop 归档格式,虽然他不支持压缩。
MapReduce中使用压缩
步骤:
1.设置mapred.output.compress=true
2.设置mapred.output.compression.codec=the classname of the above list
或者
FileOutputFormat.setCompressOutput(job,true)
FileOutputFormat.setOutputCompressorClass(job,GzipCodec.class)
public class MaxTemperatureWithCompression {
public static void main(String[] args) throws Exception {
if (args.length != 2) {
System.err.println("Usage: MaxTemperatureWithCompression <input path> " +
"<output path>");
System.exit(-1);
}
Job job = new Job();
job.setJarByClass(MaxTemperature.class);
FileInputFormat.addInputPath(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
FileOutputFormat.setCompressOutput(job, true);
FileOutputFormat.setOutputCompressorClass(job, GzipCodec.class);
job.setMapperClass(MaxTemperatureMapper.class);
job.setCombinerClass(MaxTemperatureReducer.class);
job.setReducerClass(MaxTemperatureReducer.class);
System.exit(job.waitForCompletion(true) ? 0 : 1);
}
}
对于SequenceFile格式
默认压缩类型是RECORD,建议更改为BLOCk,压缩一组record
SqeuenceFileOutputFormat.setOutputCompressionType()设置这个压缩类型
MapReduce压缩属性汇总
Property name | Type | Default value | Description |
mapred.output.compress | boolean | false | Compress outputs |
mapred.output.compression.codec | Class name | org.apache.hadoop.io.compress.DefaultCodec | The compression codec to use for outputs |
mapred.output.compression.type | String | RECORD | Type type of compression to use for SequenceFile outputs:NONE,RECORD,or BLOCK. |
Map阶段压缩输出(即中间结果是否压缩)
建议使用性能比较好的LZO、Snappy
Map 输出压缩属性汇总
Property name | Type | Default value | Description |
mapred.compress.map.output | boolean | false | Compress map outputs |
mapred.map.output.compression.codec | Class | org.apache.hadoop.io.compress.DefaultCodec | The compression codec to use for map outputs. |
Map阶段使用压缩样例
Configuration conf = new Configuration(); conf.setBoolean("mapred.compress.map.output", true); conf.setClass("mapred.map.output.compression.codec", GzipCodec.class, CompressionCodec.class); Job job = new Job(conf);
发表评论
-
Hadoop TestDFSIO
2013-04-21 21:02 2440@VM [bigdata@bigdata hadoo ... -
Hadoop NNBENCH
2013-04-21 20:46 1633@VM [bigdata@bigdata hadoop]$ ... -
Hadoop 安装手册
2013-04-08 15:47 1201Hadoop 安装手册 软件准备 ... -
What do real life hadoop workloads look like
2012-09-10 15:52 837http://www.cloudera.com/blog/20 ... -
CDH4 HA 切换时间
2012-09-05 15:15 4385blocksize:35M filesize 96M zk-s ... -
CDH4 HA 切换
2012-09-05 10:51 1402HA 切换问题 切换时间太长。。。 copy 0 ... ... -
Hadoop CDh4 Standby HA 启动过程
2012-08-02 11:40 2868根据日志: StandBy NN启动过程 1.获得Active ... -
CDH4 HA test
2012-08-01 14:55 2657场景: NN HA 设置成功,HA切换客户端出现异 ... -
Hadoop TextOutput
2012-07-29 21:08 913TextOutputFormat 分隔符参数: mapredu ... -
Hadoop SteamXMLRecordReader
2012-07-28 23:59 709StreamXmlRecordReader 设置属性 str ... -
Hadoop NLineInputFormat
2012-07-28 23:52 1657NLineInputFormat 重写了splits 设置 ... -
KeyValueTextInputFormat
2012-07-28 23:40 958key/value 分割符 mapreduce.input. ... -
Hadoop 控制split尺寸
2012-07-28 23:08 1342三个参数决定Map的Split尺寸 1.mapred.min ... -
Setting up Disks for Hadoop
2012-07-22 12:13 879Setting up Disks for Hadoop He ... -
Upgrade hadoop need think about it
2012-07-21 17:17 885Compatibility When movin ... -
Hadoop 0.23 config differ from 0.20.205
2012-07-21 17:14 928http://hadoop.apache.org/common ... -
Hadoop hdfs block 状态
2012-07-15 13:37 7271.In Service -
Hadoop 配置不当引起集群不稳
2012-07-05 15:35 1028配置不当内容 资源配置不当:内存、文件句柄数量、磁盘空间 ... -
Hadoop管理-集群维护
2012-07-03 15:27 50071.检查HDFS状态 fsck命令 1)f ... -
Hadoop Ganglia Metric Item
2012-06-27 11:13 2032dfs.FSDirectory.files_delete ...
相关推荐
【压缩包子文件的文件名称列表】: 1. "hdfs-over-ftp使用说明.docx":这份文档详细解释了如何使用hdfs-over-ftp系统。它可能涵盖了安装步骤、配置选项、命令行用法、常见问题解答等关键内容,对于用户来说是至关...
Secondary NameNode用于合并NameNode的编辑日志和文件系统的命名空间,以便压缩NameNode的编辑日志并减少其内存占用。默认端口是50091,但可以根据需要修改。 6. dfs.datanode.address 该配置项定义了DataNode用于...
压缩包子文件 "hdfs-over-ftp-hadoop-0.20.0" 没有提供具体的文件名,但我们可以假设它包含了源代码、文档、配置文件等,这些内容可能包括: 1. **源代码**:实现了FTP与HDFS交互的Java类和库,可能包括FTP服务器的...
hdfs-compress 压缩hdfs文件 一般压缩hdfs指 ,数据文件的压缩 和 mapred 中间结果压缩 工程只做数据压缩,至于MR中间结果压缩减少网络IO,只需要配置 mapred-site.xml 即可,网上资料很多。 工程只实现了lzo的压缩...
Secondary Namenode负责辅助主Namenode进行数据的合并与压缩。 4. dfs.namenode.http-address 此属性定义了通过HTTP协议访问Namenode的地址和端口,客户端可以使用这个地址来获取文件系统命名空间和状态信息。 5. ...
首先,我们来看标题"PyPI 官网下载 | dbnd-hdfs-0.34.0.tar.gz",这表明该资源是一个从PyPI官方网站获取的压缩包,版本号为0.34.0,文件格式为tar.gz,这是Linux和Unix系统中常见的归档压缩格式,用于将多个文件打包...
资源的名称“dbnd-hdfs-0.38.2.tar.gz”表明,它是以tar归档格式存储的,gz则是gzip压缩算法的缩写,这是一种常见的压缩方法,用于减小文件大小,便于在网络上传输。 首先,让我们了解“dbnd”项目。DBND(Data and...
压缩包子文件的“flume-hdfs驱动”很可能包含了这些必要的Hadoop JAR文件,解压后应该把这些文件复制到Flume安装目录下的`lib`子目录中。这样,Flume启动时会自动加载这些库,使得Flume可以识别并正确操作HDFS。 ...
在“压缩包子文件的文件名称列表”中提到的 "parboiled-examples-master",可以推断这是 Parboiled 示例代码的主分支。通常,“master”分支代表了项目的主线开发,包含了最新的稳定代码。这个目录可能包含多个示例...
压缩包子文件的文件名称列表提供了可能包含的内容线索: 1. readme.txt:通常包含了安装、配置或使用资源的指南。 2. META-INF:在Java应用中,这个目录存放元数据,如类库的清单文件。 3. WEB-INF:在Web应用程序中...
【压缩包子文件的文件名称列表】"http-stub-server-scala-master"可能包含的是该HTTP存根服务器项目的源代码仓库主分支。通常,这样的命名意味着它是通过Git版本控制系统管理的,"master"代表默认分支,包含了项目的...
压缩包子文件的文件名称列表中包含了以下关键jar包: 1. **hadoop-hdfs-2.7.1.jar**:这是主要的HDFS客户端库,包含HDFS的客户端API和其他相关类。 2. **hadoop-common-2.7.1.jar**:提供了Hadoop通用功能,包括...
spark-scala-hdfs-docker-example 使用Scala的Spark可以使用Docker“ scale”自动添加新的Spark工人,从而将文件读/写到HDFS 默认值: 工作区目录位于/ app Jar文件位于/app/app.jar。 主类是app.Main 如果要...
【压缩包子文件的文件名称列表】: 1. "教程重要说明.txt":这个文件很可能是项目开发者提供的使用指南或重要提示,包含了如何运行和操作HDFSViewer的步骤,以及可能遇到的问题和解决方案。 2. "HDFSViewer":这可能...
85_hdfs-压缩编解码器, u" o: K/ V5 B 86_hdfs-MR原理 87_hdfs-wordcount$ ?% ?& }' U. [0 M9 b 88_hadoop-mapreduce-切片演示-mapper 89_hadoop-mapreduce-url演示1 B% m, V- Z) ~. B9 |9 m2 u 90_job提交流程剖析 ...
本文将深入探讨如何将数据传输到HDFS(Hadoop分布式文件系统)并进行压缩,特别是使用LZOP压缩算法。 首先,LZOP是一种专门为Hadoop设计的压缩格式,它具有较高的压缩率和较快的解压速度,特别适合于HDFS环境。LZOP...
标题 "hadoop-native原始包-压缩-native-2.7.2-ct7.x.tgz" 指涉的是Hadoop项目中的一个特定组件——原生库(Native Libraries),这是一个针对Hadoop 2.7.2版本优化的压缩包,特别为CT7(可能是某个特定的计算或集群...
### HDFS的透明压缩存储详解 #### 引言 在大数据时代,数据的存储与处理成为了一项巨大挑战。为了应对海量数据的高效存储与快速访问需求,Hadoop分布式文件系统(HDFS)应运而生。然而,随着数据量的不断膨胀,...
- **数据压缩**:对于文本文件等可压缩的数据,可以采用Gzip、Snappy等压缩算法,在不影响数据读取效率的前提下减小存储空间占用。 - **动态调整复制因子**:根据数据的重要程度和访问频率动态调整数据块的复制...
拷贝本地文件到HDFS动机很多项目需要把本地文件拷贝到hdfs集群,本程序能自动扫描本地文件并上传到hdfs集群。特性拷贝成功后,可以选择保留或删除文件拷贝文件过程可以支持压缩例如:org.apache.hadoop.io.compress....