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£¬·ñÔò½«ÎÞ·¨Õý³£ÔËÐС£
½øÈë´ËĿ¼
export JAVA_HOME=/JDK_PATH
±à¼ conf/hbase-env.sh Îļþ,½«JAVA_HOMEÐÞ¸ÄΪÄãµÄJDK°²×°Ä¿Â¼
ÊäÈëÄãµÄËùÓÐHBase·þÎñÆ÷Ãû,localhost,»òÕßÊÇipµØÖ·
Æô¶¯hbase, ÖмäÐèÒªÄãÊäÈëÁ½´ÎÃÜÂ룬Ҳ¿ÉÒÔ½øÐÐÉèÖò»ÐèÒªÊäÈëÃÜÂ룬Æô¶¯³É¹¦£¬ÈçͼËùʾ£º

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