hbase 页面访问_HBase

v2-cdfef6e4af38a4d76a5d7423beb4f4ee_1440w.jpg?source=172ae18b

HBase 特点

海量存储

Hbase 适合存储 PB 级别的海量数据,在 PB 级别的数据以及采用廉价 PC 存储的情况下,

能在几十到百毫秒内返回数据。这与 Hbase 的极易扩展性息息相关。正式因为 Hbase 良好的

扩展性,才为海量数据的存储提供了便利。

2)列式存储

这里的列式存储其实说的是列族存储,Hbase 是根据列族来存储数据的。列族下面可以

有非常多的列,列族在创建表的时候就必须指定。

3)极易扩展

Hbase 的扩展性主要体现在两个方面,一个是基于上层处理能力(RegionServer)的扩

展,一个是基于存储的扩展(HDFS)。

通过横向添加 RegionSever 的机器,进行水平扩展,提升 Hbase 上层的处理能力,提升 Hbsae

服务更多 Region 的能力。

备注:RegionServer 的作用是管理 region、承接业务的访问,这个后面会详细的介绍通

过横向添加 Datanode 的机器,进行存储层扩容,提升 Hbase 的数据存储能力和提升后端存

储的读写能力。

4)高并发

由于目前大部分使用 Hbase 的架构,都是采用的廉价 PC,因此单个 IO 的延迟其实并不

小,一般在几十到上百 ms 之间。这里说的高并发,主要是在并发的情况下,Hbase 的单个

IO 延迟下降并不多。能获得高并发、低延迟的服务。

5)稀疏

稀疏主要是针对 Hbase 列的灵活性,在列族中,你可以指定任意多的列,在列数据为空

的情况下,是不会占用存储空间的。

HBase 架构

438781747ae610e52355fa41d98c1bf9.png

从图中可以看出 Hbase 是由 Client、Zookeeper、Master、HRegionServer、HDFS 等

几个组件组成,下面来介绍一下几个组件的相关功能:

1)Client

Client 包含了访问 Hbase 的接口,另外 Client 还维护了对应的 cache 来加速 Hbase 的访

问,比如 cache 的.META.元数据的信息。

2)Zookeeper

HBase 通过 Zookeeper 来做 master 的高可用、RegionServer 的监控、元数据的入口以及

集群配置的维护等工作。具体工作如下:

通过 Zoopkeeper 来保证集群中只有 1 个 master 在运行,如果 master 异常,会通过竞争

机制产生新的 master 提供服务

通过 Zoopkeeper 来监控 RegionServer 的状态,当 RegionSevrer 有异常的时候,通过回

调的形式通知 Master RegionServer 上下线的信息

通过 Zoopkeeper 存储元数据的统一入口地址

3)Hmaster

master 节点的主要职责如下:

为 RegionServer 分配 Region

维护整个集群的负载均衡

维护集群的元数据信息

发现失效的 Region,并将失效的 Region 分配到正常的 RegionServer 上

当 RegionSever 失效的时候,协调对应 Hlog 的拆分

4)HregionServer

HregionServer 直接对接用户的读写请求,是真正的“干活”的节点。它的功能概括如下:

管理 master 为其分配的 Region

处理来自客户端的读写请求

负责和底层 HDFS 的交互,存储数据到 HDFS

负责 Region 变大以后的拆分

负责 Storefile 的合并工作

5)HDFS

HDFS 为 Hbase 提供最终的底层数据存储服务,同时为 HBase 提供高可用(Hlog 存储在

HDFS)的支持,具体功能概括如下:

提供元数据和表数据的底层分布式存储服务

数据多副本,保证的高可靠和高可用性

1.3 HBase 中的角色

1.3.1 HMaster

功能

1.监控 RegionServer

2.处理 RegionServer 故障转移

3.处理元数据的变更

4.处理 region 的分配或转移

5.在空闲时间进行数据的负载均衡

6.通过 Zookeeper 发布自己的位置给客户端

1.3.2 RegionServer

功能

1.负责存储 HBase 的实际数据

2.处理分配给它的 Region

3.刷新缓存到 HDFS

4.维护 Hlog

5.执行压缩

6.负责处理 Region 分片

1.2.3 其他组件

1.Write-Ahead logs

HBase 的修改记录,当对 HBase 读写数据的时候,数据不是直接写进磁盘,它会在内

存中保留一段时间(时间以及数据量阈值可以设定)。但把数据保存在内存中可能有更高的

概率引起数据丢失,为了解决这个问题,数据会先写在一个叫做 Write-Ahead logfile 的文件

中,然后再写入内存中。所以在系统出现故障的时候,数据可以通过这个日志文件重建。

2.Region

Hbase 表的分片,HBase 表会根据 RowKey 值被切分成不同的 region 存储在 RegionServer

中,在一个 RegionServer 中可以有多个不同的 region。

3.Store

HFile 存储在 Store 中,一个 Store 对应 HBase 表中的一个列族。

4.MemStore

顾名思义,就是内存存储,位于内存中,用来保存当前的数据操作,所以当数据保存在

WAL 中之后,RegsionServer 会在内存中存储键值对。

5.HFile

这是在磁盘上保存原始数据的实际的物理文件,是实际的存储文件。StoreFile 是以 Hfile

的形式存储在 HDFS 的。

第 2 章 HBase 安装

2.1 Zookeeper 正常部署

首先保证 Zookeeper 集群的正常部署,并启动之:

[atguigu@hadoop102 zookeeper-3.4.10]$ bin/zkServer.sh start

[atguigu@hadoop103 zookeeper-3.4.10]$ bin/zkServer.sh start

[atguigu@hadoop104 zookeeper-3.4.10]$ bin/zkServer.sh start

2.2 Hadoop 正常部署

Hadoop 集群的正常部署并启动:

[atguigu@hadoop102 hadoop-2.7.2]$ sbin/start-dfs.sh

[atguigu@hadoop103 hadoop-2.7.2]$ sbin/start-yarn.sh

2.3 HBase 的解压

解压 HBase 到指定目录:

[atguigu@hadoop102 software]$ tar -zxvf hbase-1.3.1-bin.tar.gz -C

/opt/module

2.4 HBase 的配置文件

修改 HBase 对应的配置文件。

1)hbase-env.sh 修改内容:

export JAVA_HOME=/opt/module/jdk1.8.0_144

export HBASE_MANAGES_ZK=false

2)hbase-site.xml 修改内容:

<configuration>

<property>

<name>hbase.rootdir</name>

<value>hdfs://hadoop102:9000/hbase</value>

</property>

<property>

<name>hbase.cluster.distributed</name>

<value>true</value>

</property>

<!-- 0.98 后的新变动,之前版本没有.port,默认端口为 60000 -->

<property>

<name>hbase.master.port</name>

<value>16000</value>

</property>

<property>

<name>hbase.zookeeper.quorum</name>

<value>hadoop102:2181,hadoop103:2181,hadoop104:2181</

value>

</property>

<property>

<name>hbase.zookeeper.property.dataDir</name>

<value>/opt/module/zookeeper-3.4.10/zkData</value>

</property>

</configuration>

3)regionservers:

hadoop102

hadoop103

hadoop104

4)软连接 hadoop 配置文件到 hbase:

[atguigu@hadoop102 module]$ ln -s

/opt/module/hadoop-2.7.2/etc/hadoop/core-site.xml

/opt/module/hbase/conf/core-site.xml

[atguigu@hadoop102 module]$ ln -s

/opt/module/hadoop-2.7.2/etc/hadoop/hdfs-site.xml

/opt/module/hbase/conf/hdfs-site.xml

2.5 HBase 远程发送到其他集群

[atguigu@hadoop102 module]$ xsync hbase/

2.6 HBase 服务的启动

1.启动方式 1

[atguigu@hadoop102 hbase]$ bin/hbase-daemon.sh start master

[atguigu@hadoop102 hbase]$ bin/hbase-daemon.sh start regionserver

提示:如果集群之间的节点时间不同步,会导致 regionserver 无法启动,抛出

ClockOutOfSyncException 异常。

修复提示:

a、同步时间服务

属性:hbase.master.maxclockskew 设置更大的值

<property>

<name>hbase.master.maxclockskew</name>

<value>180000</value>

<description>Time difference of regionserver from

master</description>

</property>

2.启动方式 2

[atguigu@hadoop102 hbase]$ bin/start-hbase.sh

对应的停止服务:

[atguigu@hadoop102 hbase]$ bin/stop-hbase.sh

2.7 查看 HBase 页面

启动成功后,可以通过“host:port”的方式来访问 HBase 管理页面,例如:

http://hadoop102:16010

第 3 章 HBase Shell 操作

3.1 基本操作

1.进入 HBase 客户端命令行

[atguigu@hadoop102 hbase]$ bin/hbase shell

2.查看帮助命令

hbase(main):001:0> help

3.查看当前数据库中有哪些表

hbase(main):002:0> list

3.2 表的操作

1.创建表

hbase(main):002:0> create 'student','info'

2.插入数据到表

hbase(main):003:0> put 'student','1001','info:sex','male'

hbase(main):004:0> put 'student','1001','info:age','18'

hbase(main):005:0> put 'student','1002','info:name','Janna'

hbase(main):006:0> put 'student','1002','info:sex','female'

hbase(main):007:0> put 'student','1002','info:age','20'

3.扫描查看表数据

hbase(main):008:0> scan 'student'

hbase(main):009:0> scan 'student',{STARTROW => '1001', STOPROW =>

'1001'}

hbase(main):010:0> scan 'student',{STARTROW => '1001'}

4.查看表结构

hbase(main):011:0> describe ‘student’

5.更新指定字段的数据

hbase(main):012:0> put 'student','1001','info:name','Nick'

hbase(main):013:0> put 'student','1001','info:age','100'

6.查看“指定行”或“指定列族:列”的数据

hbase(main):014:0> get 'student','1001'

hbase(main):015:0> get 'student','1001','info:name'

7.统计表数据行数

hbase(main):021:0> count 'student'

8.删除数据

删除某 rowkey 的全部数据:

hbase(main):016:0> deleteall 'student','1001'

删除某 rowkey 的某一列数据:

hbase(main):017:0> delete 'student','1002','info:sex'

9.清空表数据

hbase(main):018:0> truncate 'student'

提示:清空表的操作顺序为先 disable,然后再 truncate。

10.删除表

首先需要先让该表为 disable 状态:

hbase(main):019:0> disable 'student'

然后才能 drop 这个表:

hbase(main):020:0> drop 'student'

提示:如果直接 drop 表,会报错:ERROR: Table student is enabled. Disable it first.

11.变更表信息

将 info 列族中的数据存放 3 个版本:

hbase(main):022:0> alter 'student',{NAME=>'info',VERSIONS=>3}

hbase(main):022:0> get

'student','1001',{COLUMN=>'info:name',VERSIONS=>3}

第 4 章 HBase 数据结构

4.1 RowKey

与 nosql 数据库们一样,RowKey 是用来检索记录的主键。访问 HBASE table 中的行,只

有三种方式:

1.通过单个 RowKey 访问

2.通过 RowKey 的 range(正则)

3.全表扫描

RowKey 行键 (RowKey)可以是任意字符串(最大长度是 64KB,实际应用中长度一般为

10-100bytes),在 HBASE 内部,RowKey 保存为字节数组。存储时,数据按照 RowKey 的字

典序(byte order)排序存储。设计 RowKey 时,要充分排序存储这个特性,将经常一起读取的

行存储放到一起。(位置相关性)

4.2 Column Family

列族:HBASE 表中的每个列,都归属于某个列族。列族是表的 schema 的一部 分(而列

不是),必须在使用表之前定义。列名都以列族作为前缀。例如 courses:history,courses:math

都属于 courses 这个列族。

4.3 Cell

由{rowkey, column Family:columu, version} 唯一确定的单元。cell 中的数据是没有类型

的,全部是字节码形式存贮。

关键字:无类型、字节码

4.4 Time Stamp

HBASE 中通过 rowkey 和 columns 确定的为一个存贮单元称为 cell。每个 cell 都保存 着

同一份数据的多个版本。版本通过时间戳来索引。时间戳的类型是 64 位整型。时间戳可以

由 HBASE(在数据写入时自动 )赋值,此时时间戳是精确到毫秒 的当前系统时间。时间戳

也可以由客户显式赋值。如果应用程序要避免数据版 本冲突,就必须自己生成具有唯一性

的时间戳。每个 cell 中,不同版本的数据按照时间倒序排序,即最新的数据排在最前面。

为了避免数据存在过多版本造成的的管理 (包括存贮和索引)负担,HBASE 提供 了两

种数据版本回收方式。一是保存数据的最后 n 个版本,二是保存最近一段 时间内的版本(比

如最近七天)。用户可以针对每个列族进行设置。

4.5 命名空间

命名空间的结构:

12195c6f173dfa6cf223dc558f937922.png

1) Table:表,所有的表都是命名空间的成员,即表必属于某个命名空间,如果没有指定,

则在 default 默认的命名空间中。

2) RegionServer group:一个命名空间包含了默认的 RegionServer Group。

3) Permission:权限,命名空间能够让我们来定义访问控制列表 ACL(Access Control List)。

例如,创建表,读取表,删除,更新等等操作。

4) Quota:限额,可以强制一个命名空间可包含的 region 的数量。

HBase 原理

5.1 读流程

HBase 读数据流程如图 3 所示

ad61c9b1a09a3aa9c090ef6414b83879.png

1)Client 先访问 zookeeper,从 meta 表读取 region 的位置,然后读取 meta 表中的数据。meta

中又存储了用户表的 region 信息;

2)根据 namespace、表名和 rowkey 在 meta 表中找到对应的 region 信息;

3)找到这个 region 对应的 regionserver;

4)查找对应的 region;

5)先从 MemStore 找数据,如果没有,再到 BlockCache 里面读;

6)BlockCache 还没有,再到 StoreFile 上读(为了读取的效率);

7)如果是从 StoreFile 里面读取的数据,不是直接返回给客户端,而是先写入 BlockCache,

再返回给客户端。

5.2 写流程

Hbase 写流程如图 2 所示

a27b6a1395569dc5f44c203b00258708.png

1)Client 向 HregionServer 发送写请求;

2)HregionServer 将数据写到 HLog(write ahead log)。为了数据的持久化和恢复;

3)HregionServer 将数据写到内存(MemStore);

4)反馈 Client 写成功。

5.3 数据 Flush 过程

1)当 MemStore 数据达到阈值(默认是 128M,老版本是 64M),将数据刷到硬盘,将内存

中的数据删除,同时删除 HLog 中的历史数据;

2)并将数据存储到 HDFS 中;

3)在 HLog 中做标记点。

5.4 数据合并过程

1)当数据块达到 4 块,Hmaster 触发合并操作,Region 将数据块加载到本地,进行合并;

2)当合并的数据超过 256M,进行拆分,将拆分后的 Region 分配给不同的 HregionServer

管理;

3)当 HregionServer 宕机后,将 HregionServer 上的 hlog 拆分,然后分配给不同的 HregionServer

加载,修改.META.;

4)注意:HLog 会同步到 HDFS。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/532435.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入理解L1、L2正则化

深入理解L1、L2正则化 转自&#xff1a;【面试看这篇就够了】L1、L2正则化理解 一、概述 正则化&#xff08;Regularization&#xff09;是机器学习中一种常用的技术&#xff0c;其主要目的是控制模型复杂度&#xff0c;减小过拟合。正则化技术已经成为模型训练中的常用技术&a…

机器学习中的概率模型

机器学习中的概率模型 转自&#xff1a;https://zhuanlan.zhihu.com/p/164551678 机器学习中的概率模型 概率论&#xff0c;包括它的延伸-信息论&#xff0c;以及随机过程&#xff0c;在机器学习中有重要的作用。它们被广泛用于建立预测函数&#xff0c;目标函数&#xff0c;以…

max std value 宏_Rust Macro/宏 新手指南

Rust语言最强大的一个特点就是可以创建和利用宏/Macro。不过创建 Rust宏看起来挺复杂&#xff0c;常常令刚接触Rust的开发者心生畏惧。这片文章 的目的就是帮助你理解Rust Macro的基本运作原理&#xff0c;学习如何创建自己的 Rust宏。相关链接&#xff1a;在线学编程 - 汇智网…

农林资金 大数据审计案例_大数据审计:现状与发展

大数据审计&#xff1a;现状与发展【摘要】传统手工环境下&#xff0c;审计人员常用的审计方法包括检查法、观察法、重新计算法、外部调查法、分析法、鉴定法等。随着信息技术的发展&#xff0c;被审计单位的运行越来越依赖于信息化环境。信息化环境下审计工作发生了巨大的变化…

angularjs sill 创建项目_开源项目——博客项目MyBlogs.Core,基于.NET 5

个人博客站项目源码&#xff0c;高性能低占用的博客系统&#xff0c;这也许是我个人目前写过的性能最高的web项目了 。目前日均处理请求数80-120w次&#xff0c;同时在线活跃用户数30-100人&#xff0c;数据量累计已达到100多万条&#xff0c;数据库Redis网站主程序同时运行在一…

怀旧服推荐配置_【怀旧服】狂暴战P4毕业装备推荐

在怀旧服开启P4阶段之后&#xff0c;狂暴战玩家的输出也得到了进一步的提升。当然&#xff0c;狂暴战想要打出足够的伤害离不开对应的装备&#xff0c;现在就给大家介绍下狂暴战P4阶段的BIS装备。散件装备狂暴战在这一阶段依旧有非常不错的散件装备&#xff0c;个人建议玩家入手…

高斯混合模型GMM及EM迭代求解算法(含代码实现)

高斯混合模型GMM及EM迭代求解算法&#xff08;含代码实现&#xff09; 高斯分布与高斯混合模型 高斯分布 高斯分布大家都很熟悉了&#xff0c;下面是一元高斯分布的概率密度函数&#xff08;Probability Density Function&#xff0c;PDF&#xff09;&#xff1a; P(x)N(μ,…

十个模块_专栏 | ABAQUS Part模块的十个小技巧

作者介绍星辰_北极星2012年开始从事Abaqus仿真相关工作&#xff0c;服务大小课题逾百项; 主要仿真领域&#xff1a;石油工程、岩土工程和金属加工工艺&#xff1b; 重点研究方向&#xff1a;ABAQUS GUI二次开发、固体力学、断裂以及损伤等。Abaqus有部件(Part)和装配体(Assembl…

深度学习时代的视频理解综述

深度学习时代的视频理解综述 本文为b站bryanyzhu老师四期视频理解相关论文解读的汇总图文笔记。 我们先精读深度学习时代视频理解领域最为重要的两篇论文&#xff1a;双流网络和 I3D。它们分别是领域内两大类方法双流&#xff08;利用光流&#xff09;网络和 3D CNN 网络的代…

typec扩展坞hdmi没反应_typec扩展坞转hdmi/vga多功能网口usb转换器苹果华为电脑matebook6元优惠券券后价26.8元...

★typec扩展坞转hdmi/vga多功能网口usb转换器苹果华为电脑matebook&#xff0c;6元拼多多优惠券★券后价26.8元★★★typec扩展坞转hdmi/vga多功能网口usb转换器苹果华为电脑matebook&#xffe5;26.8元&#xffe5;32.8元已拼5097件点击抢购猜你喜欢[速发]喵喵机P1热敏打印机手…

NLP任务概览

NLP任务概览 本文为台湾大学李宏毅老师视频课程笔记。本课程介绍了 &#xff08;2020年&#xff09;NLP 领域常见的 17 种任务。本文只会从输入输出的角度概览多种 NLP 任务&#xff0c;并简介它们的常见做法&#xff0c;并不会细致地介绍每个任务模型的具体细节。 两种模式与…

大物实验总结模板_期中总结大会amp;期末动员大会

在逐渐降温的双创周麦包坊的期中总结暨期末动员大会来啦在学长团和小麦包的分享下希望大家重新启航奋斗期末板块一学长团经验分享面对本学期十二门科目&#xff0c;作为过来人的前辈们给出很多对本学期各科目的针对性建议&#xff0c;可谓是干货满满&#xff0c;快来瞧瞧吧&…

PTMs:NLP预训练模型的全面总结

PTMs&#xff1a;NLP预训练模型的全面总结 转自&#xff1a;https://zhuanlan.zhihu.com/p/115014536 预训练模型(Pre-trained Models,PTMs) 的出现将NLP带入了一个全新时代。2020年3月18日&#xff0c;邱锡鹏老师发表了关于NLP预训练模型的综述《Pre-trained Models for Natur…

python中提取几列_Python一键提取PDF中的表格到Excel(实例50)

从PDF文件获取表格中的数据&#xff0c;也是日常办公容易涉及到的一项工作。一个一个复制吧&#xff0c;效率确实太低了。用Python从PDF文档中提取表格数据&#xff0c;并写入Excel文件&#xff0c;灰常灰常高效。上市公司的年报往往包含几百张表格&#xff0c;用它作为例子再合…

详解最大似然估计(MLE)、最大后验概率估计(MAP),以及贝叶斯公式的理解

详解最大似然估计&#xff08;MLE&#xff09;、最大后验概率估计&#xff08;MAP&#xff09;&#xff0c;以及贝叶斯公式的理解 声明&#xff1a;本文为原创文章&#xff0c;发表于nebulaf91的csdn博客。欢迎转载&#xff0c;但请务必保留本信息&#xff0c;注明文章出处。 本…

重新打开_iPhone 应用停止响应或无法打开的解决办法

如果当您在 iPhone 上使用某个重要应用时&#xff0c;遇到应用停止响应、意外退出或无法打开的问题&#xff0c;请参考如下步骤尝试解决&#xff1a;1.强制退出应用&#xff1a;在 iPhone 后台强制关闭该应用之后&#xff0c;再次重新打开看看。2.重启您的设备&#xff0c;然后…

机器学习理论——优雅的模型:变分自编码器(VAE)

机器学习理论——优雅的模型&#xff1a;变分自编码器&#xff08;VAE&#xff09; 转自&#xff1a;机器学习理论—优雅的模型&#xff08;一&#xff09;&#xff1a;变分自编码器&#xff08;VAE&#xff09; 另外直观理解 VAE&#xff0c; 推荐 台大李宏毅老师的课程&#…

基于流的(Flow-based)生成模型简介

基于流的(Flow-based)生成模型简介 生成任务 我们先回顾一下所谓的生成任务&#xff0c;究竟是做什么事情。我们认为&#xff0c;世界上所有的图片&#xff0c;是符合某种分布 pdata(x)p_{data}(x)pdata​(x) 的。当然&#xff0c;这个分布肯定是个极其复杂的分布。而我们有一…

iec60870-5-104通讯协议编程_三菱FX编程口通讯协议1——协议解读

三菱PLC编程口通讯协议&#xff1a;1、三菱PLC编程口通讯协议有四个命令&#xff0c;如下&#xff1a;2、三菱FX系列PLC地址对应表&#xff1a;PLC_X Group Base AddRess128&#xff1b;Const PLC_Y_Group Base AddRess160&#xff1b;M _Group Base_AddRess 256&#xff1b;P…

DETR精读笔记

DETR精读笔记 论文&#xff1a;End-to-End Object Detection with Transformers &#xff08;发表于 ECCV-2020&#xff09; 代码&#xff1a;https://github.com/facebookresearch/detr 解读视频&#xff1a;DETR 论文精读【论文精读】 本笔记主要基于 Yi Zhu 老师的解读 引言…