隨筆 - 16  文章 - 1  trackbacks - 0
          <2009年12月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿

          隨筆檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          Hypertable和Hbase二者同源,設(shè)計(jì)也有諸多相似之處,最主要的區(qū)別當(dāng)然還是編程語言的選擇。Hbase選擇Java主要是因?yàn)锳pache和Hadoop的公共庫、歷史項(xiàng)目基本都采用該語言,并且Java項(xiàng)目在設(shè)計(jì)模式和文檔上一般都比C++項(xiàng)目好,非常適合開源項(xiàng)目。C++的優(yōu)勢當(dāng)然還是在性能和內(nèi)存使用上。Yahoo曾經(jīng)給出了一個(gè)很好的Terasort結(jié)果(perspectives.mvdirona.com/2008/07/08/HadoopWinsTeraSort.aspx),它們認(rèn)為對于大多數(shù)Mapreduce任務(wù),比如分布式排序,性能瓶頸在于IO和網(wǎng)絡(luò),Java和C++在性能上基本沒有區(qū)別。不過,使用Java的Mapreduce在每臺服務(wù)器上明顯使用了更多的CPU和內(nèi)存,如果用于分布式排序的服務(wù)器還需要部署其它的CPU/內(nèi)存密集型應(yīng)用,Java的性能劣勢將顯現(xiàn)。對于Hypertable/HBase這樣的表格系統(tǒng),Java的選擇將帶來如下問題:
          1.  Hyertable/Hbase是內(nèi)存和CPU密集型的。Hypertable/Hbase采用Log-Structured Merge Tree設(shè)計(jì),系統(tǒng)可以使用的內(nèi)存直接決定了系統(tǒng)性能。內(nèi)存中的memtable和表格系統(tǒng)內(nèi)部的緩存都大量使用內(nèi)存,可使用的內(nèi)存減少將導(dǎo)致merge-dump頻率加大,直接加重底層HDFS的壓力。另外,讀取和dump操作大量的歸并操作也可能使CPU成為一個(gè)瓶頸,再加上對數(shù)據(jù)的壓縮/解壓縮,特別是Bigtable中最經(jīng)常使用的BM-diff算法在壓縮/解壓縮過程完全跑滿一個(gè)CPU核,很難想象Java實(shí)現(xiàn)的Hbase能夠與C++實(shí)現(xiàn)的Hypertable在性能上抗衡。
          2. Java垃圾回收。目前Java虛擬機(jī)垃圾回收時(shí)將停止服務(wù)一段時(shí)間,這對Hypertable/HBase中大量使用的Lease機(jī)制是一個(gè)很大的考驗(yàn)。雖然Java垃圾回收可以改進(jìn),但是企圖以通用的方式完全解決內(nèi)存管理問題是不現(xiàn)實(shí)的。內(nèi)存管理沒有通用做法,需要根據(jù)應(yīng)用的訪問模式采取選擇不同的策略。
          當(dāng)然,Hadoop由于采用了Java設(shè)計(jì),導(dǎo)致開源合作變得更加容易,三大核心系統(tǒng)之上開發(fā)的輔助系統(tǒng),如Hadoop的監(jiān)控,Pig等都相當(dāng)成功。所以,我的觀點(diǎn)依然是:對于三駕馬車的核心系統(tǒng),采用C++相對合理;對于輔助模塊,Java是一個(gè)不錯(cuò)的選擇。 閱讀全文
          類別:默認(rèn)分類 查看評論
          文章來源:http://hi.baidu.com/knuthocean/blog/item/ef201038f5d866f8b311c746.html
          posted on 2009-12-03 13:43 Programmers 閱讀(536) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 拜泉县| 油尖旺区| 福海县| 河津市| 绥中县| 泾源县| 磴口县| 将乐县| 许昌市| 大悟县| 永德县| 澳门| 乌兰察布市| 乐安县| 资中县| 饶平县| 佛山市| 贵溪市| 高安市| 冷水江市| 烟台市| 镇江市| 克什克腾旗| 郓城县| 曲阳县| 和平县| 磐安县| 加查县| 突泉县| 阳江市| 临城县| 南雄市| 华阴市| 北京市| 滁州市| 孟州市| 简阳市| 绵竹市| 贵德县| 集贤县| 浮山县|