Hadoop2.7.1和Hbase0.98添加LZO压缩
来源:互联网 发布:vue双向数据绑定面试 编辑:程序博客网 时间:2024/04/28 05:20
1,执行命令安装一些依赖组件
yum install -y hadoop-lzo lzo lzo-devel hadoop-lzo-native lzop
2, 下载lzo的源码包并解压
tar -zxvf lzo-2.09.tar.gz
3,在当前目录新建一个lzo目录,存储编译后的lzo文件
进入lzo-2.09目录
依次执行命令:
export CFLAGS=-64m
./configure --enable-shared --prefix=/home/search/lzo
make && make install
4,下载twitter的hadoop-lzo源码进行编译:
然后依次执行如下命令,配置环境变量:
export CFLAGS=-64m
export CXXFLAGS=-64m
export C_INCLUDE_PATH=/home/search/lzo/include
export LIBRARY_PATH=/home/search/lzo/lib
然后执行mvn clean test构建
mvn clean test
确认success后,即可执行:
mvn clean package -Dmaven.test.skip=true
进行打包构建,构建成功后,
拷贝编译文件 cp -a hado* 到hadoop/lib/native/ 和 hbase/lib/ 下面
拷贝lzo的jar包doop/share/hadoop/common/lib下面和hbase/lib下面
//测试hbase是否支持snappy
hbase org.apache.hadoop.hbase.utilt /user/webmaster/word/in/tt2 snappy
//测试hbase是否支持lzo
hbase org.apache.hadoop.hbase.ut /user/webmaster/word/in/tt2 lzo
//压缩lzop,解压缩lzop -d
//执行一个MR任务,给lzo相关数据,建索引,
bin/hadoop jar share/hadoop/coop-lzo-0n.lzoer /user/webmaster/rand
//执行一个单机任务,给lzo相关数据,建索引
bin/hadoop jar shb/hadoop-lzo-0.4.20-SNAPSHOT.jar
com.hadoop.compreexer /user/webmaster/rand
经过测试同样的数据:
不设置任何压缩的hbase表,所占存储空间最大
经过snappy压缩的表,存储空间明显变小
经过lzo压缩的表,存储空间最小
遇到的问题:
一个hbase中,如果同时有两种压缩表,一个是lzo压缩的表,一个是snappy压缩的表,那么在使用java client去scan数据时,可能会有regionserver会挂掉,经过查看log,发现hbase中并无明显异常,但是同节点的hadoop的datanode的log中会抛出了如下异常:
影音先锋电影 http://www.iskdy.com/
经过查资料,发现说的都是hbase的客户端租约超时,或者是linux的句柄数太少,等等,经过验证,发现跟这些处理方法没关系,删除了一个snappy压缩的表,继续测试,这下能正常运行了, 至于具体的原理,还没搞清楚,可能与hbase的hfile的底层存储有关系,一个region下面不能同时存储在两种压缩数据结构,这个坑得记住。
yum install -y hadoop-lzo lzo lzo-devel hadoop-lzo-native lzop
2, 下载lzo的源码包并解压
tar -zxvf lzo-2.09.tar.gz
3,在当前目录新建一个lzo目录,存储编译后的lzo文件
进入lzo-2.09目录
依次执行命令:
export CFLAGS=-64m
./configure --enable-shared --prefix=/home/search/lzo
make && make install
4,下载twitter的hadoop-lzo源码进行编译:
伦理片 http://www.dotdy.com/
进入hadoop-lzo目录,修改pom中hadoop的版本为2.7.1然后依次执行如下命令,配置环境变量:
export CFLAGS=-64m
export CXXFLAGS=-64m
export C_INCLUDE_PATH=/home/search/lzo/include
export LIBRARY_PATH=/home/search/lzo/lib
然后执行mvn clean test构建
mvn clean test
确认success后,即可执行:
mvn clean package -Dmaven.test.skip=true
进行打包构建,构建成功后,
拷贝编译文件 cp -a hado* 到hadoop/lib/native/ 和 hbase/lib/ 下面
拷贝lzo的jar包doop/share/hadoop/common/lib下面和hbase/lib下面
//测试hbase是否支持snappy
hbase org.apache.hadoop.hbase.utilt /user/webmaster/word/in/tt2 snappy
//测试hbase是否支持lzo
hbase org.apache.hadoop.hbase.ut /user/webmaster/word/in/tt2 lzo
//压缩lzop,解压缩lzop -d
//执行一个MR任务,给lzo相关数据,建索引,
bin/hadoop jar share/hadoop/coop-lzo-0n.lzoer /user/webmaster/rand
//执行一个单机任务,给lzo相关数据,建索引
bin/hadoop jar shb/hadoop-lzo-0.4.20-SNAPSHOT.jar
com.hadoop.compreexer /user/webmaster/rand
经过测试同样的数据:
不设置任何压缩的hbase表,所占存储空间最大
经过snappy压缩的表,存储空间明显变小
经过lzo压缩的表,存储空间最小
遇到的问题:
一个hbase中,如果同时有两种压缩表,一个是lzo压缩的表,一个是snappy压缩的表,那么在使用java client去scan数据时,可能会有regionserver会挂掉,经过查看log,发现hbase中并无明显异常,但是同节点的hadoop的datanode的log中会抛出了如下异常:
影音先锋电影 http://www.iskdy.com/
- java.io.IOException: Premature EOF from inputStream
- at org.apache.hadoop.io.IOUtils.readFully(IOUtils.java:201)
- at org.apache.hadoop.hdfs.protocol.datatransfer.PacketReceiver.doReadFully(PacketReceiver.java:213)
- at org.apache.hadoop.hdfs.protocol.datatransfer.PacketReceiver.doRead(PacketReceiver.java:134)
- at org.apache.hadoop.hdfs.protocol.datatransfer.PacketReceiver.receiveNextPacket(PacketReceiver.java:109)
- at org.apache.hadoop.hdfs.server.datanode.BlockReceiver.receivePacket(BlockReceiver.java:472)
- at org.apache.hadoop.hdfs.server.datanode.BlockReceiver.receiveBlock(BlockReceiver.java:849)
- at org.apache.hadoop.hdfs.server.datanode.DataXceiver.writeBlock(DataXceiver.java:804)
- at org.apache.hadoop.hdfs.protocol.datatransfer.Receiver.opWriteBlock(Receiver.java:137)
- at org.apache.hadoop.hdfs.protocol.datatransfer.Receiver.processOp(Receiver.java:74)
- at org.apache.hadoop.hdfs.server.datanode.DataXceiver.run(DataXceiver.java:251)
- at java.lang.Thread.run(Thread.java:745)
经过查资料,发现说的都是hbase的客户端租约超时,或者是linux的句柄数太少,等等,经过验证,发现跟这些处理方法没关系,删除了一个snappy压缩的表,继续测试,这下能正常运行了, 至于具体的原理,还没搞清楚,可能与hbase的hfile的底层存储有关系,一个region下面不能同时存储在两种压缩数据结构,这个坑得记住。
0 0
- Hadoop2.7.1和Hbase0.98添加LZO压缩
- centos6.4hadoop2.2使用lzo压缩配置和测试
- HBase0.94和Hadoop2 结合
- hadoop2.6.0压缩方式lzo部署安装
- hadoop2.5.0和hbase0.98完全分布式安装
- hadoop2.4.1+hbase0.98集群
- hadoop2.5.1+Hbase0.98安装
- hadoop2.20 和 hbase0.96 metrics 配置
- Hadoop2.2.0+hive使用LZO压缩那些事
- hadoop2.4及hbase0.98安装入门
- hadoop,hive启用lzo压缩和创建lzo索引
- java 压缩和解压lzo文件
- hbase0.94.14+hadoop2.6.0
- hadoop2.2.0 和 hbase0.94.12 平台使用phoenix
- Centos 7 伪分布式安装Hadoop2.6和Hbase0.94
- Hbase0.98版本的安装部署配置管理(Hadoop2.3、Hbase0.98、Hive0.13整合)
- Hbase0.98版本的安装部署配置管理(Hadoop2.3、Hbase0.98、Hive0.13整合)
- Hbase0.98版本的安装部署配置管理(Hadoop2.3、Hbase0.98、Hive0.13整合)
- 字符转码开源库libiconv目前还不支持64位
- C语言:关于字符串的编程题
- RedHatLinux6.5下安装无线网卡驱动
- 程序员从优秀到卓越的几点建议
- thinker学习笔记processbar
- Hadoop2.7.1和Hbase0.98添加LZO压缩
- 第一次使用Android Studio时你应该知道的一切配置(1)
- mysql 删除重复数据只保留一条
- skynet 控制台管理使用技巧
- arale插件-uploadjs解读arale组件
- Android 之View绘图原理总结
- 元旦集训总结
- js注释引起的问题
- CentOS6.5的简单配置