|
1. Hadoop 支持lzo压缩依赖:
lzo:Unix/linux系统默认没有lzo的 库,因此需要安装,sudo yum install lzo-devel.x86_64
sudo yum install lzo.x86_64 sudo yum install lzop.x86_64
2. 准备maven,ant,gcc 等
3. 编译hadoop-lzo
从https://github.com/twitter/hadoop-lzo 下载,解压进入目录, mvn clean package
在 target 下 hadoop-lzo-0.4.20-SNAPSHOT.jar target/native/Linux-amd64-64/lib 下有 libgplcompression 库
jar包拷贝到hadoop lib目录下, gplcompression库拷贝到lib/native/Linux-amd64-64/lib下
在hadoop客户端或者各个节点,不需要都安装lzo库,可以直接把lzo库拷贝到 hadoop 下的 lib/native/Linux-amd64-64/lib下
总结:编译hadoop-lzo ,lzo-devl库同样不能少。
4. 修改hadoop 客户端配置文件(我们只需要在使用flume的机器上配置)
http://heylinux.com/archives/2078.html
5. hadoop 运行时候会报找不到本地库,这时候需要编译hadoop 带上native 参数,生成libhadoop.so等文件,并考入lib/native/Linxuamd64等目录,并设置相关环境变量,mapred-site.xml还是hadoop-env文件
//补充,lzo动态库也要拷贝到hadoop得lib/native/Linux-amd64-64/lib 下, 在启动时候还出现 java.lang.UnsatisfiedLinkError: no gplcompression in java.library.path 错误:
Java常用的两个PATH:CLASSPATH和java.library.path
CLASSPATH:指定JVM查找类文件的目录或jar
java.library.path:指定JVM查找动态连接库的目录(*.dll,*.so,*.dylib)
解决办法:
1.LINUX下的通过添加系统变量LD_LIBRARY_PATH来添加java.library.path
2.在启动Java进程时添加vm arguments:-Djava.library.path= /usr/local/lib
或者:
$hadoop_home/etc/hadoop/hadoop-env.sh 文件中增加如即可:
export JAVA_LIBRARY_PATH=$hadoop_home/lib/native/Linux-amd64-64/lib
在hadoop-0.20.205版本中处了该错误外,还有一个错误,就是找不到lzo的jar包,这是因为他们家在classpath的方法有了变更,默认不会把$hadoop_home/lib目录下的所有jar包都加载,所以在/etc/hadoop-env.sh中增加如下代码即可解决:export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$hadoop_home/lib/hadoop-lzo.jar
6. hadoop-lzo 的README.MD 文件,以及 http://blog.cloudera.com/blog/2009/11/hadoop-at-twitter-part-1-splittable-lzo-compression/ |
|
|