日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
主流NoSQL數(shù)據(jù)庫評測之HBase

本篇要評測的NoSQL產(chǎn)品是HBase,和其他簡單的Key-Value結構不同,HBase主要面向處理海量數(shù)據(jù)的應用,可以認為是Google BigTable的一個開源版本。由于Facebook使用HBase來存儲消息內(nèi)容和大數(shù)據(jù)量的實時分析而使得這一產(chǎn)品備受關注。

一、HBase簡介

HBase是用Java開發(fā)的,是一個開源的、分布式的、面向列的數(shù)據(jù)庫,其存儲的每個值都有一個時間戳,可以根據(jù)定義好的規(guī)則保存多個版本(默認是3個),這樣就可以記錄數(shù)據(jù)的變動情況。

HBase和Hadoop無縫集成,可以利用HDFS實現(xiàn)數(shù)據(jù)的底層分布式存儲,保證冗余和可靠性,通過ZooKeeper來實現(xiàn)一致性和高可用性。

HBase有兩種部署方式:一種是比較簡單的單實例方式,它已經(jīng)內(nèi)置了0.20版本的Hadoop包和一個本地ZooKeeper,它們運行在同一個 JVM之下,可以用本地文件系統(tǒng)而不用HDFS。另外一種比較復雜的分布式部署,需要在每一個節(jié)點替換自帶的Hadoop包以免有版本問題,而且必須有一個HDFS實例,同時需要獨立的ZooKeeper集群,這也是處理海量數(shù)據(jù)時的推薦的部署方式。本文為測試方便,使用簡單的單實例部署方式。

二、安裝和使用

首先從鏡像下載最新版的HBase,目前最新的版本是0.90.3:

 
 
 
 
  1. [root@localhost hbase]# wget http://mirror.bjtu.edu.cn/apache/hbase/stable/hbase-0.90.3.tar.gz 

先檢查下本地的JDK版本是否在1.6以上:

 
 
 
 
  1. [root@localhost hbase]# java -version 
  2. java version "1.6.0_24" 

解壓并配置數(shù)據(jù)文件的路徑:

 
 
 
 
  1. [root@localhost hbase]# tar zxvf hbase-0.90.3.tar.gz 
  2. [root@localhost hbase]# cd hbase-0.90.3/conf 
  3. [root@localhost conf]# vi hbase-site.xml 
  4.  
  5.  
  6.  
  7. hbase.rootdir 
  8. /home/banping/hbase/data 
  9.  

啟動Hbase進程:

 
 
 
 
  1. [root@localhost hbase-0.90.3]# bin/start-hbase.sh 
  2. starting master, logging to /home/banping/hbase/hbase-0.90.3/bin/../logs/hbase-root-master-localhost.localdomain.out 

可以通過自帶的shell命令來進行基本的操作:

 
 
 
 
  1. [root@localhost hbase-0.90.3]# bin/hbase shell 
  2. hbase(main):002:0> create 'test','cf' 
  3. 0 row(s) in 0.9940 seconds 
  4. hbase(main):019:0> list 
  5. TABLE 
  6. test 
  7. 1 row(s) in 0.0290 seconds 
  8. hbase(main):022:0> put 'test', 'row1', 'cf:a', 'value1' 
  9. 0 row(s) in 0.2130 seconds 
  10. hbase(main):023:0> put 'test', 'row2', 'cf:b', 'value2' 
  11. 0 row(s) in 0.0120 seconds 
  12. hbase(main):024:0> put 'test', 'row3', 'cf:c', 'value3' 
  13. 0 row(s) in 0.0130 seconds 
  14. hbase(main):025:0> scan 'test' 
  15. ROW COLUMN+CELL 
  16. row1 column=cf:a, timestamp=1310027460885, value=value1 
  17. row2 column=cf:b, timestamp=1310027469458, value=value2 
  18. row3 column=cf:c, timestamp=1310027476262, value=value3 
  19. 3 row(s) in 0.0870 seconds 
  20.  
  21. hbase(main):026:0> get 'test', 'row1' 
  22. COLUMN CELL 
  23. cf:a timestamp=1310027460885, value=value1 
  24. 1 row(s) in 0.0250 seconds 
  25. hbase(main):027:0> disable 'test' 
  26. 0 row(s) in 2.0920 seconds 
  27. hbase(main):029:0> drop 'test' 
  28. 0 row(s) in 1.1440 seconds 
  29. hbase(main):030:0> exit 

停止Hbase實例:

 
 
 
 
  1. [root@localhost hbase-0.90.3]# ./bin/stop-hbase.sh 
  2. stopping hbase...... 

如果使用PHP操作Hbase,可以使用Facebook開源出來的thrift,官網(wǎng)是:http://thrift.apache.org/ ,它是一個類似ice的中間件,用于不同系統(tǒng)語言間信息交換。首先下載最新的版本0.6.1:

 
 
 
 
  1. [root@localhost hbase]# wget http://mirror.bjtu.edu.cn/apache//thrift/0.6.1/thrift-0.6.1.tar.gz 

安裝需要的依賴包:

 
 
 
 
  1. [root@localhost thrift-0.6.1]# sudo yum install automake libtool flex bison pkgconfig gcc-c++ boost-devel libevent-devel zlib-devel python-devel ruby-devel 

編譯安裝:

 
 
 
 
  1. [root@localhost thrift-0.6.1]# ./configure --prefix=/home/banping/hbase/thrift --with-php-config=/usr/local/php/bin/ 
  2. [root@localhost thrift-0.6.1]# make 
  3. [root@localhost thrift-0.6.1]# make install 

生成php和hbase的接口文件:

 
 
 
 
  1. [root@localhost hbase]# thrift/bin/thrift --gen php /home/banping/hbase/hbase-0.90.3/src/main/resources/org/apache/hadoop/hbase/thrift/Hbase.thrift 
  2. [root@localhost hbase]# cd gen-php/Hbase 
  3. [root@localhost Hbase]# ll 
  4. total 320 
  5. -rw-r--r-- 1 root root 285433 Jul 7 19:22 Hbase.php 
  6. -rw-r--r-- 1 root root 27426 Jul 7 19:22 Hbase_types.php 

把PHP客戶端需要的包及剛才生成的接口文件復制出來供php程序調用:

 
 
 
 
  1. [root@localhost Hbase]# cp -a /home/banping/hbase/thrift-0.6.1/lib/php /home/webtest/thrift/ 
  2. [root@localhost Hbase]# cd /home/webtest/thrift/ 
  3. [root@localhost thrift]# mkdir packages 
  4. [root@localhost thrift]# cp -a /home/banping/hbase/gen-php/Hbase /home/webtest/thrift/packages 

啟動hbase和thrift進程:

 
 
 
 
  1. [root@localhost hbase-0.90.3]# ./bin/start-hbase.sh 
  2. [root@localhost hbase-0.90.3]# ./bin/hbase-daemon.sh start thrift 
  3. starting thrift, logging to /home/banping/hbase/hbase-0.90.3/bin/../logs/hbase-root-thrift-localhost.localdomain.out 

thrift服務默認監(jiān)聽的端口是9090。至此測試環(huán)境搭建完畢。

#p#

三、測試說明

1、測試環(huán)境

HBase部署在一臺PC 服務器上,配置如下:

CPU為Xeon 2.80GHz *4

內(nèi)存為4G

硬盤為一塊400G SATA盤

操作系統(tǒng)為64位CentOS 5.3版本

2、測試方法

采用PHP客戶端進行測試,在安裝過程中我們已經(jīng)獲取了PHP客戶端訪問HBase需要的包含文件。

為了不對測試服務器產(chǎn)生額外的影響,測試客戶端部署在另外一臺獨立的服務器上,運行的PHP的版本是5.3.5,web server是Nginx 0.8.54,通過fastcgi的方式調用PHP服務。使用apache ab工具實現(xiàn)多個請求和并發(fā)操作。

測試過程首先是進行寫操作,通過500個請求,每個請求寫入10000條記錄,并發(fā)度為1來共寫入500萬條數(shù)據(jù),每個行(row)定義為數(shù)字1到 5000000,列(column)標記為id:對應的行id,列value為100個字節(jié)大小的數(shù)據(jù),版本默認為記錄3個。然后是讀操作,發(fā)起5000 個請求,每個請求隨機根據(jù)row id值讀出1000條記錄,并發(fā)度為10共讀出500萬條記錄,評測的重點是寫入和讀出數(shù)據(jù)的時間,以及在此過程中服務器的資源使用情況。

四、測試結果

1、寫操作

成功寫入500萬條記錄,共耗時5418秒,平均每秒寫入數(shù)據(jù)923筆。磁盤上的數(shù)據(jù)文件大小620M。寫入過程中,服務器內(nèi)存、CPU和磁盤等資源使用情況如下圖所示:

可見,內(nèi)存使用平穩(wěn)上升,最后占用1G左右,主要用來緩存數(shù)據(jù),中間有偶爾的內(nèi)存使用高峰,猜測是JAVA 的垃圾回收后會釋放內(nèi)存。CPU使用非常平穩(wěn),idle穩(wěn)定在79左右,幾乎沒有wait發(fā)生。磁盤IO非常低,但是寫入速度較慢??傮w來說占用資源很少,表現(xiàn)也很平穩(wěn)。

2、讀操作

成功讀出500萬條記錄,共耗時8521秒,平均每秒讀出數(shù)據(jù)587筆。

讀數(shù)據(jù)過程中磁盤IO很低,幾乎沒有波動。CPU消耗較多,Idle值穩(wěn)定在13左右,等待CPU資源的進程一直有3到14個。內(nèi)存表現(xiàn)平穩(wěn)沒有波動。

五、總結

通過以上測試結果可以看出,HBase讀寫效率并不高,因為它是針對海量數(shù)據(jù)處理來設計的,側重的是海量存儲下的性能而非Key-Value存儲的效率,因此這也是正常的,另外由于寫入速度慢,因此磁盤IO占用非常低,這和其他幾款NoSQL有明顯的區(qū)別。隨著淘寶等國內(nèi)互聯(lián)網(wǎng)巨頭不斷加大使用 HBase的規(guī)模,相信在國內(nèi)會有越來越多的成功案例。


新聞名稱:主流NoSQL數(shù)據(jù)庫評測之HBase
當前URL:http://m.5511xx.com/article/djcphoe.html