HBase Learn Part01

Chap 1 认识 HBase

本章重点 :node

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

  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
相关文章
相关标签/搜索