BookKeeper基本使用
更新日期:
[TOC]
BookKeeper基本使用
在看pulsar的时候,发现它底层的存储使用的是Apache BookKeeper,所以对他的使用做下基本介绍。在看Bookkeeper的时候,发现有几个挺不错的文章,链接如下:
- Hadoop NameNode 高可用 (High Availability) 实现解析
- BookKeeper设计介绍及其在Hadoop2.0 Namenode HA方案中的使用分析
- HDFS之Bookkeeper工作原理分析
- BookKeeper 集群搭建及使用
下面做下基本API的使用,想要深入可以参考源码或者文章。
1. 安装
注意: BookKeeper依赖zookeeper集群,请先提前准备
解压文件到相应目录,目录的基本结构如下,你也可以clone代码自己编译打包:
1 | bookkeeper-server-4.9.1 |
- 修改配置文件
conf/bk_server.conf
配置 | 说明 | 默认值 | 备注 |
---|---|---|---|
bookiePort | bookie实例监听的TCP端口 | 3181 | |
advertisedAddress | 绑定的主机名 | 可以改成 localhost | |
zkServers | 逗号分隔的zk集群地址 | localhost:2181 | |
journalDirectories | bookie存放write-ahead log (WAL)的目录,逗号分隔 | /tmp/bk-txn | 可以修改一下, 如/usr/local/var/bookkeeper/bk-txn |
ledgerDirectories | bookie存放数据ledger的目录,逗号分隔 | /tmp/bk-data | 可以修改一下, 如/usr/local/var/bookkeeper/bk-data |
httpServerEnabled | 是否打开http服务 | false | 可以改为true,api地址 |
httpServerPort | http服务端口 | 8080 | 可以改为 3182 |
dlog.bkcEnsembleSize | 默认bookie的最小节点数量 | 3 | 本地可换成1 |
dlog.bkcWriteQuorumSize | 默认日志的冗余数量 | 2 | |
dlog.bkcAckQuorumSize | 日志写入成功多少份才会向client返回成功 | 2 |
- 初始化元数据(初始化一次即可)
1 | $ bin/bookkeeper shell metaformat |
- 启动bookie服务
1 | # 后台进程启动 |
注:你也可以使用local的模式启动,参考文档
2. 基本的代码操作
BookKeeper提供的多套API来操作:
- ledger API: 直接操作ledgers的底层API
- Ledger Advanced API: 比Ledger API高级、灵活些
- DistributedLog API: 高层次的API,提供更好的抽象
如果你想要使用起来像日志一样滚动、按需保留数据等操作的话,直接使用Ledger API可能需要你手动管理Ledgers列表,比较麻烦。所以在这种场景下建议使用DistributedLog API。
2.1 使用 ledger API
- 加入maven依赖
1 | <!-- in your <properties> block --> |
- 初始化客户端(语言选择kotlin)
1 | val bookKeeper = run { |
- 创建 Ledger
1 | // 也可以使用 asyncCreateLedger 异步创建 |
- 读取数据
1 | // 0 表示 ledgerID |
其他操作见:ledger API
2.2 使用 Ledger Advanced API
从 v4.5.0
版本开始,增加 Ledger Advanced API,使用方式基本和Ledger API差不多(在API尾部加了个Adv
,如创建变成了createLedgerAdv
),功能增加了ledgerID
的自定义传入等。
2.3 使用 DistributedLog
参考:https://bookkeeper.apache.org/distributedlog/docs/latest/user_guide/api/core
收藏文章

登录
表情删除后不可恢复,是否删除
取消
确定
图片正在上传,请稍后...
取消上传
评论内容为空!
还没有评论,快来抢沙发吧!
畅言云评
站长点击我去广告>
热评话题
- hive解决元数据乱码 | Ice の Mimosa
- Spark ALS应用与理解 | Ice の Mimosa
- 【Lombok原理3】实现一个简单的lombok | Ice の Mimosa
- 【Lombok原理1】自定义注解处理器 | Ice の Mimosa
- JVM学习05-字节码执行过程和JVM指令集 | Ice の Mimosa
- 【转】Https前世今生 | Ice の Mimosa
- 非结构化数仓建模和Schema-Less OLAP构建(零) | Ice の Mimosa