hadoop-2.7.2都出来了,话说可以在生产环境应用了,一通体验下来,让人要崩溃了!
我前2年写了几篇Hadoop-2.2.0+QJM HA + hive + LZO的博客,到目前为止在hadoop-2.7.2版本下依然是那么正确!呵呵,废话一把!
上述(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
直接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就存那种计算多,数据新的业务了。