《HBase权威指南》读书笔记12:第十二章 集群管理

运维任务

减少节点

先停止一个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
  • 检查网络问题
  • 检查垃圾回收产生的停顿
  • 监控慢磁盘

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-04 22:01:49

《HBase权威指南》读书笔记12:第十二章 集群管理的相关文章

HBase权威指南读书笔记(一)

第一章HBase简介 1.  HBase即hadoop数据库,HBase是一个分布式的.持久的.强一致性的存储系统,具有近似最优的写性能和出色的读性能. 2.  HBase并不是一个列式存储的数据库,但它利用了磁盘上的列式存储格式.传统的列式存储数据库适合实时存取数据的场景,HBase适合键值对的数据存储,或者有序的数据存储. 3.  一行由若干列组成,若干列又构成了一个列族(column family).列族数量只限于几十,实际上更少.而列的数量没有限制,一个列族里面可以有数百万个列,列值也没

IDA.Pro权威指南 读书笔记

http://www.pediy.com/kssd/pediy12/142766.html 标 题:IDA.Pro权威指南 读书笔记[Made By C_lemon] 作 者:Dstlemoner 时 间:2011-11-14 11:56:17 链 接:http://bbs.pediy.com/showthread.php?t=142766    IDA为反汇编 和逆向破解的 静态分析利器 ! 虽然是利器,但是你不会用的话~那就另当别论了. →     唉.对于刚入门的新手来说,看前人走过的路程

Hadoop权威指南读书笔记

本书中提到的Hadoop项目简述 Common:一组分布式文件系统和通用I/O的组件与接口(序列化.javaRPC和持久化数据结构). Avro:一种支持高效.跨语言的RPC以及永久存储数据的序列化系统. MapReduce:分布式数据处理模型和执行环境,运行于大型商业集群. HDFS:分布式文件系统,运行于大型商用机集群. Pig:一种数据流语言和运行环境,用以检索非常大的数据集.Pig运行在MapReduce和HDFS的集群上. Hive:一个分布式.按列存储的数据仓库.Hive管理HDFS

Android编程权威指南-读书笔记(二)-第一个小程序

Android编程权威指南-读书笔记(二) -第一个小程序 第一个例子介绍 应用名为GeoQuiz.用户通过单击True或False按钮来回答屏幕上的问题,GeoQuiz可即时反馈答案正确与否. 这个例子为我们简单介绍了几个基本组件的使用,以及基本的事件监听.让我们对基本组件的使用和事件的监听有一个基本的了解. 这篇文章分为2个部分,第一部分就是创建简单的UI.第二个部分就是对这个UI增加代码来响应一些操作. (注:所有不明白或者不理解的东西其实都不重要,后面都会有更详细的介绍.) 本章的目标

hbase 学习(十二)集群间备份原理

集群建备份,它是master/slaves结构式的备份,由master推送,这样更容易跟踪现在备份到哪里了,况且region server是都有自己的WAL 和HLog日志,它就像mysql的主从备份结构一样,只有一个日志来跟踪.一个master集群可以向多个slave集群推送,收到推送的集群会覆盖它本地的edits日志. 这个备份操作是异步的,这意味着,有时候他们的连接可能是断开的,master的变化不会马上反应到slave当中.备份个格式在设计上是和mysql的statement-based

第十二章、软件包管理

第十二章.软件包管理 本章内容 ?软件运行环境 ?软件包基础 ?rpm包管理 ?yum管理 ?定制yum仓库 ?编译安装 软件运行和编译 ABI:Application Binary Interface Windows与Linux不兼容 ELF(Executable and Linkable Format) PE(Portable Executable) 库级别的虚拟化: Linux: WINE Windows: Cywin API:Application Programming Interfa

c++第十二章 -(动态管理内存、动态数组和函数返回动态内存)

1.静态内存,编译时申请,存储在栈,如基本数据类型. 2.动态内存由一些没有名字,只有地址的内存块构成.那些内存块是在程序运行期间动态分配的.它们来自一个标准c++库替你管理的“大池子”(内存池),从内存池申请一些内存需要用new语句,他将根据你提供的数据类型分配一块大小适当的内存.你不必担心内存块的尺寸问题. 3.注意在用完内存块之后,应该用delete语句把它返还内存池.另外作为一种附加的保险措施,在释放内存之后还要把关联的指针置NULL,对空指针进行“解引用”会报错. class Comp

css权威指南 读书笔记

网上看见推荐的书总是喜欢买回家,但是大多数时候都不会立即就看,都是在书橱里蒙上了一层灰尘.从毕业到现在,由于公司业务原因,写js多余css,所以就想系统地看看css,并且做一些练习,于是就开始看<css权威指南>,看到了第六章,初步感觉,对于工作一年的我来说,很简单,当然也有一些我不熟悉的知识点,于是整理了下来. 一.@import 1.放在style容器中,且在其他css规则之前 2.每个人@import指令的样式都会加载使用 二.选择器 1.:first-letter 用于选取指定选择器的

JS权威指南读书笔记(四)

第十章 正则表达式 1 正则表达式直接量定义为包含在一对斜杠(/)之间的字符 a /s$/ == new RegExp("s$") 2 直接量字符:所有字母和数字都是按照字面含义进行匹配的,非字母的字符需要通过反斜线(\)作为前缀进行转义. 3 字符类:将直接量字符单独放进方括号内就组成了字符类.一个字符类可以匹配它所包含的任意字符. 转义符\b 具有特殊含义,当用在字符类中,它表示退格符,所以一个元素的字符类[\b]表示一个退格符. 4 重复 5 在待匹配的字符后跟随一个问号(?),