zookeeper logs and snapshot
来自:http://xstarcd.github.io/wiki/Cloud/zookeeper_log_snapshot.html
事务日志可视化转换
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
#!/bin/sh# scriptname: zkLog2txt.sh# zookeeper事务日志为二进制格式,使用LogFormatter方法转换为可阅读的日志if [ -z "$1" -o "$1" = "-h" ];then echo "Useage: $0 <LogFile> [zkDir]" echo "eg:$0 /opt/zpdata/version-2/log.3000002c7 /opt/zookeeper \\|grep '^7/24/13'|grep -A 10 -B 10 GAEI_AF_NotifyServer|more" exit 0fi#LogFile=/dfs/zpdata/version-2/log.100000001LogFile=$1zkDir=$2[ -z "$zkDir" ] && zkDir=/opt/zookeeper[ ! -f "$LogFile" ] && echo "LogFile:$LogFile not exist!" && exit 1[ ! -d "$zkDir" ] && echo "zkDir:$zkDir not exist!" && exit 1[ ! -d "$zkDir/lib" ] && echo "zkDir:$zkDir/lib not exist!" && exit 1#java -cp $zkDir/zookeeper.jar:$zkDir/lib/slf4j-api-1.6.1.jar:$zkDir/lib/slf4j-log4j12-1.6.1.jar:$zkDir/lib/log4j-1.2.15.jar \#org.apache.zookeeper.server.LogFormatter "$LogFile"JAVA_OPTS="$JAVA_OPTS -Djava.ext.dirs=$zkDir:$zkDir/lib"java $JAVA_OPTS org.apache.zookeeper.server.LogFormatter "$LogFile" |
查看zookeeper日志的方法:在zookeeper主机上执行 zkLog2txt.sh <zk日志文件>,如下:
|
1
|
zkLog2txt.sh /hadoop/zookeeper/version-2/log.a00000001 /opt/zookeeper|more |
日志及快照清理
zookeeper主要存放了两类文件,一个是snapshot和log,前者是内存数的快照,后者类似mysql的binlog,将所有与修改数据相关的操作记录在log中,两类文件的目录可在配置文件中指定。
- 参考:
- ZooKeepr日志清理: http://blog.csdn.net/xiaolang85/article/details/21184293
- zookeeper 存储之文件格式分析: http://blog.csdn.net/pwlazy/article/details/8080626
正常运行过程中,ZK会不断地把快照数据和事务日志输出到这两个目录,并且如果没有人为操作的话,ZK自己是不会清理这些文件的,需要管理员来清理,这里介绍4种清理日志的方法。在这4种方法中,推荐使用第一种方法,对于运维人员来说,将日志清理工作独立出来,便于统一管理也更可控。毕竟zk自带的一些工具并不怎么给力,这里是社区反映的两个问题:
- https://issues.apache.org/jira/browse/ZOOKEEPER-957
- http://zookeeper-user.578899.n2.nabble.com/PurgeTxnLog-td6304244.html
文件删除脚本
第一种,也是运维人员最常用的,写一个删除日志脚本,每天定时执行即可:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#!/bin/bash #snapshot file dir dataDir=/home/yinshi.nc/test/zk_data/version-2#tran log dir dataLogDir=/home/yinshi.nc/test/zk_log/version-2#zk log dir logDir=/home/yinshi.nc/test/logs#Leave 66 files count=66 count=$[$count+1] ls -t $dataLogDir/log.* | tail -n +$count | xargs rm -f ls -t $dataDir/snapshot.* | tail -n +$count | xargs rm -f ls -t $logDir/zookeeper.log.* | tail -n +$count | xargs rm -f |
以上这个脚本定义了删除对应两个目录中的文件,保留最新的66个文件,可以将他写到crontab中,设置为每天凌晨2点执行一次就可以了。
zkPurgeTxnLog工具
第二种,使用ZK的工具类PurgeTxnLog,它的实现了一种简单的历史文件清理策略,可以在这里看一下他的使用方法:http://zookeeper.apache.org/doc/r3.4.3/api/index.html
可以指定要清理的目录和需要保留的文件数目,简单使用如下:
|
1
2
|
java -cp zookeeper.jar:lib/slf4j-api-1.6.1.jar:lib/slf4j-log4j12-1.6.1.jar:lib/log4j-1.2.15.jar:conf \org.apache.zookeeper.server.PurgeTxnLog <dataDir> <snapDir> -n <count> |
zkCleanup.sh
第三种,对于上面这个Java类的执行,ZK自己已经写好了脚本,在bin/zkCleanup.sh中,所以直接使用这个脚本也是可以执行清理工作的。
|
1
|
/usr/lib/zookeeper/bin/zkCleanup.sh /hadoop/zookeeper/version-2/ 5 |
自动清理配置项
第四种,从3.4.0开始,zookeeper提供了自动清理snapshot和事务日志的功能,通过配置 autopurge.snapRetainCount 和 autopurge.purgeInterval 这两个参数能够实现定时清理了。这两个参数都是在zoo.cfg中配置的:
|
1
2
3
4
5
|
# 指定清理频率,单位是小时,默认是0,表示不开启自己清理功能。autopurge.purgeInterval=6# 和上面的参数搭配使用,指定需要保留的文件数目,默认是保留3个。autopurge.snapRetainCount=5 |
zookeeper logs and snapshot的更多相关文章
- zookeeper logs is missing zookeeper 日志丢失
ERROR [main:QuorumPeerMain@85] - Invalid config, exiting abnormally Invalid config, exiting abnormal ...
- solrCloud+tomcat+zookeeper集群配置
solrcolud安装solrCloud+tomcat+zookeeper部署 转载请出自出处:http://eksliang.iteye.com/blog/2107002 http://eksli ...
- zookeeper多节点配置
单机多节点模式 zookeeper解压, 放到 /opt/zookeeper/ 下, 同目录再放一个 server1目录, 下面建data和log两个目录用于存放数据和日志 zoo.cfg [milt ...
- centos下安装ZooKeeper
1.需求 安装ZooKeeper,metaQ 2.下载 http://zookeeper.apache.org/releases.html 当前stable版是zookeeper-3.4.6 3.解压 ...
- Zookeeper 安装和配置
单机模式 下载zookeeper的安装包之后, 解压到合适目录. 进入zookeeper目录下的conf子目录, 创建zoo.cfg: tickTime=2000 dataDir=/Users/app ...
- ZooKeeper 学习笔记
ZooKeeper学习笔记 1. zookeeper基本概念 zookeeper是一个分布式的,开放源码的分布式应用程序协调服务,是hadoop和Habase的重要组件,是为分布式应用提供一致性服 ...
- Zookeeper + Kafka 集群搭建
第一步:准备 1. 操作系统 CentOS-7-x86_64-Everything-1511 2. 安装包 kafka_2.12-0.10.2.0.tgz zookeeper-3.4.9.tar.gz ...
- SolrCloud(一)搭建Zookeeper
搭建Zookeeper 三台服务器: AMouse: 192.168.3.201 BCattle : 192.168.3.202 Ctiger : 192.168.3.203 一 下载Zookee ...
- Download and Install Apache Zookeeper on Ubuntu
http://www.techburps.com/misc/download-and-install-apache-zookeepr/36 In previous article of this Bi ...
随机推荐
- python 全栈开发,Day50(Javascript简介,第一个JavaScript代码,数据类型,运算符,数据类型转换,流程控制,百度换肤,显示隐藏)
一.Javascript简介 Web前端有三层: HTML:从语义的角度,描述页面结构 CSS:从审美的角度,描述样式(美化页面) JavaScript:从交互的角度,描述行为(提升用户体验) Jav ...
- Lucene.Net简介
说明:Lucene.Net 只是一个全文检索开发包 .查询数据的时候从Lucene.Net查询数据.可以看做是一个提供了全文检索功能的数据库. 注意:只能搜索文本字符串. 重要概念:分词,基于词库的分 ...
- Memcache简单使用
1:Memcache的下载https://pan.baidu.com/s/1dFnB3NV/08中 简单安装:直接点击文件夹中的memcached.exe文件即可.但是每次使用都需要双击,比较麻烦.所 ...
- 去掉li列表前面的空格
如果用li做列表的话,li前面的空格其实是li的默认样式.因为li位于ul里面,所以,有空格代表了ul肯定有padding值. ul { margin: 0px; padding: 0px; }
- C#并行编程(3):并行循环
初识并行循环 并行循环主要用来处理数据并行的,如,同时对数组或列表中的多个数据执行相同的操作. 在C#编程中,我们使用并行类System.Threading.Tasks.Parallel提供的静态方法 ...
- 【Java并发核心四】Executor 与 ThreadPoolExecutor
Executor 和 ThreadPoolExecutor 实现的是线程池,主要作用是支持高并发的访问处理. Executor 是一个接口,与线程池有关的大部分类都实现了此接口. ExecutorSe ...
- 漫谈可视化Prefuse(五)
伴随着前期的基础积累,翻过API,读过一些Demo,总觉得自己已经摸透了Prefuse,小打小闹似乎已经无法满足内心膨胀的自己.还记得儿时看的<武状元苏乞儿>中降龙十八掌最后一张居然是空白 ...
- Python学习——异常处理
1.异常基础: 在编程过程中为了增加友好性,在程序出现bug时一般不会将错误信息显示给用户,而是现实一个提示的页面 基本语法: try: pass except Exception as e: pri ...
- BZOJ.4892.[TJOI2017]DNA(后缀自动机/后缀数组)
题目链接 \(Description\) 给出两个串\(S,T\),求\(T\)在\(S\)中出现了多少次.出现是指.可以有\(3\)次(\(3\)个字符)不匹配(修改使其匹配). \(Solutio ...
- Python常见下划线
python中常见的下划线意义 Python中常常使用下划线里对变量进行修饰,通常作为变量的前缀或者后缀出现,被修饰的变量一般存在特殊的用法: _XXX:不能被from module import _ ...