hadoop-2.7.2+hive 2.0.0采用LZO压缩的坑好深

hadoop-2.7.2都出来了,话说可以在生产环境应用了,一通体验下来,让人要崩溃了!

我前2年写了几篇Hadoop-2.2.0+QJM HA + hive + LZO的博客,到目前为止在hadoop-2.7.2版本下依然是那么正确!呵呵,废话一把!

Hadoop2.2.0使用之初体验

Hadoop2.2.0基于QJM的HA实践

Hadoop2.2.0+hive使用LZO压缩那些事

上述(1)、(2)基本没有变化,(3)也没啥变化,我倒是在(3)上栽大跟头了,3天下来就是想不通,怎么Hive下就是LZO文件不分片,虽说最后看来还是自己太2了,总之就在这里记述下,下不为例。


一、SSH免密码登录

这个本来比较烦人的,步骤简单,但是机器一多久让人发毛了,毕竟没有自动化啊!后来就想了个办法,在各机器上都执行:ssh-keygen -t rsa,再把各机器上生成的id_rsa.pub文件都下载下来,在windows的文本编辑器下完成合并,在把合并后的文件又上传到各Hadoop节点上,作为authorized_keys,授予644权限。

话说为了避免ssh 的第一次的时候,那种恼人的步骤出现,也可以将各节点的known_hosts 文件也用同上办法来搞定。

话说,这种做法绝对是省时间、降血压的大招。

二、LZO和LZOP的安装

现在网上的各种Hadoop安装教程,基本都是类似下面这样的千人一面了。

安装LZO

wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.06.tar.gz
tar -zxvf lzo-2.06.tar.gz 
./configure -enable-shared -prefix=/usr/local/hadoop/lzo/
make && make test && make install

安装LZOP
wget http://www.lzop.org/download/lzop-1.03.tar.gz
tar -zxvf lzop-1.03.tar.gz 
./configure -enable-shared -prefix=/usr/local/hadoop/lzop
make  && make install

烦不烦啊,各种Linux版本不是都有自己的package管理工具,比如centos 下的yum,为毛还要自己去找源代码,自己去编译呢?

直接yum install lzo lzop -y 不就什么都搞定了吗!!!!


三、Hadoop用LZO压缩

LZO这东西,和bzip2等还真不一样,没法知道靠谱不靠谱,也说不定Linux下直接执行命令,可以压缩和解压缩,但是就在Hadoop中不工作。

话说,肯定要保证在Linux上直接可以用lzop来压缩与解压缩才行,这个是基础。当然这个不全对,至于为什么不对,先就不说了!

直接把hive-2.0.0套上后,建表,加载数据等,再就是直接select count(*) from xxx,能有个数字结果的话,好歹hadoop上的LZO是支持了。


四、hive-2.0.0变天了

我就是栽倒在这里了。一句话,hive-2.0.0没法应用到LZO文件的分片,无论多大的文件,都还是当成一个再来该干嘛干嘛!话说,hadoop-lzo.jar根本就没有被用到,当然没有这个,提交JOB的时候就会错了,但是真的等到JOB+TASK都跑的时候,LZO文件就不分片了。

hive-2.0.0相比之前的版本已经大变样 了!


五、hadoop的压缩

本次就是比较了一下bzip2 、LZO两种。

LZO真的压缩和解压缩好快好快,毛病就是压缩后的文件还是很大,以nginx的access.log来计算的话,压缩率介于1/3 ~1/2之间吧,一个12G的文件,压缩后为5G上线,时间在20秒上下。

bzip2的好处就是压缩率高,12G的文件,LZO后5G,bzip2后2G,不过别看它压缩率高,也支持分片,但是时间上会让发狂的。12G的nginx的访问日志文件,压缩一把要25分钟左右,解压缩要1.5分钟左右,和LZO没有比较余地了。

可以考虑把半年以前的数据都bzip2来压缩,毕竟这个用的少,压缩率也高,就算少量的用也能应付,不就是时间长点而已。LZO就存那种计算多,数据新的业务了。

猜你喜欢

转载自blog.csdn.net/zhangzhaokun/article/details/50967776