HBase的集群管理(二) | 「掘金日新计划 · 12 月更文挑战」

144 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第21天

一、本篇笔记重点内容:

  • HBase权限管理
  • HBase集群调度
  • 配置管理及节点重启 
  • 日志分析

二、 详细知识点介绍

HBase集群中支持用户的授权管理,可以细粒度地针对单表、单列族、单列进行授权,权限可细分为可读、可写、可执行、可创建、可管理,分别对应READ(R)、WRITE(W)、EXEC(X)、CREATE(C)、ADMIN(A),即RWXCA。

HBase权限管理

1)分配权限

语法: grant < user> < permissions> < table> < column family> < column qualifier> 参数后面用逗号分隔

权限用五个字母表示: "RWXCA".

READ('R'), WRITE('W'), EXEC('X'), CREATE('C'), ADMIN('A')

例如,给用户‘test'分配对表t1有读写的权限,

hbase(main)> grant 'test','RW','t1'

 

2)查看权限

语法:user_permission

例如,查看表t1的权限列表

hbase(main)> user_permission 't1'

 

3)收回权限

与分配权限类似,语法:revoke < user> < table> < column family> < column qualifier>

例如,收回test用户在表t1上的权限

hbase(main)> revoke 'test','t1'

HBase集群调度

集群调度重点是资源的再分配,要经常对表进行分析,对于所涉及的Region要进行合理的调整,如果某些RegionServer服务器上的Region过多,可以动态迁移,将这些Region调整至Region数目较少的RegionServer上;对某些过大的Region文件,通过分裂,可以平衡负载;对一些Region可以归并,以对资源做更有效地利用。

1)移动region

语法:move 'encodeRegionName', 'ServerName'

encodeRegionName指的regioName后面的编码,ServerName指的是master-status的Region Servers列表

示例 hbase(main)>move '4343995a58be8e5bbc739af1e91cd72d', 'db-41.xxx.xxx.org,60020,1390274516739'

 

2)开启/关闭region

语法:balance_switch true|false

hbase(main)> balance_switch false

 

3)手动split

语法1:split 'tableName'

语法2:split 'regionName', 'splitKey'

 

4)手动触发major compaction

语法:

压缩所有region到一个表中:hbase> major_compact 't1'

压缩整个region:hbase> major_compact 'r1'

压缩一个region内的单个列族:hbase> major_compact 'r1', 'c1'

压缩一个表内的单个列族:hbase> major_compact 't1', 'c1'

配置管理及节点重启 

1)修改hdfs配置

hdfs配置位置:/etc/hadoop/conf

同步hdfs配置

cat /home/hadoop/slaves|xargs -i -t scp /etc/hadoop/conf/hdfs-site.xml hadoop@{}:/etc/hadoop/conf/hdfs-site.xml

关闭:

cat /home/hadoop/slaves|xargs -i -t ssh hadoop@{} "sudo $HADOOP_HOME/sbin/hadoop-daemon.sh --config /etc/hadoop/conf stop datanode"

启动:

cat /home/hadoop/slaves|xargs -i -t ssh hadoop@{} "sudo $HADOOP_HOME/sbin/hadoop-daemon.sh --config /etc/hadoop/conf start datanode"

 

2)修改hbase配置

hbase配置位置:

同步hbase配置

cat /home/hadoop/hbase/conf/regionservers|xargs -i -t scp /home/hadoop/hbase/conf/hbase-site.xml hadoop@{}:/home/hadoop/hbase/conf/hbase-site.xml

 

graceful重启

cd ~/hbase

bin/graceful_stop.sh --restart --reload --debug inspurXXX.xxx.xxx.org

日志分析

在集群管理中,不可避免地要处理各类故障,分析并定位故障最好的方式,是查看日志。在HBase中,提供了Master、RegionServer等不同粒度的日志文件,通过查看日志,可以细粒度地定位各类问题。

在hbase/logs目录中,有三类日志文件:

  • q HMaster运行日志:以hbase-root-master-hostname.log文件名存放。

  • q RegionServer运行日志:以hbase-root-regionserver-hostname.log文件存放。

  • q ZooKeeper运行日志:以hbase-root-zookeeper-hostname.log文件名存放。

 

通过"tail -f 日志文件",可以查看日志文件。

 

在具体的日志文件中,有多种日志告警级别,分别为DEBUG、INFO、WARN,在运行调试期间,可以开启DEBUG,但在集群正式运行时,往往要关闭DEBUG级日志输出,调整不同级别的日志输出,通过hbase/conf/目录中的log4j.properties文件来进行。通过将参数DEBUG修改为INFO,即可以只输出INFO级以上日志信息。在集群中修改本文件后,要及时同步到其他节点,并重新启动HBase集群生效。

在不少规模较大的集群中,需要建立统一的日志服务器,进行统一的HBase日志收集、定位、分析、决策。