前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hbase参数调优

Hbase参数调优

原创
作者头像
liubang01
发布2018-05-08 21:09:13
2.1K4
发布2018-05-08 21:09:13
举报
  1. Hbase 总体架构

Hbase 总体架构图如下图

HMaster作用

1. 管理HRegionServer,实现其负载均衡。

2. 管理和分配HRegion,比如在HRegion split 时分配新的HRegion;在HRegionServer 退出时迁移其内的

HRegion 到其他HRegionServer 上。

3. 实现DDL 操作(Data Definition Language,namespace 和table 的增删改,column familiy 的增删改等)。

4. 管理namespace 和table 的元数据(实际存储在HDFS 上)。

5. 权限控制(ACL)。

HRegionServer作用

1. 存放和管理本地HRegion。

2. 读写HDFS,管理Table 中的数据。

3. Client 直接通过HRegionServer 读写数据(从HMaster 中获取元数据, 找到RowKey 所在的HRe-

gion/HRegionServer 后)

ZooKeeper

1. 存放整个HBase 集群的元数据以及集群的状态信息。

2. 实现HMaster 主从节点的failover。

操作系统部分

ulimit 调整

登录操作系统后用当前用户执行如下命令

[hadoop@10 root]$ ulimit -a

core file size (blocks, -c) 0

data seg size (kbytes, -d) unlimited

scheduling priority (-e) 0

file size (blocks, -f) unlimited

pending signals (-i) 15209

max locked memory (kbytes, -l) 64

max memory size (kbytes, -m) unlimited

open files (-n) 300001

pipe size (512 bytes, -p) 8

POSIX message queues (bytes, -q) 819200

real-time priority (-r) 0

stack size (kbytes, -s) 10240

cpu time (seconds, -t) unlimited

max user processes (-u) 15209

virtual memory (kbytes, -v) unlimited

file locks (-x) unlimited

其中ulimit 参数说明如下

-H 设置硬资源限制,一旦设置不能增加。

-S 设置软资源限制,设置后可以增加,但是不能超过硬资源设置。

-a 显示当前所有的limit 信息。

-c 最大的core 文件的大小, 以blocks 为单位。

-d 进程最大的数据段的大小,以Kbytes 为单位。

-f 进程可以创建文件的最大值,以blocks 为单位。

-l 最大可加锁内存大小,以Kbytes 为单位。

-m 最大内存大小,以Kbytes 为单位。

-n Linux 操作系统对一个进程可以打开最大文件描述符的数量。

-p 管道缓冲区的大小,以Kbytes 为单位。

-s 线程栈大小,以Kbytes 为单位。

-t 最大的CPU 占用时间,以秒为单位。

-u 用户最大可用的进程数。

-v 进程最大可用的虚拟内存,以Kbytes 为单位。

本教程以hadoop 为例,根据自己的实际情况调整ulimit 限制

liunx 内核网络参数调整

在linux 中所有的TCP/IP 参数都位于/proc/sys/net 目录下(请注意,对/proc/sys/net 目录下内容的修改都是临

时的,任何修改在系统重启后都会丢失),例如下面这些重要的参数:

/etc/sysctl.conf 是一个允许你改变正在运行中的Linux 系统的接口。它包含一些TCP/IP 堆栈和虚拟内存系统

的高级选项,可用来控制Linux 网络配置,由于/proc/sys/net 目录内容的临时性,建议把TCPIP 参数的修改添加

到/etc/sysctl.conf 文件, 然后保存文件,使用命令“/sbin/sysctl –p”使之立即生效,样例参数

net.core.rmem_default = 256960

net.core.rmem_max = 513920

net.core.wmem_default = 256960

net.core.wmem_max = 513920

net.core.netdev_max_backlog = 2000

net.core.somaxconn = 2048

net.core.optmem_max = 81920

net.ipv4.tcp_mem = 131072 262144 524288

net.ipv4.tcp_rmem = 8760 256960 4088000

net.ipv4.tcp_wmem = 8760 256960 4088000

net.ipv4.tcp_keepalive_time = 1800

net.ipv4.tcp_keepalive_intvl = 30

net.ipv4.tcp_keepalive_probes = 3

net.ipv4.tcp_sack = 1

net.ipv4.tcp_fack = 1

net.ipv4.tcp_timestamps = 1

net.ipv4.tcp_window_scaling = 1

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_fin_timeout = 30

net.ipv4.ip_local_port_range = 1024 65000

HDFS 参数优化

Hbase 参数优化

RPC 参数优化

hbase.regionserver.handler.count RPC 处理线程数 默认值为30

Memstore 参数优化

bucketcache

打开Hbase 的堆外cache 需要做如下操作, 在hbase-site.xml 中添加如下内容

<property>

<name>hbase.block.data.cachecompressed</name>

<value>true</value>

</property>

<property>

<name>hbase.bucketcache.combinedcache.enabled</name>

<value>true</value>

</property>

<property>

<name>hbase.bucketcache.ioengine</name>

<value>offheap</value>

</property>

<property>

<name>hbase.bucketcache.percentage.in.combinedcache</name>

<value>0.8984</value>

</property>

<property>

<name>hbase.bucketcache.size</name>

<value>8192</value>

</property>

注意事项如下:

• 参数hbase.bucketcache.size 单位为MB

• 同时需要在JVM 参数中加入-XX:MaxDirectMemorySize=10240m

• hbase.bucketcache.size 设置要略小于MaxDirectMemorySize

Hbase 内存管理为堆内存的80% 一半给memstore 使用一半给blockcache 使用,通过如下两个参数进行控制:

<property>

<name>hbase.regionserver.global.memstore.size</name>

<value>0.4</value>

</property>

<property>

<name>hfile.block.cache.size</name>

<value>0.4</value>

</property>

如果您开启了堆外内存作为bucketcache 使用那么可以适当提高hbase.regionserver.global.memstore.size 而降低

hfile.block.cache.size

JVM 优化

JVM 建议使用JDK7+ 版本的JDK,如果堆内存小于4G 建议使用CMSGC,如果大于4G 建议使用G1 垃圾回收

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • HMaster作用
  • HRegionServer作用
  • ZooKeeper
  • 操作系统部分
    • ulimit 调整
      • liunx 内核网络参数调整
        • HDFS 参数优化
        • Hbase 参数优化
          • RPC 参数优化
            • Memstore 参数优化
              • bucketcache
                • JVM 优化
                相关产品与服务
                负载均衡
                负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档