Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
HBase ³¬Ïêϸ½éÉÜ
 
×÷Õߣº°ÂÌØman À´Ô´£º CSDN ·¢²¼ÓÚ 2016-3-30
  6070  次浏览      27
 

1-HBaseµÄ°²×°

HBaseÊÇʲô£¿

HBaseÊÇApache HadoopÖеÄÒ»¸ö×ÓÏîÄ¿£¬HbaseÒÀÍÐÓÚHadoopµÄHDFS×÷Ϊ×î»ù±¾´æ´¢»ù´¡µ¥Ôª£¬Í¨¹ýʹÓÃhadoopµÄDFS¹¤¾ß¾Í¿ÉÒÔ¿´µ½ÕâЩÕâЩÊý¾Ý ´æ´¢Îļþ¼ÐµÄ½á¹¹,»¹¿ÉÒÔͨ¹ýMap/ReduceµÄ¿ò¼Ü(Ëã·¨)¶ÔHBase½øÐвÙ×÷£¬ÈçÓÒ²àµÄͼËùʾ£º

HBaseÔÚ²úÆ·Öл¹°üº¬ÁËJetty£¬ÔÚHBaseÆô¶¯Ê±²ÉÓÃǶÈëʽµÄ·½Ê½À´Æô¶¯Jetty£¬Òò´Ë¿ÉÒÔͨ¹ýweb½çÃæ¶ÔHBase½øÐйÜÀíºÍ²é¿´µ±Ç°ÔËÐеÄһЩ״̬£¬·Ç³£ÇáÇÉ¡£

Ϊʲô²ÉÓÃHBase£¿

HBase ²»Í¬ÓÚÒ»°ãµÄ¹ØÏµÊý¾Ý¿â,ËüÊÇÒ»¸öÊʺÏÓڷǽṹ»¯Êý¾Ý´æ´¢µÄÊý¾Ý¿â.Ëùν·Ç½á¹¹»¯Êý¾Ý´æ´¢¾ÍÊÇ˵HBaseÊÇ»ùÓÚÁеĶø²»ÊÇ»ùÓÚÐеÄģʽ£¬ÕâÑù·½Ãæ¶ÁдÄãµÄ´óÊý¾ÝÄÚÈÝ¡£

HBaseÊǽéÓÚMap Entry(key & value)ºÍDB RowÖ®¼äµÄÒ»ÖÖÊý¾Ý´æ´¢·½Ê½¡£¾ÍµãÓеãÀàËÆÓÚÏÖÔÚÁ÷ÐеÄMemcache£¬µ«²»½ö½öÊǼòµ¥µÄÒ»¸ökey¶ÔÓ¦Ò»¸ö value£¬ÄãºÜ¿ÉÄÜÐèÒª´æ´¢¶à¸öÊôÐÔµÄÊý¾Ý½á¹¹£¬µ«Ã»Óд«Í³Êý¾Ý¿â±íÖÐÄÇô¶àµÄ¹ØÁª¹ØÏµ£¬Õâ¾ÍÊÇËùνµÄËÉÉ¢Êý¾Ý¡£

¼òµ¥À´Ëµ£¬ÄãÔÚHBaseÖÐµÄ±í´´½¨µÄ¿ÉÒÔ¿´×öÊÇÒ»ÕźܴóµÄ±í£¬¶øÕâ¸ö±íµÄÊôÐÔ¿ÉÒÔ¸ù¾ÝÐèÇóÈ¥¶¯Ì¬Ôö¼Ó£¬ÔÚHBaseÖÐûÓбíÓë±íÖ®¼ä¹ØÁª²éѯ¡£ÄãÖ»ÐèÒª ¸æËßÄãµÄÊý¾Ý´æ´¢µ½HbaseµÄÄǸöcolumn families ¾Í¿ÉÒÔÁË£¬²»ÐèÒªÖ¸¶¨ËüµÄ¾ßÌåÀàÐÍ£ºchar,varchar,int,tinyint,textµÈµÈ¡£µ«ÊÇÄãÐèҪעÒâHBaseÖв»°üº¬ÊÂÎñ´ËÀàµÄ¹¦ ÄÜ¡£

Apache HBase ºÍGoogle Bigtable Óзdz£ÏàËÆµÄµØ·½£¬Ò»¸öÊý¾ÝÐÐÓµÓÐÒ»¸ö¿ÉÑ¡ÔñµÄ¼üºÍÈÎÒâÊýÁ¿µÄÁС£±íÊÇÊèËɵĴ洢µÄ£¬Òò´ËÓû§¿ÉÒÔ¸øÐж¨Òå¸÷ÖÖ²»Í¬µÄÁУ¬¶ÔÓÚÕâÑùµÄ¹¦ÄÜÔÚ´óÏîÄ¿Öзdz£ÊµÓ㬿ÉÒÔ¼ò»¯Éè¼ÆºÍÉý¼¶µÄ³É±¾¡£

ÈçºÎÔËÐÐHBase£¿

´Ó ApacheµÄHBaseµÄ¾µÏñÍøÕ¾ÉÏÏÂÔØÒ»¸öÎȶ¨°æ±¾µÄHBase http://mirrors.devlib.org/apache/hbase/stable/hbase-0.20.6.tar.gz£¬ ÏÂÔØÍê³Éºó£¬¶ÔÆä½øÐнâѹËõ¡£È·¶¨ÄãµÄ»úÆ÷ÖÐÒѾ­ÕýÈ·µÄ°²×°ÁËJava SDK¡¢SSH£¬·ñÔò½«ÎÞ·¨Õý³£ÔËÐС£

$ cd /work/hbase

½øÈë´ËĿ¼

$ vim conf/hbase-env.sh

export JAVA_HOME=/JDK_PATH

±à¼­ conf/hbase-env.sh Îļþ,½«JAVA_HOMEÐÞ¸ÄΪÄãµÄJDK°²×°Ä¿Â¼

$ vim conf/regionservers

ÊäÈëÄãµÄËùÓÐHBase·þÎñÆ÷Ãû,localhost,»òÕßÊÇipµØÖ·

$ bin/start-hbase.sh

Æô¶¯hbase, ÖмäÐèÒªÄãÊäÈëÁ½´ÎÃÜÂ룬Ҳ¿ÉÒÔ½øÐÐÉèÖò»ÐèÒªÊäÈëÃÜÂ룬Æô¶¯³É¹¦£¬ÈçͼËùʾ£º

$ bin/hbase rest start

Æô¶¯hbase REST·þÎñºó¾Í¿ÉÒÔͨ¹ý¶Ôuri: http://localhost:60050/api/ µÄͨÓÃREST²Ù×÷(GET/POST/PUT/DELETE)ʵÏÖ¶ÔhbaseµÄRESTÐÎʽÊý¾Ý²Ù×÷.

Ò²¿ÉÒÔÊäÈëÒÔÏÂÖ¸Áî½øÈëHQLÖ¸Áîģʽ

$ bin/hbase shell
$ bin/stop-hbase.sh

¹Ø±ÕHBase·þÎñ

Æô¶¯Ê±´æÔÚµÄÎÊÌâ

ÓÉÓÚlinuxϵͳµÄÖ÷»úÃûÅäÖò»ÕýÈ·£¬ÔÚÔËÐÐHBase·þÎñÆ÷ÖпÉÄÜ´æÔÚµÄÎÊÌ⣬ÈçͼËùʾ£º

2010-11-05 11:10:20,189 ERROR org.apache.hadoop.hbase.master.HMaster: Can not start master
java.net.UnknownHostException: ubuntu-server216: ubuntu-server216

±íʾÄãµÄÖ÷»úÃû²»ÕýÈ·£¬Äã¿ÉÒÔÏȲ鿴һÏ /etc/hosts/ÖÐÃû³ÆÊÇʲô£¬ÔÙÓà hostname ÃüÁî½øÐÐÐ޸ģ¬ hostname you_server_name

²é¿´ÔËÐÐ״̬

Èç¹ûÄãÐèÒª¶ÔHBaseµÄÈÕÖ¾½øÐÐ¼à¿ØÄã¿ÉÒԲ鿴 hbase.x.x./logs/ϵÄÈÕÖ¾Îļþ£¬¿ÉÒÔʹÓÃtail -f À´²é¿´¡£

ͨ¹ý web·½Ê½²é¿´ÔËÐÐÔÚ HBase ϵÄzookeeper http://localhost:60010/zk.jsp

Èç¹ûÄãÐèÒª²é¿´µ±Ç°µÄÔËÐÐ״̬¿ÉÒÔͨ¹ýwebµÄ·½Ê½¶ÔHBase·þÎñÆ÷½øÐв鿴£¬ÈçͼËùʾ£º

À©Õ¹ÔĶÁ1£º

Apach µÄ HadoopµÄÏîÄ¿Öаüº¬ÁËÄÇЩ²úÆ·£¬ÈçͼËùʾ£º

Pig ÊÇÔÚMapReduceÉϹ¹½¨µÄ²éѯÓïÑÔ(SQL-like),ÊÊÓÃÓÚ´óÁ¿²¢ÐмÆËã¡£

Chukwa ÊÇ»ùÓÚHadoop¼¯ÈºÖÐ¼à¿ØÏµÍ³£¬¼òµ¥À´Ëµ¾ÍÊÇÒ»¸ö¡°¿´ÃŹ·¡± (WatchDog)

Hive ÊÇDataWareHouse ºÍ Map Reduce½»¼¯£¬ÊÊÓÃÓÚETL·½ÃæµÄ¹¤×÷¡£

HBase ÊÇÒ»¸öÃæÏòÁеķֲ¼Ê½Êý¾Ý¿â¡£

Map Reduce ÊÇGoogleÌá³öµÄÒ»ÖÖËã·¨£¬ÓÃÓÚ³¬´óÐÍÊý¾Ý¼¯µÄ²¢ÐÐÔËËã¡£

HDFS ¿ÉÒÔÖ§³ÖǧÍò¼¶µÄ´óÐÍ·Ö²¼Ê½Îļþϵͳ¡£

Zookeeper ÌṩµÄ¹¦ÄܰüÀ¨£ºÅäÖÃά»¤¡¢Ãû×Ö·þÎñ¡¢·Ö²¼Ê½Í¬²½¡¢×é·þÎñµÈ£¬ÓÃÓÚ·Ö²¼Ê½ÏµÍ³µÄ¿É¿¿Ð­µ÷ϵͳ¡£

Avro ÊÇÒ»¸öÊý¾ÝÐòÁл¯ÏµÍ³£¬Éè¼ÆÓÃÓÚÖ§³Ö´óÅúÁ¿Êý¾Ý½»»»µÄÓ¦Óá£

À©Õ¹ÔĶÁ2£º

ʲôÊÇÁд洢£¿Áд洢²»Í¬ÓÚ´«Í³µÄ¹ØÏµÐÍÊý¾Ý¿â£¬ÆäÊý¾ÝÔÚ±íÖÐÊǰ´Ðд洢µÄ£¬Áз½Ê½Ëù´øÀ´µÄÖØÒªºÃ´¦Ö®Ò»¾ÍÊÇ£¬ÓÉÓÚ²éѯÖеÄÑ¡Ôñ¹æÔòÊÇͨ¹ýÁÐÀ´¶¨ÒåµÄ£¬Òò ´ËÕû¸öÊý¾Ý¿âÊÇ×Ô¶¯Ë÷Òý»¯µÄ¡£°´Áд洢ÿ¸ö×ֶεÄÊý¾Ý¾Û¼¯´æ´¢£¬ÔÚ²éѯֻÐèÒªÉÙÊý¼¸¸ö×ֶεÄʱºò£¬ÄÜ´ó´ó¼õÉÙ¶ÁÈ¡µÄÊý¾ÝÁ¿£¬Ò»¸ö×ֶεÄÊý¾Ý¾Û¼¯´æ´¢£¬ÄÇ¾Í ¸üÈÝÒ×ΪÕâÖÖ¾Û¼¯´æ´¢Éè¼Æ¸üºÃµÄѹËõ/½âѹËã·¨¡£ÕâÕÅͼ½²ÊöÁË´«Í³µÄÐд洢ºÍÁд洢µÄÇø±ð£º

À©Õ¹ÔĶÁ3£º

¶Ôϵͳº£Á¿µÄLog4JÈÕÖ¾¿ÉÒÔ´æ·ÅÔÚÒ»¸ö¼¯ÖÐʽµÄ»úÆ÷ÉÏ£¬ÔÚ´Ë»úÆ÷Éϰ²×° splunk ¿ÉÒÔ·½±ã¶ÔËùÓÐÈÕÖ¾²é¿´£¬°²×°·½·¨¿ÉÒԲο¼£º
http://www.splunk.com/base/Documentation/latest/Installation/InstallonLinux

2-Java²Ù×÷HBaseÀý×Ó

±¾ÆªÎÄÕ½²ÊöÓÃHBase ShellÃüÁî ºÍ HBase Java API ¶ÔHBase ·þÎñÆ÷ ½øÐвÙ×÷¡£ÔÚ´Ë֮ǰÐèÒª¶ÔHBaseµÄ×ÜÌåÉÏÓиö´ó¸ÅµÄÁ˽⡣±ÈÈç˵HBase·þÎñÆ÷ÄÚ²¿ÓÉÄÄЩÖ÷Òª²¿¼þ¹¹³É£¿HBaseµÄÄÚ²¿¹¤×÷Ô­ÀíÊÇʲô£¿ÎÒÏëѧϰÈκÎÒ»Ïî֪ʶ¡¢¼¼ÊõµÄ̬¶È²»ÄÜÖ»ÊÇÖªµÀÈçºÎʹÓ㬶ԲúÆ·µÄÄÚ²¿¹¹½¨Ò»µã¶¼²»È¥¹ØÐÄ£¬ÄÇÑù³öÁËÎÊÌ⣬ºÜÄÑÈÃÄãºÜ¿ìµÄÕÒµ½´ð°¸£¬ÉõÖÁÎÒÃÇÏ£Íû×îºóÄܶԸÃÏî¼¼ÊõµÄÁìÎò³ö×Ô¼ºµÄÐĵã¬ÎªÎÒËùÓã¬½è¼ø¸ÃÏî¼¼ÊõÆäÖеÄÉè¼ÆË¼Ïë´´Ôì³ö×Ô¼ºµÄ½â¾ö·½°¸£¬¸üÁé»îµÄÈ¥Ó¦¶Ô¶à±äµÄ¼ÆË㳡¾°Óë¼Ü¹¹Éè¼Æ¡£ÒÔÎÒĿǰµÄ¶ÔHBaseµÄÁ˽⻹²»¹»ÉîÈ룬½«À´²»¶ÏµÄѧϰ£¬ÎÒ»á°ÑÎÒËùÖªµÀµÄµãµÎ·ÖÏíµ½Õâ¸öBlogÉÏ¡£

ÏÈÀ´¿´Ò»Ï¶ÁȡһÐмǼHBaseÊÇÈçºÎ½øÐй¤×÷µÄ£¬Ê×ÏÈHBase Client¶Ë»áÁ¬½ÓZookeeper Qurom(´ÓÏÂÃæµÄ´úÂëÒ²ÄÜ¿´³öÀ´£¬ÀýÈ磺HBASE_CONFIG.set("hbase.zookeeper.quorum", "192.168.50.216") )¡£Í¨¹ýZookeeper×é¼þClientÄÜ»ñÖªÄĸöServer¹ÜÀí-ROOT- Region¡£ÄÇôClient¾ÍÈ¥·ÃÎʹÜÀí-ROOT-µÄServer£¬ÔÚMETAÖмǼÁËHBaseÖÐËùÓбíÐÅÏ¢£¬(Äã¿ÉÒÔʹÓà scan '.META.' ÃüÁîÁгöÄã´´½¨µÄËùÓбíµÄÏêϸÐÅÏ¢),´Ó¶ø»ñÈ¡Region·Ö²¼µÄÐÅÏ¢¡£Ò»µ©Client»ñÈ¡ÁËÕâÒ»ÐеÄλÖÃÐÅÏ¢£¬±ÈÈçÕâÒ»ÐÐÊôÓÚÄĸöRegion£¬Client½«»á»º´æÕâ¸öÐÅÏ¢²¢Ö±½Ó·ÃÎÊHRegionServer¡£¾Ã¶ø¾ÃÖ®Client»º´æµÄÐÅÏ¢½¥½¥Ôö¶à£¬¼´Ê¹²»·ÃÎÊ.META.±íÒ²ÄÜÖªµÀÈ¥·ÃÎÊÄĸöHRegionServer¡£HBaseÖаüº¬Á½ÖÖ»ù±¾ÀàÐ͵ÄÎļþ£¬Ò»ÖÖÓÃÓÚ´æ´¢WALµÄlog£¬ÁíÒ»ÖÖÓÃÓÚ´æ´¢¾ßÌåµÄÊý¾Ý£¬ÕâЩÊý¾Ý¶¼Í¨¹ýDFS ClientºÍ·Ö²¼Ê½µÄÎļþϵͳHDFS½øÐн»»¥ÊµÏÖ´æ´¢¡£

ÈçͼËùʾ£º

ÔÙÀ´¿´¿´HBaseµÄһЩÄÚ´æÊµÏÖÔ­Àí£º

HMaster¡ª HBaseÖнöÓÐÒ»¸öMaster server¡£

HRegionServer¡ª¸ºÔð¶à¸öHRegionʹ֮ÄÜÏòclient¶ËÌṩ·þÎñ£¬ÔÚHBase clusterÖÐ»á´æÔÚ¶à¸öHRegionServer¡£

ServerManager¡ª¸ºÔð¹ÜÀíRegion serverÐÅÏ¢£¬Èçÿ¸öRegion serverµÄHServerInfo(Õâ¸ö¶ÔÏó°üº¬HServerAddressºÍstartCode),ÒÑload Region¸öÊý£¬ËÀÍöµÄRegion serverÁбí

RegionManager¡ª¸ºÔð½«region·ÖÅäµ½region serverµÄ¾ßÌ幤×÷£¬»¹¼àÊÓrootºÍmeta Õâ2¸öϵͳ¼¶µÄregion״̬¡£

RootScanner¡ª¶¨ÆÚɨÃèroot region£¬ÒÔ·¢ÏÖûÓзÖÅäµÄmeta region¡£

MetaScanner¡ª¶¨ÆÚɨÃèmeta region,ÒÔ·¢ÏÖûÓзÖÅäµÄuser region¡£

HBase»ù±¾ÃüÁî

ÏÂÃæÎÒÃÇÔÙ¿´¿´¿´HBaseµÄһЩ»ù±¾²Ù×÷ÃüÁÎÒÁгöÁ˼¸¸ö³£ÓõÄHBase ShellÃüÁÈçÏ£º

Èç¹ûÄãÊÇÒ»¸öÐÂÊÖ¶ÓHBaseµÄһЩÃüÁ²»Ëã·Ç³£ÊìϤµÄ»°£¬Äã¿ÉÒÔ½øÈë hbase µÄshell ģʽÖÐÄã¿ÉÒÔÊäÈë help ÃüÁî²é¿´µ½Äã¿ÉÒÔÖ´ÐеÄÃüÁîºÍ¶Ô¸ÃÃüÁîµÄ˵Ã÷£¬ÀýÈç¶ÔscanÕâ¸öÃüÁhelpÖв»½ö½öÌáµ½ÓÐÕâ¸öÃüÁ»¹ÏêϸµÄ˵Ã÷ÁËscanÃüÁîÖпÉÒÔʹÓõIJÎÊýºÍ×÷Óã¬ÀýÈ磬¸ù¾ÝÁÐÃû³Æ²éѯµÄ·½·¨ºÍ´øLIMIT ¡¢STARTROWµÄʹÓ÷½·¨£º

scan   Scan a table; pass table name and optionally a dictionary of scanner specifications.  
Scanner specifications may include one or more of the following: LIMIT, STARTROW, STOPROW, TIMESTAMP, or COLUMNS.
If no columns are specified, all columns will be scanned. To scan all members of a column family, leave the
qualifier empty as in 'col_family:'. Examples:
hbase> scan '.META.'
hbase> scan '.META.', {COLUMNS => 'info:regioninfo'}
hbase> scan 't1', {COLUMNS => ['c1', 'c2'], LIMIT => 10, STARTROW => 'xyz'}

ʹÓÃJava API¶ÔHBase·þÎñÆ÷½øÐвÙ×÷

ÐèÒªÏÂÁÐjar°ü

hbase-0.20.6.jar
hadoop-core-0.20.1.jar
commons-logging-1.1.1.jar
zookeeper-3.3.0.jar
log4j-1.2.91.jar

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.KeyValue;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.io.BatchUpdate;

@SuppressWarnings("deprecation")
public class HBaseTestCase {

static HBaseConfiguration cfg = null;
static {
Configuration HBASE_CONFIG = new Configuration();
HBASE_CONFIG.set("hbase.zookeeper.quorum", "192.168.50.216");
HBASE_CONFIG.set("hbase.zookeeper.property.clientPort", "2181");
cfg = new HBaseConfiguration(HBASE_CONFIG);
}

/**
* ´´½¨Ò»Õűí
*/
public static void creatTable(String tablename) throws Exception {
HBaseAdmin admin = new HBaseAdmin(cfg);
if (admin.tableExists(tablename)) {
System.out.println("table Exists!!!");
}
else{
HTableDescriptor tableDesc = new HTableDescriptor(tablename);
tableDesc.addFamily(new HColumnDescriptor("name:"));
admin.createTable(tableDesc);
System.out.println("create table ok .");
}

}

/**
* Ìí¼ÓÒ»ÌõÊý¾Ý
*/
public static void addData (String tablename) throws Exception{
HTable table = new HTable(cfg, tablename);
BatchUpdate update = new BatchUpdate("Huangyi");
update.put("name:java", "http://www.javabloger.com".getBytes());
table.commit(update);
System.out.println("add data ok .");
}

/**
* ÏÔʾËùÓÐÊý¾Ý
*/
public static void getAllData (String tablename) throws Exception{
HTable table = new HTable(cfg, tablename);
Scan s = new Scan();
ResultScanner ss = table.getScanner(s);
for(Result r:ss){
for(KeyValue kv:r.raw()){
System.out.print(new String(kv.getColumn()));
System.out.println(new String(kv.getValue() ));
}

}
}


public static void main (String [] agrs) {
try {
String tablename="tablename";
HBaseTestCase.creatTable(tablename);
HBaseTestCase.addData(tablename);
HBaseTestCase.getAllData(tablename);
}
catch (Exception e) {
e.printStackTrace();
}

}

}

3-HBaseÓÅ»¯¼¼ÇÉ

ÕâÆªÎÄÕÂdzÏԵĴӼ¸¸ö·½ÃæÌ¸Ì¸HBaseµÄһЩÓÅ»¯¼¼ÇÉ£¬Ö»ÄÜ×÷ΪÎÒѧϰ±Ê¼ÇµÄÒ»²¿·Ö£¬ÒòΪѧ¶àÁËÅÂÍü£¬Áô¸ø×Ô¼ºÒÔºó¿´¿´¡£

1 ÐÞ¸Ä linux ϵͳ²ÎÊý

Linuxϵͳ×î´ó¿É´ò¿ªÎļþÊýÒ»°ãĬÈϵIJÎÊýÖµÊÇ1024,Èç¹ûÄã²»½øÐÐÐ޸IJ¢·¢Á¿ÉÏÀ´µÄʱºò»á³öÏÖ¡°Too Many Open Files¡±µÄ´íÎ󣬵¼ÖÂÕû¸öHBase²»¿ÉÔËÐУ¬Äã¿ÉÒÔÓÃulimit -n ÃüÁî½øÐÐÐ޸쬻òÕßÐÞ¸Ä/etc/security/limits.conf ºÍ/proc/sys/fs/file-max µÄ²ÎÊý£¬¾ßÌåÈçºÎÐ޸ĿÉÒÔÈ¥Google ¹Ø¼ü×Ö ¡°linux limits.conf ¡±

2 JVM ÅäÖÃ

ÐÞ¸Ä hbase-env.sh ÎļþÖеÄÅäÖòÎÊý£¬¸ù¾ÝÄãµÄ»úÆ÷Ó²¼þºÍµ±Ç°²Ù×÷ϵͳµÄJVM(32/64λ)ÅäÖÃÊʵ±µÄ²ÎÊý

HBASE_HEAPSIZE 4000 HBaseʹÓÃµÄ JVM ¶ÑµÄ´óС

HBASE_OPTS "©\server ©\XX:+UseConcMarkSweepGC"JVM GC Ñ¡Ïî

HBASE_MANAGES_ZKfalse ÊÇ·ñʹÓÃZookeeper½øÐзֲ¼Ê½¹ÜÀí

3 HBase³Ö¾Ã»¯

ÖØÆô²Ù×÷ϵͳºóHBaseÖÐÊý¾ÝÈ«ÎÞ£¬Äã¿ÉÒÔ²»×öÈκÎÐ޸ĵÄÇé¿öÏ£¬´´½¨Ò»ÕÅ±í£¬Ð´Ò»ÌõÊý¾Ý½øÐУ¬È»ºó½«»úÆ÷ÖØÆô£¬ÖØÆôºóÄãÔÙ½øÈëHBaseµÄshellÖÐʹÓà list ÃüÁî²é¿´µ±Ç°Ëù´æÔÚµÄ±í£¬Ò»¸ö¶¼Ã»ÓÐÁË¡£ÊDz»ÊǺܱ­¾ß£¿Ã»ÓйØÏµÄã¿ÉÒÔÔÚhbase/conf/hbase-default.xmlÖÐÉèÖÃhbase.rootdirµÄÖµ£¬À´ÉèÖÃÎļþµÄ±£´æÎ»ÖÃÖ¸¶¨Ò»¸öÎļþ¼Ð £¬ÀýÈ磺<value>file:///you/hbase-data/path</value>£¬Ä㽨Á¢µÄHBaseÖеıíºÍÊý¾Ý¾ÍÖ±½Óдµ½ÁËÄãµÄ´ÅÅÌÉÏ£¬ÈçͼËùʾ£º

ͬÑùÄãÒ²¿ÉÒÔÖ¸¶¨ÄãµÄ·Ö²¼Ê½ÎļþϵͳHDFSµÄ·¾¶ÀýÈç: hdfs://NAMENODE_SERVER:PORT/HBASE_ROOTDIR£¬ÕâÑù¾Íдµ½ÁËÄãµÄ·Ö²¼Ê½ÎļþϵͳÉÏÁË¡£

4 ÅäÖÃHBaseÔËÐвÎÊý

Æä´Î¾ÍÐèÒª¶Ôhbase/conf/hbase-default.xml Îļþ½øÐÐÅäÖã¬ÒÔÏÂÊÇÎÒÈÏΪ±È½ÏÖØÒªµÄÅäÖòÎÊý

hbase.client.write.buffer

ÃèÊö£ºÕâ¸ö²ÎÊý¿ÉÒÔÉèÖÃдÈëÊý¾Ý»º³åÇøµÄ´óС£¬µ±¿Í»§¶ËºÍ·þÎñÆ÷¶Ë´«ÊäÊý¾Ý£¬·þÎñÆ÷ΪÁËÌá¸ßϵͳÔËÐÐÐÔÄÜ¿ª±ÙÒ»¸öдµÄ»º³åÇøÀ´´¦ÀíËü£¬ Õâ¸ö²ÎÊýÉèÖÃÈç¹ûÉèÖõĴóÁË£¬½«»á¶ÔϵͳµÄÄÚ´æÓÐÒ»¶¨µÄÒªÇó£¬Ö±½ÓÓ°ÏìϵͳµÄÐÔÄÜ¡£

hbase.master.meta.thread.rescanfrequency

ÃèÊö£º¶à³¤Ê±¼ä HMaster¶Ôϵͳ±í root ºÍ meta ɨÃèÒ»´Î£¬Õâ¸ö²ÎÊý¿ÉÒÔÉèÖõij¤Ò»Ð©£¬½µµÍϵͳµÄÄܺġ£

hbase.regionserver.handler.count

ÃèÊö£ºÓÉÓÚHBase/HadoopµÄServerÊDzÉÓÃMultiplexed, non-blocking I/O·½Ê½¶øÉè¼ÆµÄ£¬ËùÒÔËü¿ÉÒÔ͸¹ýÒ»¸öThreadÀ´Íê³É´¦Àí£¬µ«ÊÇÓÉÓÚ´¦ÀíClient¶ËËùºô½ÐµÄ·½·¨ÊÇBlocking I/O£¬ËùÒÔËüµÄÉè¼Æ»á½«ClientËù´«µÝ¹ýÀ´µÄÎï¼þÏÈ·ÅÖÃÔÚQueue£¬²¢ÔÚÆô¶¯Serverʱ¾ÍÏȲúÉúÒ»¶ÑHandler(Thread)£¬¸ÃHandler»á͸¹ýPollingµÄ·½Ê½À´È¡µÃ¸ÃÎï¼þ²¢Ö´ÐжÔÓ¦µÄ·½·¨£¬Ä¬ÈÏΪ25£¬¸ù¾Ýʵ¼Ê³¡¾°¿ÉÒÔÉèÖôóһЩ¡£

hbase.regionserver.thread.splitcompactcheckfrequency

ÃèÊö£ºÕâ¸ö²ÎÊýÊDZíʾ¶à¾ÃÈ¥RegionServer·þÎñÆ÷ÔËÐÐÒ»´Îsplit/compactionµÄʱ¼ä¼ä¸ô£¬µ±È»split֮ǰ»áÏȽøÐÐÒ»¸öcompact²Ù×÷.Õâ¸öcompact²Ù×÷¿ÉÄÜÊÇminor compactÒ²¿ÉÄÜÊÇmajor compact.compactºó,»á´ÓËùÓеÄStoreϵÄËùÓÐStoreFileÎļþ×î´óµÄÄǸöÈ¡midkey.Õâ¸ömidkey¿ÉÄܲ¢²»´¦ÓÚÈ«²¿Êý¾ÝµÄmidÖÐ.Ò»¸örow-keyµÄÏÂÃæµÄÊý¾Ý¿ÉÄÜ»á¿ç²»Í¬µÄHRegion¡£

hbase.hregion.max.filesize

ÃèÊö£ºHRegionÖеÄHStoreFile×î´óÖµ£¬ÈκαíÖеÄÁÐ×åÒ»µ©³¬¹ýÕâ¸ö´óС½«»á±»Çз֣¬¶øHStroeFileµÄĬÈÏ´óСÊÇ256M¡£

hfile.block.cache.size

ÃèÊö£ºÖ¸¶¨ HFile/StoreFile »º´æÔÚJVM¶ÑÖзÖÅäµÄ°Ù·Ö±È£¬Ä¬ÈÏÖµÊÇ0.2£¬Òâ˼¾ÍÊÇ20%£¬¶øÈç¹ûÄãÉèÖóÉ0£¬¾Í±íʾ¶Ô¸ÃÑ¡ÏîÆÁ±Î¡£

hbase.zookeeper.property.maxClientCnxns

ÃèÊö£º ÕâÏîÅäÖõÄÑ¡Ïî¾ÍÊÇ´ÓzookeeperÖÐÀ´µÄ£¬±íʾZooKeeper¿Í»§¶Ëͬʱ·ÃÎʵIJ¢·¢Á¬½ÓÊý£¬ZooKeeper¶ÔÓÚHBaseÀ´Ëµ¾ÍÊÇÒ»¸öÈë¿ÚÕâ¸ö²ÎÊýµÄÖµ¿ÉÒÔÊʵ±·Å´óЩ¡£

hbase.regionserver.global.memstore.upperLimit

ÃèÊö£ºÔÚRegion ServerÖÐËùÓÐmemstoresÕ¼ÓöѵĴóС²ÎÊýÅäÖã¬Ä¬ÈÏÖµÊÇ0.4£¬±íʾ40%£¬Èç¹ûÉèÖÃΪ0£¬¾ÍÊǶÔÑ¡Ïî½øÐÐÆÁ±Î¡£

hbase.hregion.memstore.flush.size

ÃèÊö£ºMemstoreÖлº´æµÄÄÚÈݳ¬¹ýÅäÖõķ¶Î§ºó½«»áдµ½´ÅÅÌÉÏ£¬ÀýÈ磺ɾ³ý²Ù×÷ÊÇÏÈдÈëMemStoreÀï×ö¸ö±ê¼Ç£¬Ö¸Ê¾ÄǸövalue, column »ò familyµÈÏÂÊÇҪɾ³ýµÄ£¬HBase»á¶¨ÆÚ¶Ô´æ´¢Îļþ×öÒ»¸ömajor compaction£¬ÔÚÄÇʱHBase»á°ÑMemStoreË¢ÈëÒ»¸öеÄHFile´æ´¢ÎļþÖС£Èç¹ûÔÚÒ»¶¨Ê±¼ä·¶Î§ÄÚûÓÐ×ömajor compaction£¬¶øMemstoreÖг¬³öµÄ·¶Î§¾ÍдÈë´ÅÅÌÉÏÁË¡£

5 HBaseÖÐlog4jµÄÈÕÖ¾

HBaseÖÐÈÕÖ¾Êä³öµÈ¼¶Ä¬ÈÏ״̬ÏÂÊǰÑdebug¡¢ info ¼¶±ðµÄÈÕÖ¾´ò¿ªµÄ£¬¿ÉÒÔ¸ù¾Ý×Ô¼ºµÄÐèÒªµ÷Õûlog¼¶±ð£¬HBaseµÄlog4jÈÕÖ¾ÅäÖÃÎļþÔÚ hbase\conf\log4j.properties Ŀ¼Ï¡£

4¨C´æ´¢

ÔÚHBaseÖд´½¨µÄÒ»Õűí¿ÉÒÔ·Ö²¼ÔÚ¶à¸öHregion£¬Ò²¾Í˵һÕűí¿ÉÒÔ±»²ð·Ö³É¶à¿é£¬Ã¿Ò»¿é³ÆÎÒÃǺôΪһ¸öHregion¡£Ã¿¸öHregion»á±£ ´æÒ»¸ö±íÀïÃæÄ³¶ÎÁ¬ÐøµÄÊý¾Ý£¬Óû§´´½¨µÄÄǸö´ó±íÖеÄÿ¸öHregion¿éÊÇÓÉHregion·þÎñÆ÷Ìṩά»¤£¬·ÃÎÊHregion¿éÊÇҪͨ¹ý Hregion·þÎñÆ÷£¬¶øÒ»¸öHregion¿é¶ÔÓ¦Ò»¸öHregion·þÎñÆ÷£¬Ò»ÕÅÍêÕûµÄ±í¿ÉÒÔ±£´æÔÚ¶à¸öHregion ÉÏ¡£HRegion Server ÓëRegionµÄ¶ÔÓ¦¹ØÏµÊÇÒ»¶Ô¶àµÄ¹ØÏµ¡£Ã¿Ò»¸öHRegionÔÚÎïÀíÉϻᱻ·ÖΪÈý¸ö²¿·Ö£ºHmemcache(»º´æ)¡¢Hlog(ÈÕÖ¾)¡¢HStore(³Ö¾Ã²ã)¡£
ÉÏÊöÕâЩ¹ØÏµÔÚÎÒÄÔº£ÖеÄÑù×Ó£¬ÈçͼËùʾ£º

1.HRegionServer¡¢HRegion¡¢Hmemcache¡¢Hlog¡¢HStoreÖ®¼äµÄ¹ØÏµ£¬ÈçͼËùʾ£º

2.HBase±íÖеÄÊý¾ÝÓëHRegionServerµÄ·Ö²¼¹ØÏµ£¬ÈçͼËùʾ£º

HBase¶ÁÊý¾Ý

HBase¶ÁÈ¡Êý¾ÝÓÅÏȶÁÈ¡HMemcacheÖеÄÄÚÈÝ£¬Èç¹ûδȡµ½ÔÙÈ¥¶ÁÈ¡HstoreÖеÄÊý¾Ý£¬Ìá¸ßÊý¾Ý¶ÁÈ¡µÄÐÔÄÜ¡£

HBaseдÊý¾Ý

HBaseдÈëÊý¾Ý»áдµ½HMemcacheºÍHlogÖУ¬HMemcache½¨Á¢»º´æ£¬Hlogͬ²½HmemcacheºÍHstoreµÄÊÂÎñÈÕÖ¾£¬·¢ÆðFlush Cacheʱ£¬Êý¾Ý³Ö¾Ã»¯µ½HstoreÖУ¬²¢Çå¿ÕHMemecache¡£

¿Í»§¶Ë·ÃÎÊÕâЩÊý¾ÝµÄʱºòͨ¹ýHmaster £¬Ã¿¸ö Hregion ·þÎñÆ÷¶¼»áºÍHmaster ·þÎñÆ÷±£³ÖÒ»¸ö³¤Á¬½Ó£¬Hmaster ÊÇHBase·Ö²¼Ê½ÏµÍ³ÖеĹÜÀíÕߣ¬ËûµÄÖ÷ÒªÈÎÎñ¾ÍÊÇÒª¸æËßÿ¸öHregion ·þÎñÆ÷ËüҪά»¤ÄÄЩHregion¡£Óû§µÄÕâЩ¶¼Êý¾Ý¿ÉÒÔ±£´æÔÚHadoop ·Ö²¼Ê½ÎļþϵͳÉÏ¡£ Èç¹ûÖ÷·þÎñÆ÷HmasterËÀ»ú£¬ÄÇôÕû¸öϵͳ¶¼»áÎÞЧ¡£ÏÂÃæÎһῼÂÇÈçºÎ½â¾öHmasterµÄSPFOµÄÎÊÌ⣬Õâ¸öÎÊÌâÓеãÀàËÆHadoopµÄSPFO ÎÊÌâÒ»ÑùÖ»ÓÐÒ»¸öNameNodeά»¤È«¾ÖµÄDataNode£¬HDFSÒ»µ©ËÀ»úÈ«²¿¹ÒÁË£¬Ò²ÓÐÈË˵²ÉÓÃHeartbeatÀ´½â¾öÕâ¸öÎÊÌ⣬µ«ÎÒ×ÜÏëÕÒ³ö ÆäËûµÄ½â¾ö·½°¸£¬¶àµãʱ¼ä£¬×ÜÓа취µÄ¡£

×òÌìÔÚhadoop-0.21.0¡¢hbase-0.20.6µÄ»·¾³ÖÐÕÛÌÚÁ˺ܾã¬Ò»Ö±±¨´í£¬´íÎóÐÅÏ¢ÈçÏ£º

Exception in thread "main" java.io.IOException: Call to localhost/serv6:9000 failed on local exception: 
java.io.EOFException
10/11/10 15:34:34 ERROR master.HMaster: Can not start master
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at org.apache.hadoop.hbase.master.HMaster.doMain(HMaster.java:1233)
at org.apache.hadoop.hbase.master.HMaster.main(HMaster.java:1274)

ËÀ»îÁ¬½Ó²»ÉÏHDFS£¬Ò²ÎÞ·¨Á¬½ÓHMaster£¬ÓôÃÆ°¡¡£

ÎÒÏëÏë°¡£¬ÂýÂýÏ룬ÎÒÑÛǰһÁÁ java.io.EOFException Õâ¸öÒì³££¬ÊDz»ÊÇÓпÉÄÜÊÇRPC Э¶¨¸ñʽ²»Ò»Öµ¼Öµģ¿Ò²¾ÍÊÇ˵·þÎñÆ÷¶ËºÍ¿Í»§¶ËµÄ°æ±¾²»Ò»ÖµÄÎÊÌ⣿»»ÁËÒ»¸öHDFSµÄ·þÎñÆ÷¶ËÒÔºó£¬Ò»Çж¼ºÃÁË£¬¹ûÈ»Êǰ汾µÄÎÊÌ⣬×îºó²ÉÓà hadoop-0.20.2 ´îÅähbase-0.20.6 ±È½ÏÎȵ±¡£

×îºóµÄЧ¹ûÈçͼËùʾ£º

ÉÏͼµÄһЩÎÄ×Ö˵Ã÷£º

1.hadoop°æ±¾ÊÇ0.20.2 ,

2.hbase°æ±¾ÊÇ0.20.6,

3.ÔÚhbaseÖд´½¨ÁËÒ»Õűí tab1£¬Í˳öhbase shell»·¾³,

4.ÓÃhadoopÃüÁî²é¿´£¬ÎļþϵͳÖеÄÎļþ¹ûÈ»¶àÁËÒ»¸ö¸Õ¸Õ´´½¨µÄtab1Ŀ¼,ÒÔÉÏÕâÕÅͼƬ˵Ã÷HBaseÔÚ·Ö²¼Ê½ÎļþϵͳApache HDFSÖÐÔËÐÐÁË¡£

5(¼¯Èº) -ѹÁ¦·ÖÔØÓëʧЧת·¢

ÔÚÉÏһƪ¹ØÓÚHBaseµÄÎÄÕÂÖÐÔø¾­½²Êö¹ýHBaseÔÚ·Ö²¼Ê½Öеļܹ¹£¬ÕâÆªÎÄÕ½«»á½²ÊöHBaseÔÚ·Ö²¼Ê½»·¾³ÖÐÊÇÈçºÎÅųýµ¥µã¹ÊÕϵÄ(SPFO)£¬×öÒ»¸öСʵÑé½²ÊöHBaseÔÚ·Ö²¼Ê½»·¾³Öеĸ߿ÉÓÃÐÔ£¬Ç×ÑÛ¿´µ½Ò»Ð©ÏÖÏó£¬ÑÓÉìһЩ˼¿¼µÄ»°Ìâ¡£

ÏÈÀ´»Ø¹ËÒ»ÏÂHBaseÖ÷Òª²¿¼þ£º

HBaseMaster

HRegionServer

HBase Client

HBase Thrift Server

HBase REST Server

HBaseMaster

HMaster ¸ºÔð¸øHRegionServer·ÖÅäÇøÓò,²¢ÇÒ¸ºÔð¶Ô¼¯Èº»·¾³ÖеÄHReginServer½øÐиºÔؾùºâ£¬HMaster»¹¸ºÔð¼à¿Ø¼¯Èº»·¾³ÖеÄHReginServerµÄÔËÐÐ×´¿ö£¬Èç¹ûijһ̨HReginServer down»ú£¬HBaseMaster½«»á°Ñ²»¿ÉÓõÄHReginServerÀ´Ìṩ·þÎñµÄHLogºÍ±í½øÐÐÖØÐ·ÖÅäת½»¸øÆäËûHReginServerÀ´Ìṩ£¬HBaseMaster»¹¸ºÔð¶ÔÊý¾ÝºÍ±í½øÐйÜÀí£¬´¦Àí±í½á¹¹ºÍ±íÖÐÊý¾ÝµÄ±ä¸ü£¬ÒòΪÔÚ META ϵͳ±íÖд洢ÁËËùÓеÄÏà¹Ø±íÐÅÏ¢¡£²¢ÇÒHMasterʵÏÖÁËZooKeeperµÄWatcher½Ó¿Ú¿ÉÒÔºÍzookeeper¼¯Èº½»»¥¡£

HRegionServer

HReginServer¸ºÔð´¦ÀíÓû§µÄ¶ÁºÍдµÄ²Ù×÷¡£HReginServerͨ¹ýÓëHBaseMasterͨÐÅ»ñÈ¡×Ô¼ºÐèÒª·þÎñµÄÊý¾Ý±í£¬²¢ÏòHMaster·´À¡×Ô¼ºµÄÔËÐÐ×´¿ö¡£µ±Ò»¸öдµÄÇëÇóµ½À´µÄʱºò£¬ËüÊ×ÏÈ»áдµ½Ò»¸ö½Ð×öHLogµÄwrite-ahead logÖС£HLog±»»º´æÔÚÄÚ´æÖУ¬³ÆÎªMemcache£¬Ã¿Ò»¸öHStoreÖ»ÄÜÓÐÒ»¸öMemcache¡£µ±Memcacheµ½´ïÅäÖõĴóСÒԺ󣬽«»á´´½¨Ò»¸öMapFile£¬½«Æäдµ½´ÅÅÌÖÐÈ¥¡£Õ⽫¼õÉÙHReginServerµÄÄÚ´æÑ¹Á¦¡£µ±Ò»Æð¶ÁÈ¡µÄÇëÇóµ½À´µÄʱºò£¬HReginServer»áÏÈÔÚMemcacheÖÐѰÕÒ¸ÃÊý¾Ý£¬µ±ÕÒ²»µ½µÄʱºò£¬²Å»áÈ¥ÔÚMapFiles ÖÐѰÕÒ¡£

HBase Client

HBase Client¸ºÔðѰÕÒÌṩÐèÇóÊý¾ÝµÄHReginServer¡£ÔÚÕâ¸ö¹ý³ÌÖУ¬HBase Client½«Ê×ÏÈÓëHMasterͨÐÅ£¬ÕÒµ½ROOTÇøÓò¡£Õâ¸ö²Ù×÷ÊÇClientºÍMasterÖ®¼ä½öÓеÄͨÐŲÙ×÷¡£Ò»µ©ROOTÇøÓò±»ÕÒµ½ÒÔºó£¬Client¾Í¿ÉÒÔͨ¹ýɨÃèROOTÇøÓòÕÒµ½ÏàÓ¦µÄMETAÇøÓòÈ¥¶¨Î»Êµ¼ÊÌṩÊý¾ÝµÄHReginServer¡£µ±¶¨Î»µ½ÌṩÊý¾ÝµÄHReginServerÒÔºó£¬Client¾Í¿ÉÒÔͨ¹ýÕâ¸öHReginServerÕÒµ½ÐèÒªµÄÊý¾ÝÁË¡£ÕâЩÐÅÏ¢½«»á±»Client»º´æÆðÀ´£¬µ±Ï´ÎÇëÇóµÄʱºò£¬¾Í²»ÐèÒª×ßÉÏÃæµÄÕâ¸öÁ÷³ÌÁË¡£

HBase·þÎñ½Ó¿Ú

HBase Thrift ServerºÍHBase REST ServerÊÇͨ¹ý·ÇJava³ÌÐò¶ÔHBase½øÐзÃÎʵÄÒ»ÖÖ;¾¶¡£

½øÈëÕýÌâ

ÏÈÀ´¿´Ò»¸öHBase¼¯ÈºµÄÄ£Äâ»·¾³£¬´Ë»·¾³ÖÐÒ»¹²ÓÐ4̨»úÆ÷£¬·Ö±ð°üº¬ zookeeper¡¢HBaseMaster¡¢HReginServer¡¢HDSF 4¸ö·þÎñ£¬ÎªÁËչʾʧЧת·¢µÄЧ¹ûHBaseMaster¡¢HReginServer¸÷ÓÐ2̨£¬Ö»ÊÇÔÚһ̨»úÆ÷Éϼ´ÔËÐÐÁËHBaseMaster£¬Ò²ÔËÐÐÁËHReginServer¡£
×¢Ò⣬HBaseµÄ¼¯Èº»·¾³ÖÐHBaseMasterÖ»ÓÐʧЧת·¢Ã»ÓÐѹÁ¦·ÖÔØµÄ¹¦ÄÜ£¬¶øHReginServer¼´ÌṩʧЧת·¢Ò²ÌṩѹÁ¦·ÖÔØ¡£

·þÎñÆ÷Çåµ¥ÈçÏ£º

zookeeper 192.168.20.214

HBaseMaster 192.168.20.213/192.168.20.215

HReginServer 192.168.20.213/192.168.20.215

HDSF 192.168.20.212

Õû¸öÄ£Äâ»·¾³µÄ¼Ü¹¹ÈçͼËùʾ£º

×¢Ò⣬ÕâÀïÖ»ÊÇ×öÁËÒ»¸öÄ£Äâ»·¾³£¬ÒòΪÕâ¸ö»·¾³µÄÖØµãÊÇHBase£¬ËùÒÔzookeeperºÍHDFS·þÎñ¶¼Êǵ¥Ì¨¡£

ËäȻ˵ÔÚÕû¸öHBaseµÄ¼¯Èº»·¾³ÖÐÖ»ÄÜÓÐÒ»¸öHMaster£¬¿ÉÊÇÔÚ¼¯Èº»·¾³ÖÐHMaster¿ÉÒÔÆô¶¯¶à¸ö£¬µ«ÕæÕýʹÓõ½µÄHMaster ServerÖ»ÓÐÒ»¸ö£¬Ëû²»downµôµÄʱºò£¬ÆäËûÆô¶¯µÄHMaster Server²¢²»»á¹¤×÷£¬Ö±µ½ÓëZooKeeper·þÎñÆ÷ÅжÏÓ뵱ǰÔËÐеÄHMasterͨѶ³¬Ê±£¬ÈÏΪÕâ¸öÕýÔÚÔËÐеÄHMaster·þÎñÆ÷downµôÁË£¬Zookeeper²Å»áÈ¥Á¬½ÓÏÂһ̨HMaster Server¡£

¼òµ¥À´Ëµ,Èç¹ûÔËÐÐÖÐHMaster·þÎñÆ÷downµôÁË£¬ÄÇôzookeeper»á´ÓÁбíÖÐÑ¡ÔñÏÂÒ»¸öHMaster ·þÎñÆ÷½øÐзÃÎÊ£¬ÈÃËû½Ó¹ÜdownµôµÄHMasterÈÎÎñ£¬»»¶øÑÔÖ®£¬ÓÃJava¿Í»§¶Ë¶ÔHBase½øÐвÙ×÷ÊÇͨ¹ýZooKeeperµÄ£¬Ò²¾ÍÊÇ˵Èç¹ûzookeeper¼¯ÈºÖеĽڵãÈ«¹ÒÁË ÄÇôHBaseµÄ¼¯ÈºÒ²¹ÒÁË¡£±¾ÉíHBase²¢²»´æ´¢ÖеÄÈκÎÊý¾Ý ÕæÕýµÄÊý¾ÝÊDZ£´æÔÚHDFSÉÏ£¬ËùÒÔHBaseµÄÊý¾ÝÊÇÒ»Öµģ¬µ«ÊÇHDFSÎļþϵͳ¹ÒÁË£¬HBaseµÄ¼¯ÈºÒ²¹Ò¡£

ÔÚһ̨HMasterʧ°Üºó£¬¿Í»§¶Ë¶ÔHBase¼¯Èº»·¾³·ÃÎÊʱ£¬¿Í»§¶ËÏÈ»áͨ¹ýzookeeperʶ±ðµ½HMasterÔËÐÐÒì³££¬Ö±µ½È·È϶à´Îºó£¬²ÅÁ¬½Óµ½ÏÂÒ»¸öHMaster£¬´Ëʱ£¬±¸·ÝµÄHMaster·þÎñ²ÅÉúЧ£¬ÔÚIDE»·¾³ÖеÄЧ¹û£¬ÈçͼËùʾ£º

ÉÏͼÖÐÄÜ¿´¼ûÅ׳öµÄһЩÒì³£ºÍname:javahttp://www.javabloger.comºÍname:javahttp://www.javabloger.com1µÄ½á¹û¼¯£¬ÒòΪÎÒÔÚserv215»úÆ÷ÉÏÓÃkillall javaÃüÁî°Ñ HMasterºÍHReginServer¶¼¹Øµô£¬²¢ÇÒÁ¢¿ÌÓÃJava¿Í»§¶Ë¶ÔHBaseµÄ¼¯Èº»·¾³½øÐзÃÎÊÓÐÒì³£Å׳ö£¬µ«ÊÇretryµ½Ò»¶¨´ÎÊýºó²éѯ³ö½á¹û£¬Ç°ÃæÒѾ­ËµÁË·ÃÎÊHBaseÊÇͨ¹ýzookeeperÔÙºÍÕæÕýµÄÊý¾Ý´ò½»µÀ£¬Ò²¾ÍÊÇ˵zookeeper½Ó¹ÜÁËÒ»¸östandby µÄ HMaster£¬ÈÃÔ­ÏÈStandbyµÄHMaster½ÓÌæÁËʧЧµÄHMasterÈÎÎñ£¬¶ø±»½Ó¹ÜµÄHBaseMasterÔÙ¶ÔHReginServerµÄÈÎÎñ½øÐзÖÅ䣬µ± HReginServerʧ°Üºózookeeper»á֪ͨ HMaster¶ÔHReginServerµÄÈÎÎñ½øÐзÖÅä¡£ÕâÑù³ä·ÖµÄ˵Ã÷ÁËHBase×öµ½ÁËʵЧת·¢µÄ¹¦ÄÜ¡£

ÈçͼËùʾ£º

¿ÚË®£º

1¡¢HBaseµÄʧЧת·¢µÄЧÂʱȽÏÂýÁË£¬²»Ö¸ÍûÄÜÔÚ1-2ÃëÇл»ºÍ»Ö¸´Íê±Ï£¬Ò²ÐíÊÇÎÒÔÝʱûÓз¢ÏÖÓÐʲô²ÎÊý¿ÉÒÔÌá¸ßʧЧת·¢ºÍ»Ö¸´¹ý³ÌµÄËÙ¶È£¬½«À´»á¼ÌÐø¹Ø×¢Õâ¸öÎÊÌâ¡£

2¡¢ÔÚ¹Ù·½ÍøÕ¾ÉÏ¿´¼ûHBase0.89.20100924µÄ°æ±¾ÓÐÆª½²Êö¹ØÓÚÊý¾Ýͬ²½µÄÎÄÕ£¬ÎÒ³¢ÊÔÁËÒ»ÏÂÔÚһ̨»úÆ÷ÉÏ¿ÉÒÔÔËÐÐËùνµÄHBaseÐéÄ⼯Ⱥ»·¾³£¬µ«ÊÇÇл»µ½¶ą̀»úÆ÷µÄ·Ö²¼Ê½»·¾³ÖУ¬µ¥µãʧЧת·¢µÄËٶȺÜÂý±ÈHBase0.20.6»¹ÒªÂý£¬ÎÒÓÖ¼ì²éÁËÊÇ·ñ´æÔÚÍøÂçµÄÎÊÌ⣬ĿǰÉÐδÕÒµ½ÕýÈ·µÄ´ð°¸£¬¶ÔÓëHBase0.89.20100924 аæÖеÄÊý¾Ýͬ²½µÄÔ­Àí£¬ÈçͼËùʾ£º(¸ü¶àÐÅÏ¢)

6 -°×»°MySQL(RDBMS)ÓëHBaseÖ®¼ä

Îҵķϻ°1:

ÈκÎÒ»Ïîм¼Êõ²¢·Ç¾ÈÃüµ¾²Ý£¬Ò»Ä¨Ò»²ÁÁ¢ÂíÒ©µ½²¡³ýµÄ°Ù±¦Ï䣬²¢·ÇʹÓÃSpring»òÕßNOSQLµÄ²úÆ·¾ÍÉñºõÆäÉñ+Îå¹âʮɫ£¬Èç¹ûÄÇÑù»ù±¾Êdz¶µ­¡£Í¬Àà ÐͲúÆ·Öв»¹ÜÄÇÖÖ¼¼Êõ×îÖÕÒª´ïµ½µÄÄ¿µÄÊÇÒ»ÑùµÄ£¬Í¨¹ýеļ¼ÊõÊÖ¶ÎÄãÍùÍù¿ÉÄܱܻäÁ˵±Ç°ÄãËùÐèÒªÃæ¶ÔµÄÎÊÌ⣬µ«¹ýºóеÄÎÊÌâÓÖÀ´ÁË¡£Ò²Ðí»Ø¹ýÍ·À´¿´¿´»¹²» ÈçÔÚÔ­À´µÄ»ù´¡É϶ද¶¯ÄÔ½î ÏëÏë°ì·¨ ×öЩ¸ÄÁ¼¿ÉÒԵõ½¸ü¸ßµÄ»Ø±¨¡£

´«Í³Êý¾Ý¿âÊÇÒÔÊý¾Ý¿éÀ´´æ´¢Êý¾Ý£¬¼òµ¥À´Ëµ£¬ÄãµÄ±í×Ö¶ÎÔ½¶à£¬Õ¼ÓõÄÊý¾Ý¿Õ¼ä¾ÍÔ½¶à£¬ÄÇô²éѯÓпÉÄܾÍÒª¿çÊý¾Ý¿é£¬½«»áµ¼Ö²éѯµÄËٶȱäÂý¡£ÔÚ´óÐÍϵͳÖÐÒ»ÕűíÉϰٸö×ֶΣ¬²¢ÇÒ±íÖеÄÊý¾ÝÉÏÒÚÌõÕâÊÇÍêÈ«ÊÇÓпÉÄܵġ£Òò´Ë»á´øÀ´Êý¾Ý¿â²éѯµÄÆ¿¾±¡£ÎÒÃǶ¼ÖªµÀÒ»¸ö³£Ê¶Êý¾Ý¿âÖбí¼Ç¼µÄ¶àÉÙ¶Ô²éѯµÄÐÔÄÜÓзdz£´óµÄÓ°Ï죬´ËʱÄãºÜÓпÉÄÜÏëµ½·Ö±í¡¢·Ö¿âµÄ×ö·¨À´·ÖÔØÊý¾Ý¿âÔËËãµÄѹÁ¦£¬ÄÇôÓÖ»á´øÀ´ÐµÄÎÊÌ⣬ÀýÈ磺·Ö²¼Ê½ÊÂÎñ¡¢È«¾ÖΨһIDµÄÉú³É¡¢¿çÊý¾Ý¿â²éѯ µÈ£¬ÒÀ¾É»áÈÃÄãÃæ¶Ô¼¬ÊÖµÄÎÊÌâ¡£Èç¹û´òÆÆÕâÖÖ°´ÕÕÐд洢µÄģʽ£¬²ÉÓÃÒ»ÖÖ»ùÓÚÁд洢µÄģʽ£¬¶ÔÓÚ´ó¹æÄ£Êý¾Ý³¡¾°ÕâÑùÇé¿öÓпÉÄÜ·¢ÉúһЩºÃת¡£ÓÉÓÚ²éѯÖеÄÑ¡Ôñ¹æÔòÊÇͨ¹ýÁÐÀ´¶¨ÒåµÄ£¬Òò´ËÕû¸öÊý¾Ý¿âÊÇ×Ô¶¯Ë÷Òý»¯µÄ¡£°´Áд洢ÿ¸ö×ֶεÄÊý¾Ý¾Û¼¯´æ´¢£¬ ¿ÉÒÔ¶¯Ì¬Ôö¼Ó£¬²¢ÇÒÁÐΪ¿Õ¾Í²»´æ´¢Êý¾Ý£¬½ÚÊ¡´æ´¢¿Õ¼ä¡£ ÿ¸ö×ֶεÄÊý¾Ý°´ÕÕ¾Û¼¯´æ´¢£¬ÄÜ´ó´ó¼õÉÙ¶ÁÈ¡µÄÊý¾ÝÁ¿£¬²éѯʱָÄÄ´òÄÄ£¬À´µÄ¸üÖ±½Ó¡£ÎÞÐ迼ÂÇ·Ö¿â¡¢·Ö±í Hbase½«¶Ô´æ´¢µÄÊý¾Ý×Ô¶¯ÇзÖÊý¾Ý£¬²¢Ö§³Ö¸ß²¢·¢¶Áд²Ù×÷£¬Ê¹µÃº£Á¿Êý¾Ý´æ´¢×Ô¶¯¾ßÓиüÇ¿µÄÀ©Õ¹ÐÔ¡£

JavaÖеÄHashMapÊÇKey/ValueµÄ½á¹¹£¬ÄãÒ²¿ÉÒÔ°ÑHBaseµÄÊý¾Ý½á¹¹¿´×öÊÇÒ»¸öKey/ValueµÄÌåϵ,»°ËµHBaseµÄÇøÓòÓɱíÃûºÍÐн綨µÄ¡£ÔÚHBaseÇøÓòÿһ¸ö"ÁÐ×å"¶¼ÓÉÒ»¸öÃûΪHStoreµÄ¶ÔÏó¹ÜÀí¡£Ã¿¸öHStoreÓÉÒ»¸ö»ò¶à¸öMapFiles(HadoopÖеÄÒ»¸öÎļþÀàÐÍ)×é³É¡£MapFilesµÄ¸ÅÄîÀàËÆÓÚGoogleµÄSSTable¡£ ÔÚHbaseÀïÃæÓÐÒÔÏÂÁ½¸öÖ÷ÒªµÄ¸ÅÄRow key ºÍ Column Family£¬Æä´ÎÊÇCell qualifierºÍTimestamp tuple£¬Column familyÎÒÃÇͨ³£³ÆÖ®Îª¡°ÁÐ×塱£¬·ÃÎÊ¿ØÖÆ¡¢´ÅÅ̺ÍÄÚ´æµÄʹÓÃͳ¼Æ¶¼ÊÇÔÚÁÐ×å²ãÃæ½øÐеġ£ÁÐ×åColumn familyÊÇ֮ǰԤÏȶ¨ÒåºÃµÄÊý¾ÝÄ£ÐÍ£¬Ã¿Ò»¸öColumn Family¶¼¿ÉÒÔ¸ù¾Ý¡°ÏÞ¶¨·û¡±Óжà¸öcolumn¡£ÔÚHBaseÿ¸öcell´æ´¢µ¥Ôª¶Ôͬһ·ÝÊý¾ÝÓжà¸ö°æ±¾£¬¸ù¾ÝΨһµÄʱ¼ä´ÁÀ´Çø·Öÿ¸ö°æ±¾Ö®¼äµÄ²îÒ죬×îеÄÊý¾Ý°æ±¾ÅÅÔÚ×îÇ°Ãæ ¡£

¿ÚË®£ºHbase½«tableˮƽ»®·Ö³ÉN¸öRegion£¬region°´column family»®·Ö³ÉStore£¬Ã¿¸östore°üÀ¨ÄÚ´æÖеÄmemstoreºÍ³Ö¾Ã»¯µ½diskÉϵÄHFile¡£

ÉÏÊö¿ÉÄÜÎÒ±í´ïµÄ»¹²»¹»µ½Î»£¬ÏÂÃæÀ´¿´Ò»¸öʵ¼ùÖеij¡¾°£¬½«Ô­À´ÊÇ´æ·ÅÔÚMySQLÖÐBlogÖеÄÊý¾ÝÇ¨ÒÆµ½HBaseÖеĹý³Ì£º
MySQLÖÐÏÖÓеıí½á¹¹£º

Ç¨ÒÆHBaseÖеıí½á¹¹£º

Ô­À´ÏµÍ³ÖÐÓÐ2ÕűíblogtableºÍcomment±í£¬²ÉÓÃHBaseºóÖ»ÓÐÒ»ÕÅblogtable±í£¬Èç¹û°´ÕÕ´«Í³µÄRDBMSµÄ»°£¬blogtable±íÖеÄÁÐÊǹ̶¨µÄ£¬±ÈÈçschema ¶¨ÒåÁËAuthor,Title,URL,textµÈÊôÐÔ£¬ÉÏÏߺó±í×Ö¶ÎÊDz»Äܶ¯Ì¬Ôö¼ÓµÄ¡£µ«ÊÇÈç¹û²ÉÓÃÁд洢ϵͳ£¬±ÈÈçHbase£¬ÄÇôÎÒÃÇ¿ÉÒÔ¶¨Òåblogtable±í£¬È»ºó¶¨Òåinfo ÁÐ×壬UserµÄÊý¾Ý¿ÉÒÔ·ÖΪ£ºinfo:title ,info:author ,info:url µÈ£¬Èç¹ûºóÀ´ÄãÓÖÏëÔö¼ÓÁíÍâµÄÊôÐÔ£¬ÕâÑùºÜ·½±ãÖ»ÐèÒª info:xxx ¾Í¿ÉÒÔÁË¡£

¶ÔÓÚRow keyÄã¿ÉÒÔÀí½ârow keyΪ´«Í³RDBMSÖеÄijһ¸öÐеÄÖ÷¼ü£¬HbaseÊDz»Ö§³ÖÌõ¼þ²éѯÒÔ¼°Order byµÈ²éѯ£¬Òò´ËRow keyµÄÉè¼Æ¾ÍÒª¸ù¾ÝÄãϵͳµÄ²éѯÐèÇóÀ´Éè¼ÆÁ˶ HbaseÖеļǼÊǰ´ÕÕrowkeyÀ´ÅÅÐòµÄ£¬ÕâÑù¾ÍʹµÃ²éѯ±äµÃ·Ç³£¿ì¡£

¾ßÌå²Ù×÷¹ý³ÌÈçÏ£º

 ============================´´½¨blogtable±í=========================
create 'blogtable', 'info','text','comment_title','comment_author','comment_text'

============================²åÈë¸ÅÒªÐÅÏ¢=========================
put 'blogtable', '1', 'info:title', 'this is doc title'
put 'blogtable', '1', 'info:author', 'javabloger'
put 'blogtable', '1', 'info:url', 'http://www.javabloger.com/index.php'

put 'blogtable', '2', 'info:title', 'this is doc title2'
put 'blogtable', '2', 'info:author', 'H.E.'
put 'blogtable', '2', 'info:url', 'http://www.javabloger.com/index.html'

============================²åÈëÕýÎÄÐÅÏ¢=========================
put 'blogtable', '1', 'text:', 'what is this doc context ?'
put 'blogtable', '2', 'text:', 'what is this doc context2?'

==========================²åÈëÆÀÂÛÐÅÏ¢===============================
put 'blogtable', '1', 'comment_title:', 'this is doc comment_title '
put 'blogtable', '1', 'comment_author:', 'javabloger'
put 'blogtable', '1', 'comment_text:', 'this is nice doc'

put 'blogtable', '2', 'comment_title:', 'this is blog comment_title '
put 'blogtable', '2', 'comment_author:', 'H.E.'
put 'blogtable', '2', 'comment_text:', 'this is nice blog'

HBaseµÄÊý¾Ý²éѯ\¶ÁÈ¡£¬¿ÉÒÔͨ¹ýµ¥¸örow key·ÃÎÊ£¬row keyµÄrangeºÍÈ«±íɨÃè,´óÖÂÈçÏ£º
×¢Ò⣺HBase²»ÄÜÖ§³ÖwhereÌõ¼þ¡¢Order by ²éѯ£¬Ö»Ö§³Ö°´ÕÕRow keyÀ´²éѯ£¬µ«ÊÇ¿ÉÒÔͨ¹ýHBaseÌṩµÄAPI½øÐÐÌõ¼þ¹ýÂË¡£
ÀýÈ磺http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/filter/ColumnPrefixFilter.html

scan 'blogtable' ,{COLUMNS => ['text:','info:title'] } ¡ª> Áгö ÎÄÕµÄÄÚÈݺͱêÌâ

scan 'blogtable' , {COLUMNS => 'info:url' , STARTROW => '2'} ¡ª> ¸ù¾Ý·¶Î§Áгö ÎÄÕµÄÄÚÈݺͱêÌâ

get 'blogtable','1' ¡ª> Áгö ÎÄÕÂid µÈÓÚ1µÄÊý¾Ý

get 'blogtable','1', {COLUMN => 'info'} ¡ª> Áгö ÎÄÕÂid µÈÓÚ1 µÄ info µÄÍ·(Head)ÄÚÈÝ

get 'blogtable','1', {COLUMN => 'text'} ¡ª> Áгö ÎÄÕÂid µÈÓÚ1 µÄ text µÄ¾ßÌå(Body)ÄÚÈÝ

get 'blogtable','1', {COLUMN => ['text','info:author']} ¡ª> Áгö ÎÄÕÂid µÈÓÚ1 µÄÄÚÈݺÍ×÷Õß(Body/Author)ÄÚÈÝ

Îҵķϻ°2:

ÓÐÈË»áÎÊJava Web·þÎñÆ÷ÖÐÊÇTomcat¿ì»¹ÊÇGlassFish¿ì£¿Ð¡ÐÍÊý¾Ý¿âÖÐÊÇMySQLЧÂʸ߻¹ÊÇMS-SQLЧÂʸߣ¿ÎÒ¿´ÊǹؼüÓÃÔÚʲô³¡¾°ºÍÔõôʹÓÃÕâ ¸ö²úÆ·(¼¼Êõ)£¬ËùÒÔÎÒ½¥½¥µÄÈÏΪÊÇÐèÒª¶Ô²úÆ·¡¢¼¼Êõ±¾ÉíÉîÈëµÄÁ˽⣬¶ø²¢·ÇÒ»Ïîеļ¼Êõ¾ÍÊǾø¼ÑµÄÑ¡Ôñ¡£ÊÔÎÊ£ºTomcatµÄĬÈϵÄÔËÐвÎÊýÄܺÍÎÒÃÇÏß ÉÏÕýÔÚʹÓõÄGlassFishÐÔÄÜÏàÌá²¢ÂÛÂð£¿ÎÒ²»ÏàÐÅGlassFishv2ºÍGlassFishv3ÔÚĬÈϵÄÅäÖòÎÊýÏÂÓÐÏÔÖøµÄ²î±ð¡£ÎÒÃÇÐèÒª¶Ô²ú Æ·±¾Éí×öµ½ÉîÈëµÄÁ˽â²ÅÄÜ·¢»ÓËû×î¸ßµÄÐÔÄÜ£¬¶ø²¢·Ç¸Ð¹ÛÌý´Ó³§¼ÒµÄ¹ã¸æºÍ×Ô¼ºµÄ¸ÐÐÔÈÏʶ ÃÔÐÅÄĸö²úÆ·µÄÓÅÔ½ÐÔ¡£

Îҵķϻ°3:

¶ÔÓÚNOSQLÕâÑùµÄм¼Êõ£¬µÄµÄÈ·È·ÊÇ¿ÉÒÔ½â¾ö¹ýÈ¥ÎÒÃÇËùÐèÒªÃæ¶ÔµÄÎÊÌ⣬µ«Ò²²¢·ÇÊʺÏÿ¸öÓ¦Óó¡¾°£¬ËùÒÔÔÚʹÓÃвúÆ·µÄͬʱÐèÒªÇкϵ±Ç°µÄ²úÆ·ÐèÒª£¬ ÊÇÐèÇóÔÚÒýµ¼Ð¼¼ÊõµÄͶÈ룬¶ø²¢·ÇΪÁ˸Ïʱ÷ÖȥʹÓÃËû¡£ÄãµÄ²úÆ·ÊÇ·ñ¹ýÓ²²»ÊÇÄãʹÓÃÁËʲôм¼Êõ£¬Óû§¹ØÐĵÄÊÇËٶȺÍÎȶ¨ÐÔ£¬²»»á¹ØÐÄÄãÊÇ·ñʹÓÃÁË NOSQL¡£Ïà·´GoogleÓÐ×ų¬´óµÄÊý¾ÝÁ¿£¬ÄܸøÈ«ÊÀ½çÓû§´øÀ´Á˾ªÈ˵ÄËٶȺÍ׼ȷÐÔ£¬´ó¼Ò²Å»á»Ø¹ýÍ·À´ºÃÆæGoogleµ½µ×ÊÇÔõô×öµ½µÄ¡£ËùÒÔ¸ù¾Ý ×Ô¼ºµÄÐèҪǧÍò±ðÌ«ÃãÇ¿×Ô¼ºÊ¹ÓÃÁËijÏîм¼Êõ¡£

Îҵķϻ°4:

×ÜÖ®Ò»¾ä»°£¬ÓÃʲô²»ÊÇ×î¹Ø¼ü£¬×î¹Ø¼üÊÇÔõôȥʹÓã¡

7 -°²È«&ȨÏÞ

Îҵķϻ°£º

´óÄêÈýʮҹ£¬¿´´ºÍíʵÔÚÊÇÌ«ÎÞÁÄÁË£¬Õû¸ö¡¶ÐÂÎÅÁª²¥¡·µÄµçÊÓ¾ç°æ±¾£¬»¹²»ÈçÉÏÉÏÍø£¬¿´¿´×ÊÁÏ£¬ºÈºÈÀϾƣ¬Ð´µã¶«Î÷À´µÄ¿ì»î¡£

½ü2ÄêÀ´ÔƼÆËãµÄ»°Ì⵽ĿǰΪֹ·ç·ç»ð»ð´ÓÀ´Ã»ÓÐÆ½¾²¹ý£¬Ò»Ö±ÊÇ´ó¼Ò×ì±ßÌÖÂÛµÄÈÈÃÅ»°Ì⣬ÈËÃÇÆÚÍûÔËÓÃÔÆ¼ÆËãÌṩ¿É¿¿¡¢Îȶ¨¡¢¸ßËٵļÆË㣬ÔÚÔÆ¼ÆËãÖÐGoogleÊÇĿǰ×î´óµÄÔÆ¼ÆË㹩ӦÉÌ£¬ÀýÈ磺Google GAE(Google App Engine)ºÍGoogleµÄDocsÔÚÏßÎÄÕ·þÎñ£¬ÕâЩSaaSÉÏÏß²úÆ·µÄÊý¾Ý´æ´¢(datastore)ÊÇÓÉBigTableÌṩ´æ´¢·þÎñµÄ£¬ÔÚ´Î֮ǰÎÒÌáµ½¹ýYahoo¹±Ï׸øApacheµÄÄÇЩɽկ°æ±¾(GoogleÓëYahooµÄÄÇЩÀûÆ÷)£¬ÆäÖÐApacheµÄHBase¾ÍÊÇɽկÁËGoogleµÄBigTable¡£

ÎÒÃÇÖªµÀÔÚÔÆ¼ÆËãµÄ¼¼Êõ»°ÌâÖÐApacheµÄHadoopÏîÄ¿ÊÇÒ»¿é»ùʯ£¬ÀûÓÃHadoopÏîÄ¿ÖеIJúÆ·¿ÉÒÔ½¨Á¢ÔƼÆËãÆ½Ì¨ºÍ³¬´óÐ͵ļÆËã¡£²»ÖªµÀÄãÊÇ·ñÓÐÏë¹ýÈç¹û½«HBase×÷ΪGoogle GAEÉϵÄÊý¾Ý´æ´¢(datastore)£¬ÄÇôÿ¸öÓû§Ö®¼äµÄÊý¾Ý·ÃÎÊȨÏÞÔõô°ì£¿Èç¹ûʹÓÃHBaseÌṩ¶Ô´ó¿Í»§Ìṩ¡°Ë½ÓÐÔÆ¡±(private cloud)»òÕßÁíÒ»ÖÖ¿ÉÄÜÒ»¸ö¹«Ë¾ÄÚ²¿µÄ¼¯ÈºÉÏÔËÐÐHBase£¬¹«Ë¾µÄÄÚ²¿¿ÉÄÜÓм¸¸ö²¿ÃÅ£¬Ä³¼¸¸ö²¿ÃÅÖ®¼äµÄÊý¾Ý¶¼ÊǶÀÁ¢·ÖÀ뵫ÓÖÔËÐÐÔÚÒ»¸öƽ̨ÉÏ£¬ÄÇôÄã¾Í»á·¢ÏÖHBase²»¾ß±¸ÕâÑùµÄ¹¦ÄÜ£¬Ã²ËÆÄ¿Ç°HBaseµÄ×î¸ß°æ±¾0.90.0»¹Ã»ÓÐÕâÑùµÄ¹¦ÄܶÔÓû§µÄ±í¡¢Row¡¢CellµÄ·ÃÎÊȨÏÞ¡£µ«ÊÇÎÒÃÇÖªµÀGoogleµÄGAEÉÏÿ¸öÓû§·ÃÎʵÄÊý¾Ý¿Ï¶¨ÊÇÓÐȨÏÞ»®·ÖµÄ£¬²»È»ÎÒÖ»ÒªÓÐȨÏ޵ǼGEA¾ÍÄÜ¿´¼ûËùÓÐÓû§´æ·ÅµÄÊý¾ÝÁË¡£ÕâÑùµÄÎÊÌâÄãÓпÉÄÜûÓÐÏë¹ý£¬µ«Ç÷ÊÆ¹«Ë¾µÄ¹¤³ÌʦÃÇȴΪ´ËÏëµ½ÁËÕâµã£¬²¢ÇÒ°ÑËûÃǵÄÉèÏëºÍÉè¼ÆÌá½»ÁËHBaseÏîÄ¿×飬²¢ÇÒÌá³öÁËÒÔÏÂÖ÷ÒªµÄÉè¼ÆË¼Ï룺

Client access to HBase is authenticated

User data is private unless access has been granted

Access to data can be granted at a table or per column family basis.

¶ÔHBaseÖеıíºÍÊý¾Ý»®·ÖȨÏ޵ȼ¶ºÍÉí·ÝÑéÖ¤ºó£¬²Ù×÷ȨÏÞ±»·ÖΪ3´óÀ࣬ÿÀàÖаüº¬µÄ²Ù×÷ȨÏÞÈçÏÂËùʾ£º

¶ÔÓÚ·½°¸ÖÐÉæ¼°µ½´æ´¢µÄȨÏÞµÄÊÇÖ¸Õû¸ö±í»ò±íÖеÄÁÐ×壬Ҳ¾ÍÊÇ˵ֻ¿¼ÂÇÔÚ±íÕâ¸ö¼¶±ðµÄȨÏÞ£¬±íÓë±íÖ®¼äµÄËùÊô¹ØÏµÊÇ´æ·ÅÔÚ .META. ϵͳ±íÖУ¬ÒÔregioninfo:owner µÄ¸ñʽ½øÐдæ·Å£¬ÀýÈç:ϵͳÖÐtable1Õâ¸ö±íÊÇÓÐȨÏ޵ģ¬Õâ¸ö±íȨÏ޵Ĵæ¸ù±£´æÔÚ3¸öµØ·½ £º

The row in .META. for the first region of table1

The node /hbase/acl/table1 of Zookeeper

The in-memory Permissions Mirror of every regionserver that serves table1

ÈçͼËùʾ£¬Í¼ÖеļýÍ·±íʾÁËÊý¾ÝÁ÷ÏòµÄ˳Ðò£º

·½°¸ÖÐHBaseÔÚ·Ö²¼Ê½¡¢¼¯Èº»·¾³Ï£¬¶øÈ¨ÏÞÒ»ÖÂÐÔµÄÎÊÌâ½»¸øÁËZookeeperÀ´´¦Àí£¬ÔÚ¶à¸öregionserversÖУ¬Ã¿¸ö·þÎñÆ÷µÄHRegionÖдæ·Å×Ŷà¸ö±í£¬²¢ÇÒʵÏÖÁË(implement)ZKPermissionWatcher½Ó¿ÚµÄnodeCreated() ºÍ nodeChanged() ·½·¨£¬Õâ2¸ö·½·¨¶ÔZookeeper µÄ½Úµã½øÐÐ¼à¿Ø£¬ ½ÚµãµÄ״̬·¢ÉúÏàÓ¦µÄ±ä»¯Ê±»áZooKeeperˢоµÏñÖеÄȨÏÞ¡£

ÈçͼËùʾ£º

HBaseµÄÕâÒ»¹ØÓÚȨÏ޵ŦÄÜÕýÔÚÉè¼ÆºÍÑÐÌÖµ±ÖУ¬ÈÃÎÒÃǼÌÐø¶ÔËû±£³Ö¹Ø×¢£¬¿´¿´½ñºó½«»á·¢ÉúµÄ±ä»¯ÄܸøÎÒÃÇ´øÀ´Ê²Ã´ÑùµÄЧ¹û£¬·Ç³£ÆÚ´ýÕâ¸ö¹¦ÄÜÔçÈÕÕýʽ·¢²¼¡£

   
6070 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

»ùÓÚEAµÄÊý¾Ý¿â½¨Ä£
Êý¾ÝÁ÷½¨Ä££¨EAÖ¸ÄÏ£©
¡°Êý¾Ýºþ¡±£º¸ÅÄî¡¢ÌØÕ÷¡¢¼Ü¹¹Óë°¸Àý
ÔÚÏßÉ̳ÇÊý¾Ý¿âϵͳÉè¼Æ ˼·+Ч¹û
 
Ïà¹ØÎĵµ

GreenplumÊý¾Ý¿â»ù´¡Åàѵ
MySQL5.1ÐÔÄÜÓÅ»¯·½°¸
ijµçÉÌÊý¾ÝÖÐ̨¼Ü¹¹Êµ¼ù
MySQL¸ßÀ©Õ¹¼Ü¹¹Éè¼Æ
Ïà¹Ø¿Î³Ì

Êý¾ÝÖÎÀí¡¢Êý¾Ý¼Ü¹¹¼°Êý¾Ý±ê×¼
MongoDBʵս¿Î³Ì
²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
PostgreSQLÊý¾Ý¿âʵսÅàѵ
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

MySQLË÷Òý±³ºóµÄÊý¾Ý½á¹¹
MySQLÐÔÄܵ÷ÓÅÓë¼Ü¹¹Éè¼Æ
SQL ServerÊý¾Ý¿â±¸·ÝÓë»Ö¸´
ÈÃÊý¾Ý¿â·ÉÆðÀ´ 10´óDB2ÓÅ»¯
oracleµÄÁÙʱ±í¿Õ¼äдÂú´ÅÅÌ
Êý¾Ý¿âµÄ¿çƽ̨Éè¼Æ

²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿â
¸ß¼¶Êý¾Ý¿â¼Ü¹¹Éè¼ÆÊ¦
HadoopÔ­ÀíÓëʵ¼ù
Oracle Êý¾Ý²Ö¿â
Êý¾Ý²Ö¿âºÍÊý¾ÝÍÚ¾ò
OracleÊý¾Ý¿â¿ª·¢Óë¹ÜÀí

GE Çø¿éÁ´¼¼ÊõÓëʵÏÖÅàѵ
º½Ìì¿Æ¹¤Ä³×Ó¹«Ë¾ Nodejs¸ß¼¶Ó¦Óÿª·¢
ÖÐÊ¢Òæ»ª ׿Խ¹ÜÀíÕß±ØÐë¾ß±¸µÄÎåÏîÄÜÁ¦
ijÐÅÏ¢¼¼Êõ¹«Ë¾ PythonÅàѵ
ij²©²ÊITϵͳ³§ÉÌ Ò×ÓÃÐÔ²âÊÔÓëÆÀ¹À
ÖйúÓÊ´¢ÒøÐÐ ²âÊÔ³ÉÊì¶ÈÄ£Ðͼ¯³É(TMMI)
ÖÐÎïÔº ²úÆ·¾­ÀíÓë²úÆ·¹ÜÀí