压缩优化 由于hadoop的很多结果都是由mr触发,mr中间伴随着很多硬盘IO。 所以这里需要启用压缩算法,减少IO数据量,减少IO时间。 症状表现:运行时看到 2014-07-14 18:13:09,386 WARN util.NativeCodeLoader - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 2014-07-14 18:13:09,437 WARN snappy.LoadSnappy - Snappy native library not loaded 解决思路: http://www.cnblogs.com/jiama/archive/2013/05/03/3056419.html http://yeelor.iteye.com/blog/1991075 http://code.google.com/p/hadoop-snappy/ 解决方案: 1 找到程序运行时的-Djava.library.path 比如: -Djava.library.path=/usr/local/nutch-1.7/runtime/local/lib/native/Linux-amd64-64 2 复制libhadoop.so到此目录 wget http://archive.apache.org/dist/hadoop/core/hadoop-1.1.2/hadoop-1.1.2.tar.gz tar -zvxf hadoop-1.1.2.tar.gz cd hadoop-1.1.2 搜索libhadoop.so find ./ -name libhadoop.so ./lib/native/Linux-i386-32/libhadoop.so ./lib/native/Linux-amd64-64/libhadoop.so 根据自己的主机架构,复制相应的libhadoop.so文件到java.library.path中去。 3 下载编译libsnappy.so 打开http://code.google.com/p/snappy/ 或者直接下载wget http://snappy.googlecode.com/files/snappy-1.1.0.tar.gz tar -zvxf snappy-1.1.0.tar.gz cd snappy-1.1.0 ./configure make find ./ -name libsnappy.so 结果是找到了./.libs/libsnappy.so 注意:这里是一个链接文件,要把真正的文件复制到java.library.path中去。
4 修改配置文件 vi conf/nutch-site.xml // Compress Map output <property> <name>mapred.compress.map.output</name> <value>true</value> </property> <property> <name>mapred.map.output.compression.codec</name> <value>org.apache.hadoop.io.compress.SnappyCodec</value> </property> // Compress MapReduce output <property> <name>mapred.output.compress</name> <value>true</value> </property> <property> <name>mapred.output.compression</name> <value>org.apache.hadoop.io.compress.SnappyCodec</value> </property>
Nutch学习笔记11---1.7local模式启用压缩算法
时间: 2024-10-22 12:53:09