05 Hbase技术整理及应用Word格式.docx

上传人:b****1 文档编号:4161891 上传时间:2023-05-02 格式:DOCX 页数:14 大小:207.15KB
下载 相关 举报
05 Hbase技术整理及应用Word格式.docx_第1页
第1页 / 共14页
05 Hbase技术整理及应用Word格式.docx_第2页
第2页 / 共14页
05 Hbase技术整理及应用Word格式.docx_第3页
第3页 / 共14页
05 Hbase技术整理及应用Word格式.docx_第4页
第4页 / 共14页
05 Hbase技术整理及应用Word格式.docx_第5页
第5页 / 共14页
05 Hbase技术整理及应用Word格式.docx_第6页
第6页 / 共14页
05 Hbase技术整理及应用Word格式.docx_第7页
第7页 / 共14页
05 Hbase技术整理及应用Word格式.docx_第8页
第8页 / 共14页
05 Hbase技术整理及应用Word格式.docx_第9页
第9页 / 共14页
05 Hbase技术整理及应用Word格式.docx_第10页
第10页 / 共14页
05 Hbase技术整理及应用Word格式.docx_第11页
第11页 / 共14页
05 Hbase技术整理及应用Word格式.docx_第12页
第12页 / 共14页
05 Hbase技术整理及应用Word格式.docx_第13页
第13页 / 共14页
05 Hbase技术整理及应用Word格式.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

05 Hbase技术整理及应用Word格式.docx

《05 Hbase技术整理及应用Word格式.docx》由会员分享,可在线阅读,更多相关《05 Hbase技术整理及应用Word格式.docx(14页珍藏版)》请在冰点文库上搜索。

05 Hbase技术整理及应用Word格式.docx

t1

r2

t5

content=每天…

t4

Ø

 

RowKey:

行键,Table的主键,Table中的记录按照RowKey排序

Timestamp:

时间戳,每次数据操作对应的时间戳,可以看作是数据的versionnumber

ColumnFamily:

列簇,Table在水平方向有一个或者多个ColumnFamily组成,一个ColumnFamily中可以由任意多个Column组成,即ColumnFamily支持动态扩展,无需预先定义Column的数量以及类型,所有Column均以二进制格式存储,用户需要自行进行类型转换。

Region

当Table随着记录数不断增加而变大后,会逐渐分裂成多份splits,成为regions,一个region由[startkey,endkey)表示,不同的region会被Master分配给相应的RegionServer进行管理:

-ROOT-&

&

.META.Table

HBase中有两张特殊的Table,-ROOT-和.META.

.META.:

记录了用户表的Region信息,.META.可以有多个regoin

-ROOT-:

记录了.META.表的Region信息,-ROOT-只有一个region

Zookeeper中记录了-ROOT-表的location

Client访问用户数据之前需要首先访问zookeeper,然后访问-ROOT-表,接着访问.META.表,最后才能找到用户数据的位置去访问,中间需要多次网络操作,不过client端会做cache缓存。

四、MapReduceonHBase

在HBase系统上运行批处理运算,最方便和实用的模型依然是MapReduce,如下图:

HBaseTable和Region的关系,比较类似HDFSFile和Block的关系,HBase提供了配套的TableInputFormat和TableOutputFormatAPI,可以方便的将HBaseTable作为HadoopMapReduce的Source和Sink,对于MapReduceJob应用开发人员来说,基本不需要关注HBase系统自身的细节。

五、HBase系统架构

Client

HBaseClient使用HBase的RPC机制与HMaster和HRegionServer进行通信,对于管理类操作,Client与HMaster进行RPC;

对于数据读写类操作,Client与HRegionServer进行RPC

Zookeeper

ZookeeperQuorum中除了存储了-ROOT-表的地址和HMaster的地址,HRegionServer也会把自己以Ephemeral方式注册到Zookeeper中,使得HMaster可以随时感知到各个HRegionServer的健康状态。

此外,Zookeeper也避免了HMaster的单点问题,见下文描述

HMaster

HMaster没有单点问题,HBase中可以启动多个HMaster,通过Zookeeper的MasterElection机制保证总有一个Master运行,HMaster在功能上主要负责Table和Region的管理工作:

1. 

管理用户对Table的增、删、改、查操作

2. 

管理HRegionServer的负载均衡,调整Region分布

3. 

在RegionSplit后,负责新Region的分配

4. 

在HRegionServer停机后,负责失效HRegionServer上的Regions迁移

HRegionServer

HRegionServer主要负责响应用户I/O请求,向HDFS文件系统中读写数据,是HBase中最核心的模块。

HRegionServer内部管理了一系列HRegion对象,每个HRegion对应了Table中的一个Region,HRegion中由多个HStore组成。

每个HStore对应了Table中的一个ColumnFamily的存储,可以看出每个ColumnFamily其实就是一个集中的存储单元,因此最好将具备共同IO特性的column放在一个ColumnFamily中,这样最高效。

HStore存储是HBase存储的核心了,其中由两部分组成,一部分是MemStore,一部分是StoreFiles。

MemStore是SortedMemoryBuffer,用户写入的数据首先会放入MemStore,当MemStore满了以后会Flush成一个StoreFile(底层实现是HFile),当StoreFile文件数量增长到一定阈值,会触发Compact合并操作,将多个StoreFiles合并成一个StoreFile,合并过程中会进行版本合并和数据删除,因此可以看出HBase其实只有增加数据,所有的更新和删除操作都是在后续的compact过程中进行的,这使得用户的写操作只要进入内存中就可以立即返回,保证了HBaseI/O的高性能。

当StoreFilesCompact后,会逐步形成越来越大的StoreFile,当单个StoreFile大小超过一定阈值后,会触发Split操作,同时把当前RegionSplit成2个Region,父Region会下线,新Split出的2个孩子Region会被HMaster分配到相应的HRegionServer上,使得原先1个Region的压力得以分流到2个Region上。

下图描述了Compaction和Split的过程:

在理解了上述HStore的基本原理后,还必须了解一下HLog的功能,因为上述的HStore在系统正常工作的前提下是没有问题的,但是在分布式系统环境中,无法避免系统出错或者宕机,因此一旦HRegionServer意外退出,MemStore中的内存数据将会丢失,这就需要引入HLog了。

每个HRegionServer中都有一个HLog对象,HLog是一个实现WriteAheadLog的类,在每次用户操作写入MemStore的同时,也会写一份数据到HLog文件中(HLog文件格式见后续),HLog文件定期会滚动出新的,并删除旧的文件(已持久化到StoreFile中的数据)。

当HRegionServer意外终止后,HMaster会通过Zookeeper感知到,HMaster首先会处理遗留的HLog文件,将其中不同Region的Log数据进行拆分,分别放到相应region的目录下,然后再将失效的region重新分配,领取到这些region的HRegionServer在LoadRegion的过程中,会发现有历史HLog需要处理,因此会ReplayHLog中的数据到MemStore中,然后flush到StoreFiles,完成数据恢复。

HBase存储格式

HBase中的所有数据文件都存储在HadoopHDFS文件系统上,主要包括上述提出的两种文件类型:

1.HFile,HBase中KeyValue数据的存储格式,HFile是Hadoop的二进制格式文件,实际上StoreFile就是对HFile做了轻量级包装,即StoreFile底层就是HFile

2.HLogFile,HBase中WAL(WriteAheadLog)的存储格式,物理上是Hadoop的SequenceFile

HFile

下图是HFile的存储格式:

首先HFile文件是不定长的,长度固定的只有其中的两块:

Trailer和FileInfo。

正如图中所示的,Trailer中有指针指向其他数据块的起始点。

FileInfo中记录了文件的一些Meta信息,例如:

AVG_KEY_LEN,AVG_VALUE_LEN,LAST_KEY,COMPARATOR,MAX_SEQ_ID_KEY等。

DataIndex和MetaIndex块记录了每个Data块和Meta块的起始点。

DataBlock是HBaseI/O的基本单元,为了提高效率,HRegionServer中有基于LRU的BlockCache机制。

每个Data块的大小可以在创建一个Table的时候通过参数指定,大号的Block有利于顺序Scan,小号Block利于随机查询。

每个Data块除了开头的Magic以外就是一个个KeyValue对拼接而成,Magic内容就是一些随机数字,目的是防止数据损坏。

后面会详细介绍每个KeyValue对的内部构造。

HFile里面的每个KeyValue对就是一个简单的byte数组。

但是这个byte数组里面包含了很多项,并且有固定的结构。

我们来看看里面的具体结构:

开始是两个固定长度的数值,分别表示Key的长度和Value的长度。

紧接着是Key,开始是固定长度的数值,表示RowKey的长度,紧接着是RowKey,然后是固定长度的数值,表示Family的长度,然后是Family,接着是Qualifier,然后是两个固定长度的数值,表示TimeStamp和KeyType(Put/Delete)。

Value部分没有这么复杂的结构,就是纯粹的二进制数据了。

HLogFile

上图中示意了HLog文件的结构,其实HLog文件就是一个普通的HadoopSequenceFile,SequenceFile的Key是HLogKey对象,HLogKey中记录了写入数据的归属信息,除了table和region名字外,同时还包括 

sequencenumber和timestamp,timestamp是“写入时间”,sequencenumber的起始值为0,或者是最近一次存入文件系统中sequencenumber。

HLogSequeceFile的Value是HBase的KeyValue对象,即对应HFile中的KeyValue,可参见上文描述。

六、HBase接口shell常用命令

Hbase的shell操作命令:

名称

命令表达式

创建表

create'

表名称'

'

列名称1'

'

列名称2'

列名称N'

添加记录

put'

行名称'

列名称:

'

值'

查看记录

get'

查看表中的记录总数

count'

删除记录

delete'

表名'

'

'

列名称'

删除一张表

先要屏蔽该表,才能对该表进行删除,第一步disable'

第二步drop'

查看所有记录

scan"

表名称"

查看某个表某个列中所有数据

['

]

更新记录

就是重写一遍进行覆盖

Shell接口:

启动hbase:

$./bin/start-hbase.sh

startingMaster,loggingtologs/hbase-user-master-example.org.out

用shell连接你的Hbase

$./bin/hbaseshell

HBaseShell;

enter'

help<

RETURN>

forlistofsupportedcommands.

Type"

exit<

"

toleavetheHBaseShell

Version:

0.90.0,r1001068,FriSep2413:

55:

42PDT2010

hbase(main):

001:

0>

显示所有表:

list

015:

list

TABLE

student

1row(s)in0.0200seconds

=>

["

student"

016:

输入help然后<

可以看到一列shell命令。

1创建表操作:

创建表:

create'

student'

name'

address'

说明:

新建student表,该表有两列名称和地址,名称只有一个,address可以有多个。

2、插入操作:

插入一条记录,只能插入某列:

row1'

tom'

向student有中插入记录,记录的row值为row1,列name的值为tom

插入列簇

地址簇插入家庭地址:

address:

home'

ShiDaiStreet'

地址簇插入学校地址:

school'

BinAnStreet'

查询学生的家庭地址:

{COLUMN=>

}

3、更新操作:

根据row值查询一条记录:

根据row值更新name值(系统会直接更新):

put'

tom2'

再查询时,系统返回最新的值:

get'

根据timestamp查询更新之前的name值:

lsi

TIMESTAMP=>

1301473112875}

4、删除操作d

删除Id为temp的值的“info:

age”:

temp'

info:

age'

ls

删除整行:

deleteall'

将整张表清空:

truncate'

设置表不可用:

disable'

删除表:

drop'

5、查询操作

查询数据库中所有的表:

查询student表中所有数据:

scan'

查看student表中address列族的所有数据:

{COLUMNS=>

Get一行:

查询表是否存在:

exists'

查询表结构:

describe'

查询服务器状态:

status

如:

3servers,0dead,1.0000averageload

查询hbase版本:

version

0.90.4,r1150278,SunJul2415:

53:

29PDT2011

6、其他操作:

判断表是否enable或disable:

is_enabled'

或is_disabled'

关闭shell:

exit

七、Hbase基于Mapreduce的编程

将mapreduce的输出结果保存到大型分布式数据库中HBase中,一个例子,求各url的访问pv数据,由于用到rcfile格式需要导入hive-exce包,还需要加载hbase包,如果这两个包都已经被集群管理员放到各节点的hadoop/lib下那就可以省去这一步

八、GN话单入Hbase库

通过MapReduce程序进行入库,在Map函数内调用HBaseApi进行put,在入库前先检查表是否创建,没有就先建表。

程序调起:

hadoopjar/home/boco/lq/lq.jarcom.boco.lq.load.gn.GN2HBaseDriver11120140312/user/boco/lq

导入报文:

D:

\01技术资料\00Hadoop技术掌握过程及度量\支付类热点业务分析\支付类热点业务分析\CDR-20140312010104.139_1.txt

存储(Hbase)结果

013:

0*scan'

GN_20140312'

ROWCOLUMN+CELL

360781897201403120163665column=f:

c,timestamp=1394557234000,value=CMNET\x09460001064759021\x093519390571475046\x09Nokia\x09Nokia900Nokia900\x09WH-EBSC-

810-D1\x090.0.0.0\x090.0.0.0\x09221.177.166.16\x09221.177.162.22\x09SGSN06\x09GGSN09\x0910.67.34.71\x0965.55.42.196\x092\x091\x0986

\x0918\x091802\x095\x0912\x091210\x0912\x091210\x094\x09112\x090\x090\x090\x090\x0928971\x0964901\x09701\x092014-03-1201:

00:

34\x09

2014-03-1201:

01:

02\x0928720.7188\x097742.0000\x095397.0000\x09\x09Service:

1802

d,timestamp=1394557234000,value=09679F3BF2AFEBCEEAF9758DD91E13E4

889382221201403120019862column=f:

c,timestamp=1394557164000,value=\xEF\xBB\xBFCMWAP\x09460001804766329\x098602550101877401\x09Xima\x09GilDC9\x09XN-EBSC-8

10BSC-12\x09221.177.160.219\x09221.177.162.225\x09221.177.160.219\x09221.177.162.245\x09SGSN23\x09GGSN07\x0910.200.219.101\x0910.0.

0.172\x092\x091\x0986\x0912\x091203\x091\x0912\x091212\x0912\x091212\x094\x091\x090\x09460\x090\x09255\x0929143\x094502\x09602\x092

014-03-1200:

59:

24\x092014-03-1200:

48\x0924202.6758\x092257.0000\x0960.0000\x09\x09

_480_A6-hsdroid_3-0-3-44_p-a1-3-61&

uid=bd_747781010552068&

from=1671a&

rid=5286339655&

pm=8TKn9D2C42HTtfwanfSar9r3DmD6sqAEQJSzj-14I6UE

fWObqcr9FlRjOW1PqG00ATyWxH9OKiG1tPgQaZLUmoLLpiAEC

d,timestamp=1394557164000,value=CF5996B3CEF7E5DFC405858418CC5795

2row(s)in0.0560seconds

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2