1、版权所有 2015 华为技术有限公司HBase介绍前言版权所有 2015 华为技术有限公司第1页HBase是一个高可靠性、高性能、面向列、可伸缩的分布式 数据库,设计目标是用来解决关系型数据库在处理海量数据 时的局限性。本章主要介绍HBase的应用场景、功能与架构、关键流程、常用命令和参数。目标版权所有 2015 华为技术有限公司第2页学完本课程后,您将能够:了解HBase的组成架构熟悉HBase的基本功能目录版权所有 2015 华为技术有限公司第3页1.1.HBasHBase e应用场景应用场景2.2.HBasHBase e功功能能与与架构架构3.3.HBaseHBase关键流程关键流程4.
2、4.HBasHBase e常用命常用命令令和和参数参数简介版权所有 2015 华为技术有限公司第4页HBase是一个开源的非关系型分布式数据库(NoSQL),它 参考了谷歌的BigTable建模,实现的编程语言为 Java。HBase是一个分布式存储系统,具有高可靠性、高性能、面向列、可伸缩的特点。HBase利用Hadoop HDFS作为其文件存储系统需求场景版权所有 2015 华为技术有限公司第5页HBasHBase e适合具适合具有有如如下需下需求求的应的应用用:海量数据(TB、PB)高吞吐量需要在海量数据中实现高效的随机读取需要很好的性能伸缩能力能够同时处理结构化和非结构化的数据不需要完
3、全拥有传统关系型数据库所具备的ACID特性谁在用HBase?版权所有 2015 华为技术有限公司第6页目录版权所有 2015 华为技术有限公司第7页1.1.HBasHBase e应用场景应用场景2.2.HBasHBase e功功能能与与架构架构3.3.HBaseHBase关键流程关键流程4.4.HBasHBase e常用命常用命令令和和参数参数部署架构 架构版权所有 2015 华为技术有限公司第8页HBase模块 RegionRow001 Row002.Row010Row011 Row012.Row020Row021Row022.Row030Row031.Region-1StartKey,En
4、dKeyRegion-2StartKey,EndKeyRegion-3StartKey,EndKeyRegion-4StartKey,EndKey 将一个数据表按Key值范围横向划分为一个个 的子表,实现分布式存储。这个子表,在HBase中被称作“Region”。每一个Region都关联一个Key值范围,即一个 使用StartKey和EndKey描述的区间。事实上,每 一个Region仅仅记录StartKey就可以了,因为它 的EndKey就是下一个Region的StartKey。Region是HBase分布式存储的最基本单元。TableName?StartKey?Region版权所有 201
5、5 华为技术有限公司第9页Row001Row002.Row010Row011Row012.Row020Row021Row022.Row030Row031.HBase模块 Region与RegionServerRegionServer是HBase的数据服务进程。负责处理 用户数据的读写请求。Region被交由RegionServer管理。实际上,所有 用户数据的读写请求,都是和RegionServer上的 Region进行交互。Region可以在RegionServer之间发生转移。RegionRegionRegionServer思考:一个R Re eg gi io on n包含了一个S Sta
6、tar rtktke ey y和E En nd dK Ke ey y范围;一条用户数据K Ke ey yV Val alu ue e必然属于一个唯一的R Re eg gi io on n;R Re eg gi io on n由R Re eg gi io on nSeSer rv ve er r来管理,那么,这个路由信 息保存在哪里呢?R Re eg gi io on n如何才可以转移?由谁负责转移?Region版权所有 2015 华为技术有限公司第10页HBase模块 Region分类Region分为元数据Region以及用 户Region两类。Meta Region记录了每一个User Re
7、gion的路由信息。读写Region数据的路由,包括如下 几步:找寻Meta Region地址。再由Meta Region找寻User Region地址。RegionRegionRegionRegionRegionMETARegion版权所有 2015 华为技术有限公司第11页HBase模块 HMaster Master进程负责管理所有的RegionServer。新RegionServer的注册。RegionServer Failover处理。负责建表/修改表/删除表以及一些集群操作。Master进程负责所有Region的转移操作。新表创建时的Region分配。运行期间的负载均衡保障。Regi
8、onServer Failover后的Region接管。Master进程有主备角色。集群可以配置多个 Master角色,集群启动时,这些Master角色通过竞 争获得主Master角色。主Master只能有一个,所有 的备Master进程在集群运行期间处于休眠状态,不 干涉任何集群事务。疑问:主备Master进程角色是如何进行裁决的?RegionServerRegionServerRegionServer“Hey,Region-A!Please move to RegionServer2!”“RegionServer1 was gone!Let others take control of i
9、t!”“Good!1 new RegionServer iscoming.”版权所有 2015 华为技术有限公司第12页HBase模块 Zookeeper 提供分提供分布式锁的服务布式锁的服务例如例如,多个Master进程竞争主Master角色时,怎么样 保证仅有一个Active角色存在?这就需要一个分布式的 锁机制来保证。多个Master进程都尝试着去 ZooKeeper中写入一个对应的节点,该节点只能被一个 Master进程创建成功,创建成功的Master进程就是 Active角色。提供了提供了事件监听机制事件监听机制例如例如,主Master进程宕掉之后,其它的备Master如何 能够快速
10、的接管?这个过程中,备Master在监听那个 对应的ZooKeeper节点。主Master进程宕掉之后,该 节点会被删除,那么,其它的备Master就可以收到相 应的消息。个别场个别场景,可充当一个微型数据库角色景,可充当一个微型数据库角色例如例如,在ZooKeeper中存放了Region Server的地址,此时,可以将它理解成一个微型数据库。“Master-1,Congratulations!You are the active one!”“Sorry,Master-2.The active seat has been taken by others.Please be patient!”
11、版权所有 2015 华为技术有限公司第13页数据结构介绍 三种结构具有固具有固定的结构,属性划分,以及类型等信定的结构,属性划分,以及类型等信息息。我们通常所理解的关系 型数据库中所存储的数据信息,大多是结构化数据,如职工信息表,拥 有ID、Name、Phone、Address等属性信息。通常直接存放在数据库表中。数据记录的每一个属性对应数据表的一个 字段。结构化数据非结构化数据版权所有 2015 华为技术有限公司第14页半结构化数据无法用无法用统一的结构来表统一的结构来表示示,如文本文件、图像、视频、声音、网页等信 息。数据记录较小时(如KB级别),可考虑直接存放到数据库表中(整条记录 映射
12、到某一个列中),这样也有利于整条记录的快速检索。数据较大时,通常考虑直接存放在文件系统中。数据库可用来存放相关 数据的索引信息。具有一定的结构,但又有一定的灵活可变性具有一定的结构,但又有一定的灵活可变性。典型如XML、HTML等数 据。其实也是非结构化数据的一种。可以考虑直接转换成结构化数据进行存储。根据数据记录的大小和特点,选择合适的存储方式。这一点与非结构化 数据的存储类似。数据结构介绍 按行存储按列存储IDIDN Na amemeA Ad dd dr re essssPhPhoneone按行存按行存储储:数据按行存储在底层文件系统中。通常,每一 行会被分配固定的空间。优点优点:有利于增
13、加/修改整行记录等操作;有利于整行数据的读取操作;缺点缺点:单列查询时,会读取一些不必要 的数据。按列存按列存储储:数据以列为单位,存储在底层文件系统中。优点优点:有利于面向单列数据的读取/统计等操作。缺点缺点:整行读取时,可能需要多次I/O操 作。可以看可以看出,无论是按行存储,还是按列存储,出,无论是按行存储,还是按列存储,都有明显的优缺点。是否存在一种折衷的方案?都有明显的优缺点。是否存在一种折衷的方案?版权所有 2015 华为技术有限公司第15页IDNamePhoneAddress数据结构介绍 KeyValue结构(1)IDIDN Na amemeA Ad dd dr re essss
14、PhPhoneoneKeyValue具有特定的结构。Key部分被用来快速的检索一条数据记录,Value部分用来存储实际的用户数据信息。KeyValue作为承载用户数据的基本单元,需要保存一些对自身的描述信息,例如,时间戳,类型等等。那么,势必 会有一定的结构化空间开销。一个Key值对应一个Value?还是一个Key值可以对应多个Value?V Val alu ue e-I ID01D01K Ke ey y-0101V Val alu ue e-NaNamme e0101K Ke ey y-0101V Val alu ue e-PhoPhon ne e0101K Ke ey y-0101V Va
15、l alu ue e-A Ad dd dr re essss0101K Ke ey y-0101版权所有 2015 华为技术有限公司第16页R Re el latati ionalonal DataDatab baseaseK Ke ey yV Va al lueue DataDatab baseaseDatabase contains tables,tables contain columns and rows,and rows are made up of column values.Rows within a table all have the same schema.The data
16、 model is well defined in advance.A schema is strongly typed and it has constraints and relationships that enforce data integrity.The data model is based on a“natural”representation of the data it contains,not on an applications functionality.The data model is normalized to remove data duplication.N
17、ormalization establishes table relationships.Relationships associate data between tables.Domains can initially be thought of like a table,but unlike a table you dont define any schema for a domain.A Domain is basically a bucket that you put items into.Items within a single domain can have differing
18、schemas.Items are identified by keys,and a given item can have a dynamic set of attributes attached to it.In some implementations,attributes are all of a string type.In other implementations,attributes have simpletypes that reflect code types,such as ints,string arrays,and lists.No relationships are
19、 explicitly defined between domains or within a given domain.数据结构介绍 KeyValue结构(2)初始运行阶段,将Hash环划分为几个相等弧长 的区间,每一个Hash区间对应一个Node。对用户数据KeyValue的Key值进行Hash,落到 哪个Hash区间,就属于哪个Node。节点出现宕机时,将由该节点顺时针方向的下 一个节点接管相应的数据,避免出现大范围的Re-Hash操作。新节点加入时,从上一个节点到新节点之间的 数据,需要Re-Hash到新的节点中。一致性Hash尽管一定程度上可以保证负载的均 匀性,但在节点频繁宕机,或
20、频繁重启的情形下,可能会导致负载的极不均匀。版权所有 2015 华为技术有限公司第17页KeyValue型数据库数据分区方式-一致性Hash分区数据结构介绍 KeyValue结构(3)0102050603040708091011121314151601050206091310140307111504081216数据按照RowKey的范围(按一定的排序算法排序的结果,如按RowKey的字典顺序),划分为一个个的子区间。每 一个子区间都是一个分布式存储的基本单元版权所有 2015 华为技术有限公司第18页Node1Node2Node3Node4KeyValue型数据库数据分区方式-按Key值连续范
21、围分区HBase数据模型 Column Family/hbase/table/region-1/region-2/region-3HDFSColumnFamily是Region的一个物理存储单元。同一个Region下面的多个ColumnFamily,位于不同的路径下面。ColumnFamily信息是表级别的配置。也就是说,同一个表的多个Region,都拥有相同的ColumnFamily信息(例如,都有两个ColumnFamily,且不同Region的同一个ColumnFamily配置信息相同)/hbase/table/region-1/ColumnFamily-1/region-1/Colum
22、nFamily-2/region-2/ColumnFamily-1/region-2/ColumnFamily-2/region-3/ColumnFamily-1/region-3/ColumnFamily-2RegionRegionRegionRegion思考:ColumnFamily=HBase面向列存储?版权所有 2015 华为技术有限公司第19页HBase数据模型 KeyVaueHBase的底层数据都是以KeyValue的形式存在的。KeyValue具有特定的格式。KeyValue中拥有时间戳、类型等关键信息。同一个Key值可以关联多个KeyValue,每一个KeyValue都拥有一个
23、Qualifier标识。即使是Key值相同,Qualifier也相同的多个KeyValue,也可能有多个,此时使用时间戳来区分,这就是同一条 数据记录的多版本多版本。/hbase/table/region-1/ColumnFamily-1/region-1/ColumnFamily-2/region-2/ColumnFamily-1/region-2/ColumnFamily-2/region-3/ColumnFamily-1/region-3/ColumnFamily-2HFile版权所有 2015 华为技术有限公司第20页HBase数据模型 HFile从从H HF Fil ile e文文件
24、中读取数据的流程件中读取数据的流程:Trailer版权所有 2015 华为技术有限公司第21页Root Data IndexMeta IndexFileInfo.Leaf Data IndexLeaf Data IndexLeaf Data IndexData BlockData BlockData Block目录版权所有 2015 华为技术有限公司第22页1.HBase应用应用场场景景2.HBase功能与架构3.HBase关键流程关键流程4.HBase常用常用命命令令和和参数参数写流程 涉及的关键角色R Re egigio on nReReg gionServerionServerZooZo
25、oK Ke ee ep pe er rClClientient版权所有 2015 华为技术有限公司第23页写流程 客户端发起写数据请求Client客户端写数客户端写数据据代代码示码示例例:/初始化配置信息Configuration conf=HBaseConfiguration.create();/插入一行数据HTable table=new HTable(conf,tableName);Put put=new Put(Bytes.toBytes(012005000201);put.add(FAMILIES,Bytes.toBytes(name),Bytes.toBytes(张三);put.a
26、dd(FAMILIES,Bytes.toBytes(gender),Bytes.toBytes(男);put.add(FAMILIES,Bytes.toBytes(address),Bytes.toBytes(广东省深圳市);table.put(put);版权所有 2015 华为技术有限公司第24页构建构建P Pu ut t对象:对象:一个Put对象代表一行数据记录,可以添加多个列的数据。如上例所示,RowKey为“012005000201”,包含3个列:name,gender,address。P Pu ut t o or r P Pu ut tL Lis ist t?HBase提供了两个主要
27、的写数据接口,一个可以写入单行数据,即Put接口,另一个可以批量写入多行数据,即PutList接口。事实上,Put仅是PutList的一种特殊情形。因此,后面的流程介绍仅仅涉及PutList。写流程 定位RegionUser RegionMETARegionRegion Location版权所有 2015 华为技术有限公司第25页写流程 数据分组整个数据分组,涉及到两步整个数据分组,涉及到两步“分篮子分篮子”操操作作:将所有的记录按Region划分。将所有的记录按RegionServer划分。每个RegionServer上的数据会一起发送,这 样,发送的数据中,都是已经按照Region分 好组
28、了。版权所有 2015 华为技术有限公司第26页写流程 往RegionServer发送写数据请求利用HBase自身封装的RPC框架,来完成数据发送操作。往多个RegionServer发送请求是并行 操作。客户端发送完写数据请求后,会自动 等待请求处理结果。如果客户端没有捕获到任何的异常,则认为所有的数据都已经被写入成功。如果全部写入失败,或者部分写入失败,客户端能够获知详细的失败Key值列表。从这里也可以看出,PutList操作是不 保证原子性的。版权所有 2015 华为技术有限公司第27页写流程 Region写数据流程获取Region操作锁依次获取各行行锁写入到MemStore中写数据到WA
29、L中释放已获取的行锁释放Region锁读写锁既然是Write-Ahead-Log,为何 先写内存再写WAL?一个内存排序集合版权所有 2015 华为技术有限公司第28页HBase提供了一个MVCC机制,来保障写数据阶段的 数据可见性。先写MemStore再写WAL,是为了一些 特殊场景下,内存中的数据能够更及时的可见。如 果写WAL失败的话,MemStore中的数据会被回滚。写流程 HBase LSM Tree 将Put/Delete的数据暂时保存在每个Region的内存中,即MemStore中。写内写内存,存,避避免多免多ReReg gi io on n情形下情形下带带来的来的过过多多 的分
30、的分散散I IO O操作。操作。数据在写入到MemStore之后,也会顺序顺序 写写入到HLog中,来保证数据的安全。版权所有 2015 华为技术有限公司第29页写流程 FlushRegionMemStore-1(ColumnFamily-1)MemStore-2(ColumnFamily-2)HFileHFile存在如下两种场景,会触发一个Region的Flush操作:该Region的MemStore的总大小,达到了预设的Flush Size阈值。这种场景下的 Flush操作,通常仅瞬间堵塞用户的读写操作。但如果超出预设Flush Size阈值 过多的话,也可能会引起较长时间的堵塞。Regi
31、onServer的总内存大小超出了预设的阈值大小。这种场景下,在总内存没 有降低到预设的阈值以下之前,可能会较长时间堵塞。版权所有 2015 华为技术有限公司第30页写流程 多HFile的影响随着随着时间时间的的不断不断迁迁移,移,H HF Fil ile e文文件件数目数目越越来越来越多多,读,读取取时延时延也也越来越来越越大大!版权所有 2015 华为技术有限公司第31页写流程 Compaction C Co ompactimpactio on n的的主主要要目目的,是为了减的,是为了减少同一少同一个个R Re eg gi io on n同同一个一个C Co ol lumumn nF Fa
32、mamil ily y 下面的下面的小文件数目,从而提升读取的小文件数目,从而提升读取的性能。性能。C Co ompactimpactio on n分为分为MMi in no or r、MMajajo or r两类:两类:Minor:小范围的Compaction。有最 少和最大文件数目限制。通常会选择 一些连续时间范围的小文件进行合并。Major:涉及该Region该ColumnFamily下面的所有的HFile文件。Major Compaction过程中,会清理被 删除的数据。MMi in noror C Co ompactimpactio on n选选取取文文件件时,遵时,遵 循循一一定定
33、的算法。的算法。HFileHFileHFileHFileHFileHFileMinor CompactionHFileMemStoreputHFileHFileHFileHFileMajor CompactionFlushWrite版权所有 2015 华为技术有限公司第32页写流程 SplitDaughter Region-1Daughter Region-2 普通的Region Split操作,是指集群运行期间,某一 个Region的数据大小超出了预设的阈值,则需要将该 Region自动分裂成为两个子Region。分裂过程中,被分裂的Region会暂停一些读写服务。由于分裂过程中,父Regi
34、on的数据文件并不会真正的 分裂并重写到两个子Region中,而是仅仅通过在新 Region中创建引用文件的方式,来实现快速的分裂。因此,Region暂停服务的时间会比较短暂。客户端侧所缓存的父Region的路由信息需要被更新。思考:思考:普通普通的的Region Split操操作,为作,为何何仅仅仅仅将将一一 个个Region分裂成分裂成两两个个Region?能否分裂成能否分裂成 多个?多个?Parent Region版权所有 2015 华为技术有限公司第33页读流程 Get or ScanRegionScanGetG Ge et t操操作代码示作代码示例例:HTable table=nul
35、l;try table=new HTable(conf,tableName);Get get=new Get(rowKey.getBytes();/设定设定列族列族名名和列名和列名get.addColumn(family,qualifier);/设定设定列族名列族名get.addFamily(family);Result result=table.get(get);for(KeyValue kv:result.raw()System.out.println(kv.getRow()+(kv.getFamily()+(kv.getQualifier()+kv.getTimestamp()+kv.g
36、etValue()+);catch(IOException e)/TODO finally if(null!=table)try table.close();catch(IOException e)/TODOscan.setCaching(1000);G Ge et t操作在提供精确操作在提供精确的的K Ke ey y值值的的情情形下形下,读取读取单单行用行用户户数据数据ScaScan n操作代操作代码码示例:示例:HTable table=null;ResultScanner rScanner=null;try table=new HTable(conf,tableName);Scan sc
37、an=new Scan();scan.setStartRow(startRow);scan.setStopRow(stopRow);/重要重要参数参数:每次每次R RP PC C从从服务服务端端取回取回的的记录数记录数rScanner=table.getScanner(scan);for(Result r=rScanner.next();r!=null;r=rScanner.next()for(KeyValue kv:r.raw()/TODO catch(IOException e)/TODO finally if(null!=rScanner)rScanner.close();if(null
38、!=table)try table.close();catch(IOException e)/TODOS Sc ca an n操作是为了操作是为了批批量量扫描扫描限限定定K Ke ey y值值范范围围内的内的用用户数据户数据版权所有 2015 华为技术有限公司第34页读流程 OpenScannerRegionColumnFamily-1 MemStoreHFile-11 HFile-12 HFile-13ColumnFamily-2 MemStoreHFile-21 HFile-22 HFile-23思考:一个Region可能有多个列族一个列族,可能包含有多个HFile文件,同时,还有部分数据
39、存在于MemStore中,尚未固 化如何读取,才可以读到想要的用户数据?OpenScanner的过程,会为MemStore,以及各个HFile创建所对应的Scanner:版权所有 2015 华为技术有限公司第35页 MemStore对应的Scanner为MemStoreScanner。HFile对应的Scanner为StoreFileScanner。读流程 NextScanner A Current KeyValue:Row01,FamiA:col1Scanner B Current KeyValue:Row01,FamiB:col1Scanner C Current KeyValue:Row
40、01,FamiC:col1Scanner D Current KeyValue:Row01,FamiD:col1Scanner AScanner B Current KeyValue:Row01,FamiB:col1Scanner C Current KeyValue:Row01,FamiC:col1Scanner D Current KeyValue:Row01,FamiD:col1PollFinished?YcloseThis is a PriorityQueue,it uses a Comparator to sort all elements.Scanner A Current Key
41、Value:Row01,FamiA:col2Scanner B Current KeyValue:Row01,FamiB:col1Scanner C Current KeyValue:Row01,FamiC:col1Scanner D Current KeyValue:Row01,FamiD:col1Suppose the scanning for Row01 is not finished in Scanner A.So this scanner will still present at the first place of the QueueScanner A Current KeyVa
42、lue:Row02,FamiA:col1N:Put backScanner AFinished?YcloseN:Put backPollSuppose the scanning for Row01 is finished in Scanner A.So this scanner will be put at the end of the Queue.版权所有 2015 华为技术有限公司第36页 每一个Scanner中,都有一个指 针,指向接下来要读取的用户数据 KeyValue是哪一个。同一级的Scanner,被放在同一 个优先级队列中。通过不断的对比 每一个Scanner的指针所指向的 Ke
43、yValue,将这些Scanner进行排 序。每一次next请求,都是从该优 先级队列中,Poll出一个Scanner,然后,读取该Scanner的当前指针 所指向的KeyValue即可。每一次读完一个Scanner,指针 都会往下移一个KeyValue。而后,该Scanner被返还到队列中。如果 已经读完,则直接关闭。nextnext读流程 FilterS Sc ca an n过程中使过程中使用用FilFilt te er r代码示代码示例:例:Scan s=new Scan();/前缀过滤前缀过滤器器,查查找找R Ro ow wK Ke ey y以以“132”开开头的行头的行s.setFi
44、lter(new PrefixFilter(Bytes.toBytes(132);/查找符合查找符合条条件件的的6行行数数据据s.setFilter(new PageFilter(6);/多个过滤多个过滤器器结结合使用合使用FilterList list=new FilterList(Operator.MUST_PASS_ALL);list.addFilter(new SingleColumnValueFilter(family,qualifier,CompareOp.EQUAL,value);list.addFilter(new PageFilter(6);s.setFilter(list)
45、;Filter允许在Scan过程中,设定一定的过滤条件。符合条件的用户数据才返回。当前包含的一些典型的Filter有:RowFilter版权所有 2015 华为技术有限公司第37页SingleColumnValueFilterKeyOnlyFilterFilterList使用Filter时,可能会扫描大量的用户数据,才可以找到所期望的满足条件的数据。因此,一些场景下的性能是不可预估的。SaSat ti is sf fi ieded RowRow SaSat ti is sf fi ieded RowRow SaSat ti is sf fi ieded RowRow读流程 BloomFilte
46、r BloomFilter被用来优化一些随机读取的场景,即Get场景。它可以被用来快速的判断一条用户数 据在一个大的数据集合(该数据集合的大部分数据 都没法被加载到内存中)中是否存在。右图给出了BloomFilter的基础原理。BloomFilter在判断一个数据是否存在时,拥有 一定的误判率。但对于“用户数据 XXXX不存在”的判断结果是可信的。HBase的BloomFilter的相关数据,被保存在 HFile中。数据写数据写入入阶阶段段,对对用用户户数数据据进进行行N N次次HaHas sh h,并且将映射到的对应的位改,并且将映射到的对应的位改为为1版权所有 2015 华为技术有限公司第
47、38页数据读数据读取阶段,对用户数据进取阶段,对用户数据进行行N N次次H Ha as sh h,判断对应的位是否为,判断对应的位是否为1目录版权所有 2015 华为技术有限公司第39页1.1.HBasHBase e应用场景应用场景2.2.HBasHBase e功功能能与与架构架构3.3.HBaseHBase关键流程关键流程4.4.HBasHBase e常用命常用命令令和和参数参数常用接口版权所有 2015 华为技术有限公司第40页客户客户端使端使用用主要主要方方式式:H HB Ba asese S Sh he ell llH HB Ba as se e的命令行工具,最简单的接口,适合 H H
48、B Ba as se e管理使用。J Javaava A AP PI I H HB Ba as se e客户端程序通过底层R RP PC C接口与H HB Ba as se e集群进行通信,客户程序直接集成HBaHBas se e的J Ja av va a包,通过调用相关A AP PI I即可完成操作。其余其余接口:接口:R RE ES ST T 接口接口R RE ES ST T(R Re ep pr re es se en nt ta at ti io on nal al S St ta atete T Tr ra an nsfsfe er r)表述性状态转移 接口。ThrifThrift
49、t接口接口ThrifThrift t 是一个基于静态代码生成的跨语言的RPRPC C协议栈实现,它可以生成包括C+C+,+,J Ja av va,a,P Py yt th ho on n,RubRuby y,P PH HP P 等主流语言的代码,这些代码实现了 R RP PC C 的协议层和传输层功能,从 而让用户可以集中精力于服务的调用和实现。A Av vr ro o接口接口A Av vr ro o是一个数据序列化系统,设计用于支持大批量数据交换 的应用。HBase Shell 连接通过/hbase shell来连接正在运行的HBase Shell客户端用法用法:版权所有 2015 华为技术
50、有限公司第41页#.bin/hbase shellHBase Shell;enter help for list of supported Type exit to leave the HBase ShellVersion 0.94.0,r,Sun Aug 26 22:12:56 CST 2012commands.hbase(main):001:0HBase Shell 创建表创建表时,可以选择多个参数,但表名和列族名是必须的参数,其它参数还包括版本数、TTL 以及预分Region建表的key数组等用法:用法:hbase create t1,NAME=f1,VERSIONS=5hbase cr