一,基本功能介绍 -root-表在HBase 0.9.6以后的版本被移除了。...Hbase 0.9.6以后,移除了-root-表,用hbase:meta表代替了.meta表,hbase:meta表存的位置直接存储于Zookeeper上。...info:server:存储hbase:meta表的regionserver的server:port info:serverstartcode:该Regionserver拥用hbase:meta表的起始时间...Hbase:meta所在的regionserver宕机后会重新分配给其它的regionserver。每次修改都会更新RS的wal的。 2,hbase:meta和用户region信息不一致怎么处理。...A),hbase提供的有修复指令。 B),可以根据源码去实现自己的修补指令。 元数据和用户实际的表信息不一致是很常见的现象,所以这两点后面会详细介绍。
hbase的源码终于搞一个段落了,在接下来的一个月,着重于把看过的源码提炼一下,对一些有意思的主题进行分享一下。...现在我们讲一下HTable吧,为什么讲HTable,因为这是我们最常见的一个类,这是我们对hbase中数据的操作的入口。 1.Put操作 下面是一个很简单往hbase插入一条记录的例子。...//自己处理去吧... } 这个是带正则表达式的模糊查询的scan查询,Scan这个类是包括我们查询所有需要的参数,batch和caching的设置,在我的另外一篇文章里面有写《hbase
在讲源码之前,先说一下它的分类和作用。...先说一下怎么使用吧,下面分别是它们是shell命令,可以在hbase的shell里面执行。...1、创建CompactionContext 2、判断是否是非高峰时间,下面是这两个参数的值 int startHour = conf.getInt("hbase.offpeak.start.hour",...hbase.hstore.compaction.ratio 高峰时段,默认值是1.2 hbase.hstore.compaction.ratio.offpeak 非高峰时段...咱们可以将它这个参数hbase.hstore.blockingStoreFiles设置得大一些,弄出来一个比较大的数字。 Split 好,我们接着看requestSplit。
HFile概述 HFile是HBase中实际存数据的文件,为HBase提供高效快速的数据访问。它是基于Hadoop的TFile,模仿Google Bigtable 架构中的SSTable格式。...,先从入口看起,那就是StoreFile.Writer的append方法,先看怎么写入的,然后它就怎么读了,不知道怎么使用这个类的,可以看看我写的这篇文章《非mapreduce生成Hfile,然后导入hbase...Path hfilePath = getRelativeTablePath(path); this.tempPath = new Path(new Path(rootDir, HConstants.HBASE_TEMP_DIRECTORY
它就想是给数据库做备份,尤其是做删除动作之前,不管是hbase还是hdfs,请经常做Snapshot,否则哪天手贱了。。。 直接进入主题吧,上代码。...这个方法里面也没干啥,就是检查一下是否可以对这个表做备份或者恢复的操作,然后就会重建这个工作目录,这个工作目录在.hbase-snapshot/.tmps下面,每个snapshot都有自己的目录。 ...MemStore当中保存的是KeyValue的集合,写入其实就是一个循环,调用StoreFile.Writer的append方法追加,具体的可以看我的那篇博客《非mapreduce生成Hfile,然后导入hbase...IOException("Failed to create reference file:" + referenceFile); } } } } 在工作目录在.hbase-snapshot...这个要到下一章,从snapshot中恢复,才能弄明白了,这个和hbase的归档文件机制有关系,hbase删除文件的时候,不是直接删除,而是把它先放入archive文件夹内。
看源码很久了,终于开始动手写博客了,为什么是先写负载均衡呢,因为一个室友入职新公司了,然后他们遇到这方面的问题,某些机器的硬盘使用明显比别的机器要多,每次用hadoop做完负载均衡,很快又变回来了。...hbase.master.balancer.stochastic.moveCost,默认值是100 localityCost hbase.master.balancer.stochastic.localityCost...hbase.master.balancer.stochastic.readRequestCost,默认值是5 WriteRequestCostFunction hbase.master.balancer.stochastic.writeRequestCost...hbase.master.balancer.stochastic.storefileSizeCost,默认值是5 Storefile的默认值是5,那么低。。。...根据虚拟的集群状态生成RegionPlan,这里就不说了 List plans = createRegionPlans(cluster); 源码的分析完毕,要想减少存储内容分布不均匀
二,源码相关的重要类 1,HTable 重点是Hbase类初始化的时候提交的请求的任务的线程池的初始化 HConnectionImplementation的getThreadPool方法。...三,scan的源码实现 Scan的源码实现过程,主要是帮助大家更好的阅读源码。...其实,应该关注点比较多,贴源码比较累赘,我这是大致骨架都有了,大家可以根据这个骨架结合源码去看,节省时间。...2,对于filter的使用,请大家先参考hbase权威指南,后面浪尖再接个各个filter和源码讲解。...对于hbase 1.0.0,列举以下几种,方便大家自己去阅读相关源码。
单个BufferedMutator也能够很高效用于大数据量的在线系统,来成批的写puts入hbase表。...catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } 三,源码介绍...BufferedMutatorImpl 用来和hbase表交互,类似于Htable,但是意味着批量,异步的puts。...四,总结 Hbase的JAVA API客户端,写操作有三种实现: 1,HTablePool 源码请看hbase权威指南。 ? 2,HConnection 这种方式要自己实现一个线程池。...客户端读写数据的操作,我们就讲这两篇,后面开始讲HBase的MR建立二级索引的实现及原理源码。然后就开始讲解管理类操作的实现。
HLog概述 hbase在写入数据之前会先写入MemStore,成功了再写入HLog,当MemStore的数据丢失的时候,还可以用HLog的数据来进行恢复,下面先看看HLog的图。...this.optionalFlushInterval); } } 它这里是有一个判断条件的,如果判断条件不成立就立即同步,等待this.optionalFlushInterval时间,默认的同步间隔是1000,它是通过参数hbase.regionserver.optionallogflushinterval
这一章是server端开始的第一章,有兴趣的朋友先去看一下hbase的架构图,我专门从网上弄下来的。 按照HMaster的run方法的注释,我们可以了解到它的启动过程会去做以下的动作。...IOException { //该参数默认为false if (this.distributedLogReplay) { // In log replay mode, we mark hbase...currentMetaServer, regions); } else { // In recovered.edits mode: create recovered edits file for hbase...文件恢复是通过hbase.master.distributed.log.replay参数来设置,默认是false,走的recovered.edit模式。...经过分配过的region,hmaster在启动的时候默认会沿用上一次的结果,就不再变动了,这个是由一个参数来维护的hbase.master.startup.retainassign,默认是true。
在上一章中提到了编码压缩,讲了一个简单的DataBlockEncoding.PREFIX算法,它用的是前序编码压缩的算法,它搜索到时候,是全扫描的方式搜索的,如此一来,搜索效率实在是不敢恭维,所以在hbase...下面我们就具体说一下在hbase的工程里面它是什么样子的,下面是一个例子: * Example inputs (numInputs=7): * 0: AAA * 1: AAA * 2: AAB
else { //是hfile的情况 HFileLink.create(conf, fs, familyDir, regionInfo, hfileName); } } 在hbase
这一章讲hbase的缓存机制,这里面涉及的内容也是比较多,呵呵,我理解中的缓存是保存在内存中的特定的便于检索的数据结构就是缓存。.../** 可分配的最大值,超过这个值就不给它分配了,默认值是256K */ hbase.hregion.memstore.mslab.max.allocation 默认值是256 * 1024 /**...hbase.regionserver.global.memstore.upperLimit hbase.regionserver.global.memstore.lowerLimit 还有这个参数hbase.hregion.memstore.chunkpool.initialsize...再吐槽一下hbase这个Lru算法吧,做得挺粗糙的,它记录了每个Block块的访问次数,但是它并没有按照这个来排序,就是简单的依赖哈希值来排序。...Tips:江湖传言一个Regionserver上有一个BlockCache和N个Memstore,它们的大小之和不能大于等于heapsize * 0.8,否则HBase不能正常启动,想想也是,hbase
HBase HA(高可用) 在HBase中Hmaster负责监控RegionServer的生命周期,均衡RegionServer的负载,如果Hmaster挂掉了,那么整个HBase集群将陷入不健康的状态...关闭HBase集群(如果没有开启则跳过此步) [bigdata@hadoop002 hbase]$ bin/stop-hbase.sh 2....hbase]$ scp -r conf/ hadoop004:/opt/module/hbase/ 4....优化HStore文件大小 hbase-site.xml 属性:hbase.hregion.max.filesize 解释:默认值10737418240(10GB),如果需要运行HBase的MR任务...优化hbase客户端缓存 hbase-site.xml 属性:hbase.client.write.buffer 解释:用于指定HBase客户端缓存,增大该值可以减少RPC调用次数,但是会消耗更多内存
Replication核心原理 hbase.replication.source.service 配置说明了使用哪个类来作为 Hbase 的 Replication 实现类。...hbase.replication.source.service 这个默认配置实现就是 org.apache.hadoop.hbase.replication.regionserver.Replication...ReplicationTracker 主要用于跟踪 Zookeeper 中 /hbase/replication 中 znode 的状态,Hbase 的 Replication 是通过 zk 来协助完成的...用于监控 Hbase Replication。...很可能是考虑到了性能方面的影响,Hbase 的Replication 方案是异步传输。
HBase的数据读取流程 ?...HBase的数据的写入流程 ? 如果上图过程不是很懂,下面博主再制作一幅图供大家理解 ?
一,基本介绍 Hbase源码系列主要是以hbase-1.0.0为例讲解hbase源码。本文主要是将Regionserver服务端RPC的结构及处理流程。...希望是帮助大家彻底了解hbase Regionserver的内部结构。...建议大家多读读浪尖前面关于JAVA网络IO模型相关文章和kafka的源码系列之Broker的IO服务及业务处理>两篇文章,对大家设计服务端会有很大的帮助。...三,相关源码 1,调度器初始化过程 通过反射得到了SimpleRPCSchedulerFactory。 Class源码系列之Broker的IO服务及业务处理>就可以看出二者的不同。 Kafka的Broker是IO线程和业务线程分离,均是多线程,应答也是交由IO线程组做的。
loc = hConnection.locateRegion(this.tableName, row.getRow()); 这里我们首先要讲hbase的两张元数据表-ROOT-和.META.表,它们一个保存着...在《hbase实战》这本书里面详细写了查找过程总共有8步: (1)客户端首先查询zookeeper -ROOT-表在哪里 (2)zookeeper告诉客户端,-ROOT-在RegionServer...addFamily(HConstants.CATALOG_FAMILY); int rows = Math.min(rowLimit, configuration.getInt(HConstants.HBASE_META_SCANNER_CACHING..., HConstants.DEFAULT_HBASE_META_SCANNER_CACHING)); scan.setCaching(rows); // Run
安装url:hbase集群部署 一.简介 HBASE是一个高可靠性、高性能、面向列、可伸缩、稀疏的分布式存储系统,利用HBASE技术可在廉价PC Server上搭建起大规模结构化存储集群。...HBASE的目标是存储并处理大型的数据,更具体来说是仅需使用普通的硬件配置,就能够处理由成千上万的行和列所组成的大型数据。 HBASE是Google Bigtable的开源实现,但是也有很多不同之处。...比如:Google Bigtable利用GFS作为其文件存储系统,HBASE利用Hadoop HDFS作为其文件存储系统;Google运行MAPREDUCE来处理Bigtable中的海量数据,HBASE...同样利用Hadoop MapReduce来处理HBASE中的海量数据;Google Bigtable利用Chubby作为协同服务,HBASE利用Zookeeper作为对应。...提供最终的底层数据存储服务,同时为Hbase提供高可用(Hlog存储在HDFS)的支持,具体功能概括如下: 提供元数据和表数据的底层分布式存储服务 数据多副本,保证的高可靠和高可用性 八.使用场景 Hbase
领取专属 10元无门槛券
手把手带您无忧上云