设为首页 加入收藏

TOP

HBase Learn Part01
2019-04-21 13:30:48 】 浏览:58
Tags:HBase Learn Part01

Chap 1 认识 HBase

本章重点 :

  1. 了解 HBase 概念、发展历史

  2. 了解 HBase 基本特性

  3. 了解 HBase 在 Hadoop Ecosystem

1-1 HBase 简介

  1. HBase 是 Hadoop Database 高性能、面向列、可伸缩的分布式存储系统

  2. HBase 是 一种 NoSql (Not only SQL) 存储系统, 专门用来快速随机读写大规模数据

  3. HBase 弥补了 Hadoop 只能离线批处理的不足,同时能够存储小文件

  4. HBase 提供海量数据的随机检索, 并保证一定的性能

1-2 HBase 历史

  • 2008.01 HBase 列为 Hadoop 的顶级项目

  • 2008.10 HBase 0.89.20100621

  • ......

  • HBase 0.98

  • HBase 1.0.0 里程碑

1-3 HBase 特性

HBase 作为典型的 NoSQL 数据库, 可以通过 行键 (Rowkey) 检索数据, 仅支持单行事务, 主要用于存储 非结构化 和 半结构化 的松散数据。

  • 容量巨大

  • 面向列

  • 稀疏列

  • 扩展性

  • 高可靠性

  • 高性能

面向列

列式数据库优点:

  1. 数据按列存储, 即 每一列单独存放

  2. 数据即索引

  3. 只访问查询涉及的列, 可以大量降低系统 IO

  4. 每一列由线索来处理, 即查询的并发处理性能高

  5. 数据类型一致, 数据特性相似, 可以高效压缩

列式数据库缺点:

  1. 不适合扫描小量数据

  2. 不适合随机的更新

  3. 批量更新情况各异,有的优化的比较好的列式数据库(比如Vertica)表现比较好,有些没有针对更新的数据库表现比较差。

  4. 不适合做含有删除和更新的实时操作。

稀疏列

  1. 行式存储, 大量未 NULL 的列,占用存储空间

  2. HBase 列式存储, 为 空 的列并不占用存储空间, 因此表可以设计的非常稀疏

扩展性

  1. HBase 底层依赖 HDFS, 基因上扩展性就好.

  2. HBase 的 Region 和 RegionServer 的概念对应到数据分区, 分区后数据可以位于不同的机器, 所以 HBase 的核心架构也具备扩展性.

  3. HBase 的扩展性是热扩展, 可以随时添加或者减少节点

高可靠性

  1. HBase 提供 WAL 和 Replication 机制.

  2. 协调服务 ZooKeeper 组件经过工业验证的。

高性能

  1. 底层的 LSM 数据结构和 Rowkey 有序排列等架构, 具备高性能

  2. Region 切分、主键索引 和 缓存机制使得 HBase 具有随机读高性能

1-4 HBase 核心模块

Hadoop 框架两大核心组件

  1. HDFS

  2. MapReduce

HBase 四大核心模块

  1. 客户端 Client

  2. 协调服务模块 ZooKeeper

  3. 主节点 HMaster

  4. Region节点 RegionServer

图片描述

HBase架构图

1). Client

整个 HBase 系统的入口, 使用 RPC 机制与 HMaster 和 RegionServer 通信

  1. 管理类操作 : Client 与 HMaster 进行 RPC 通信

  2. 数据读写操作 : Client 与 RegionServer 进行 RPC 交互

2). ZooKeeper

ZooKeeper Quorum(队列) 负责管理 HBase 中 多 HMaster 的选举, 保证HBase集群中只有一个正常运行提供服务的 HMaster 节点。

还有 存储HBase元数据信息、实时监控RegionServer、Region寻址入口等

3). 主节点 HMaster

HMaster 主要负责 Table 和 Region 的管理工作

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

  2. 管理 RegionServer 的负载均衡, 调整 Region 分布。

  3. 在 Region 分裂后, 负责新 Region 的分配。

  4. 在 RegionServer 死机后, 负责失效 RegionServer 上的 Region 迁移

4). HRegionServer

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

图片描述

HRegionServer 的组成结构

图片描述

1-5 HBase Hadoop_Eco

图片描述

HBase社区信

  1. 应该怎样设计模式来存储复杂的数据以保证读写性能的均衡

  2. 应该怎样规划数据的访问方式来保证最大限度地发挥 HBase 集群的威力

1-6 Hive & HBase

Hive

  1. Hive 是一种类 SQL 的引擎,并且运行 MapReduce 任务.

  2. Hive 可以用来进行统计查询

HBase

  1. HBase 可以用来进行实时查询

  2. HBase 是一种在 Hadoop之上的 NoSQL 的 Key/vale 数据库。

数据也可以从Hive写到HBase,设置再从HBase写回Hive

Chap 2 HBase架构组件

本章重点 :

  1. 了解 HBase 架构组件

2-1 HBase 核心组件

  1. HBase 利用 MapReduce 来处理 HBase 中的海量数据

  2. HBase 利用 HDFS 作为文件存储系统

  3. HBase 利用 ZooKeeper 作为协同服务 (为HBase提供 服务和失败恢复机制)

HBase 功能

  1. HBase 主要用来存储非结构化和半结构化的 松散数据

  2. HBase 仅能通过 row keyrow key 值 range 来检索数据,仅支持单行事务(可通过 Hive 支持来实现多表连接等复杂操作)

  3. HBase 依靠横向扩展, 需要通过增加廉价服务器来 增加计算和存储能力

  4. HBase 的目的 是处理非常庞大的 table

2-2 HBase 部件的支持

Hadoop部件 function
HDFS 高可靠的底层存储支持
MapReduce 高性能的计算能力
Zookeeper 稳定服务和failover机制
Pig&Hive 高层语言支持,便于数据统计
Sqoop 提供RDBMS数据导入,便于传统数据库向HBase迁移

2-3 HBase 的访问接口

方式 特点 场合
Native Java API 最常规和高效 Hadoop MapReduce Job并行处理HBase表数据
HBase Shell 最简单接口 HBase管理使用
Thrift Gateway 利用Thrift序列化支持多种语言 异构系统在线访问HBase表数据
Rest Gateway 解除语言限制 Rest风格Http API访问
Pig Pig Latin六十编程语言处理数据 数据统计
Hive 简单,SqlLike 场合

2-4 HBase Table 数据模型

图片描述

HBase Table 的特点

  1. 大 (一个table可以上亿行)

  2. 面向列 (族) 的存储和权限控制,列(族)独立检索;

  3. 稀疏 (对于未null的列,并不占用空间)

  4. 数据类型单一 : HBase中的数据都是字符串,没有类型。

HBase Table 介绍

  1. Row Key: 行键,Table的主键,Table中的记录按照Row Key排序

  2. Timestamp: 时间戳,每次数据操作对应的时间戳,可以看作是数据的version number

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

Chap 3 HBase安装与配置

本章重点 :

  1. 了解 HBase集群 的安装、部署、启动 和 停止

  2. 命令行方式对 HBase 进行 插入、查询、删除 数据等

注意

  1. 配置 HBase与Hadoop类似, 都是通过安装包的 conf 目录下的配置生效

  2. 修改一台机器的配置文件后, 记得要同步到集群中的所有节点

  3. 资源限制命令 : ulimit、 nproc (用户打开的文件数、进程数等)

  4. Hadoop 版本2.x, dfs.datanode.max.xcievers 同时处理文件个数参数设置

3-1 HBase 安装条件

 JDK、SSH、DNS、LoopbackIP、NTP、ulimit、zookeeper

3-2 HBase 运行模式

  1. 单机模式

  2. 分布式模式 (HDFS运行良好需要)

Edit conf/hbase-env.sh config

  1. 文件告知 HBase Java 安装路径。
  2. HBase 运行环境, Heap Size 有关 JVM 选项
  3. 日志文件保存目录、进程优先级等

3-2-1 单机模式

这是 HBase 默认的运行模式, 在单机模式中, HBase 使用本地文件系统, 而不是 HDFS, 所有的服务 和 ZooKeeper 都运行在一个 JVM 中。ZooKeeper 监听一个端口, 这样客户端就可以连接 HBase 了。

  1. 配置 JDK

  2. HBase 安装 (需修改 hbase-site.xml)

    hbase.rootdir 代表 HBase 数据存放的位置
    hbase.zookeeper.property.dataDir zk数据存放的位置
  3. 启动 HBase

    bin/start-hbase.sh
    bin/hbase shell

3-2-2 伪分布式模式

伪分布式模式 (所有进程运行在一台机器上)

编辑 conf/hbase-site.xml, 整个配置会覆盖 HBase 的默认配置(hbase-default.xml)

配置 hbase.rootdir HBase在HDFS中使用的目录位置。

<configuration>
  <property>
    <name>hbase.rootdir</name>
    <value>hdfs://localhost:9000/hbase</value>
  </property>
  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>
</configuration>

注意

  1. 需要将 localhost 设置成主机名, 其他机器才能访问它

启动 HBase

  1. bin/start-hbase.sh

  2. HMaster...

  3. RegionServer...

3-2-3 分布式模式

分布式模式 整个服务分布在各个节点上

3-3 HBase 的 Web UI

http://node190:60010/

3-4 HBase Shell 使用

命令行工具连接到 HBase

[hdfs@node196 ~]$ hbase shell
16/03/02 14:03:16 INFO Configuration.deprecation: hadoop.native.lib is deprecated. Instead, use io.native.lib.available
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 0.98.6-cdh5.3.6, rUnknown, Tue Jul 28 15:19:46 PDT 2015

hbase(main):001:0>
hbase(main):018:0> list 'table'
TABLE
0 row(s) in 0.0050 seconds

=> []
hbase(main):017:0> put 'test', 'row1', 'cf:a', 'value1'
0 row(s) in 0.0080 seconds
hbase(main):017:0> put 'test', 'row2', 'cf:b', 'value2'
0 row(s) in 0.0080 seconds
hbase(main):017:0> put 'test', 'row3', 'cf:c', 'value3'
0 row(s) in 0.0080 seconds
hbase(main):019:0> get 'test', 'row1'
COLUMN                             CELL
 cf:a                              timestamp=1456900507721, value=value1
1 row(s) in 0.0070 seconds
hbase(main):021:0> scan 'test'
ROW                                COLUMN+CELL
 row1                              column=cf:a, timestamp=1456900507721, value=value1
 row2                              column=cf:b, timestamp=1456900829731, value=value2
 row3                              column=cf:c, timestamp=1456900535757, value=value3
3 row(s) in 0.0080 seconds

3-5 停止 HBase 集群

bin/stop-hbase.sh
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Hbase   snapshot 下一篇Hbase架构   Hbase Region的..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目