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

          常用鏈接

          留言簿

          隨筆檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

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

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 仙桃市| 赤峰市| 东源县| 浑源县| 涞源县| 六枝特区| 喜德县| 房山区| 阿鲁科尔沁旗| 威信县| 平遥县| 抚州市| 卫辉市| 华安县| 广宗县| 依安县| 河源市| 明光市| 孙吴县| 高雄县| 彭山县| 汤原县| 南江县| 仙桃市| 霍林郭勒市| 盐城市| 九龙坡区| 大邑县| 红桥区| 绩溪县| 易门县| 唐山市| 宜丰县| 罗定市| 凤冈县| 高陵县| 通海县| 赤水市| 从江县| 丰顺县| 清丰县|