自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

主流NoSQL數(shù)據(jù)庫(kù)評(píng)測(cè)之HBase

數(shù)據(jù)庫(kù) 其他數(shù)據(jù)庫(kù)
本篇要評(píng)測(cè)的NoSQL產(chǎn)品是HBase,和其他簡(jiǎn)單的Key-Value結(jié)構(gòu)不同,HBase主要面向處理海量數(shù)據(jù)的應(yīng)用,可以認(rèn)為是Google BigTable的一個(gè)開(kāi)源版本。

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

一、HBase簡(jiǎn)介

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

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

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

二、安裝和使用

首先從鏡像下載最新版的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. </configuration> 
  5. <configuration> 
  6. <property> 
  7. <name>hbase.rootdir</name
  8. <value>/home/banping/hbase/data</value> 
  9. </property> 

啟動(dòng)Hbase進(jìn)程:

  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 

可以通過(guò)自帶的shell命令來(lái)進(jìn)行基本的操作:

  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實(shí)例:

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

如果使用PHP操作Hbase,可以使用Facebook開(kāi)源出來(lái)的thrift,官網(wǎng)是:http://thrift.apache.org/ ,它是一個(gè)類似ice的中間件,用于不同系統(tǒng)語(yǔ)言間信息交換。首先下載最新的版本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客戶端需要的包及剛才生成的接口文件復(fù)制出來(lái)供php程序調(diào)用:

  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 

啟動(dòng)hbase和thrift進(jìn)程:

  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服務(wù)默認(rèn)監(jiān)聽(tīng)的端口是9090。至此測(cè)試環(huán)境搭建完畢。

#p#

三、測(cè)試說(shuō)明

1、測(cè)試環(huán)境

HBase部署在一臺(tái)PC 服務(wù)器上,配置如下:

CPU為Xeon 2.80GHz *4

內(nèi)存為4G

硬盤為一塊400G SATA盤

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

2、測(cè)試方法

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

為了不對(duì)測(cè)試服務(wù)器產(chǎn)生額外的影響,測(cè)試客戶端部署在另外一臺(tái)獨(dú)立的服務(wù)器上,運(yùn)行的PHP的版本是5.3.5,web server是Nginx 0.8.54,通過(guò)fastcgi的方式調(diào)用PHP服務(wù)。使用apache ab工具實(shí)現(xiàn)多個(gè)請(qǐng)求和并發(fā)操作。

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

四、測(cè)試結(jié)果

1、寫操作

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

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

2、讀操作

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

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

五、總結(jié)

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

【編輯推薦】

  1. 主流NoSQL數(shù)據(jù)庫(kù)全方位評(píng)測(cè)之MongoDB
  2. 主流NoSQL數(shù)據(jù)庫(kù)評(píng)測(cè)之Tokyo Cabinet
  3. 主流NoSQL數(shù)據(jù)庫(kù)評(píng)測(cè)之HandlerSocket

 

 

 

責(zé)任編輯:艾婧 來(lái)源: IT168
相關(guān)推薦

2011-05-16 10:29:44

HandlerSockNoSQL

2011-07-06 16:36:40

Redis

2011-05-30 09:27:35

NoSQL評(píng)測(cè)

2011-06-14 09:09:13

NoSQLMongoDB

2011-09-21 11:21:00

NoSQL

2019-03-20 15:59:11

NoSQLRedis數(shù)據(jù)庫(kù)

2015-06-30 12:49:27

HBaseNoSQL分布式

2015-05-07 14:25:40

谷歌NoSQL數(shù)據(jù)庫(kù)HBase

2024-02-02 10:51:53

2021-09-28 09:25:05

NoSQL數(shù)據(jù)庫(kù)列式數(shù)據(jù)庫(kù)

2011-10-09 09:38:03

OracleNoSQL

2024-03-28 09:00:00

NoSQL數(shù)據(jù)庫(kù)

2019-07-08 10:36:34

數(shù)據(jù)庫(kù)WebNoSQL

2010-04-01 09:45:38

NoSQL

2011-07-19 09:08:50

JavaNoSQL

2011-03-01 09:10:19

開(kāi)源數(shù)據(jù)庫(kù)

2023-03-05 16:25:38

NoSQL數(shù)據(jù)庫(kù)

2025-01-10 09:25:10

NOSQL數(shù)據(jù)庫(kù)ACID

2020-10-31 22:01:40

NoSQL數(shù)據(jù)庫(kù)

2010-08-13 16:40:27

CouchDBAndroid SDKAndroid
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)