8 whitejava2

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 1w+

《HBase权威指南》读书笔记 第八章:架构:读取数据、region生命周期、ZK数据结构

读取数据读取数据的难点在于,有可能一行数据储存在多个文件中,也有可能在memstore中。例如,同一个row key在不同的时间写入不同列的数据,那么取这个row key所有列的时候就需要扫描多个文件。get操作从实现上来说,和scan操作是一样的。get或者scan操作内部实现机制步骤如下:根据时间戳、布隆过滤器快速排除一些文件,这些文件中绝不可能包含需要取的KeyValue。从最新的stor

2017-10-02 13:32:25

《HBase权威指南》读书笔记 第八章:架构,WAL预写日志

WAL预写日志WAL的目的是为了容灾。一个Region Server会将本节点上所有的region的修改记录都记到同一个HLog文件中。当一次操作成功记录到WAL中时才会返回成功。这种机制保证了断电不会丢失数据。当region打开时,HBase会读取每个HFile中的序列号。根据最大的序列号判断应该从HLog的哪个位置开始恢复数据。HLogKey中包含了KeyValue以及region、表名、序列号

2017-09-24 15:16:19

《HBase权威指南》读书笔记 第八章:架构,HFile格式

HFile文件格式文件结构如上图。主要有以下部分:Data-block:数据块,每个块中存放多个KeyValue对象。默认每个块64KB。但不是严格意义上的64KB,大致维持在64KB左右。Meta-block:储存元数据信息File Info:储存HFile文件信息Trailer:包含指向其他块的指针。Trailer写完了才能算一个完整的HFile文件。通过以下工具可以手动解析HFile

2017-09-17 20:23:43

《HBase权威指南》读书笔记 第八章:架构,Compaction合并

compaction合并操作compaction操作将小文件合并成大文件,加快查询速度,减少文件数量,减少资源占用。compaction分为两种:minor compaction:将一个region中一部分小文件合并到一个新的文件中major compaction:将一个region中所有文件都合并到一个文件中。在这个过程中剔除已删除的数据、剔除多于的多版本数据。HBase会在以下几种情况下检

2017-09-10 15:19:19

《HBase权威指南》读书笔记 第八章:架构,region拆分

region拆分region拆分的条件满足以下任何一条时做split拆分操作:当region储存文件大于配置项hbase.hregion.max.filesize当region储存文件大于列族层面配置的大小拆分过程非常迅速。其大致过程为:HBase创建两个引用文件,然后在后台执行compaction操作替换掉被引用的文件。假设要拆分的region文件路径为/hbase/testtable/b0

2017-09-02 14:46:15

《HBase权威指南》读书笔记 第八章:架构,存储

存储HBase架构图如下:从图中可以看到HBase主要处理两种文件,WAL和实际的数据文件。这两种文件最终都存在HDFS中。首次请求所需的步骤如下:从zk中取得hbase:meta表所在的节点,路径为/hbase/meta-region-server。从hbase:meta表中读取元数据,根据元数据推测出数据所在的节点。连接实际的数据节点取得数据。其中步骤2的元数据会在客户端进行缓存,下次不

2017-08-27 19:29:41

《HBase权威指南》读书笔记 第八章:架构,LSM树

LSM树LSM的英文名是 log-structured merge-tree。它适合写入量很大的数据库。执行写入操作时,先把数据写在C0层级,通常C0放在内存中。当C0层级的数据达到设定的阈值时,将数据合并到C1层级。当C1层级达到阈值时,合并到C2层级。这样层层合并,文件数量越来越少,文件变得越来越大。每个层级的数据都是排序的,合并的时候通过类似归并排序的算法实现快速排序。对于删除操作,仅仅将数据

2017-08-19 17:51:20

《HBase权威指南》读书笔记 第八章:架构,B+树

B+树先说红黑树。红黑树是平衡二叉查找树。它通常用于Map结构的实现,可以根据Key快速找到Value。Java中的TreeMap就是通过红黑树实现的。它是一种二叉树,一个节点最多只能有两个子节点。当BST的存储结构放在硬盘上时,就出现问题了。因为二叉树的高度比较大,寻找一个叶子节点需要较多次数访问硬盘。我们知道访问硬盘的速度是非常慢的,所以BST不太适合用在硬盘上。然而B+树可以解决这个问题。B+

2017-08-13 07:50:47

《HBase权威指南》读书笔记 第四章:客户端API高级特性

前面提到的scan操作支持设置过滤器,筛选需要返回的结果。下面看一个简单的例子:import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.hbase.HBaseConfiguration;import org.apache.hadoop.hbase.TableName;import org.apache.hadoo

2017-06-10 17:31:36

《HBase权威指南》读书笔记 第三章:客户端API基础知识

基本操作HTable提供了操作接口。建议应用程序初始化的2时候创建多个HTable,每个线程要有一个,或者使用HTablePool连接池。所有的修改只保证行级别的原子性。以下是Java中操作HBase的例子,书中提供的代码已经deprecated,因此笔者用了最新的连接方式。这段代码运行一次要1分钟左右,主要耗时在连接部分,有配置可以跳过某些步骤没必要的步骤加快连接速度。import org.apa

2017-06-04 12:02:26

《HBase权威指南》读书笔记:第二章 安装

基本操作首先确保已经安装Java。通过java -version命令查看,要求版本1.7以上。下载hbase: http://www.apache.org/dyn/closer.cgi/hbase/将下载来的压缩包解压配上数据储存目录,编辑文件conf/hbase-site.xml<configuration> <property> <name>hbase.rootdir</na

2017-06-01 19:49:31

《HBase权威指南》读书笔记:第一章 简介

传统的关系型数据库无法存放海量数据,因此HBase诞生,解决海量数据存取难题。当然除了HBase,还有很多其他类型的数据库解决不同的问题。HBase的诞生参考了谷歌的这两篇论文,值得阅读:The Google File SystemMapReduce: Simplified Data Processing on Large ClustersHBase应用逻辑的基本概念有:表:表有表名,其含有

2017-05-29 16:00:49

Curator框架的使用

Curator框架的目的是减少用户的复杂度,毕竟原生的Zookeeper难以使用。这里举一个使用例子。第一步:建立连接// 以下代码与192.168.1.101:2181建立了连接CuratorFramework client = CuratorFrameworkFactory.newClient("192.168.1.101:2181", new Exponent

2016-11-26 12:30:21

nginx端口占用案例分享

这里分享一个案例,问题的原因是反向代理使用不当。现象首先描述一下问题的现象。当时的问题是应用启动失败,日志里面报错显示端口占用。我们的应用都是通过脚本发布的,之前发布过多次都没有出现过问题。那么同样的脚本、同样的机器,这次怎么就发布失败了呢?报错信息如下:OSError: [Errno 48] Address already in use问题排查

2016-11-20 13:41:28

Ubuntu搭建NFS

NFS全称是Network File System,网络文件系统。它可以通过网络实现文件共享。其结构图大概是这样的:在机器E上开启NFS服务,机器ABCD都挂载NFS,这样可以实现机器ABCD共享文件。由于文件共享的特性,NFS还被用作分布式系统的备份。比如Elasticsearch集群的备份需要用到NFS。服务端首先开启NFS服务端,在Ub

2016-11-06 14:07:33

谈谈工作上的杂事

谈谈工作上的杂事工作已经有两年多了,来做一个专题总结。这篇文章的关键词是:杂事。时间碎片我所在的公司是一个创业公司。创业公司都有个共同的特点就是事多人少。当我静下心来集中精力开始开发需求的时候,总会有一些所谓的急事来插队。比如突然要开会,比如别人来咨询这段代码的工作原理,比如线上系统疑似出现BUG,需要我来马上修复。这些事情确实需要马上处理,拖延只会造成更大的问题,

2016-10-30 15:56:44

Web性能优化:基本思路和常见工具

Web性能优化听了荣华的演讲之后,我对性能优化有了更深层次的认识。性能优化的重要性性能优化是为了赢得用户,为了降低成本。性能优化思路Web常见优化点Java常见排查工具

2016-10-23 16:13:17

用Swagger生成接口文档

Swagger简介在系统设计的时候,各个应用之间往往是通过接口进行交互的。因此接口的定义在整个团队中就变得尤为重要。我们可以把接口的规范用接口描述语言进行描述,然后Swagger可以根据我们定义的接口规范生成对应的接口文档。它生成的接口文档提供了接口测试功能。我们只需要填上对应的参数,然后点击调用,就可以完成一次接口测试,非常方便。就像下图展示的那样。不仅如此,Swagger还

2016-10-12 22:00:22

浅谈Java的匿名类

在实际的项目中看到一个很奇怪的现象,Java可以直接new一个接口,然后在new里面粗暴的加入实现代码。就像下面这样。那么问题来了,new出来的对象没有实际的类作为载体,这不是很奇怪吗?思考以下代码的输出是什么?Runnable x = new Runnable() { @Override public void run() { System.out.p

2016-10-04 11:11:38

什么是RAID?RAID有什么用?RAID原理

什么是RAID硬盘是个很脆弱的东西,它经常会坏掉。所以,为了保证服务器可靠耐用,硬盘必须时时刻刻保持可用。所以有了RAID这个东西。它的目的是将好几个硬盘合并在一起,就算硬盘坏了一个,剩下还有好几个硬盘是正常的,这样服务器才不会挂掉。当然,保证服务高可用只是RAID其中的一个功能。它还能提升储存容量、加快存取速度等能力。RAID分为0~6级,另外还有RAID 1+0,简称RAID 10

2016-09-25 14:09:51

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!