fedora17 下配置LNMP
2012-11-21 13:32
453 查看
前面的文章介绍了hadoop lzo的安装和配置,本文接着介绍lzo压缩在hadoop应用程序中的使用方法,包括在mapreduce程序,streaming程序和hive中的使用。
如果没有索引,lzo文件也是可以处理的,mapreduce会根据后缀名“.lzo”来对lzo文件解压,并且inputformat也不需要特别指定,但是不支持分块,整个lzo文件只用一个map来处理。
hadoop-lzo包本身提供了建立lzo索引的类,可以在本地运行程序建立索引,也可以运行mapreduce程序建立索引。
本地运行程序建立索引
两个程序运行成功之后,都会在hdfs目录/hdfs/path/to/下生成一个索引文件file.lzo.index。
另外,编译的时候需要引入hadoop-lzo-0.4.20-SNAPSHOT.jar包。如果是用maven编译,在pom文件中把这个依赖加上
https://github.com/kevinweil/hadoop-lzo
http://www.cloudera.com/blog/2009/11/17/hadoop-at-twitter-part-1-splittable-lzo-compression/
本文出自 “大数据的自由天空” 博客,请务必保留此出处http://sstudent.blog.51cto.com/7252708/1405523
1 给lzo文件建立索引
lzo文件需要建立索引才能支持分块(split)。如果没有索引,lzo文件也是可以处理的,mapreduce会根据后缀名“.lzo”来对lzo文件解压,并且inputformat也不需要特别指定,但是不支持分块,整个lzo文件只用一个map来处理。
hadoop-lzo包本身提供了建立lzo索引的类,可以在本地运行程序建立索引,也可以运行mapreduce程序建立索引。
本地运行程序建立索引
$HADOOP_HOMOE/bin/hadoop jar \ $HADOOP_HOMOE/share/hadoop/mapreduce/lib/hadoop-lzo-0.4.20-SNAPSHOT.jar \ com.hadoop.compression.lzo.LzoIndexer \ /hdfs/path/to/file.lzo运行mapreduce程序建立索引
$HADOOP_HOMOE/bin/hadoop jar \ $HADOOP_HOMOE/share/hadoop/mapreduce/lib/hadoop-lzo-0.4.20-SNAPSHOT.jar \ com.hadoop.compression.lzo.DistributedLzoIndexer \ /hdfs/path/to/file.lzo从类名DistributedLzoIndexer可以看出是通过mapreduce分布式程序来建立索引的。
两个程序运行成功之后,都会在hdfs目录/hdfs/path/to/下生成一个索引文件file.lzo.index。
2 在mapreduce程序中使用lzo压缩
如果是用新的mapreduce框架,把inputformat设置成LzoTextInputFormat,import com.hadoop.mapreduce.LzoTextInputFormat;
job.setInputFormatClass(LzoTextInputFormat.class);如果是用旧的mapred框架,把inputformat设置成DeprecatedLzoTextInputFormat,
import com.hadoop.mapred.DeprecatedLzoTextInputFormat;
job.setInputFormatClass(DeprecatedLzoTextInputFormat.class);注意,对于建立了索引的lzo文件,如果不把inputformat设置为LzoTextInputFormat/DeprecatedLzoTextInputFormat,则会把索引文件也当做是输入文件。
另外,编译的时候需要引入hadoop-lzo-0.4.20-SNAPSHOT.jar包。如果是用maven编译,在pom文件中把这个依赖加上
<dependency> <groupId>com.hadoop.gplcompression</groupId> <artifactId>hadoop-lzo</artifactId> <version>0.4.20</version> </dependency>
3 在streaming程序中使用lzo压缩
把inputformat设置为DeprecatedLzoTextInputFormat,还要设置参数 stream.map.input.ignoreKey=true,如$HADOOP_HOME/bin/hadoop jar \ $HADOOP_HOME/share/hadoop/tools/lib/hadoop-streaming-2.2.0.jar \ -D stream.map.input.ignoreKey=true \ -inputformat com.hadoop.mapred.DeprecatedLzoTextInputFormat \ -input /path/to/input \ -output /path/to/output \ -mapper cat \ -reducer wc如果不加上stream.map.input.ignoreKey=true参数,会把map的key值(key值是行在文件中的偏移量,value值是每行的文本)也会传入mapper程序中,这个key值我们是不需要的。
4 在hive中使用lzo压缩
同样在建表的时候需要指定inputformat为DeprecatedLzoTextInputFormat,outputformat为 HiveIgnoreKeyTextOutputFormat(这个是hive默认的,可以不用指定),如create table lzo_test( i int, s string) STORED AS INPUTFORMAT 'com.hadoop.mapred.DeprecatedLzoTextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat';
参考资料:
https://github.com/twitter/hadoop-lzohttps://github.com/kevinweil/hadoop-lzo
http://www.cloudera.com/blog/2009/11/17/hadoop-at-twitter-part-1-splittable-lzo-compression/
本文出自 “大数据的自由天空” 博客,请务必保留此出处http://sstudent.blog.51cto.com/7252708/1405523
相关文章推荐
- Fedora 17 linux 配置LAMP Server
- Fedora 17配置ssh及Windows远程连接
- Win7 硬盘安装 Fedora17 ,显卡和一些工具的安装与配置
- Fedora 17 安装后的配置
- fedora 17配置
- Fedora16/17 Mysql 安装及配置
- Fedora 17 安装后的配置
- Fedora 17 开启samba服务配置
- 转:Fedora 17安装后配置|rpmfusion源|Rhythmbox mp3 wma支持插件|smplayer
- fedora17 安装配置
- Fedora17安装MySQL及配置
- [百晓生]-Fedora17 Mysql 安装及配置
- 在fedora中配置LNMP(linux + nginx + mysql +php)
- Fedora 17 x64如何配置nfs服务
- Fedora 17配置NFS (未完成版)
- fedora 17安装配置netbeans
- Fedora 17配置NFS
- Fedora 17配置ssh及Windows远程连接
- Fedora 17的一些配置
- Fedora17中安装和配置samba服务器