运维任务
减少节点
先停止一个region服务器
$ ./bin/hbase-daemon.sh stop regionserver
- region服务器会先关闭所有region,然后把自己停止。
- 等待zk超时后就会过期。
- 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好的一点就是压力不会突然增大。
批量导入会经历一下步骤(具体太复杂)
- 使用importtsv工具准备数据
- 用 completebulkload (完全批量载入工具)导入数据
复制
就是replication 功能,通过 hbase.replication 来开启。开启之后从集群会自动复制主集群的表
额外的任务
集群共存
为了测试需要,经常会需要部署不止一个集群(相当于mysql里面的多个scheme)
步骤:
- 把 HBASE_HOME/conf 复制一份叫 conf2
- 修改hbase-env.sh 和 hbase-site.xml 并修改端口等参数
- 用 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
- 检查网络问题
- 检查垃圾回收产生的停顿
- 监控慢磁盘
版权声明:本文为博主原创文章,未经博主允许不得转载。