IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Hbase复习回顾(从原理到使用) -> 正文阅读

[大数据]Hbase复习回顾(从原理到使用)

将近1年半没有使用hbase了,但是我亲爱的老板,专门从北京(分公司)邮寄过来了一台含n个t的hbase数据的服务器硬盘。现在要求我将列族中的数据拿出来,改成特定的格式,生成新的rowkey,虽然hbase在我的脑海中已经模糊的像“椰奶”了,但是作为一个优秀的csdn大数据+全栈+产品经理+数据分析专家的程序员。咱不能说不行,于是爽快的答应老板,“这个嘛,很简单,好做”。

咱不像别人心里虚,咱心里也是【表里如一】!自信满满!不就是学一下,复习一下嘛,有什么难的?我赵日天大魔王是厦大的? 独乐乐,不如众乐乐,然后我想着既然自己复习hbase,不如和大家一起复习hbase。于是才有了这篇文章。

首先学习一个东西,你要知道他是什么,此时传来了曲婉婷美妙的歌声,“出现在我脑海里 ~? 我的梦里~ 我的话里”,不知不觉我就想到了这首歌,虽然1年半没用了,但是我的脑子里,还是知道hbase是一个数据库,列式数据库(具体什么是列式,稍后给讲架构的时候会告诉大家),【特点】是只能根据rowkey【可以理解为特定的id】查询(查询速度很快)。适合【千万级】以上的数据存储,如果低于1000w,那你还是用mysql等关系型数据库吧。

大概知道了,hbase 是啥东西后,我们来了解一下 由世界巨头“谷歌”发布的bigtable论文构成的hbase,它能风靡全球(大数据圈),那他的内部构成是什么样的呢?想必你也想和我一起,一探究竟吧。

hbase的内部构成,和大家平常所用的软件一样。分为2部分。

第一部分:软件的构造(你可以理解为内部的程序是怎样合作才让hbase运作的起来的)

第二部分:? 软件的数据结构设计(对于数据库软件来说,我们要使用,必须先了解他的存储结构)

HBASE软件的构成

先来放一张全网都能搜到的架构图。

?

你看着这图,看见了什么?用1分钟的时间看一下,看完告诉我,你看到了什么。别浪费我从网上cv过来的图啊。1分钟....后

你看完之后,脑海里是不是有,Hbase、Hadoop、HRegion、Hmaster、zookeeper、Client

从图中你肯定能看到,Hbase和Hadoop是有关联的。

你看客户端作为的是什么,是不是所有箭头的起点。那整个过程,咱们来试着跟箭头走一走。

客户端向HRegionServer指向了个箭头,说明客户端能向HRegion服务发送指令。

客户端也指向了谁?是不是zookeeper,那么同样客户端能操控zookeeper。

到了这里,如果你了解zookeeper(中间件),那聪明的你,应该能猜到zookeeper是用来操控hbase集群的。通过客户端去访问zookeeper,再依靠zookeeper操控整个hbase集群。

结论就是:通过客户端去让zookeeper操作整个hbase集群。

Hmaster,就是Hbase的主节点。如果你是用的是一台机器(单节点),那Hmaster不就是Hbase本身吗?你从图中看,Hmaster是不是有2个实线箭头和1个虚线箭头,实现箭头指向了【两个】HRegionServer。虚线箭头指向的是DFS-Client(代表的是HDFS的客户端,实际上会操作hdfs进行数据的读写),当然你写可以在配置文件中将原本指向hdfs的数据,指向本地硬盘。那样就不需要配置hdfs,但是就不能保证集群中数据的高可用了。

2个他代表的是多个节点,你如果还是一台机器,那就是指向1个HRegionServer。说了半天HRegionServer,那么HRegionServer到底是什么呢?

你先不要着急,可以先看看架构图,架构图中你看HregionServer里面有什么?花了30秒时间,看一下。

30秒后。。。

你发现没,1个HRegionServer中有多个HRegion,其实HRegionServer就是用来管理多个HRegion的服务。

那么HRegion又是什么,我们先来看看HRegion里有什么,你会发现有1个HLog、多个Store。

HRegion是用来存储实际数据的。HRegion里面包含了Store、Store又是什么,是存储列族的实际数据。而HLog也是存储数据的。

那么HLog存储的是什么呢,你看完接下来的流程就明白了。

首先来了一条叫做小王八爱吃草的数据,小王八是他的id,爱吃草是他的兴趣。由客户端(如果是集群,则向集群,发送信息,如果不是,则向Hmaster发送信息)

于是Hmaster收到了信息后,将小王八交由他的手下【某个HRegionServer】来处理。

HRegionServer拿到后,将他先存放到HLog里面(可以把HLog想象成一个堆放数据的仓库)。

等待HLog里面的东西差不多了,或者时间到了,再一次性打包带走,存储至Store中。

从HRegion到HLog的过程叫做预写(提高效率,保持稳定性)。Hlog的作用就是作为中继仓库,存储数据的。

其中Store中又有SotreFile和memStore。MemStore是他的元数据,StoreFile是具体的文件。

如果是基于HDFS的数据,会由HFile将数据发送给Hdfs的客户端,交由他们将数据存储至hdfs上。如果是本地,则直接将数据存储至本地中。

HBase数据结构设计

Hbase主要用来存储非结构化和半结构化的松散数据。我们来看看,他的结构是怎么设计的。

由于他只能根据rowkey获取数据,固也能称之为是一个KV数据库。

Column Family对于的info和area称之为列簇,一个列簇可以拥有多个column(列)。

比如name就是一个列,而张三、李四代表的列中的一个格子(cell)又称为数据。

而RowKey称为具体的id,也称为key。

图是从知乎copy来的,固缺少version。version是版本号,代表的是数据插入的时间(以时间戳表示),一个rowkey开源插入多个数据(以时间戳区分)。默认是返回最新的那条数据。

所以说,我们使用hbase的时候甚至不用修改数据,直接插入最新的数据,就相当于是修改。

下面这张图我觉得更好。

?

语法参考https://www.cnblogs.com/xjx767361314/p/10191055.html

如果要修改hbase的rowkey数据,可以使用phonex。使用update。

也可以自己写脚本,比如采用python的Happybase。

参考:https://zhuanlan.zhihu.com/p/54184168

? ? ? ? ? ?https://www.cnblogs.com/xjx767361314/p/10191055.html

? ? ? ? ? ?https://www.cnblogs.com/frankdeng/p/9310278.html

?

?

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-08-03 11:16:33  更:2021-08-03 11:18:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 5:29:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码