
Hbase入门知识点入门学习一
发布日期:2021-05-06 15:29:37
浏览次数:28
分类:精选文章
本文共 3316 字,大约阅读时间需要 11 分钟。
一:简介
- Hbase角色 Hbase一共存在两个角色,一个HMaster(主节点) ,一个RegionServer (从节点)
- HMaster功能 ⑴监控 RegionServer ⑵处理 RegionServer 故障转移 ⑶处理元数据的变更 ⑷处理 region 的分配或移除 ⑸在空闲时间进行数据的负载均衡 ⑹通过 Zookeeper 发布自己的位置给客户端
- RegionServer 功能 ⑴负责存储 HBase 的实际数据 ⑵处理分配给它的 Region(可以理解为table,用来存储数据) ⑶刷新缓存到 HDFS ⑷维护 HLog ⑸执行压缩 ⑹负责处理 Region 分片
二:Hbase架构
- 架构图如下:
⑴客户端client: Client 访问用户数据前需要首先访问 ZooKeeper,因为ZooKeeper中存放着数据的元数据地址信息, ZooKeeper负责维护元数据信息。 ⑵HRegionServer: client通过ZooKeeper找到了元数据信息,那么就找到了这个数据的地址,这个数据又是存放在 HRegionServer中的,那么现在需要通过HRegionServer去访问数据本身了。 HRegionServer中又分为如下几个模块: a:HLog 存在本地磁盘中用来做灾难恢复使用,HLog记录数据的所有变更,一旦region server 宕机,就可以从log中进行恢复。 b:HRegion(一个HRegionServer可以维护和管理多个HRegion) table在行的方向上分隔为多个Region。Region是HBase中分布式存储和负载均衡的最小单元, 即不同的region可以分别在不同的Region Server上,但同一个Region是不会拆分到多个server上。 Region按大小分隔,每个表一般是只有一个region。随着数据不断插入表,region不断增大, 当region的某个列族达到一个阈值时就会分成两个新的region。 c:Store(一个HRegion中包含多个store) 每一个region由一个或多个store组成,至少是一个store,hbase会把一起访问的数据放在一个store里面, 即为每个 ColumnFamily建一个store,如果有几个ColumnFamily,也就有几个Store。一个Store由一个 memStore和0或者 多个StoreFile组成。 HBase以store的大小来判断是否需要切分region。 HFile 存储在 Store 中,一个 Store 对应 HBase 表中的一个列族。 d:MemStore(一个Store对应一个MemStore) memStore 是放在内存里的。保存修改的数据即keyValues。当memStore的大小达到一个 阀值(默认128MB)时,memStore会被flush到文 件,即生成一个快照。目前hbase 会有一个 线程来负责memStore的flush操作。 e:StoreFile memStore内存中的数据写到文件后就是StoreFile,StoreFile底层是以HFile的格式保存。 当storefile文件的数量增长到一定阈值后,系统会进行合并(minor、major compaction), 在合并过程中会进行版本合并和删除工作(majar),形成更大的storefile。 f:HFile HBase中KeyValue数据的存储格式,HFile是Hadoop的 二进制格式文件,实际上StoreFile就是 对Hfile做了轻量级包装,即StoreFile底层就是HFile。这是在磁盘上保存原始数据的实际的物理文件, 是实际的存储文件。
三:HBase 部署与使用
- 解压 HBase 到指定目录
- 修改hbase-env.sh 配置文件,在/opt/module/hbase-1.3.1/conf/目录下
注意:如果使用的是 JDK8 以 上 版 本 , 则 应 在 hbase-evn.sh 中 移除“HBASE_MASTER_OPTS”和“HBASE_REGIONSERVER_OPTS”配置。
- 修改hbase-site.xml 配置文件,在/opt/module/hbase-1.3.1/conf/目录下
hbase.rootdir hdfs://hadoop102:9000/hbase hbase.cluster.distributed true hbase.master.port 16000 hbase.zookeeper.quorum hadoop102:2181,hadoop103:2181,hadoop104:2181 hbase.zookeeper.property.dataDir /opt/module/zookeeper-3.4.10/zkData - 修改regionservers配置文件,在/opt/module/hbase-1.3.1/conf/目录下
- HBase 需要依赖的 Jar 包 a:简介 由于 HBase 需要依赖 Hadoop,所以替换 HBase 的 lib 目录下的 jar 包,以解决兼容问题。 b:删除原有的 jar,zookeeper默认jar也删掉
- 拷贝新 jar,涉及的 jar 有:
- HBase 软连接 Hadoop 配置 (软链接文件有类似于Windows的快捷方式)
- HBase 远程 scp 到其他集群节点
- 启动zookeeper和hadoop
- HBase 服务的启动
- 效果,通过Hbase提供的页面查看
四:Hbase基本操作
- 进入 HBase 客户端命令行 命令:bin/hbase shell
- 查看当前数据库中有哪些表
- 创建表 ,表名:student,列簇:info
- 向表中插入数据(Hbase擅长存储非结构化数据) 语法:put '表名','rowkey(不用在创建表时候指定)','列簇:列名(这个列名不用在创建表时候指定)','数据'
- 扫描查看表数据 语法:scan '表名'
- 将之前的name覆盖掉
- 可以指定不同的rowkey
- 查看表结构
- 查看“指定行”或“指定列族:列”的数据 (会扫描整张表,性能很低)
- 删除数据 a:删除某 rowkey 的全部数据:
b:删除某 rowkey 的某一列数据:
- 清空表数据
- 删除表 a:首先需要先让该表为 disable 状态
b:然后才能 drop 这个表:
- 统计表数据行数 (这里统计的是rowkey的数量,因为Hbase是按列存储的)