| |
|
开发:
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 ? ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |