摘要: 这是一次非正式的专利讲座,没有 slide,类似 workshop 的交流。内容以科普+指导为主,没有涉及商业机密和隐私的内容,相对简单,放在这里记录一下。 阅读全文
posted @ 2016-02-29 19:27 郝玉琨 阅读(329) 评论(0) 推荐(0) 编辑
摘要: MultiVersionConcurrencyControl.java,版本 0.94.1 MultiVersionConsistencyControl 管理 memstore 中的读写一致性。该类实现了一种机制,达到如下的目的: 提供接口让 reader 知道可以忽略哪些元素项 提供一个新的 Wr 阅读全文
posted @ 2016-02-22 10:59 郝玉琨 阅读(961) 评论(0) 推荐(0) 编辑
摘要: 同前面翻译的 "一篇" 关联的,同作者的另一篇: "ACID in HBase" 这一篇不是单纯地描述一个问题,而是以 ACID 为主题,介绍了其在 HBase 中各个部分的体现及实现。 ACID,即:原子性(Atomicity),一致性(Consistency),隔离性(Isolation),持久 阅读全文
posted @ 2016-02-15 16:25 郝玉琨 阅读(1507) 评论(0) 推荐(0) 编辑
摘要: 翻译一篇: "HBase MVCC and built in Atomic Operations" 作者:[Lars Hofhansl ](https://www.linkedin.com/in/larshofhansl) HBase 有一些特殊的原子操作: checkAndPut, checkAn 阅读全文
posted @ 2016-02-15 10:55 郝玉琨 阅读(1017) 评论(0) 推荐(0) 编辑
摘要: HBase Maven 工程各个 Model 功能说明: github 地址:git://git.apache.org/hbase.git 版本:2.0.0 SNAPSHOT hbase annotations 从 Hadoop 中 copy 来的的代码注解(所有的类、接口都要用到)。 包含两个注解 阅读全文
posted @ 2016-02-05 16:02 郝玉琨 阅读(1686) 评论(0) 推荐(1) 编辑
摘要: 作为第一篇对 MVCC 的学习材料,以下内容翻译自 Wikipedia。 1. 什么是MVCC 1.1 基础概念 MVCC,Multi Version Concurrency Control,多版本并发控制。MVCC 是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问;在编程语言中 阅读全文
posted @ 2016-02-02 22:50 郝玉琨 阅读(22368) 评论(0) 推荐(4) 编辑
摘要: 1. 场景说明需要对离线的 HFile 进行解析,默认可以使用如下的方式: 这样存在几个问题:1. 需要依赖 hbase 的环境2. p 选项输出的结果,打印出来的不是 value 的值,里面默认使用的是 3. 太重了,无关的内容不需要所以需要对上面的实现方式改造一下。阅读了源代码之后,了解到 H... 阅读全文
posted @ 2016-01-26 21:45 郝玉琨 阅读(1605) 评论(0) 推荐(0) 编辑
摘要: 对应 HBase 版本0.94.1,对照了开源的版本和工作使用的某发行版问题:在 HBase shell 里面输入 flush 'table_or_region_name'之后,发生了什么?具体的实现是怎么样的?对于现有的某个表,我如何在做操作之前估算 flush 执行的时间?1. HBase sh... 阅读全文
posted @ 2016-01-22 21:11 郝玉琨 阅读(5973) 评论(0) 推荐(0) 编辑
摘要: Java Basic->Collections->Overview先抛一个问题,用一个类似树形的结构,介绍下 Java 的集合类数据结构:有哪些,从简单到复杂,有怎么样的继承关系。下面的内容,基于 Java 6 展开在《Thinking in Java》里面有一个现成的版本,所以不重新造轮子了,照着... 阅读全文
posted @ 2016-01-17 19:56 郝玉琨 阅读(310) 评论(0) 推荐(0) 编辑
摘要: 从去年12.12开始,工作日都会从单位的落地窗向外拍一张照片,有点每日打卡的意思。weekday 是一天不落的,weekend 不是每次都到单位,落了几次。想法来自上学的时候,有同学在同一个地方,拍北洋广场的一年四季,做成 gif,非常漂亮。自己就也想试一下,于是就动手了。干货开始。工具:shell... 阅读全文
posted @ 2015-02-07 16:29 郝玉琨 阅读(2670) 评论(1) 推荐(0) 编辑
摘要: Docker的组成:Docker Engine,一个轻量级、强大的开源容器虚拟化平台,使用包含了工作流的虚拟化技术,帮助用户建立、并容器化一个应用。Docker Hub,提供的一个SaaS服务,用来分享和管理你的程序栈Docker的优点:应用程序快速交付部署和扩展更加简便更高的部署密度,更满的运行负... 阅读全文
posted @ 2014-09-24 14:29 郝玉琨 阅读(440) 评论(0) 推荐(0) 编辑
摘要: Sqoop提供的--fields-terminated-by选项可以支持指定自定义的分隔符,但是它只支持单字节的分隔符,对于我们特殊的需求:希望使用双字节的“|!”,默认的是不支持的。Sqoop在进行每一次的导出任务时,都会调用codegen,生成一个java文件,并编译打包成一个jar,供MapR... 阅读全文
posted @ 2014-05-23 19:39 郝玉琨 阅读(13460) 评论(3) 推荐(1) 编辑
摘要: 好久不写,一方面是工作原因,有些东西没发直接发,另外的也是习惯给丢了,内因所致。今天是个好日子,走起!btw,实际上这种格式化输出应该不只限于某一种需求,差不多是通用的。需求:--基本的:当前Hive查询结果存在数据与表头无法对齐的情况,不便于监控人员直接查看,或者导出到excel中,需要提供一个脚... 阅读全文
posted @ 2014-05-20 15:44 郝玉琨 阅读(11971) 评论(0) 推荐(2) 编辑
摘要: 不知不觉,10月就过去了,一直在忙着找工作,匆匆来,匆匆去,感觉好久都没有更新了。 有时候,觉得学习一门技术是出于兴趣,就算我学会了它,换不来一毛钱,也愿意去学;有时候,觉得学一些东西真的只是为了找一份工作,为了将来有饭吃。或许最好的是能把两者结合起来,自己感兴趣的东西能给自己饭吃。或许,我可能已经得到了,或许,我还在寻找。 找了这么久,IT公司基本不剩什么了,我体会到了这样几个道理。1、找工作就像找女朋友,自己的性格和公司的性格(文化)要契合。 有些不错的公司,在交流过程中,发现我们的思维方式、思考习惯上有不小的差距,我觉得是自己优点的地方,对方反倒不喜欢。后来想想,没什么的,一个人... 阅读全文
posted @ 2012-11-01 22:06 郝玉琨 阅读(711) 评论(0) 推荐(0) 编辑
摘要: 接着前面的,本节介绍剩下的索引信息管理和视图信息管理。3、(IndexMgr)索引信息管理IndexMgr随着系统启动而创建,如果系统已经有idxcat.tbl,说明事先已经创建过索引信息表,直接读取文件内容即可,否则需要创建一个新的索引信息表。表结构如下:indexNametableNamefie... 阅读全文
posted @ 2012-09-18 22:37 郝玉琨 阅读(498) 评论(0) 推荐(0) 编辑
摘要: 续前节。2、(StatMgr)统计信息管理统计信息管理器主要维护了一个表的三种统计信息:表文件包含Block的个数,包含记录的条数,以及每个字段非重复记录数。图1 统计信息管理注:StatInfo中,每个字段的非重复记录数是一个经验估计值,大约是1 + (numRecs / 3)。如前面所说,统计信... 阅读全文
posted @ 2012-09-17 22:11 郝玉琨 阅读(686) 评论(0) 推荐(0) 编辑
摘要: 前面介绍了SQL语句的解析,在开始介绍查询动作的实现之前,有必要先看下simpledb对元数据(Metadata)的管理。出去完整性的考虑,对应着代码,这里会把record和metadata放在一起介绍。以下,是metadata和record的类图:图1 metadata和record类图通过类图,可以看出,simpledb维护了四种元数据:表信息(包含字段信息),视图信息,索引信息和统计信息。这四种数据,有的会持久化到磁盘上,如:表信息,字段信息,视图信息,索引信息;有的则是在运行时内存中维护,如统计信息。图2 Metadata组成示意以下将分别对这四种信息的管理,逐一介绍。1、(Table 阅读全文
posted @ 2012-09-17 01:08 郝玉琨 阅读(814) 评论(0) 推荐(0) 编辑
摘要: 在(1)里面提到,lexer作为一个工具,完成了对SQL字符串的切割,将语句转化成一个tokens数组。Parser完成了SQL解析的后序部分:使用一个lexer对象作为工具,切出tokens,然后解析语义,绑定相关的系统接口。在这里先要回顾下simpledb的支持的SQL的语法,这个影响了它在解析字符串时使用的方法。<Query> := SELECT <SelectList> FROM <TableList> [ WHERE <Predicate> ]<SelectList> := <Field> [ , <Sel 阅读全文
posted @ 2012-09-12 23:59 郝玉琨 阅读(988) 评论(0) 推荐(0) 编辑
摘要: 前面的几个部分,基本实现了数据的读写。对于数据库使用者来说,SQL(Structured Query Language)是访问数据库的窗口,这一节就来看下simpledb对SQL语句的解析。首先要说的是,simpledb实现了一个SQL-92的子集,具体支持的语法如下所示: 1: 2: <Query> := SELECT <SelectList> FROM <TableList> [ WHERE <Predicate> ] 3: <SelectList> := <Field> [ , <SelectList> 阅读全文
posted @ 2012-09-11 00:46 郝玉琨 阅读(1906) 评论(1) 推荐(0) 编辑
摘要: 前面已经讲过了事务的并发管理和崩溃恢复整个事务管理,剩下了最后个点: 1、事务自己的缓冲管理 2、Transaction管理数据读写 > 事务自己的缓冲管理 Transaction下维护了一个BufferList,这个BufferList维护着事务当前pin着的缓冲片 图1 BufferList类图 维护一个Dictionary<Block,Buffer>对象buffers,保存当... 阅读全文
posted @ 2012-09-08 11:33 郝玉琨 阅读(512) 评论(0) 推荐(0) 编辑