天天看點

Apache BigTop試用感想

Bigtop是去年apache基金會推出的一個對Hadoop及其周邊生态進行打包,分發和測試的工具。推出的時間不長,加上官方的文檔很簡單,隻告訴你如何用bigtop安裝hadoop,其他都不講。這兩天深入的玩了一下,就個人體會來說,Bigtop算是個比較有趣的玩具。實用價值不大,尤其是對準備在hadoop本身上做文章的公司和個人來說,是一個看上去很美,但實際部署是很值得商榷的玩意。

Bigtop,本意是馬戲團的大帳篷,apache hadoop整個生态系統都是由動物标志所構成的,是以由Cloudera送出給apache的這個軟體,用意比較明顯,就是他想用這玩意一統Hadoop生态系統圈。這個放到後面去說,總之,Cloudera的野心還是很大的。

在我玩這個東西之前,我做了兩件事,看了一下官方文檔和找中文資料,但是十分遺憾,官方文檔隻寫如何通過下載下傳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 lzo-devel zlib-devel fuse-devel openssl-devel python-devel libxml2-devel libxslt-devel cyrus-sasl-devel sqlite-devel mysql-devel openldap-devel rpm-build createrepo redhat-rpm-config (RedHat/CentOS only)

我在centos6上玩的,然後我發現,用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多兆。

hive和pig編譯失敗,直接把我的2G記憶體的虛拟機跑挂了,是以我覺得這個東西基本就是個玩具,而且受cloudera影響太多,這些編譯好的安裝包,在用rpm安裝的時候,需要用yum解決的依賴,比他打好的包要多得多。我隻是嘗試rpm -ivh hadoop-2.0.5-1.el6.x86_64.rpm,告訴我缺少一些依賴,然後用yum一看,居然這些依賴加上依賴的依賴,要下載下傳裝150多兆。除去我之前編譯前下載下傳的各種依賴100M,這要是用在生産環境下,每台伺服器部署的時候都要先下載下傳幾百兆的作業系統依賴,太崩潰了。

是以我覺得,這東西玩玩還行,研究一下他的原理還可以,用到生産環境還是算了,真拿這個裝,比拿tar包安裝hadoop生态圈還費勁。

繼續閱讀