• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >云计算 > HBase RegionServer详解(未完),hbaseregionserver

HBase RegionServer详解(未完),hbaseregionserver

作者:网友 字体:[增加 减小] 来源:互联网

本文主要包含hbase regionserver,hbase region,hbase rest server,hbase thrift server,hbase详解等服务器相关知识,网友希望可以进行参考

HBase RegionServer详解(未完),hbaseregionserver


HBase RegionServer详解

RegionServer组件介绍

RegionServer是HBase集群运行在每个工作节点上的服务。它是整个HBase系统的关键所在,一方面它维护了Region的状态,提供了对于Region的管理和服务;另一方面,它与Master交互,参与Master的分布式协调管理。

MemStoreFlusher

MemStoreFlusher主要功能是将MemStore刷新到文件中,当满足一下条件时会出发MemStore执行flush操作,最小的flush单元是region:

  • 当一个MemStore的大小等于hbase.hregion.memstore.flush.size指定大小时,所有属于当前region的memstores都将写入到文件;
  • 当MemStore使用内存总量达到hbase.regionserver.global.memstore.upperLimit指定值时,将会有多个MemStores flush到文件中,MemStore flush 顺序是按照大小降序执行的,直到刷新到MemStore使用内存略小于hbase.regionserver.global.memstore.lowerLimit。
  • 当每一个region server WAL数量达到hbase.regionserver.max.logs指定的值时,不同的region将按照时间先后顺序flush memstores ,较早的将先被刷新,直到WAL数量低于hbase.regionserver.max.logs为止。

    MemStoreFlusher的主要成员变量:

    class MemStoreFlusher implements FlushRequester {
    static final Log LOG = LogFactory.getLog(MemStoreFlusher.class);
    
    // These two data members go together.  Any entry in the one must have
    // a corresponding entry in the other.
    private final BlockingQueue<FlushQueueEntry> flushQueue =
    new DelayQueue<FlushQueueEntry>();
    private final Map<HRegion, FlushRegionEntry> regionsInQueue =
    new HashMap<HRegion, FlushRegionEntry>();
    private AtomicBoolean wakeupPending = new AtomicBoolean();
    
    private final long threadWakeFrequency;
    private final HRegionServer server;
    private final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
    private final Object blockSignal = new Object();
    
    protected long globalMemStoreLimit;
    protected float globalMemStoreLimitLowMarkPercent;
    protected long globalMemStoreLimitLowMark;
    
    private long blockingWaitTime;
    private final Counter updatesBlockedMsHighWater = new Counter();
    
    private final FlushHandler[] flushHandlers;
    private List<FlushRequestListener> flushRequestListeners = new ArrayList<FlushRequestListener>(1);
  • flushQueue :代表某一个region 的Flush请求,Flusher线程不断地从该队列中获取 请求信息,完成Region的Flush操作;
  • regionsInQueue :维护HRegion实例与请求FlushRegionEntry之间的对应关系;某一个FlushQueueEntry实例存在regionsInQueue 中也必然存在于flushQueue中 。
  • threadWakeFrequency:用于flushQueue执行poll操作时,最大等待时间,配置项为hbase.server.thread.wakefrequency,默认值10000ms。

    MemStoreFlusher相关配置项:

HeapMemoryManager

CompactSplitThread

ZooKeeperWatcher

MasterAddressTracker

捕获Master服务节点的变化。HBase使用多Master来解决Master单点故障的问题,主Master服务故障时,它与ZooKeeper的心跳延迟超过阈值,ZooKeeeper路径下的数据被清理,备Master上的ActiveMaserManager服务会竞争该Master路径,成为主Master。MasterAddresTracker是RS内部监听Master节点变化的追踪器。

ClusterStatusTracker

HBase集群状态追踪器。该选项可以标识当前集群的状态,及它的启动时间。该设置选项有利于集群中的各个工作节点(RS)统一执行启动和退出操作。

SplitLogWorker

基于Region的HLog文件切分器。在RS宕机之后,RS上的保存的HLog文件,需要按照Region进行切分。HMaster会把这些文件作为任务放置到Zookeeper的splitlog路径下,RS上SplitLogWorker会尝试获取任务,对获取到的HLog文件按照Region进行分组,处理的结果保存到相应Region的recovered.edits目录下。

RegionServer启动过程分析

1.HRegionServer main方法
RegionServer是一个独立的服务,有一个mian方法在启动时被调用。mian方法内部调用HRegionServerCommandLine实现RegionServer的启动。
具体代码如下:

  public static void main(String[] args) throws Exception {
    VersionInfo.logVersion();
    Configuration conf = HBaseConfiguration.create();
    @SuppressWarnings("unchecked")
    Class<? extends HRegionServer> regionServerClass = (Class<? extends HRegionServer>) conf
        .getClass(HConstants.REGION_SERVER_IMPL, HRegionServer.class);

    new HRegionServerCommandLine(regionServerClass).doMain(args);
  }
 private void preRegistrationInitialization(){
    try {
      setupClusterConnection();

      // Health checker thread.
      if (isHealthCheckerConfigured()) {
        int sleepTime = this.conf.getInt(HConstants.HEALTH_CHORE_WAKE_FREQ,
          HConstants.DEFAULT_THREAD_WAKE_FREQUENCY);
        healthCheckChore = new HealthCheckChore(sleepTime, this, getConfiguration());
      }
      this.pauseMonitor = new JvmPauseMonitor(conf);
      pauseMonitor.start();

      initializeZooKeeper();
      if (!isStopped() && !isAborted()) {
        initializeThreads();
      }
    } catch (Throwable t) {
      // Call stop if error or process will stick around for ever since server
      // puts up non-daemon threads.
      this.rpcServices.stop();
      abort("Initialization of RS failed.  Hence aborting RS.", t);
    }
  }

initializeThreads主要初始化RegionServer服务组件,主要包括初始化compactSplitThread,cacheFlusher,comp

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • RegionServer功能职责,regionserver职责
  • HBase RegionServer详解(未完),hbaseregionserver

相关文章

  • openstack中Nova组件images的所有python API 汇总,openstacknova
  • storm的集群安装与配置,storm集群配置
  • Linux索引节点(Inode:no space for device)用满导致的一次故障,linuxinode
  • Spark Standalone 以及 HDFS系统环境搭建,standalonehdfs
  • 机器学习--k-近邻(kNN)算法案例,--k-knn
  • Ceph集群磁盘没有剩余空间的解决方法,ceph集群
  • HDFS概述---namenode的设计详解,hdfs概述---namenode
  • 商用公有云安全调研,云安全调研
  • MapReduce编程之实现多表关联,mapreduce编程关联
  • 关于云服务器的瞎想,云服务器瞎想

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • Deep learning by Andrew Ng,learningandrew
    • kafka集群搭建,kafka集群
    • Docker学习笔记(一):Docker的三个基本概念,docker学习笔记
    • Install Docker Mac OS X,installdocker
    • Cloud Foundry安装部署指南(下),cloudfoundry
    • MyEclipse字体和保护色设置,myeclipse保护色
    • Hadoop知识汇总,hadoop汇总
    • ganglia安装教程,ganglia教程
    • 智能助手相伴,享受人机温情,智能助手人机
    • Linux、hive、sqoop常用脚本,hivesqoop

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有