Hbase 个人总结(较杂)

Hbase

 

!!Hbase各节点的时间应该统一

 

1.最终一致性

2.避免冗余

3.维护一致性,处理事务

 

1)一致性

2)可用性

3)分布式处理

 

 

跳表+布隆过滤器

 

 

四维结构rowkey,column family ,column,ts  ====value

 

 

WAL 预写日志  

1.所有的数据,都在磁盘和内存中存储了完整的

2.所有的数据写入都是先写日志,然后在更新到内存

 

 

 

1.介于sql和Nosql之间

2.不支持join

3.只支持行内事务

4.底层全是存放的字节数组对象

 

 

表特点:

1.大

2.面向列

3.稀疏(null不占空间)

4.无严格模式

1)无模式:插入的kv可以放在任何的列簇中

2)有模式,插入的kv必须在现有的列簇中

 

表结构

1.rowkey 一根据rowkey,也可以用过滤器扫描全表

 

1)查数据直接根据rowkey

2)根据rowkey范围

3)全表扫描

2.key的长度不能超过64K,最好是10-100byte之间,最好是16;最好是8的倍数

 

3.列簇:

一组key组成一个列簇,具有相同IO特性

查询其中一个key的时候一般来说,都会查询另外一个key

所以说key1和key2具有相同的IO特性

 

在部分场景中,不同IO,使用同一个列簇比较好

 

 

4.真正的key-value中的key就是列

插入的kv到底应该存储在哪个列簇中,在列入的时候一定要指定

 

 

5.时间戳

作用:相当于一个kv中的value中的多个版本的版本号

 

两种管理范式:

1)保存最近的最新的N个版本

2)保存一定时间范围内的所有数据秒如果某个版本数据超过时间限制,那么会被Habse服务器自动删除

 

 

Hbase架构:

三种角色:client  server(mater,hregionserver)

hmaster并没有参与到真正的数据的查询(主要用来管理hregionserver的状态,和所有的region信息)

 

hbase的主从架构,决定了hbase还是有单点故障问题,但是问题不迫切

表示:hbase的主节点,可以在宕机了以后,整个hbase集群依然可以对外提供服务

   但是hmater的负载均衡没有了。

   当前hbase中的每个region都会增长,增长到10G就会分裂

分裂的标准:在h1以前是256M,在h1以后是10G

 

分裂出来的两个region一般来说。hregion会汇报给hmater,hmater一般来说,都会寻找以恶新的hregionserver来

进行存储这分裂出来的两个region当中的一个

 

zookeepr(解决SPOF(单点故障),存储寻址入口)

 

原始数据表raw:所有Hbase表都会有多个region

.meta.:所有的这些region的映射信息都存储在第二级表中。如果这些映射信息过多,就会造成第二级表分裂

-root-:第二级表的多个region也会被映射起来,存储在第一级表中。

 

 

最终的核心要点,-root-这张定级表中的数据量不管多大,都不会进行分裂

 

其实根据调表这种数据结构的特点,如果能寻找到-root-这个表中的那个唯一region在哪里,

就能得知用户要寻找的数据是那些最底层的region

 

-root-这张i奥的所有输就是一个region,这个region也是存储在hrgionserver中,但是经常会有迁移操作

 

zookeeper给hbase存储寻址入口:

其实就是存储了-root-表的唯一region在哪个regionserver的位置

 

hbase的寻址机制

 

 

region就是一张hbase表的逻辑抽象单位

一个region并不是一个单独的文件在HDFS的目录树中体现为一个文件夹

所有表的所有region是进行了负载均衡后进行分配存储的

 

hadoop一定是高可用的么?  不一定非得是高可用。

 

配置文件的修改:

1.hbase-env.sh 跟运行环境相关   JDK  Zookeeper

 

export JAVA_HOME=

export HBASE_MANAGES_K=true

如果这个值为true表示使用自带的zookeeper,而不是我们用户指定的zookeeper

2.hbase-site.xml 集群的核心配置文件

3.regionserver 从节点的列表

4.backup-masters standby hmater节点

默认没有这个文件,请自己创建    在文件中放入备份主节点的列表(一行一个主机名)

5.文件分发以及配置文件的cp

6.配置环境变量

 

7.启动

启动一直一定要注意,保证HADOOP和Zookeeper启动正常

hbase的安装没有初始化操作

直接启动就好了

 

 

启动zookeeper

启动hadoop

查看命令:hdfs dfsadmin -safemode  安全模式是否退出

   hdfs haadmin getServiceState 看有没有节点

启动hbase   start-hbase.sh

 

8.验证

1.使用jps查看进程是否正常

2.端口号16010

 

 

 

 

Hbase的shell操作:

1.进入客户端:hbase shell

2.关于库

 

  关于表(创建,查看表列表。查看表的详细信息,删除表,清空表,修改表的定义)

 

  关于数据的操作(增put,删delete,查get + scan,改==变相的增加)

 

      

一个Hserver会有一个Hlog

 

 

 

 

要删除表,先停用  disable 表名  再 drop 表名

清空表,truncat 表名

 

 

hbase的表一经创建以后,那么列簇的名字就不能更改了

如果说列簇的名字指定有误,可以通过先删除列簇然后再添加回来,但是必须要承受损失这个列簇数据的代价

 

alter 't1',NAME =>'f1',VERSIONS=>4

增加列簇f1,版本为5

 

删除列簇

alter 't1',NAME=>'CF1',METHOD=>'DELETE'

 

 

get : rowkey  根据rowkey来查

scan: 不用指定rowkey,可以指定rowkey范围

 

删除value

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

HDFS的和性能API:2个

HBASE当中的核心API:13个

 

HBaseConfiguration 配置信息

Connection

HBaseAdmin/Admin 管理员

 

Htable 整个表的抽象信息

HColumnDescriptor 列的描述信息

HTableDescriptor 列簇的描述信息

HTableDescriptor包含了关于一个HBase表的详细信息,比如所有列族的描述符,表是一个目录表,HBase:meta,如果表是只读的,内存存储的 最大大小,什么时候应该进行区域分割,与之关联的协处理器等等…

 

Put

Delete

Get

Scan

 

KeyValue

Cell

 

Result

ResultScanner

 

 

第一步:获取连接

 

// 创建一个可以用来管理hbase配置信息的config对象

Configurtion config = HbaseConfigguratio.create();

//设置当前的程序去寻找的 hbase在哪里,通过zookeeper

config.set("hbase.zookeeper.quorum","hadoop02:2181,hadoop03:2181")

Connection con = ConnectionFactory.createConnection(config);

// 根据连接获取到一个管理员对象

Admin admin=con.getAdmin();

 

 

 

第二步:通过连接进行数据库的响应操作

 

boolean tableExists=admin.tableExits(TableName.valueof("XXX"));

去查Hbase的JAVA   API

 

第三步:关闭连接

admin.close();

 

 

 

1.hbase的各种概念描述

表:行键  列簇  列  时间戳

集群架构: hdfs zookeeper region master regionserver

 

2.hbase的集群搭建

一定要把core-site.xml   hdfs-site.xml 放置在conf目录中

hbase的集群对数据同步的要求很高。 只要是数据库,都对时间的同步的要求很高

当hbase集群中的任何两个节点的时间差距超过30秒的时候

对应的节点都启动不正常

3.hbase的shell操作

表:list create alter delete enable disable desc

数据: put delete

put的命令的使用:

put 表 行键 列定义 值

put 't1','rk01','cf1:age','18'

 

get 表 行键

get 表 行键 列簇

get 表 行键 列簇:列

get 表 行键 列簇:列 时间戳

 

scan 表

scan 表 起始行键 结束行键

scan 表 列簇

scan 表 列簇:列

 

总结命令使用的精髓:
hbase shell

exit/quit

help

help command

help command_group

 

 

Filter

过滤器的种类较多,但可以分为两大类--比较过滤器,专用过滤器。

 

表规则:

== eq

!= ne

>  gt

>= ge

<  lt

<= le

NO_OP 排除所有

 

 

 

 

 

 

 

查看所有的过滤器:show_filters

 

 

批量导入

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值