Apache Accumulo的是一个高度可扩展的结构化存储,基于谷歌的BigTable。Accumulo是用Java编写的,并在Hadoop分布式文件系统(HDFS),这是流行的Apache Hadoop项目的一部分工作。Accumulo支持高效存储和检索的结构化数据,包括查询范围,并提供支持使用Accumulo表作为输入和输出的MapReduce作业。
Accumulo设有自动负载平衡和分区,数据压缩和细粒度的安全标签。
2。Accumulo设计
2.1。数据模型
Accumulo提供了丰富的数据模型不是简单的键 - 值存储,但不是完全的关系数据库。数据表示为键 - 值对,其中键和值是由以下元素:
Key
Value
Row ID
Column
Timestamp
Family
Qualifier
Visibility
键和值的所有元素都表示为字节数组时间戳,这是一个长期的除外。Accumulo各种键的元素和字典升序排列。时间戳以递减顺序排序,首先出现在一个连续的扫描,以便以后的版本相同的密钥。表由一组排序键 - 值对。
2.2。体系结构
accumulo是一个分布式数据存储和检索系统,因此由一些建筑元件,其中一些许多单独服务器上运行的。大部分的工作确实涉及Accumulo保持一定性能的数据,如组织,可用性和完整性,在许多商品级机。
2.3。组件
一个实例的Accumulo包括的许多TabletServers,一个垃圾收集过程中,一台主服务器和多个客户端。
2.3.1。tablet服务器
TabletServer管理一些子集的所有片(分区表)。这包括接收从客户端中写道,坚持预写日志,写入新的键值对排序在内存中,定期冲洗排序键 - 值对HDFS中的新文件,并响应来自客户端的读取,形成一个合并排序查看所有键和值从创建和排序的内存中存储的所有文件。
TabletServers执行恢复以前的服务器失败,重新应用发现任何写在预写日志平板平板。
2.3.2。垃圾收集器
Accumulo进程将共享存储在HDFS中的文件。每隔一段时间,垃圾收集器将确定不再需要任何进程的文件,并删除它们。
2.3.3。master
是负责检测和响应TabletServer失败的Accumulo master。它试图以平衡负载分配药片仔细和指导TabletServers的卸载片,必要时跨TabletServer的。master确保所有分片被分配到每一个TabletServer,并处理表的创建,修改和删除请求从客户。master也协调启动,正常关机和恢复的变化的预写日志tablet服务器时失败。
可能会运行多个master。master将选举一个作为master,其他作为备份。
2.3.4。客户
Accumulo包括链接到每一个应用程序的客户端库。客户端库包含逻辑寻找管理某个特定的平板电脑,服务器和通信与TabletServers写入和检索键 - 值对。
2.4。数据管理
Accumulo存储表中的数据,这是划分成片。片分区行边界,这样一个特定的行的所有列和值一起被发现在同一片剂。主片分配到一个TabletServer的时间。这使行级交易采取不使用分布式锁或其他一些复杂的同步机制。随着客户的插入和查询数据,机器从集群中添加和删除,主迁移片来保证他们就仍然可以采集和查询负载平衡群集。
2.5。tablet服务
写在TabletServer到达时,它被写入到一个预写日志,然后插入称为MemTable中一个排序的数据结构在内存中。当MemTable对达到一定规模的TabletServer写道排序键 - 值对在HDFS中的文件被称为索引顺序访问方法(ISAM)文件。这个过程被称为一个小压实。然后创建一个新的MemTable中预写日志记录和压实的事实。
当一个请求读取数据在TabletServer到达的,TabletServer确实二进制搜索以及整个MemTable中每个ISAM文件在内存中的相关指标,找到相关的值。如果客户端执行扫描,几个键 - 值对返回给客户端为了从MemTable中ISAM文件集进行合并排序,因为他们是阅读。
2.6。压实
为了管理文件,每片的数量,定期TabletServer的执行主要压实tablet内的文件,其中一些ISAM文件合并成一个文件。最终将被删除以前的文件,由垃圾收集器。这也提供了一个机会,用来彻底删除键 - 值对省略键 - 值对创建新的文件时,删除条目抑制。
2.7。拆分
当创建一个表,它有一个平板电脑。随着表的增长,其最初的平板电脑最终分裂成两片。它可能是这些药片将迁移到另一台平板电脑服务器。如上表持续增长,及其片剂将继续分裂和迁移。的决定是基于自动分割片剂的片剂的大小的文件。片剂分割的大小阈值配置的每个表。除了自动分裂,用户可以手动添加的分割点,用来从表中创建新的片剂。手动分裂一个新表可以并行的读取和写入操作提供更好的初始性能,而无需等待自动分割。
当数据从表中删除,平板电脑可能会萎缩。随着时间的推移,这可能会导致空或小片。为了处理这个问题,片剂合并被引入在1.4 Accumulo。这在后面更详细讨论。
2.8。容错
如果TabletServer失败,法师检测,并自动从故障服务器分配到其他服务器重新分配片。任何键 - 值对,在内存中的时间TabletServer失败自动重新应用预写式日志,以防止丢失任何数据。
法师将协调预写日志复制到HDFS,以便提供给所有tablet服务器日志。为了使回收效率,更新在日志分组的平板电脑。注定的牌位,他们现在被分配给从排序的日志,可以快速申请TabletServers突变。
TabletServer故障都注意到法师的监控页面,通过:50095/monitor访问的 。
图像/ failure_handling.png的