hbase 设置超时参数

这篇具有很好参考价值的文章主要介绍了hbase 设置超时参数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、为什么要设置超时参数

hbase设计的目标是成为一个高可用集群,能够在失败的时候快速响应,当出现网络抖动等偶发情况时,能快速重试,让用户可以快速拿到结果。而不是一直卡着,使得上层应用阻塞等待。

这个功能可以通过设置下面的3个超时参数、超时重试次数来实现。在超时的时候,立即主动断开,并重试。可以在当前集群上重试,也可以切换集群重试。

 文章来源地址https://www.toymoban.com/news/detail-510659.html

二、3个超时参数及其机制

hbase.rpc.timeout

hbase client和server之间通过 rpc 通信,此参数设置了rpc超时时间。超时后将主动断开 rpc 请求。

 

hbase.client.opeation.timeout

hbase client从发出数据操作请求到server端处理完成并返回,总时间不能超过此参数。一个数据请求可能会调用多次rpc请求。比如 client 端发起了一个 put 请求,server 端正好在Full gc ,导致 rpc 响应超时。那么 client 会进行重试,重试多次后,累计的时间超过了 client.opeation.timeout 后,将抛出 sockettimeout 异常。

hbase.client.scanner.timeout.period

hbase 为 scanner 专门设置的超时参数。

一次 scan 操作如果一次性返回大量数据,对于 client 和 server 还有网络都有很大的压力。client 端一次性接受大量数据放在内存中,容易oom; server 端从磁盘读出数据需要大量的io,而我们知道io 相比于cpu、内存,往往更容易成为瓶颈;网络端从 server 这台机器传输大量数据到 client 这台机器,将会占用很大带宽,对网络也有压力。

因此 一个scan 操作会分为多次 rpc 来实现。 我们在 scan 的时候,会设置 maxsize 和 cache,maxsize 表示本次 scan 要扫描返回的总条数,cache 表示一次 rpc 返回的数据条数。

HTable table=(HTable) getHTablePool().getTable("tb_stu");

Scan scan=new Scan();

scan.setMaxResultSize(10000);

scan.setCacheing(500);

ResultScanner rs = table.getScanner(scan);

Result r = rs.next();

每执行一次 rs.next(),都是在发起一次 rpc 请求。

server 端会比较 hbase.client.scanner.timeout.period 和 hbase.rpc.timeout 两个参数,按照其中较小的来判断是否超时。比如scanner.timeout.period 设置为6000ms,rpc.timeout为3000ms,则在超过3000ms时,就会报socketTimeout异常,主动断开连接。

 

ref:

hbase客户端超时机制:http://hbasefly.com/2016/06/11/hbase-client-2/

设置rpc超时后无效的解决方法:https://stackoverflow.com/questions/30923351/hbase-client-rpc-timeout

 

 

到了这里,关于hbase 设置超时参数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Fragment为什么不用构造函数传递参数?

    Fragment 的构造方法通常不建议直接传递参数。我们先来看一下Fragment源码: 在源码中会发现,Fragment的构造函数是空的,所以他和普通类的创建对象的方式不太一样。接着我们看源码:

    2024年01月24日
    浏览(75)
  • 为什么使用线程池?解释下线程池参数?

    (1)降低资源消耗:提高线程利用率,降低创建和销毁线程的消耗。 (2)提高响应速度:任务来了,直接有线程可用可执行,而不是线创建线程再执行。 (3)提高线程的可管理性;线程是稀缺资源,使用线程池可以统一分配调优监控。 (1)corePoolSize:代表核心线程数,也

    2024年02月16日
    浏览(46)
  • 为什么axios会有params和data两个参数

    不知道大家有没有过这种感觉,突然一个问题百思不得其解,然后突然有一天就明白了。然后就感觉这个问题原来这么简单,本来想记录下来,但是又感觉这么简单的问题记录下来没啥意义。但是回过头来想一想,这个问题之前其实困扰了你很长时间。感觉还是记录一下比较

    2024年02月08日
    浏览(47)
  • spark中为什么要设置宽窄依赖

    宽依赖指的是两个或多个任务或数据之间具有较强的依赖关系。也就是说,在执行某个任务之前,需要先完成其他几个任务。宽依赖通常会导致任务串行执行,因为一个任务的开始必须等到其它任务的结束。这种关系会增加系统的延迟和执行时间。例如,如果任务A依赖于任务

    2024年02月12日
    浏览(44)
  • 什么是IP白名单?为什么要设置IP白名单?

    在互联网的世界里,IP地址是每个设备与网络进行通信的关键标识。然而,并不是所有的IP地址都可以无限制地访问所有网络资源。为了保障网络安全和资源管理,很多网站和服务会设置IP白名单。本文将详细介绍IP白名单的定义、作用以及为什么要设置IP白名单。 1、IP白名单

    2024年04月16日
    浏览(52)
  • 多进程运行含有任意参数的函数、为什么multiprosessing会进行多次初始化

    目录 多进程运行含有任意个参数的函数,以map_async为例 为什么multiprocessing 的了进程会多次初始化?         使用偏函数:偏函数有点像数学中的偏导数,可以让我们只关注其中的某一个变量而不考虑其他变量的影响。 如以下代码中,我们要将set_seq、tokenizer和model作为变量

    2024年02月03日
    浏览(55)
  • java八股文面试[多线程]——为什么要用线程池、线程池参数

     速记7个: 核心、最大 存活2 队列 工厂 拒绝 线程池处理流程: 线程池底层工作原理: 线程复用原理:   知识来源: 【并发与线程】为什么使用线程池,参数解释_哔哩哔哩_bilibili 【并发与线程】线程池处理流程_哔哩哔哩_bilibili 【并发与线程】线程池的底层工作原理_哔哩

    2024年02月11日
    浏览(49)
  • 网通光纤路由器怎么设置为什么提示帐户密码错误

    最近小编因为工作原因又要搬家,新房东家是网通光纤宽带,是光纤进楼后先进的光纤接受器,看外观像是大的交换机。然后每个房间一条网线可以直接插入电脑,找房东开个帐户然后买张冲值卡,下载一个新的连接客户端,输入帐户密码就可以上网了.家里两台电脑需要上网

    2024年02月06日
    浏览(46)
  • 【C++学习】C++入门 | 缺省参数 | 函数重载 | 探究C++为什么能够支持函数重载

    上一篇文章我介绍了C++该怎么学,什么是命名空间,以及C++的输入输出, 这里是传送门:http://t.csdn.cn/Oi6V8 这篇文章我们继续来学习C++的基础知识。 目录 写在前面: 1. 缺省参数 2. 函数重载 3. C++是如何支持函数重载的 写在最后: 在学习C语言的时候,如果一个函数存在参数

    2024年02月13日
    浏览(47)
  • 录屏为什么没有声音?两个步骤检测你的电脑设置

    很多小伙伴在录制完电脑屏幕后,会发现一个问题:录制的电脑屏幕文件只有画面,没有声音。 录屏为什么没有声音? 怎样才能录制有声音的视频?导致录屏没有声音的原因有很多。 下面小编就教您两个步骤检测您的电脑设置,然后手把手教您如何录制带声音的录屏文件,

    2024年02月11日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包