- 浏览: 155060 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (113)
- Java工具类 (3)
- Hibernate (1)
- Struts>1&2 (0)
- Spring (0)
- Web前端 (1)
- 数据库 (2)
- 中间件 (3)
- 搜索引擎 (11)
- EJB (1)
- Log日志 (1)
- OS操作系统 (7)
- Java文档 (4)
- Security (1)
- Exception&Error (7)
- 日志&心情 (7)
- 开心一下 (3)
- 云计算 (41)
- Cache缓存 (4)
- MongoDB (1)
- OS操作系统 Linux (7)
- jquery (1)
- 机器学习 (2)
- Plugins (2)
- AJAX (1)
- Java工具 (1)
- WebService (1)
最新评论
-
a420144030:
你好,我想计算n篇文章的相似度,用mahout能处理吗,如何做 ...
mahout使用 -
di1984HIT:
OK,真的很牛啊
hadoop常见错误 -
xwl1991:
还真是这个问题 !
quartz报错java.lang.NoSuchMethodError: org.apache.commons.collections.SetUtils.ord
转自:http://www.tech126.com/hadoop-lzo/
自从Hadoop集群搭建以来,我们一直使用的是Gzip进行压缩
当时,我对gzip压缩过的文件和原始的log文件分别跑MapReduce测试,最终执行速度基本差不多
而且Hadoop原生支持Gzip解压,所以,当时就直接采用了Gzip压缩的方式
关于Lzo压缩,twitter有一篇文章,介绍的比较详细,见这里:
Lzo压缩相比Gzip压缩,有如下特点:
- 压缩解压的速度很快
- Lzo压缩是基于Block分块的,这样,一个大的文件(在Hadoop上可能会占用多个Block块),就可以由多个MapReduce并行来进行处理
虽然Lzo的压缩比没有Gzip高,不过由于其前2个特性,在Hadoop上使用Lzo还是能整体提升集群的性能的
我测试了12个log文件,总大小为8.4G,以下是Gzip和Lzo压缩的结果:
- Gzip压缩,耗时480s,Gunzip解压,耗时180s,压缩后大小为2.5G
- Lzo压缩,耗时160s,Lzop解压,耗时110s,压缩后大小为4G
以下为在Hadoop集群上使用Lzo的步骤:
1. 在集群的所有节点上安装Lzo库,可从这里下载
cd /opt/ysz/src/lzo-2.04
./configure –enable-shared
make
make install
#编辑/etc/ld.so.conf,加入/usr/local/lib/后,执行/sbin/ldconfig
或者cp /usr/local/lib/liblzo2.* /usr/lib64/
#如果没有这一步,最终会导致以下错误:
lzo.LzoCompressor: java.lang.UnsatisfiedLinkError: Cannot load liblzo2.so.2 (liblzo2.so.2: cannot open shared object file: No such file or directory)!
2. 编译安装Hadoop Lzo本地库以及Jar包,从这里下载
export CFLAGS=-m64
export CXXFLAGS=-m64
ant compile-native tar
#将本地库以及Jar包拷贝到hadoop对应的目录下,并分发到各节点上
cp lib/native/Linux-amd64-64/* /opt/sohuhadoop/hadoop/lib/native/Linux-amd64-64/
cp hadoop-lzo-0.4.10.jar /opt/sohuhadoop/hadoop/lib/
3. 设置Hadoop,启用Lzo压缩
vi core-site.xml
<property>
<name>io.compression.codecs</name>
<value>org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.DefaultCodec,com.hadoop.compression.lzo.LzoCodec,com.hadoop.compression.lzo.LzopCodec,org.apache.hadoop.io.compress.BZip2Codec</value>
</property>
<property>
<name>io.compression.codec.lzo.class</name>
<value>com.hadoop.compression.lzo.LzoCodec</value>
</property>
vi mapred-site.xml
<property>
<name>mapred.compress.map.output</name>
<value>true</value>
</property>
<property>
<name>mapred.map.output.compression.codec</name>
<value>com.hadoop.compression.lzo.LzoCodec</value>
</property>
4. 安装lzop,从这里下载
下面就是使用lzop压缩log文件,并上传到Hadoop上,执行MapReduce操作,测试的Hadoop是由3个节点组成集群
lzop -v 2011041309.log
hadoop fs -put *.lzo /user/pvlog
#给Lzo文件建立Index
hadoop jar /opt/sohuhadoop/hadoop/lib/hadoop-lzo-0.4.10.jar com.hadoop.compression.lzo.LzoIndexer /user/pvlog/
写一个简单的MapReduce来测试,需要指定InputForamt为Lzo格式,否则对单个Lzo文件仍不能进行Map的并行处理
job.setInputFormatClass(com.hadoop.mapreduce.LzoTextInputFormat.class);
可以通过下面的代码来设置Reduce的数目:
job.setNumReduceTasks(8);
最终,12个文件被切分成了36个Map任务来并行处理,执行时间为52s,如下图:
我们配置Hadoop默认的Block大小是128M,如果我们想切分成更多的Map任务,可以通过设置其最大的SplitSize来完成:
FileInputFormat.setMaxInputSplitSize(job, 64 *1024 * 1024);
最终,12个文件被切分成了72个Map来处理,但处理时间反而长了,为59s,如下图:
而对于Gzip压缩的文件,即使我们设置了setMaxInputSplitSize,最终的Map数仍然是输入文件的数目12,执行时间为78s,如下图:
从以上的简单测试可以看出,使用Lzo压缩,性能确实比Gzip压缩要好不少
发表评论
-
用Sqoop把数据从HDFS导入到MYSQL
2012-10-27 23:30 2354转自:http://www.kaifajie.cn/mySQL ... -
大数据的储存:百度HDFS集群的数据压缩
2012-08-30 17:48 12072012年4月13日,由IT168(ITP ... -
用sqoop进行mysql和hdfs系统间的数据互导
2012-07-31 16:32 1941转自:http://abloz.com/2012/07/19/ ... -
从hive将数据导出到mysql
2012-07-31 16:31 1824转自:http://abloz.com/2012/07/20/ ... -
Hive SQL
2012-07-19 13:49 1426转自:http://www.tbdata.org/ ... -
Hive优化总结
2012-07-09 15:18 4332优化时,把hive sql当做ma ... -
hadoop/mapred 优化方法
2012-06-12 11:47 1396从三个方面着手优化 : 1. hadoop配置 2. ... -
hadoop集群dfs.data.dir目录权限问题导致节点无法启动
2012-06-11 18:32 6228安装使用Hive的时候发现文件无法从本地拷贝到hadoo ... -
hadoop中的balancer
2012-06-11 15:49 1145对于HDFS集群,经常长时间的运行,尤其是大量的delete操 ... -
使用Hive读取Hbase中的数据
2012-05-23 13:12 2274转自:http://www.4ucode.com/Study/ ... -
在XP系统下配置eclipse集成hadoop开发
2012-05-05 11:09 1048一、目的:由于hadoop只能在Linux环境下运行,所以对于 ... -
使用Hive读取Hbase中的数据
2012-04-18 14:24 1098转自:http://www.4ucode.com/Study/ ... -
Web日志分析方法概述 让复杂的数据挖掘变得简单可行
2012-04-13 16:31 874志在计算机系统中是一个非常广泛的概念,任何程序都有可能输出日志 ... -
应用sqoop将MySQL数据库中的数据导入Hbase
2012-04-12 11:31 2066转自:http://www.bwxxkj.com/a/jish ... -
hadoop中的trash机制,恢复删除的文件
2012-03-31 13:46 2201Hadoop回收站trash,默认是关闭的。 1.修改con ... -
Hadoop 和DBMS 的互补性
2012-03-29 12:22 672随着Microsoft 也加入Hadoop 阵营,Hadoop ... -
Hadoop 中的两表join
2012-03-29 12:20 851转自:http://www.gemini52013 ... -
各版本编译hadoop eclipse plugin
2012-03-29 12:19 1384转自:http://www.gemini52013 ... -
hadoop常见错误
2012-03-24 13:04 1666错误1:bin/hadoop dfs 不能正常启动,持续提 ... -
hbase运维
2012-03-23 17:33 1308转自:http://blog.bluedavy.c ...
相关推荐
Hadoop 集群中使用 LZO,可以提高数据处理速度和存储效率。本文将详细介绍如何在 Hadoop 集群中安装和配置 LZO。 一、环境准备 本文假设使用 CentOS 5.5 操作系统和 Hadoop-0.20.2-CDH3B4 版本。 二、安装所需...
为了在Hadoop集群中使用LZO,有两种主要的方法: 1. **融入Hadoop源码**:首先,你需要获取Hadoop的源代码,然后将LZO的源代码整合进Hadoop项目。这通常涉及将LZO的Java代码添加到Hadoop的源代码树中,修改相应的...
5. **与Hadoop的集成**:Hadoop-LZO库提供了与Hadoop的无缝集成,允许用户直接在Hadoop作业中使用LZO压缩,无需额外的复杂配置。 然而,值得注意的是,虽然LZO速度快,但其压缩比低可能会导致存储成本增加。因此,...
这个JAR文件需要添加到Hadoop的类路径(classpath)中,以便Hadoop集群能够识别并使用LZO压缩格式。 在实际使用Hadoop LZO时,我们需要进行以下步骤: 1. 安装和配置:首先,下载hadoop-lzo-0.4.21-SNAPSHOT.jar,...
综合来看,这个压缩包可能是一个用于大数据处理环境的工具集,其中`lzo-2.06.tar.gz`提供了LZO压缩库,`hadoop-lzo-master.zip`包含了在Hadoop上使用LZO的代码,而`apache-maven-3.3.9-bin.tar.gz`则是用于构建和...
描述中提到的"Mac下编译的hadoop-lzo"意味着这个版本是在Mac操作系统上编译构建的,这确保了在Mac环境下运行Hadoop集群时,可以顺利集成和使用这个压缩库。Hadoop-LZO的源代码编译通常涉及到Java开发环境(JDK)、...
文件“lzo-2.06.tar.gz”是LZO源代码的归档文件,通过解压可以获得LZO的源代码,开发者或系统管理员可以编译安装这个库,以便在自己的系统上使用LZO压缩和解压缩工具。而“hadoop-lzo-master.zip”则是Hadoop-LZO...
理解并掌握Hadoop-LZO的原理和使用方法,对于优化Hadoop集群的性能和资源利用率具有重要意义。在实际项目中,根据具体需求选择合适的压缩算法,结合Hadoop-LZO的特性,可以为大数据处理带来显著的优势。
为了在Hadoop集群中使用Hadoop LZO,用户需要将库文件添加到Hadoop的类路径中,并配置Hadoop的属性,如`io.compression.codecs`和`io.compression.codec.lzo.class`,以启用LZO压缩支持。同时,还需要确保集群中的...
【Hadoop集群LZO安装与配置】 在大数据处理领域,Hadoop是一个广泛使用的开源框架,而LZO是一种高效的压缩算法,常用于Hadoop集群中,以减少数据存储和传输的开销。本文将详细介绍如何在运行CentOS 5.5且安装了...
在Hadoop集群中部署LZO,通常包括以下步骤: 1. 安装LZO库:首先需要在所有节点上安装LZO库,包括编译工具和库文件。 2. 获取并编译Hadoop LZO插件:从GitHub或其他源获取Hadoop-LZO项目,编译生成的jar文件。 3. ...
完成上述步骤后,Hadoop集群就可以使用LZO压缩功能了。在HDFS上存储数据时可以选择LZO压缩,或者在MapReduce作业中对输入数据进行LZO解压,以充分利用其高效性和低延迟特性。同时,为了确保集群中的所有节点都能正确...
在大数据处理领域,...同时,了解各种压缩算法的特点和性能,对于优化Hadoop集群的性能和资源利用率至关重要。在实际操作中,应根据具体的数据特性和业务需求,进行适当的测试和调优,以找到最适合的压缩策略。
这包括安装LZO开发库,编译Hadoop的源代码以支持LZO,创建必要的自定义编解压器,以及在Hadoop的配置文件中启用LZO压缩。 4. **安装hive客户端.txt**: Hive是基于Hadoop的数据仓库工具,允许用户使用SQL查询HDFS...
Hadoop-lzo是针对Hadoop生态系统优化的Lzo实现,它允许Hadoop集群在MapReduce作业中直接处理Lzo压缩的文件。Hadoop-lzo不仅包含了对Lzo库的集成,还提供了一个名为`GzipIndexer`的工具,用于创建Lzo文件的索引,使得...
2. **编译和安装**:使用Apache Maven或其他构建工具编译LZO源代码,并将其安装到Hadoop集群的每个节点上。 3. **配置Hadoop**:修改Hadoop的相关配置文件(如`hadoop-env.sh`,`core-site.xml`),设置LZO的路径和...
使用Hadoop-LZO时,用户需要将其配置到Hadoop集群中,然后在需要压缩的数据流上应用LZO。这可能涉及到修改Hadoop作业的配置,或者在HDFS中启用默认的块压缩。同时,需要注意的是,使用LZO压缩需要在集群中安装相应的...