运维任务

减少节点


先停止一个region服务器


$ ./bin/hbase-daemon.sh stop regionserver
  1. region服务器会先关闭所有region,然后把自己停止。
  2. 等待zk超时后就会过期。
  3. master会将这台机器上的region移动到别的机器上


注意:节点关闭之前要先禁用负载均衡


hbase(main):0.01:0>balance_switch false




graceful_stop


但是region下线会带来一定的服务不可用时间,时间取决于zk的超时。这种方式不是很好。所以最好使用 graceful_stop


./bin/graceful_stop.sh HOSTNAME



graceful_stop 会先把region一个一个移动出来再关闭region服务器


滚动重启


其实就是用一段脚本,一个一个的服务器重启过去


for i in `cat conf/regionservers|sort`;do ./bin/graceful_stop.sh \
--restart --reload --debug $i;done &> /tmp/log.txt &

新增服务器

完全分布式集群

添加master服务器



添加一个备份master,防止单点故障问题。



/hbase/master znode 是临时znode



用以下命令启动一个备份master



$ ./bin/hbase-daemon.sh start master

如果已经有一个master,这条命令会启动一个新的master进程等待zk中的znode被移除



如果使用 --backup 则该master确定为备份master,这样可以指定某一台master为工作的master



$ ./bin/hbase-daemon start master --backup

如果经历了多次failover,就不知道哪台服务器正在工作了,所以要用浏览器一台一台的访问 60010 看过去



0.90.x以后



可以通过配置文件来指定备份服务器



conf/backup-masters



添加region服务器



用户要修改conf/regionservers 文件。



然后使用启动脚本在新节点上启动



$ ./bin/hbase-daemon.sh start regionserver



数据任务



导入/导出



$ hbase jar $HBASE_HOME/hbase-0.91.0-SNAPSHOT.jar export



具体参数请根据提示输入。只有 tablename 和 outputdir 是必填项



注意:outputdir 是导出到的HDFS目录,不是你本机的目录



相同的还有 import 命令,具体自己参考help



CopyTable工具



用户可以用该工具将一张已经存在的表从主机群复制到从集群。或者直接复制一个表



$ hadoop jar $HBASE_HOME/hbase-xxxx-.jar copytable \
--new.name=testtable3 testtable

批量导入



批量导入比import好的一点就是压力不会突然增大。



批量导入会经历一下步骤(具体太复杂)



  1. 使用importtsv工具准备数据
  2. 用  completebulkload (完全批量载入工具)导入数据



复制



就是replication 功能,通过 hbase.replication 来开启。开启之后从集群会自动复制主集群的表



额外的任务

集群共存



为了测试需要,经常会需要部署不止一个集群(相当于mysql里面的多个scheme)



步骤:



  1. 把 HBASE_HOME/conf 复制一份叫 conf2
  2. 修改hbase-env.sh 和 hbase-site.xml 并修改端口等参数
  3. 用 HBASE_CONF_DIR=conf.2 bin/start_hbase.sh 来启动第二个集群

改变日志级别



HBase默认日志级别为debug。可以通过编辑 conf/log4j.properties 来修改日志级别



故障处理

HBase Fsck



Hbase中有一个叫 hbck的工具,内部是用 HBaseFsck 类来实现的修复。用以下命令看参数



$ ./bin/HBase hbck -h

一旦开始运行, hbck 会扫描所有 .META. 的相关信息。然后会比较收集的信息来报告一致性和完整性问题。



一致性问题



检查region 是否同时存在于 .META. 表和 HDFS 中,并检查是否只被指派给唯一的region服务器



 完整性检查



将region于表细节信息比较来找到缺失的region。同时也会检查 region 起止键范围中的空洞,或重叠情况



检查到以上问题后用 fix 选项来修复以上问题



常见问题

调整文件句柄  



通过以下命令来检查当前ulimit设置



$ cat /proc/<PID of JVM>/limits

安全的设置是 32000



Datanode 连接数



Datanode 的并发数量至少为 4096 



压缩



压缩应该一直被打开,不过要按照 11.3中的设置压缩编码库,不然你设置了表的压缩参数 COMPRESSION 就会报错



垃圾回收/内存调优



这个命题就比较大了,参考前面的性能调优部分



稳定性问题



  • 确定region服务器和zk没有开始使用 swap
  • 检查网络问题
  • 检查垃圾回收产生的停顿
  • 监控慢磁盘