HBase中的HMaster、HRegionServer、Zookeeper

原文链接:http://blog.csdn.net/mm_bit/article/details/51304233

-----------------------------------

HMaster是Hbase主/从集群架构中的中央节点。通常一个HBase集群存在多个HMaster节点,其中一个为Active Master,其余为Backup Master.

Hbase每时每刻只有一个hmaster主服务器程序在运行,hmaster将region分配给region服务器,协调region服务器的负载并维护集群的状态。Hmaster不会对外提供数据服务,而是由region服务器负责所有regions的读写请求及操作。

  由于hmaster只维护表和region的元数据,而不参与数据的输入/输出过程,hmaster失效仅仅会导致所有的元数据无法被修改,但表的数据读/写还是可以正常进行的。

HMaster的作用:

  • 为Region server分配region
  • 负责Region server的负载均衡
  • 发现失效的Region server并重新分配其上的region
  • HDFS上的垃圾文件回收
  • 处理schema更新请求

HRegionServer作用:
  • 维护master分配给他的region,处理对这些region的io请求
  • 负责切分正在运行过程中变的过大的region

可以看到,client访问hbase上的数据并不需要master参与(寻址访问zookeeper和region server,数据读写访问region server),master仅仅维护table和region的元数据信息(table的元数据信息保存在zookeeper上),负载很低。
注意:master上存放的元数据是region的存储位置信息,但是在用户读写数据时,都是先写到region server的WAL日志中,之后由region server负责将其刷新到HFile中,即region中。所以,用户并不直接接触region,无需知道region的位置,所以其并不从master处获得什么位置元数据,而只需要从zookeeper中获取region server的位置元数据,之后便直接和region server通信。
HRegionServer存取一个子表时,会创建一个HRegion对象,然后对表的每个列族创建一个Store实例,每个Store都会有一个MemStore和0个或多个StoreFile与之对应,每个StoreFile都会对应一个HFile, HFile就是实际的存储文件。因此,一个HRegion有多少个列族就有多少个Store。
一个HRegionServer会有多个HRegion和一个HLog。
当HRegionServer意外终止后,HMaster会通过Zookeeper感知到。

Zookeeper作用在于:

          1hbase regionserver zookeeper注册,提供hbase regionserver状态信息(是否在线)。

          2hmaster启动时候会将hbase系统表-ROOT- 加载到 zookeeper cluster,通过zookeeper cluster可以获取当前系统表.META.的存储所对应的regionserver信息。

 

zookeeperhbase集群的"协调器"。由于zookeeper的轻量级特性,因此我们可以将多个hbase集群共用一个zookeeper集群,以节约大量的服务器。多个hbase集群共用zookeeper集群的方法是使用同一组ip,修改不同hbase集群的"zookeeper.znode.parent"属性,让它们使用不同的根目录。比如cluster1使用/hbase-c1,cluster2使用/hbase-c2,等等。

-------------

更多的Java,Angular,Android,大数据,J2EE,Python,数据库,Linux,Java架构师,:

http://www.cnblogs.com/zengmiaogen/p/7083694.html



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

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

相关文章

spyder python调试_使用spyder编译器单步调试python

1、将需要进行单步调试的函数在脚本中进行调用(十分重要的一步)。由于python是解释型语言,在进行单步调试的时候需要告诉系统你使用了这个函数,单步调试才会进入你所需要调式的函数。如下图所示,我们定义了createDataS…

label qt 自动换行_QT编写一个登录界面

前言继上篇:一起学Qt之基础篇---入门今天上手实操用QT编写一个登录界面~系统权限这个词大家肯定不陌生,你进入一个网站也是,如果不登录,就是以游客的身份进去的,要想看到某些信息肯定需要进行登录,更完善的…

我的世界服务器怎么修改书与笔,我的世界书与笔怎么做 我的世界书与笔怎么用...

第一步先收集甘蔗,然后合成纸,甘蔗在河边,池塘边,沼泽地一般都会生成,我们也可以拿回家种植,但是甘蔗必须种在水边,其他地方种植不了,其他地方玩家怎么右键甘蔗都是没有反应的。第二…

python csv模块用法_python使用csv模块如何将数据存放在一张表的不同行?

def save2csv(file_nameNone, headerNone, dataNone): """ 保存成CSV格式文件,方便Excel直接打开 :param file_name: 保存的文件名 :param header: 表头,每一列的名字 :param data: 具体填充数据 :return: """ if file_name is None or isinstan…

虚拟机 服务器 root,虚拟机切换到root账户

虚拟机切换到root账户 内容精选换一换一、安装虚拟机1、下载VMware workstation 14 ,安装时按照默认配置安装2、下载ubuntu-18.04.1-desktop-amd64.iso镜像文件3、打开 VMware workstation ,新建虚拟机4、配置虚拟机内存,磁盘,网络…

每一行末尾添加分号

文本内容如下: TMP_TBX_100_0_A1 TMP_TBX_100_0_A10 TMP_TBX_100_0_A12 TMP_TBX_100_0_A13 TMP_TBX_100_0_A14 TMP_TBX_100_0_A15 TMP_TBX_100_0_A15_2 TMP_TBX_100_0_A16 TMP_TBX_100_0_A17 TMP_TBX_100_0_A18 TMP_TBX_100_0_A19 TMP_TBX_100_0_A19_2 TMP_TBX_100…

壮观霉素抗性基因原理_基因组学深入挖掘·研究方案(下篇)

前情回顾上次小编为大家讲解了四种以基因组为基础的多组学联合研究方案(基因组与转录组,深入挖掘基因表达信息;基因组联合代谢组与转录组,锁定关键通路;基因组与群体进化,解析物种发展历程;基因…

Shell脚本大量示例

几乎所有的脚本里都有某种流控制结构,很少有例外。流控制是什么?假定有一个脚本,包含下列几个命令: #!/bin/sh # make a directory mkdir /home/dave/mydocs # copy all doc files cp *.docs /home/dave/docs # delete all doc fi…

Spark 常见问题小结

原文地址:http://www.aboutyun.com/thread-9946-1-1.html -------------------------------------- 问题导读 1、当前集群的可用资源不能满足应用程序的需求,怎么解决? 2、内存里堆的东西太多了,有什么好办法吗? …

dataframe数据标准化处理_数据预处理——标准化/归一化(实例)

这次我们来说说关于数据预处理中的数据标准化及归一化的问题。主要以理论实例的方式为大家展示。本次实验也将会展示部分数据以及代码,有兴趣的小伙伴可以自己动手试试~在本次实例过程中,我们使用的数据是:2010-2018年间广州市经济与环境的时…

python实现自动打电话软件_全自动手势联系软件 让你轻轻松松打电话

电话号码超级多的童鞋们,由于手机里存储的电话太多,每次要找某个人的电话很难找,有木有同感的?小编今天像大家推荐一款新潮的帮助你轻松找到想要的电话的模式,有没有很想知道呢?其实小编本来是想卖个关子的…

电脑的虚拟服务器位置,如何配置基于IP地址的虚拟主机

满意答案虚拟主机简介:1. 把一台运行在互联网上的服务器分成多个虚拟的服务器。2. 每一个虚拟主机都具有独立的域名和完整的Internet服务器(支持WWW,FTP,E-mail等)。3. 一台服务器上的不同虚拟主机是各自独…

VMware配置额外内存设置

配置额外内存设置 额外内存设置用于控制主机系统中的内存管理器如何将虚拟机从物理 RAM 中换出。 要配置额外内存设置,请选择[编辑] > [首选项] > [内存]。 [调整所有虚拟机内存使其适应预留的主机 RAM] 选择此选项会对给定时间内可以运行的虚拟机的数量和内…

Kafka.net使用编程入门(一)

最近研究分布式消息队列,分享下! 首先zookeeper 和 kafka 压缩包 解压 并配置好! 我本机zookeeper环境配置如下: D:\Worksoftware\ApacheZookeeper3\conf\zoo.cfg 以下是kafka的配置 D:\Worksoftware\Apachekafka2.11\config\server.propert…

下拉推广系统立择火星推荐_下拉词删除都择火星下拉

会员注册发帖做推广的人都离不开搜索引擎,就像鱼离不开水,很多时候我们做SEO的朋友都在研究各大搜索引擎的机制,收录,排名规则或者是黑帽技术,不管如何,只是希望把自己的企业,产品,服…

python包路径有几个_python的搜索路径与包(package)

python的搜索路径其实是一个列表,它是指导入模块时,python会自动去找搜索这个列表当中的路径,如果路径中存在要导入的模块文件则导入成功,否则导入失败: >>> importsys>>>sys.path [, C:\\Python33\…

配置文件管理服务器,06-配置文件管理

1配置文件管理设备运行于FIPS模式时,本特性部分配置相对于非FIPS模式有所变化,具体差异请见本文相关描述。有关FIPS模式的详细介绍请参见“安全配置指导”中的“FIPS”。1.1 配置文件简介配置文件是用来保存配置的文件。配置文件主要用于: …

虚拟机安装spark配置推荐

如果虚拟机配置的内存太少,spark运行计算的时候会报: WARN TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster uito ensure that workers are registered and have sufficient memory 资源不足的问题,导…

c++输入一个整数判断是否为完全平方数_matlab判断一个整数是完全平方数

(C语言c)判断一个数是否是 完全平方数的 整数倍#include#includeint ispow(int x){ int&用c编判断一个数是否是完全数#include#includeintmain(){intn;printf("请输入一个数,然后按回车键:\n");scanf("%d",&n);inti,p1;for(i2;i*i编…

Linux常用命令——chattr、lsattr

chattr 改变文件的扩展属性 语法格式:chattr 【option】【mode】【files】chattr [选项] [模式] [文件或目录]注意:chattr 命令及后面的选项和文件里,每个元素之间都要至少要有一个空格参数选项: 参数选项解释说明-a只能向文件中…