做有温度的教育!
全国统一咨询热线:400-803-9399
北京
校区
新闻资讯> 行业新闻> 大数据Hadoop 原理学习二

大数据Hadoop 原理学习二

时间:2018-06-11
浏览:6146
发布:甲骨文华育兴业
赞:2142

大数据开发中HBASE是重要的一环,小编整理了一些关于大数据开发HBASE的学习资料,我们一起来看看吧!

在 HBase 中,Region 是有效性和分布的基本单位,这通常也是我们在维护时能直接操作的最小单位。比如当一个集群的存储在各个节点不均衡时,HMaster 便是通过移动 Region 来达到集群的平衡。或者某一个 Region 的请求过高时,通过分裂 Region 来分散请求。或者我们可以指定 Region 的 startKey 和 endKey 来设计它的数据存放范围等等。

  所以,HBase 在读写数据时,都需要先找到对应的 Region,然后再通过具体的 Region 进行实际的数据读写。

  目录表(Catalog Tables)

  客户端在访问 Region 中的数据之前,需要先通过 HMaster 确定 Region 的位置,而 HMaster 则将所有 Region 的元信息都保存在 hbase:meta 中。

  hbase:meta

  Meta 表是一个特殊的 HBase 表,它保存了集群中所有 Region 的列表,它的地址被存储在 Zookeeper 中。其表结构如下:

  - RowKey: - Region Key 格式([table],[region start key],[region id])- Values: - info:regionInfo (序列化的.META.的HRegionInfo实例) - info:server(保存.META.的RegionServer的server:port) - info:serverStartCode(保存.META.的RegionServer进程的启动时间)

  根据 Meta 表中的数据,可以确定客户端所访问的 RowKey 所处的实际位置。  

image.png

  二、读取与缓存元数据(首次读取或写入)

  客户端第一次读取或写入 HBase 时将发生以下步骤:

  1) 客户端从 Zookeeper 获取存储 META 表的 Region 服务器地址;

  2) 客户端查询 META 表所在服务器来获取与想要访问的行键相对应的 RegionServer 地址,然后客户端将这些信息与 META 表位置一起缓存;

  3) 客户端从对应的 RegionServer 获取指定行;

  对于之后的读取,客户端使用缓存的信息来检索 META 的位置和已经读取过的行键位置信息。随着时间的推移,它将不需要查询 META 表,直到由于某个 Region 已经移动或丢失,客户端才会重新查询并更新缓存。  

image.png

  三、HBase 写入原理

  在初次读取写入时,客户端已经缓存了 META 表的信息,同时因为在 HBase 中数据是按行键有序排列的,所以客户端能过通过将要写入数据的行键和缓存信息直接找到对应的 RegionServer 和 Region 位置。那么当客户端发出 Put 请求直到数据真正写入磁盘,它将主要经过以下步骤:

  1) 将数据写入预写日志 WAL

  2) 写入并排序 MemStore 缓存数据

  3) 刷新缓存中的数据,并写入到 HFile磁盘

  1. 将数据写入预写日志 WAL

  当客户端发出 Put 请求时,HBase 首先会将数据写入预写日志:

  · 编辑 WAL 文件,将数据附加到 WAL 文件的末尾(满足 HDFS 只允许追加的特性);

  · 如果服务器崩溃,那么将通过 WAL 文件恢复尚未保存的数据;  

image.png

  2. 写入并排序 MemStore 缓存数据

  一旦数据写入 WAL 成功后,数据将被放入 MemStore 中,然后将 Put 请求确认返回给客户端。客户端接收到确认信息后,对于客户端来说,此次操作便结束了。

  

image.png

  数据放入 MemStore 中后,HBase 不会立即刷新数据到磁盘,而是先更新存储数据使其作为有序的 KeyValues 结构,与存储在 HFile 中的结构相同,并等待 MemStore 累积到足够的数据时才会刷新数据以写入磁盘。

  

image.png

  3. 刷新缓存中的数据,并写入到 HFile磁盘

  当 MemStore 累积到足够的数据时,整个有序的数据集将被写入 HDFS 中的一个新的 HFile 文件。至此,客户端从发出 Put 请求到数据持久化的过程才算是真正的完成。

  可能影响性能的因素

  · 因为每一个列族都有一个 MemStore,而当发生刷新时,属于同一个 Region 下的所有 MemStore 都将刷新,这可能导致性能下降,并影响最终的 HFile 文件大小(HDFS 不适合存储小文件),所以列族的数量应该被限制以提高整体效率。

人生从业之路的第一步,从甲骨文华育兴业开始,

背后付出的辛苦与努力只有自己知道,而这也只是职业生涯的开始。

勤恳努力的人终会得到最好的回报,有些努力需要时间来回答

你吃的苦终会铺成你想要的路!

甲骨文华育兴业,为你的IT之路开启梦想之门!


【版权与免责声明】如发现内容存在版权问题,烦请提供相关信息联系我们,我们将及时沟通与处理。本站内容除非来源注明甲骨文华育兴业,否则均为网友转载,涉及言论、版权与本站无关。

大数据中hadoop是什么? ps使用 大数据 冲刺Java架构师年薪50W

友情链接: 甲骨文华育兴业太原校区 甲骨文华育兴业济南校区 甲骨文华育兴业哈尔滨校区 甲骨文华育兴业长春校区 魔据教育 音乐培训 青海律师

Copyright ©2016-2019. All Rights Reserved. 京ICP备17018991号-4

网站地图