HBASE
陈奉刚11
大数据开发与问题定位
展开
-
hbase ,windows 写Java程序
最近换工作了。新工作做点笔记。大数据平台 同事基于 http://www.aboutyun.com/thread-9075-1-1.html 配的在 Windows 写 hbase Java 需要修改几个点。1.需要 修改windows C:\Windows\System32\drivers\etc 下的hosts 这个是为了能找到服务原创 2016-05-24 11:08:32 · 601 阅读 · 0 评论 -
hbase 源码分析 (14) spit 过程
spit过程。1)判断是否能spit2)将获取的做大的store ,并且获取这个store所有block的中间点3)将根据parent region 和midkey 生成两个新的regionInfo4)停用所有的store ,将所有的store 一分为二。 将启动有个新的region原创 2017-07-16 21:15:23 · 522 阅读 · 0 评论 -
hbase 源代码分析(18)负载均衡
1.算法流程 1)两个有效参数:MIN = floor(average)(表示下限)和MAX=ceil(average)(表示上限)。 2)循环过载机器,将Region卸载到MAX数量,在小于等于MAX时停止排序Region(按时间新旧)。 3)遍历最轻负载机器,分配Region直到Server达到MIN值。在大于等于MIN时停止。这些Region都是之前卸载的。可能没有足够地卸载Region让轻负载的机器达到MIN值,如果这样,在Region数等于neededRegions(轻负载机器的数量)时停止原创 2017-07-20 21:34:13 · 502 阅读 · 0 评论 -
hbase 源代码分析 (19) HMaster 启动负载均衡过程分析
1)balancer由master启动2)默认balancer 是StochasticLoadBalancer原创 2017-07-20 22:53:18 · 1122 阅读 · 0 评论 -
hbase 源码分析(20) 总结
放在最后的话第一次写这么长时间的博客。有点辛苦,主要是白天上班还不能写。晚上会写到一两点。还好没有放弃,hbase的基本写完了。之后会不断补充,完善。第一次写,很多地方可能没有考虑清楚。第一次写,带着学习的目的。不好请大家多担待。第一次写,学到 很多东西,虽然还有很多过程没有 理解透彻,但是至少已经如水了。可以看到里面原创 2017-07-20 23:09:53 · 1961 阅读 · 3 评论 -
hbase 源代码分析 (15)compact 过程
这个流程还没有写完,只是作为自己的备忘,可以不用点击进来原创 2017-07-17 19:39:30 · 418 阅读 · 0 评论 -
hbase 知识点(1) hbase涉及维度
每次跟新数据都会先提交WAL,然后写入内存,当达到一定数量写入磁盘,这个可以查看我的博客(habse 源码分析)移除内存后 ,清空不需要的WAL,memestore 是滚动的,在flush过程会启动新的一个memstore,这样不影响写过程,因为memstore 是排序的所以flush过程不需要 排序。读过程不会写WAL,因为对数据没有变化。数据删除只是标记删除(墓碑删除),flush过程会清楚删除的数据和TTL过期的的数据。原创 2017-07-22 11:39:10 · 1335 阅读 · 0 评论 -
hbase 知识点(2) 安装环境方面
需要支持java。因为memstore和块缓存需要安装64位操作系统才能使用大于4G的内存,因为数据存储hdfs上,最好hadoop和hbase 安装在相同机器上,可以减少I/O需求。集群内存不能全部都给JVM,最好小于80%,主要用户IO缓存等原创 2017-07-22 11:40:26 · 478 阅读 · 0 评论 -
hbase 源代码分析(16)协处理器 rpc endpoint 流程
首先必须了解什么是RPC,以及一般的RPC的几个关键点。1)服务端接口,2)服务端实现类3)服务端进程4)客户端stub (包括连接的Socket)原创 2017-07-17 23:48:39 · 575 阅读 · 0 评论 -
hbase 源代码分析 (17)MapReduce 过程
在对于大量的数据导入到Hbase中, 如果一条一条进行插入, 则太耗时了, 所以可以先采用MapReduce生成HFile文件, 然后使用BulkLoad导入hbase中. 引用:一、这种方式有很多的优点:1. 如果我们一次性入库hbase巨量数据,处理速度慢不说,还特别占用Region资源, 一个比较高效便捷的方法就是使用 “Bulk Loading”方法,即HBase提供的HFileOutputFormat类。2. 它是利用hbase的数据信息按照特定格式存储在hdfs内这一原理,直接生成这种h原创 2017-07-18 22:49:33 · 613 阅读 · 0 评论 -
hbase 源代码解析(21) 自定义过滤器
自定义完成后,打成jar ,需要export export HBASE_CLAPSS 或者将jar 放到hbase 的安装目录的lib下面,重启hbase原创 2017-07-23 14:02:12 · 1158 阅读 · 0 评论 -
hbase 源代码解析(22)部分流程图笔记
一些简单学习笔记原创 2017-10-22 20:04:57 · 1144 阅读 · 0 评论 -
hbase 源代码分析 (13) memStore flush to HFile
memStore flush to Hfile 流程如下:1)判断是否需要写入到HFile中,判断大小值1024×1024×128 =128M,可以通过修改hbase.hregion.memstore.flush.size配置2)在flush 过程首先将mem 数据new FlushRegionEntry 然后方法队列中3)MemStoreFlusher里启动的run会不断去判断是否需要写数据。4)写完之前会判断是否需要spit和comp ,同样flush结束之后也做判断。5)写的过程中,需要先原创 2017-07-16 16:52:36 · 698 阅读 · 0 评论 -
hbase 源代码分析 (12) Master和RegionService 启动过程
1)HMaster 是HregionService的实现类。所以启动HMaster会先启动HregionService,2)HregionService里面启动了很多进程。主要有协处理器,zk,rpc,锁,状态追踪器,wal继承或者类。3)HMaster会向zk里注册信息。写入当前ServerName,方便Client找到。4)HMaster 会加载Meta信息到内存。然后等待RegionService的报告,如果没有收到报告,会去zk 询问已经启动但是没有报告的RegionService,5)HM原创 2017-07-16 00:13:53 · 1907 阅读 · 1 评论 -
hbase 源代码解析(1) Connection
最近打算对源代码学习。作为自己学习备忘。今天开始写hbase。对hbase的接触两年多。如果不对源码分析总感觉确点什么。写的肯定比不上大牛。但是学习过程的分享,我能懂,大学能学点什么就够了。已经写了第一个roaringbitmap的一个系列了。写完之后,感觉自己什么都懂了。 http://blog.csdn.net/chenfenggang/article/details/74611144 ht原创 2017-07-10 22:30:04 · 1509 阅读 · 0 评论 -
hbase 源代码解析(2)HAdmin 的表创建过程
这个源代码将写一个系列。先走流程一样。过一遍,然后重点分析里面的功能。HConection 里的一个重要方法.getAdmin。获得HBaseAdmin。 *HBaseAdmin提供了建表、创建列簇、检查表是否存在、修改表结构和列簇结构、删除表等功能。*这章主要将HBaseAdmin的createTable客户端的代码。hbaseAdmin对象拿到connetion。保存conf,rpc等一些东原创 2017-07-10 22:41:07 · 1905 阅读 · 0 评论 -
hbase 源代码解析(3) 的createTable 服务端解析第二部分
hbase 源代码 ,createTable过程原创 2017-07-11 00:07:32 · 1093 阅读 · 0 评论 -
hbase 源代码解析(4) 的createTable 的 region assign
上一章节就是留下上面这个流程。这里包括region的分配以及open。原创 2017-07-11 23:20:53 · 1267 阅读 · 0 评论 -
hbase 源代码分析(5)regionLocator 获取region过程 详解
client 首先去zk 里拿到MATA的ServiceName 发送第一次callable.call(),然后 在MATA RS里拿到table的region的ServiceName.然后发送第二次callable。call.获得region信息。原创 2017-07-12 21:15:56 · 3070 阅读 · 0 评论 -
hbase 源代码分析(6)get 过程 详解
GET过程,1)找到zk,拿到MATA里的RegionService地址。2)访问第一个RegionService,获得表的region的ServiceName。3)访问第二个RegionService,4) 查看menStore里有没有数据。5)否则去StoreFile 里找。这个存储在HDFS。所以需要加载HFile到内存中。原创 2017-07-13 00:40:48 · 1689 阅读 · 0 评论 -
hbase 源代码分析 (7) put 过程 详解
1)首先根据获得一个客户端的BufferedMutator;2)当数据量到一定时,或者关闭table,或者手动提交时才开始提交。3)提前全会分布获取每个put记录的ServiceName,然后建立一个Map<ServiceName,List<ROW>>。分别并行将记录发往各个regionService4) regionService 获得信息之后,发给个region。数据put的只是放在内存memstore中,当达到阈值之后写入HFile。原创 2017-07-13 23:00:44 · 983 阅读 · 0 评论 -
hbase 源代码分析 (8) delete 过程 详解
delete很直接,直接到第一步就发送了请求,相比put,get,scan,已经getRegionLocator等过程,这简直就是奇迹。所以我也很直接把所有都贴出来了。原创 2017-07-13 23:22:36 · 1362 阅读 · 2 评论 -
hbase 源代码分析 (9) hbase启动过程
hbase的启动过程。过程如下:1)运行start-hbase.sh2) 加载conf,加载需要lib,class文件,包括jdk里面的,hbase本身的。3)判断安装模式4)如果集群模式需要启动a)zookeeper,b)Masterc)RegionServiced)master-backup如果本地模式则只需要启动master就够了。在master里面会new一个zk,和启动一个regionService,但是这个master和regionSerivce是同一个JVM原创 2017-07-14 21:50:44 · 1665 阅读 · 0 评论 -
hbase 原代码分析 (10) region 创建过程
1)region是由HMaster创建的。在创建表的时候。2)region创建首先是写HDFS文件。hdfs = root/data/namespace/qualifierName///这个方法里,首先创建目录,//然后新建一个临时文件./temp/.regioninfo//然后写入regionInfo 作为MATA的恢复资料//然后将.regionInfo移动到当前目录。3)会创建WAL4)region信息放在MATA里。5)region会分配给RegionService ,并给予他管理原创 2017-07-14 22:58:59 · 1162 阅读 · 1 评论 -
hbase 原代码分析 (11) WAL 写日志过程
1) WAL在创建region的时候创建。2) WAL 存储在HDFS,主要类FSHLog3) 在put 和delete写入内存之前都会写入WAL,主要是防止机器崩溃时能恢复。4)用户在协处理器里可以自己调用WALEdit。原创 2017-07-15 01:14:48 · 2403 阅读 · 1 评论 -
hbase 源代码解析(23)truncate 和truncate_preserve流程分析
命令作用:清空表数据,但是保留表结构,分析原因:今天定位一个奇怪的现象,当hbase建立4个region的表,然后用truncate命令时,出现1个region在线而有4个region offline,然后继续put数据,制定split到4个region时,使用truncate_preserve发现出现9个offline,7个failed,并且再put数据时出现表不存在,问题还在定位中。所以需原创 2017-10-24 22:56:39 · 7582 阅读 · 2 评论