Apache BigTop试用感想

Bigtop是去年apache基金会推出的一个对Hadoop及其周边生态进行打包,分发和测试的工具。推出的时间不长,加上官方的文档很简单,只告诉你如何用bigtop安装hadoop,其他都不讲。这两天深入的玩了一下,就个人体会来说,Bigtop算是个比较有趣的玩具。实用价值不大,尤其是对准备在hadoop本身上做文章的公司和个人来说,是一个看上去很美,但实际部署是很值得商榷的玩意。

Bigtop,本意是马戏团的大帐篷,apache hadoop整个生态系统都是由动物标志所构成的,所以由Cloudera提交给apache的这个软件,用意比较明显,就是他想用这玩意一统Hadoop生态系统圈。这个放到后面去说,总之,Cloudera的野心还是很大的。

相关阅读: Hadoop打包与测试工具Bigtop简介

在我玩这个东西之前,我做了两件事,看了一下官方文档和找中文资料,但是十分遗憾,官方文档只写如何通过下载apache bigtop的官方repo去在你的操作系统里加入一个安装hadoop的源,却没有讲他是如何打包和分发的。中文相关的内容我只找到寥寥几篇新闻和一篇简介通过bigtop安装hadoop的博客,基本没有太多的参考价值,只能自己钻研。

如果只看官方文档,会认为这个东西不过就是apache官方提供的一个安装hadoop ecosystem的源,包含yum的repo和apt的repo而已。但是其实这个软件还是有点水平的,他最重要的功能并不是给你一个.repo的文件,而是让你自己把apache的hadoop生态系统打成安装包和建立仓库源。这样你就可以把apache官方的hadoop生态圈都打成自己的包来进行分发,并且这些生态软件与hadoop发行版之间的兼容性是由bigtop来自动解决的,而Cloudera的野心就在这个自动解决上,继续往下。

那我不是可以做一个自己的hadoop发行版,也开个公司干个Cloudera出来了吗?我觉得这问题你基本别想,bigtop在打包过程中,除了会下载maven的repo中的jar文件,最重要的是他还要下载很多cloudera的jar包。等于你最后打完的东西,是个cloudera和apache混合的rpm包,这是我觉得cloudera的野心所在,所以hortonworks和mapr根本不鸟这个玩意。提都不带提的。论开源,它里面有闭源的东西,天知道闭源的jar包都在干什么。论性能和稳定,谁也没验证过。所以我觉得这就是一个玩具,玩玩即可,真把他打出来的东西放到生产环境,会发生什么事情,只有上帝才知道。当然他是开源的,你可以去修改pom里面的东西去掉cloudera的玩意换成自己的,但是我觉得那比直接改hadoop源码还费劲。

大概介绍一下使用,我用CentOS,按照官方文档要求,你必须自己解决如下的依赖:
Building Bigtop requires the following tools:

Java JDK 1.6

Apache Ant

Apache Maven

wget

tar

git

subversion

gcc

gcc-c++

make

fuse

protobuf-compiler

autoconf

automake

libtool

sharutils

asciidoc

xmlto

On RPM-based systems one also needs

我在CentOS 6上玩的,然后我发现,用yum安装这些东西,只是长征的开始。Maven和ProtocolBuffer是需要自己去安装的,yum里面没有。然后他还少写了一个依赖是cmake,然后你还需要自己去export PATH,JAVA_HOME,LD_LIBARY_PATH什么的。

安装好各种依赖,就可以开始尝试build hadoop了。bigtop-0.6.0是用最新的apache-hadoop-2.0.5-alpha的源码进行编译打包。

正常的话,编译到中间你会遇到错误,maven会号称找不到com.google.protobuf的类。这时候还是得修改hadoop的一个pom.xml文件,将编译配置里面的protobuf换成你自己编译的prorocolbuffer的jar包。maven自动下载的protobuf的jar包应该是有问题,用不了。

编译过程很简单,但是编译排错是很麻烦的事情。编译完成之后的东西看起来很眼熟。
[root@localhost hadoop]# ll -h
总用量 77M
-rw-r--r-- 1 root root  12M 7月  6 16:33 hadoop-2.0.5-1.el6.src.rpm
-rw-r--r-- 1 root root  15M 7月  6 16:53 hadoop-2.0.5-1.el6.x86_64.rpm
-rw-r--r-- 1 root root 7.6K 7月  6 16:53 hadoop-client-2.0.5-1.el6.x86_64.rpm
-rw-r--r-- 1 root root  15K 7月  6 16:53 hadoop-conf-pseudo-2.0.5-1.el6.x86_64.rpm
-rw-r--r-- 1 root root 139K 7月  6 16:53 hadoop-debuginfo-2.0.5-1.el6.x86_64.rpm
-rw-r--r-- 1 root root 4.0M 7月  6 16:53 hadoop-doc-2.0.5-1.el6.x86_64.rpm
-rw-r--r-- 1 root root  12M 7月  6 16:53 hadoop-hdfs-2.0.5-1.el6.x86_64.rpm
-rw-r--r-- 1 root root 4.6K 7月  6 16:53 hadoop-hdfs-datanode-2.0.5-1.el6.x86_64.rpm
-rw-r--r-- 1 root root  21K 7月  6 16:53 hadoop-hdfs-fuse-2.0.5-1.el6.x86_64.rpm
-rw-r--r-- 1 root root 4.5K 7月  6 16:53 hadoop-hdfs-journalnode-2.0.5-1.el6.x86_64.rpm
-rw-r--r-- 1 root root 4.6K 7月  6 16:53 hadoop-hdfs-namenode-2.0.5-1.el6.x86_64.rpm
-rw-r--r-- 1 root root 4.6K 7月  6 16:53 hadoop-hdfs-secondarynamenode-2.0.5-1.el6.x86_64.rpm
-rw-r--r-- 1 root root 4.6K 7月  6 16:53 hadoop-hdfs-zkfc-2.0.5-1.el6.x86_64.rpm
-rw-r--r-- 1 root root  17M 7月  6 16:53 hadoop-httpfs-2.0.5-1.el6.x86_64.rpm
-rw-r--r-- 1 root root  26K 7月  6 16:53 hadoop-libhdfs-2.0.5-1.el6.x86_64.rpm
-rw-r--r-- 1 root root  11M 7月  6 16:53 hadoop-mapreduce-2.0.5-1.el6.x86_64.rpm
-rw-r--r-- 1 root root 4.6K 7月  6 16:53 hadoop-mapreduce-historyserver-2.0.5-1.el6.x86_64.rpm
-rw-r--r-- 1 root root 8.8M 7月  6 16:53 hadoop-yarn-2.0.5-1.el6.x86_64.rpm
-rw-r--r-- 1 root root 4.5K 7月  6 16:53 hadoop-yarn-nodemanager-2.0.5-1.el6.x86_64.rpm
-rw-r--r-- 1 root root 4.4K 7月  6 16:53 hadoop-yarn-proxyserver-2.0.5-1.el6.x86_64.rpm
-rw-r--r-- 1 root root 4.5K 7月  6 16:53 hadoop-yarn-resourcemanager-2.0.5-1.el6.x86_64.rpm

是不是跟Cloudera的东西一模一样,唯一的区别就是前面没有了cdh的前缀。除了编译2.x,1.x我也试了,默认情况下远程已经找不到源代码的文件了。

也尝试编了其他的东西,mahout官方代码,可执行加源码一共70多兆,打包完了100多兆。oozie连源码不到1兆,打完居然60多兆。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/fde95d06bdc2ffb9b0b9f709318edca9.html