首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Hbase 写入 hdfs 源码分析

作者:熊训德 腾讯云工程师 本文档从源码角度分析了,hbase 作为 dfs client 写入hdfs 的 hadoop sequence 文件最终刷盘落地的过程。...之前在《wal线程模型源码分析》中描述wal的写过程时说过会写入hadoop sequence文件,hbase为了保证数据的安全性,一般都是写入同为hadoop生态的hdfs(Hadoop Distribute...都不仅仅是简单的写入或刷入(flush)了真正的存储节点--DataNode中,其中涉及到数据流(WALEntry)如何安全有序且高效地写到datanode文件中,而flush又是具体如何做的,这个文档就将从源码分析...分析到这,已经可以看出hbase文件写入hdfs的过程并没有特别,hdfs就把hbase当做hdfs的client然后封装成chunk再组装成packet,再向datanode批量写数据。...相关推荐 Hbase WAL线程模型源码分析 HBase跨版本数据迁移总结 Hbase的WAL在RegionServer基本调用过程

4.4K00
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Hbase WAL 线程模型源码分析

    作者介绍:熊训德 腾讯云工程师 Hbase 的 WAL 机制是保证 hbase 使用 lsm 树存储模型把随机写转化成顺序写,并从内存 read 数据,从而提高大规模读写效率的关键一环。...源码分析 下面将从源码角度分析其中具体实现过程和细节。...Disruptor通过 java.util.concurrent.ExecutorService 提供的线程来触发 Consumer 的事件处理,可以看到hbase的wal中只启了一个线程,从源码注释中也可以看到...小结 Hbase的WAL机制是保证hbase使用lsm树存储模型把随机写转化成顺序写,并从内存read数据,从而提高大规模读写效率的关键一环。...wal的多生产者单消费者的线程模型让wal的写入变得安全而高效,本文档从源码入手分析了其线程模型为以后更好开发和研究hbase其他相关知识奠定基础。

    8.2K1413

    Hbase compaction 源码分析一:compaction 概况分析

    compactionChecker用于周期性地检查当前是否有compact请求,实现类是ScheduledChore检查周期由参数threadWakeFrequency控制,默认值是10s,也可以在参数hbase.server.thread.frequency...compactionChecker实现类是CompactionChecker,其继承了ScheduledChore,在之前已经分析过,这个类通过实现chore方法而实现周期性的调用,其初始化是在initializeThreads...从chore方法中可以直观的看到major compact是通过isMajorCompaction()方法判断的这是很多判断条件的合成,其中最为重要的一个是hbase.hregion.majorcompaction...因此,通过设置hbase.hregion.majorcompaction = 0可以关闭CompactionChecke触发的major compaction,但是无法关闭用户调用级别的majorcompact

    2.1K10

    Hbase Memstore 读写及 flush 源码分析

    导语 本文档主要从源码的角度分析了,hbase的写缓存的读写以及flush过程。...因为在分析wal的过程中已经把写分析的比较详尽了,而因为memstore是内存结构读的过程比较简单,本文档概要说明memstore的读写,着重分析flush过程。...hbase的mvcc机制将结合行锁在后面的hbase效率的源码分析中具体分析。可先参考: http://m.blog.csdn.net/article/details?...》P327 http://hbasefly.com/2016/04/26/hbase-blockcache-2/ 接下来分析本文档的重点: Flush的角度 从memstore刷写时机(上一篇文档着重叙述...至此,memstore的读写已经刷入源码分析就结束了,可以看到memstore作为hbase写缓存为了实现快速顺序写做出的设计努力。下一篇文档将分析哪些情况下memstore会被刷写。

    3.3K10

    Hbase1.3 生产优化,源码分析

    问题分析 思路:分离读写scan请求,各种处理各自的 源码内部 WriteQueues; Queues; ScanQueues; 优化参数 hbase.regionserver.handler.count...线上:0.6 hbase.ipc.server.call.queue.scan.ratio:默认为0,服务器端为了将get和scan隔离设置了该参数。...线上:0.1 hbase.ipc.server.call.queue.scan.ratio 默认0 scan请求直接打入read队列长时间不释放,导致正常read超时告警 源码理解 HRegionServer...使用的随机策咯getNextQueue.ThreadLocalRandom.current().nextInt(queueSize) 问题复现: 可以使用阿里的arthas进行regionserver的线程状态分析...hbase.ipc.server.callqueue.handler.factor) = 10,读写请求队列总个数 写队列个数 10 x 0.5hbase.ipc.server.callqueue.read.ratio

    36220

    Hbase compaction 源码分析二:详细 compaction 过程

    有关不同Policy的算法性能影响及适合场景可参考文章: http://hbasefly.com/2016/07/25/hbase-compaction-2/ hbase1.1.3版本使用的实现类是RatioBasedCompactionPolicy...: 下面,从chore方法中开始分析 compactor的过程,从chore方法中可以看到minor compact将调用compactSplitThread的requestSystemCompaction...requestCompaction方法,但这两个方法都会调用CompactSplitThread的requestCompactionInternal方法: 这个是requestCompactionInternal方法原型: 从源码中可以看到....执行后置listerner 选择文件的方法是利用滑动窗口把最多的小文件进行合并,可参考http://www.cnblogs.com/cenyuhai/p/3746473.html:,本文档将着重分析在...2016/07/25/hbase-compaction-2/

    2K20

    Hbase源码系列之源码前奏hbase:meta表相关详细介绍

    一,基本功能介绍 -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),可以根据源码去实现自己的修补指令。 元数据和用户实际的表信息不一致是很常见的现象,所以这两点后面会详细介绍。

    3.1K100

    hbase 学习(十四)Facebook针对hbase的优化方案分析

    使用hbase的目的是为了海量数据的随机读写,但是在实际使用中却发现针对随机读的优化和gc是一个很大的问题,而且hbase的数据是存储在Hdfs,而Hdfs是面向流失数据访问进行设计的,就难免带来效率的下降...2011),最近他们在存储领域顶级会议FAST2014上发表了一篇论文《Analysis of HDFS Under HBase: A Facebook Messages Case Study》分析了他们在使用...HBase中遇到的一些问题和解决方案。...该论文首先讲了Facebook的分析方法包括tracing/analysis/simulation,FM系统的架构和文件与数据构成等,接下来开始分析FM系统在性能方面的一些问题,并提出了解决方案。...注:关于拿Flash/SSD做cache,可以参考HBase BucketBlockCache(HBASE-7404) ?

    1.2K50

    hbase源码系列(七)Snapshot的过程

    它就想是给数据库做备份,尤其是做删除动作之前,不管是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文件夹内。

    1.6K70

    hbase源码系列(一)Balancer 负载均衡

    源码很久了,终于开始动手写博客了,为什么是先写负载均衡呢,因为一个室友入职新公司了,然后他们遇到这方面的问题,某些机器的硬盘使用明显比别的机器要多,每次用hadoop做完负载均衡,很快又变回来了。...0) { return 0; } return Math.max(0d, Math.min(1d, (value - min) / max)); }   经过分析吧...hbase.master.balancer.stochastic.moveCost,默认值是100 localityCost hbase.master.balancer.stochastic.localityCost...hbase.master.balancer.stochastic.readRequestCost,默认值是5 WriteRequestCostFunction hbase.master.balancer.stochastic.writeRequestCost...根据虚拟的集群状态生成RegionPlan,这里就不说了 List plans = createRegionPlans(cluster);   源码分析完毕,要想减少存储内容分布不均匀

    1.5K101

    HBase行锁与MVCC分析

    四个部分分析: 案例场景 流程解析 0.94-0.96实现方案分析 模拟试验及分析 一、案例场景 转发微博 抱歉,此微博已被作者删除。...分析这个问题前我们先要了解HBase 如何保证写一致性: 冲突预防:避免分布式的并发写操作,将对特定数据项的所有写操作路由到单个节点上(可以是全局主节点或者分区主节点)。...另外也去掉了client端无用的分配lockid方法 四、模拟试验及分析 构造模拟代码 HBaseInsertTest1类,  TestKeyValueSkipListSet为提取 HBase的KeyValueSkipListSet...作为公有类,存储数据使用 package com.daodao.hbase; import org.apache.hadoop.hbase.KeyValue; import org.apache.hadoop.hbase.regionserver.MultiVersionConsistencyControl...p=16  MVCC分析也可以对比阅读一下。

    1.7K50
    领券