(第6.2篇)大数据发展背后的强力推手——HBase分布式存储系统

本篇接着6.1 继续讲HBase。

专业成都网站建设公司,做排名好的好网站,排在同行前面,为您带来客户和效益!创新互联公司为您提供成都网站建设,五站合一网站设计制作,服务好的网站设计公司,成都做网站、网站建设负责任的成都网站制作公司!

    

4. Hbase容错与恢复

(第6.2篇)大数据发展背后的强力推手——HBase分布式存储系统 

每个HRegionServer中都有一个HLog对象,HLog是一个实现Write Ahead Log的类,在每次用户操作写入MemStore的同时,也会写一份数据到HLog文件中(HLog文件格式见后续),HLog文件定期会滚动出新的,并删除旧的文件(已持久化到StoreFile中的数据)。当HRegionServer意外终止后,HMaster会通过Zookeeper感知到,HMaster首先会处理遗留的 HLog文件,将其中不同Region的Log数据进行拆分,分别放到相应region的目录下,然后再将失效的region重新分配,领取到这些region的HRegionServer在Load Region的过程中,会发现有历史HLog需要处理,因此会Replay HLog中的数据到MemStore中,然后flush到StoreFiles,完成数据恢复

Hbase容错性:

1) Master容错:Zookeeper重新选择一个新的Master

l 无Master过程中,数据读取仍照常进行;

l 无master过程中,region切分、负载均衡等无法进行;

2) RegionServer容错:定时向Zookeeper汇报心跳,如果一旦时间内未出现心跳,Master将该RegionServer上的Region重新分配到其他RegionServer上,失效服务器上“预写”日志由主服务器进行分割并派送给新的RegionServer

3) Zookeeper容错:Zookeeper是一个可靠地服务,一般配置3或5个Zookeeper实例

Region定位流程:

(第6.2篇)大数据发展背后的强力推手——HBase分布式存储系统 

寻找RegionServer过程:ZooKeeper--> -ROOT-(单Region)--> .META.--> 用户表

1) -ROOT-

l 表包含.META.表所在的region列表,该表只会有一个Region;

l Zookeeper中记录了-ROOT-表的location。

2) .META.

l 表包含所有的用户空间region列表,以及RegionServer的服务器地址。

5. Hbase基础操作

1) 进入hbase shell console

$HBASE_HOME/bin/hbase shell

表的管理:

2) 查看有哪些表

list

3) 创建表

# 语法:create <table>, {NAME => <family>, VERSIONS => <VERSIONS>}

 

# 例如:创建表t1,有两个family name:f1,f2,且版本数均为2

> create 't1',{NAME => 'f1', VERSIONS => 2},{NAME => 'f2', VERSIONS => 2}

4) 删除表

# 分两步:首先disable,然后drop

 

# 例如:删除表t1

> disable 't1'

> drop 't1'

5) 查看表的结构

# 语法:describe <table>

 

# 例如:查看表t1的结构

> describe 't1'

6) 修改表结构

# 修改表结构必须先disable

 

# 语法:alter 't1', {NAME => 'f1'}, {NAME => 'f2', METHOD => 'delete'}

 

# 例如:修改表test1的cf的TTL为180天

> disable 'test1'

> alter 'test1',{NAME=>'body',TTL=>'15552000'},{NAME=>'meta', TTL=>'15552000'}

> enable 'test1'

权限管理:

1) 分配权限

# 语法 : grant <user> <permissions> <table> <column family> <column qualifier> 参数后面用逗号分隔

# 权限用五个字母表示: "RWXCA".

# READ('R'), WRITE('W'), EXEC('X'), CREATE('C'), ADMIN('A')

 

# 例如,给用户‘test'分配对表t1有读写的权限,

> grant 'test','RW','t1'

2) 查看权限

# 语法:user_permission <table>

 

# 例如,查看表t1的权限列表

> user_permission 't1'

3) 收回权限

# 与分配权限类似,语法:revoke <user> <table> <column family> <column qualifier>

 

# 例如,收回test用户在表t1上的权限

> revoke 'test','t1'

表数据的增删改查:

1) 添加数据

# 语法:put <table>,<rowkey>,<family:column>,<value>,<timestamp>

 

# 例如:给表t1的添加一行记录:rowkey是rowkey001,family name:f1,column name:col1,value:value01,timestamp:系统默认

> put 't1','rowkey001','f1:col1','value01'

2) 查询数据——查询某行记录

# 语法:get <table>,<rowkey>,[<family:column>,....]

 

# 例如:查询表t1,rowkey001中的f1下的col1的值

> get 't1','rowkey001', 'f1:col1'

# 或者:

> get 't1','rowkey001', {COLUMN=>'f1:col1'}

 

# 查询表t1,rowke002中的f1下的所有列值

hbase(main)> get 't1','rowkey001'

3) 查询数据——扫描表

# 语法:scan <table>, {COLUMNS => [ <family:column>,.... ], LIMIT => num}

# 另外,还可以添加STARTROW、TIMERANGE和FITLER等高级功能

 

# 例如:扫描表t1的前5条数据

> scan 't1',{LIMIT=>5}

4) 查询表中的数据行数

# 语法:count <table>, {INTERVAL => intervalNum, CACHE => cacheNum}

# INTERVAL设置多少行显示一次及对应的rowkey,默认1000;CACHE每次去取的缓存区大小,默认是10,调整该参数可提高查询速度

 

# 例如,查询表t1中的行数,每100条显示一次,缓存区为500

> count 't1', {INTERVAL => 100, CACHE => 500}

5) 删除数据——删除行中的某个列值

# 语法:delete <table>, <rowkey>,  <family:column> , <timestamp>,必须指定列名

 

# 例如:删除表t1,rowkey001中的f1:col1的数据

> delete 't1','rowkey001','f1:col1'

6) 删除数据——删除行

# 语法:deleteall <table>, <rowkey>,  <family:column> , <timestamp>,可以不指定列名,删除整行数据

 

# 例如:删除表t1,rowk001的数据

> deleteall 't1','rowkey001'

7) 删除数据——删除表中的所有数据

# 语法: truncate <table>

# 其具体过程是:disable table -> drop table -> create table

 

# 例如:删除表t1的所有数据

> truncate 't1'

Region管理:

1) 移动Region

# 语法:move 'encodeRegionName', 'ServerName'

# encodeRegionName指的regioName后面的编码,ServerName指的是master-status的Region Servers列表

 

# 示例

>move '4343995a58be8e5bbc739', 'db-41.xxx.xxx.org,60020,139'

2) 开启/关闭region

# 语法:balance_switch true|false

hbase(main)> balance_switch

3) 手动split

# 语法:split 'regionName', 'splitKey'

4) 手动触发major compaction

#语法:

#Compact all regions in a table:

> major_compact 't1'

#Compact an entire region:

> major_compact 'r1'

#Compact a single column family within a region:

> major_compact 'r1', 'c1'

#Compact a single column family within a table:

> major_compact 't1', 'c1'

(第6.2篇)大数据发展背后的强力推手——HBase分布式存储系统


    此时你已经学会了安装hadoop集群,了解了HDFS文件系统,MapReduce计算框架和Zookeeper协作服务(Zookeeper数据模型、访问控制、应用场景),今天学完了HBase,下一篇我们介绍hadoop的数据库工具——Hive。

如何用4个月学会Hadoop开发并找到年薪25万工作?

 

免费分享一套17年最新Hadoop大数据教程和100道Hadoop大数据必会面试题。

因为链接经常被和谐,需要的朋友请加微信 ganshiyun666 来获取最新下载链接,注明“51CTO”

 

教程已帮助300+人成功转型Hadoop开发,90%起薪超过20K,工资比之前翻了一倍。

百度Hadoop核心架构师亲自录制

内容包括0基础入门、Hadoop生态系统、真实商业项目实战3大部分。其中商业案例可以让你接触真实的生产环境,训练自己的开发能力。

(第6.2篇)大数据发展背后的强力推手——HBase分布式存储系统

网页题目:(第6.2篇)大数据发展背后的强力推手——HBase分布式存储系统
文章URL:https://www.cdcxhl.com/article38/ijjhpp.html

成都网站建设公司_创新互联,为您提供网站收录品牌网站建设虚拟主机建站公司定制网站移动网站建设

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都seo排名网站优化