Raft 算法的学习笔记和个人理解。
Raft 译文
MapReduce 论文和实验笔记
总结下 6.824 MapReduce lab 的论文笔记和实验过程。本文代码:MIT6.824/mapreduce
nsx RPC 框架
总结下 RPC 框架 [wuYin/nsx](<http://wibliss.com) v0.1 版的设计思路和工作流程。
前言
不久前内部做了 RPC 的技术分享,参考分享的设计思路写了个简化的 RPC 框架:nsx,后续完善和优化更多 feature
关于 RPC
我的简单理解是:将本地函数调用网络化,通过网络传递参数、执行并返回调用结果。网络调用会面临以下问题:
1. 通信协议
RPC 调用双方的进程是指 socket(IP:Port)唯一标识的进程,二者一般是指在同一局域网内不同主机上的两个进程,当然也可以只是本地系统中两个端口不一样的进程。
为保证网络调用的可靠性,传输层协议选择 TCP,但相比 UDP 每个数据报独立传输界线分明的特点,TCP 流式传输的二进制数据包之间是没有分界的。既然选择 TCP,那包的分割和拼接操作就需要由应用层的程序来实现。可参考 Redis Server 和 Client 间的通信协议 protocol
2. 执行网络调用
本地调用:多个函数代码都在进程的代码段内存区域中,相互调用成本低,但耦合度高。
网络调用:进程 A 想调用进程 B 中的函数,需要像本地调用一样,将函数名、函数实参值通过网络发送给进程 B,等待函数执行完毕后将返回值通过网络响应给进程 A,交互的数据即通信的协议包中的包内容。那进程 A 如何调用非本地的函数呢?答案是使用 反射。
RPC 调用的核心代码如下,在进程 A 中被执行 add 调用的看似只是初始值为 nil
的 fakeAdd,但其实在 MakeFunc
中包含了复杂的网络调用过程:
1 | package main |
3. 服务注册
假设现有服务 add-service 实现了加法功能,即实现了 Add
函数能传入 2 个整数计算后返回和,假设已经是运行在主机 1 上的进程 A。现在主机 2 上的进程 B 要调用 Add
函数进行计算,那就需要先知道 add-service 的网络地址(IP:Port)是什么?
3.1 初步方案:调用方和被调用方都要维护全部对方的地址
在主机 2 的内存中维护 [add-service : addr] 的哈希映射,进程 B 直接取地址调用即可。这就是最简单的 Registry,虽然实现了取地址功能,但缺陷也很明显:
发布低效
每次 add-service 更新功能发布后需通知主机 2 更新 map 中的 addr,如果只有一个调用方更新一次还好,如果有 100 个调用方呢?那每次发布都需要逐一告知其他 100 台主机更新服务地址…效率很低,如果想改善可使用 UDP 广播机制一次性通知完毕,但就算你实现了,可靠性肯定不如 zk 的 broadcast。因此服务方和调用方都要维护对方的地址。服务方每次发布都要通知调用方地址变化,调用方地址变更也要通知服务方:机制可靠性低
万一 add-service 因为某个操作 panic 了或 disk full 导致服务不可用,其他调用方每次都要傻傻的等待调用超时返回,而不是被告知说服务下线了不必再调用。如果 add-service 是多主机的,其他调用方还要实现服务切换功能。在分布式环境中,想要实现服务的高度可靠性并不容易。
3.2 可靠方案:使用分布式协调服务 zookeeper 来实现注册中心
参考 dubbo 注册中心的结构:Introduction to Dubbo
参与对象:
- Provider:服务提供者,即被调用方,如主机 1 上 add-service 的进程 A
- Consumer: 服务消费者,即调用方,如主机 2 上的进程 B
- Registry:注册中心,add-service 注册,进程 B 获取服务调用地址的地方
工作流程:
- Register: 每次服务发布 Provider 都会向 Registry 发起注册,将它的服务名称和网络地址存储在注册中心
- Subscribe:很多调用方 Consumer 将想调用的服务订阅到 Registry 中,当某个关心的服务上线或下线时都会 Notify Consumer
- Invoke:Consumer 获取到服务地址后,直接发起调用并阻塞等待返回响应或调用超时
现在的 nsx 支持上边 2 种方案:简单 Registry 和分布式 zk Registry,但是没有 Notify 和 Monitor 功能,后续使用 zk 的 event 通知机制继续完善。
nsx 架构
nsx 框架分为了三个子项目:nsx 来完成通信。
Tron 网络框架
现在的 v0.2 相比 v0.1 只加入了包序列管理功能。文档地址:docs/v0.1.md
Tron 定义了自己的 Server 和 Client,并将二者的每次连接都抽象成 Session,它们数据交互如下:
注:虚线的 connect / dispatch 过程只会进行一次,实线的 packet 交互过程会进行多次。
其中 Client 和 ServerWorker 使用相同的代码,作为通信双方都能在连接超时后进行二次规避策略的重连直到超过指定次数,此外对于 packet 的读写提供了 Codec 接口,Tron 提供了默认的 codec 实现,同时也让使用 Tron 框架的第三方能够自定义 packet 的读写格式,如 nsx 和 nsx-cli 就是复用了 Redis Protocol 进行调用交互。
nsx: Service Provider
调用流程:每个 Provider 在实例化时都会启动一个底层 Tron Server 运行并监听,并且会将自身服务的实现托管到 ServiceManager 中,在 Manager 内部会将服务实现的各个方法取反射值并记录方法 in 和 out 的参数 Type 以便在被调用时做校验。当接收到调用请求后,使用自定义的 Codec 解码出调用参数,再告诉 manager 执行调用并将调用结果异步写回给调用方。
注册中心:nsx 内部实现了一个默认的 Registry Proxy,它本身只是发起注册/下线请求的代理,至于注册中心本身是由 nsx Server 实例内部来维护的,它就是上边说的注册中心初步方案。此外还提供了 zk 实现的注册中心功能,能进行服务的注册和调用,但基于 event 的服务发布功能还待实现。
nsx-cli: Service Consumer
调用流程:每个 Consumer 在实例化时会定时从配置好的服务中心拉取自己关心的服务地址,并且逐一启动底层的 Tron Client 进行连接,连接成功后待命等待被调用。此外会对所有服务的方法进行网络调用的包装,当调用执行时阻塞等待调用响应或超时。
总结
整个 nsx RPC 框架的大概工作流程如上,其实还有很多可以改进的地方,如:
- 服务通知:通过 zk event 实现服务订阅的 Notify
- worker 池化:Server 维护一定数量 worker goroutine pool 用于请求处理,节省内存资源
对了,nsx 项目名来源于 Grand Tour S02 E01 中的很酷的 Honda NSX 混动跑车,Tron 是上海迪士尼乐园极速光轮项目的名字,我也很喜欢电影《TRON》中 Draft Punk 的配乐,项目都很酷,期待 v0.2 更多特性。
系统原理
系统原理
系统原理旨在总结大型系统中常用的核心技术,这也架构设计的基石。
内容
- 系统原理面试题
- 分布式基础理论 - 关键词:拜占庭将军问题、CAP、BASE
- 分布式事务 - 关键词:2PC、TCC、本地消息表、MQ 消息、SAGA
- 负载均衡 - 关键词:轮询、随机、最少连接、源地址哈希、一致性哈希
- 缓存 - 关键词:进程内缓存、分布式缓存、缓存雪崩、缓存穿透、缓存击穿、缓存更新、缓存预热、缓存降级
- 消息队列 - 关键词:重复消费、消息丢失、消息顺序性、消息积压
- 分布式锁
- 分布式会话 - 关键词:粘性 Session、Session 复制共享、基于缓存的 session 共享
- 分布式存储
- 分布式 ID - 关键词:UUID、自增序列、雪花算法、Leaf
- 分库分表
- RPC
学习资料
书籍
- 《大型网站技术架构:核心原理与案例分析》 - 浅显易懂的将解大型网站架构演进之路;简介了大型系统所面临的挑战以及核心技术点。
- 大型网站系统与 Java 中间件实践
- 亿级流量网站架构核心技术:跟开涛学搭建高可用高并发系统
- 企业 IT 架构转型之道:阿里巴巴中台战略思想与架构实战 - 阐述阿里巴巴中台系统发展,更多的是讲解应用场景和能力,没有讲解技术细节。
- 逆流而上:阿里巴巴技术成长之路 - 主要以运维的视角阐述系统运维中遇到的困难,定位思路以及解决方法。
教程
合理对文档进行归类
作为程序员,想必每个人都会有大量的资料、数据。按照条理清晰的目录结构去分类化存储,十分有助于管理文件。
目录结构
以下是我个人整理的目录结构:
1 | . |
注:如果您使用的操作系统是 Mac 这种可以为目录或文件添加 tag 的操作系统,那么您可以根据自己的喜好更细致化的管理。
2. 文件管理软件
选用便利的文件管理软件,可以让你的文件管理如虎添翼。这里推荐几款经典的文件管理工具。
2.1. Clover
Clover 是 Windows Explorer 资源管理器的一个扩展,为其增加类似谷歌 Chrome 浏览器的多标签页功能。
2.2. Everything
Everything 可以立即在 windows 系统中找到制定名称的文件和文件夹。
2.3. Wox
Wox 是一款简单易用的 Windows 启动器。可以把它视为 windows 版的 Alfred。
2.4. Q-dir
Q-dir 是轻量的文件管理器,特点鲜明,各种布局视图切换灵活,默认四个小窗口组成一个大窗口,操作快捷。
合理编排技术文档
文档采用 Markdown 语法书写。
📚 「参考」Markdown 语法可以参考:
1. 标题
1.1. 标题层级
标题分为四级。
- 一级标题:文章的标题
- 二级标题:文章内容的大标题
- 三级标题:二级标题下一级的标题
- 四级标题:三级标题下一级的标题
1.2. 标题原则
- 一篇文章中应该尽力避免同名标题。
- 一级标题下,不能直接出现三级标题。
- 标题要避免孤立编号(即同级标题只有一个)。
- 下级标题不重复上一级标题的内容。
- 谨慎使用四级标题,尽量避免出现,保持层级的简单和防止出现过于复杂的章节。如果三级标题下有并列性的内容,建议只使用项目列表(Item list)。
2. 文本
2.1. 字间距
全角中文字符与半角英文字符之间,应有一个半角空格。
1 | 反例:本文介绍如何快速启动Windows系统。 |
全角中文字符与半角阿拉伯数字之间,有没有半角空格都可,但必须保证风格统一,不能两种风格混杂。
1 | 正例:2011年5月15日,我订购了5台笔记本电脑与10台平板电脑。 |
半角的百分号,视同阿拉伯数字。
英文单位若不翻译,单位前的阿拉伯数字与单位间不留空格。
1 | 反例:一部容量为 16 GB 的智能手机 |
半角英文字符和半角阿拉伯数字,与全角标点符号之间不留空格。
1 | 反例:他的电脑是 MacBook Air 。 |
2.2. 句子
- 避免使用长句。一个句子建议不超过 100 字或者正文的 3 行。
- 尽量使用简单句和并列句,避免使用复合句。
2.3. 写作风格
尽量不使用被动语态,改为使用主动语态。
1 | 反例:假如此软件尚未被安装, |
不使用非正式的语言风格。
1 | 反例:Lady Gaga 的演唱会真是酷毙了,从没看过这么给力的表演!!! |
用对“的”、“地”、“得”。
1 | 她露出了开心的笑容。 |
使用代词时(比如“其”、“该”、“此”、“这”等词),必须明确指代的内容,保证只有一个含义。
1 | 反例:从管理系统可以监视中继系统和受其直接控制的分配系统。 |
名词前不要使用过多的形容词。
1 | 反例:此设备的使用必须在接受过本公司举办的正式的设备培训的技师的指导下进行。 |
单个句子的长度尽量保持在 20 个字以内;20 ~ 29 个字的句子,可以接受;30 ~ 39 个字的句子,语义必须明确,才能接受;多于 40 个字的句子,在任何情况下都不能接受。
1 | 反例:本产品适用于从由一台服务器进行动作控制的单一节点结构到由多台服务器进行动作控制的并行处理程序结构等多种体系结构。 |
同样一个意思,尽量使用肯定句表达,不使用否定句表达。
1 | 反例:请确认没有接通装置的电源。 |
避免使用双重否定句。
1 | 反例:没有删除权限的用户,不能删除此文件。 |
2.4. 英文处理
英文原文如果使用了复数形式,翻译成中文时,应该将其还原为单数形式。
1 | 英文:⋯information stored in random access memory (RAMs)⋯ |
外文缩写可以使用半角圆点(.
)表示缩写。
1 | U.S.A. |
表示中文时,英文省略号(⋯
)应改为中文省略号(……
)。
1 | 英文:5 minutes later⋯ |
英文书名或电影名改用中文表达时,双引号应改为书名号。
1 | 英文:He published an article entitled "The Future of the Aviation". |
第一次出现英文词汇时,在括号中给出中文标注。此后再次出现时,直接使用英文缩写即可。
1 | IOC(International Olympic Committee,国际奥林匹克委员会)。这样定义后,便可以直接使用“IOC”了。 |
专有名词中每个词第一个字母均应大写,非专有名词则不需要大写。
1 | “American Association of Physicists in Medicine”(美国医学物理学家协会)是专有名词,需要大写。 |
3. 段落
3.1. 段落原则
- 一个段落只能有一个主题,或一个中心句子。
- 段落的中心句子放在段首,对全段内容进行概述。后面陈述的句子为核心句服务。
- 一个段落的长度不能超过七行,最佳段落长度小于等于四行。
- 段落的句子语气要使用陈述和肯定语气,避免使用感叹语气。
- 段落之间使用一个空行隔开。
- 段落开头不要留出空白字符。
3.2. 引用
引用第三方内容时,应注明出处。
1 | One man’s constant is another man’s variable. — Alan Perlis |
如果是全篇转载,请在全文开头显著位置注明作者和出处,并链接至原文。
1 | 本文转载自 WikiQuote |
使用外部图片时,必须在图片下方或文末标明来源。
1 | 本文部分图片来自 Wikipedia |
3.3. 强调
一些特殊的强调内容可以按照如下方式书写:
🔔 『注意』
💡 『提示』
📚 『参考』
4. 数值
4.1. 半角数字
数字一律使用半角形式,不得使用全角形式。
1 | 反例: 这件商品的价格是1000元。 |
4.2. 千分号
数值为千位以上,应添加千分号(半角逗号)。
1 | XXX 公司的实收资本为 RMB1,258,000。 |
对于 4 ~ 6 位的数值,千分号是选用的,比如1000
和1,000
都可以接受。对于 7 位及以上的数值,千分号是必须的。
多位小数要从小数点后从左向右添加千分号,比如4.234,345
。
4.3. 货币
货币应为阿拉伯数字,并在数字前写出货币符号,或在数字后写出货币中文名称。
1 | $1,000 |
4.4. 数值范围
表示数值范围时,用~
连接。参见《标点符号》一节的“连接号”部分。
带有单位或百分号时,两个数字都要加上单位或百分号,不能只加后面一个。
1 | 反例:132~234kg |
4.5. 变化程度的表示法
数字的增加要使用“增加了”、“增加到”。“了”表示增量,“到”表示定量。
1 | 增加到过去的两倍 |
数字的减少要使用“降低了”、“降低到”。“了”表示增量,“到”表示定量。
1 | 降低到百分之八十 |
不能用“降低 N 倍”或“减少 N 倍”的表示法,要用“降低百分之几”或“减少百分之几”。因为减少(或降低)一倍表示数值原来为一百,现在等于零。
5. 符号
5.1. 符号原则
- 中文语句的标点符号,均应该采取全角符号,这样可以保证视觉的一致。
- 如果整句为英文,则该句使用英文/半角标点。
- 句号、问号、叹号、逗号、顿号、分号和冒号不得出现在一行之首。
5.2. 句号
中文语句中的结尾处应该用全角句号(。
)。
句子末尾用括号加注时,句号应在括号之外。
1 | 反例:关于文件的输出,请参照第 1.3 节(见第 26 页。) |
5.3. 逗号
逗号,
表示句子内部的一般性停顿。
注意避免“一逗到底”,即整个段落除了结尾,全部停顿都使用逗号。
5.4. 顿号
句子内部的并列词,应该用全角顿号(、
) 分隔,而不用逗号,即使并列词是英语也是如此。
1 | 反例:我最欣赏的科技公司有 Google, Facebook, 腾讯, 阿里和百度等。 |
英文句子中,并列词语之间使用半角逗号(,
)分隔。
1 | 例句:Microsoft Office includes Word, Excel, PowerPoint, Outlook and other components. |
5.5. 分号
分号;
表示复句内部并列分句之间的停顿。
5.6. 引号
引用时,应该使用全角双引号(“ ”
),注意前后双引号不同。
1 | 例句:许多人都认为客户服务的核心是“友好”和“专业”。 |
引号里面还要用引号时,外面一层用双引号,里面一层用单引号(‘ ’
),注意前后单引号不同。
1 | 例句:鲍勃解释道:“我要放音乐,可萨利说,‘不行!’。” |
5.7. 圆括号
补充说明时,使用全角圆括号()
,括号前后不加空格。
1 | 例句:请确认所有的连接(电缆和接插件)均安装牢固。 |
5.8. 冒号
全角冒号(:
)常用在需要解释的词语后边,引出解释和说明。
1 | 例句:请确认以下几项内容:时间、地点、活动名称,以及来宾数量。 |
表示时间时,应使用半角冒号(:
)。
1 | 例句:早上 8:00 |
5.9. 省略号
省略号……
表示语句未完、或者语气的不连续。它占两个汉字空间、包含六个省略点,不要使用。。。
或...
等非标准形式。
省略号不应与“等”这个词一起使用。
1 | 反例:我们为会餐准备了香蕉、苹果、梨…等各色水果。 |
5.10. 感叹号
应该使用平静的语气叙述,尽量避免使用感叹号!
。
不得多个感叹号连用,比如!!
和!!!
。
5.11. 破折号
破折号————
一般用于做进一步解释。破折号应占两个汉字的位置。
1 | 例句:直觉————尽管它并不总是可靠的————告诉我,这事可能出了些问题。 |
5.12. 连接号
连接号用于连接两个类似的词。
以下场合应该使用直线连接号(-
),占一个半角字符的位置。
- 两个名词的复合
- 图表编号
1 | 例句:氧化-还原反应 |
以下场合应该使用波浪连接号(~
),占一个全角字符的位置。
- 数值范围(例如日期、时间或数字)
1 | 例句:2009 年~2011 年 |
注意,波浪连接号前后两个值都应该加上单位。
波浪连接号也可以用汉字“至”代替。
1 | 例句:周围温度:-20°C 至 -10°C |
6. 结构
6.1. 目录结构
技术手册目录结构是一部完整的书,建议采用下面的结构。
- 简介(Introduction) - [必选][目录|文件] 提供对产品和文档本身的总体的、扼要的说明
- 入门篇(Quickstart) - [可选][文件] 如何最快速地使用产品
- 基础篇(Basics) - [必选][目录] 又称”使用篇“,提供初级的使用教程
- 环境准备(Prerequisite) - [可选][文件] 软件使用需要满足的前置条件
- 安装(Installation) - [可选][文件] 软件的安装方法
- 配置(Configuration) - [可选][目录|文件] 软件的配置
- 特性(Feature) - [必选][目录|文件] 软件的功能特性
- 进阶篇(Advanced) - [可选][目录] 又称”开发篇“,提供中高级的开发教程
- 原理(Principle) - [可选][目录|文件] 软件的原理
- 设计(Design) - [可选][目录|文件] 软件的设计,如:架构、设计思想等
- 实战篇(Action) - [可选][目录] 提供一些具有实战意义的示例说明
- API(API) - [可选][目录|文件] 软件 API 的逐一介绍
- 常见问题(FAQ) - [可选][目录|文件] 常见问题解答
- 附录(Appendix) - [可选][目录] 不属于教程本身、但对阅读教程有帮助的内容
- 命令(Command) - [可选][目录] 命令
- 资源(Resource) - [必选][文件] 资源
- 术语(Glossary) - [可选][文件] 名词解释
- 技巧(Recipe) - [可选][文件] 最佳实践
- 版本(Changelog) - [可选][文件] 版本说明
- 反馈(Feedback) - [可选][文件] 反馈方式
下面是两个真实范例,可参考。
6.2. 文件名
文档的文件名不得含有空格。
文件名必须使用半角字符,不得使用全角字符。这也意味着,中文不能用于文件名。
1 | 反例: 名词解释.md |
文件名建议只使用小写字母,不使用大写字母。
1 | 反例:TroubleShooting.md |
为了醒目,某些说明文件的文件名,可以使用大写字母,比如README
、LICENSE
。
文件名包含多个单词时,单词之间建议使用半角的连词线(-
)分隔。
1 | 反例:advanced_usage.md |
7. Emoji
在 markdown 文档中,普遍会使用 emoji,帮助理解内容。但是,如果滥用 emoji,可能会适得其反。
这里,将一些比较约定俗成的 emoji 表情使用场景列举一下:
- 💡 提示 - [推荐]
- 🔔 注意、警告 - [推荐]
- ⭕ 正确 - [推荐]
- ❌ 错误 - [推荐]
- ❓ 问题 - [推荐]
- ⛔ 禁止 - [推荐]
- 🚧 未完待续、有待补充 - [推荐]
- 📚 参考、参考资料 - [可选]
- ⌨ 源码 - [可选]
8. 参考
- 产品手册中文写作规范, by 华为
- 写作规范和格式规范, by DaoCloud
- 技术写作技巧在日汉翻译中的应用, by 刘方
- 简体中文规范指南, by lengoo
- 文档风格指南, by LeanCloud
- 豌豆荚文案风格指南, by 豌豆荚
- 中文文案排版指北, by sparanoid
- 中文排版需求, by W3C
- 为什么文件名要小写?, by 阮一峰
HBase Java API
HBase Java API
更多内容
📦 本文已归档到:「blog」
参考资料
https://blog.csdn.net/jiyiqinlovexx/article/details/36526433
https://blog.csdn.net/u010967382/article/details/38046821
HBase 命令
HBase 命令
- 1. 连接 HBase
- 2. 查询帮助
- 3. 创建表
- 4. 查看表信息
- 5. 查看表详细信息
- 6. 向表中写数据
- 7. 扫描表
- 8. 查询 row
- 9. 禁用、启用表
- 10. 删除表
- 11. 停止 HBase
1. 连接 HBase
1 | $ ./bin/hbase shell |
2. 查询帮助
1 | help |
3. 创建表
1 | create 'table1','columnFamliy1','columnFamliy2' |
说明:
创建一张名为 table1 的 HBase 表,columnFamliy1、columnFamliy2 是 table1 表的列族。
4. 查看表信息
1 | list 'table1' |
5. 查看表详细信息
1 | describe 'table1' |
6. 向表中写数据
1 | put 'table1', 'row1', 'columnFamliy1:a', 'valueA' |
7. 扫描表
1 | hbase> scan 'hbase:meta' |
8. 查询 row
1 | get 'table1', 'row1' |
9. 禁用、启用表
1 | hbase(main):008:0> disable 'test' |
10. 删除表
1 | hbase(main):011:0> drop 'test' |
11. 停止 HBase
1 | $ ./bin/stop-hbase.sh |
HBase 维护
HBase 维护
配置文件
backup-masters
- 默认情况下不存在。列出主服务器应在其上启动备份主进程的主机,每行一个主机。hadoop-metrics2-hbase.properties
- 用于连接 HBase Hadoop 的 Metrics2 框架。hbase-env.cmd
and hbase-env.sh - 用于 Windows 和 Linux / Unix 环境的脚本,用于设置 HBase 的工作环境,包括 Java,Java 选项和其他环境变量的位置。hbase-policy.xml
- RPC 服务器用于对客户端请求进行授权决策的默认策略配置文件。仅在启用 HBase 安全性时使用。hbase-site.xml
- 主要的 HBase 配置文件。此文件指定覆盖 HBase 默认配置的配置选项。您可以在 docs / hbase-default.xml 中查看(但不要编辑)默认配置文件。您还可以在 HBase Web UI 的 HBase 配置选项卡中查看群集的整个有效配置(默认值和覆盖)。log4j.properties
- log4j 日志配置。regionservers
- 包含应在 HBase 集群中运行 RegionServer 的主机列表。默认情况下,此文件包含单个条目 localhost。它应包含主机名或 IP 地址列表,每行一个,并且如果群集中的每个节点将在其 localhost 接口上运行 RegionServer,则应仅包含 localhost。
环境要求
- Java
- HBase 2.0+ 要求 JDK8+
- HBase 1.2+ 要求 JDK7+
- SSH - 环境要支持 SSH
- DNS - 环境中要在 hosts 配置本机 hostname 和本机 IP
- NTP - HBase 集群的时间要同步,可以配置统一的 NTP
- 平台 - 生产环境不推荐部署在 Windows 系统中
- Hadoop - 依赖 Hadoop 配套版本
- Zookeeper - 依赖 Zookeeper 配套版本
运行模式
单点
hbase-site.xml 配置如下:
1 | <configuration> |
分布式
hbase-site.xm 配置如下:
1 | <configuration> |