HBase基本介绍
垂直分表的意思. • 读缓存: BlockCache • 写缓存: Memstore • 写操作⽇日志: WAL • 数据⽂文件: HFile 系统组成 RegionServer 深⼊入RegionServer内部. 有两个Cache和两种⽂文件 • 先写WAL做故障恢复⽤用 • 写到Memstore中 • ⾜足够⼤大时flush到HFile • Compaction Compaction (Minor/Major) 系统组成 RegionServer写操作 ⼀一个Region多个CF就多个Memstore 在Memstore⾥里里已经处理理好格式, 排序 有⼀一个Memstore满了了, 就整个Region flush 这⾥里里每隔⼀一会就flush, 会⽣生成很多⼩小的HFile, HBase会执⾏行行两种compaction, minor com只是将⼩小的何为⼀一些⼤大的 合成⼀一个⽂文件 (all the HFiles in a region to one HFile per column family). 归并排序. • 先找BlockCache • 再找Memstore, 写⼊入还没flush • 根据index去HFile⾥里里找 • HBase如何在hdfs这种append- only⽂文件系统上实现, 修改/删除 操作的 系统组成 RegionServer读操作0 码力 | 33 页 | 4.86 MB | 1 年前3HBase最佳实践及优化
为上限,具体视服务器能力(CPU内核) 及访问压力(每个Region的服务量)而定 • 过多Region的症状: – CPU线程切换频繁 – 内存使用过大,造成GC频繁,服务Timeout – 每个Region的Memstore太小,磁盘flush频繁, HFile文件过多小文件 Postgres Conference China 2016 中国用户大会 Major Compaction • HBase根据时间来计划执行Major blockingStoreFiles,建议值30 – 更大的hbase.hregion.memstore.flush.size能减少 Compaction的次数 • 现在缺省128MB,一般不用修改 Postgres Conference China 2016 中国用户大会 HBase的GC特点 • 由单个RPC带来的操作类垃圾对象是短期的 • Memstore是相对长期驻留的,按2MB为单位分配 • Blockcache是长期驻留的,按64KB为单位分配 • 没有可用的handler响应 – 考虑增加handler数目或硬件资源 • 更常见的情况是95%-99%的写入都很快,但有些 写入非常慢,甚至慢上万倍,一般问题在服务器端: – 写入Memstore慢 • HLog写入超时——考虑HDFS及硬盘异常 • GC——考虑优化内存使用(GC参数及算法调优有限) – Flush慢 • HFile写入超时——考虑HDFS及硬盘异常 • Com0 码力 | 45 页 | 4.33 MB | 1 年前3HBase Practice At Xiaomi
each JVM option changed ● HBase configuration ○ 0.3 <= global memstore limit <= 0.45 ○ hfile.block.cache.size = 0.1 ○ hbase.hregion.memstore.flush.size = 256 MB ○ hbase.bucketcache.ioengine = offheap0 码力 | 45 页 | 1.32 MB | 1 年前3HBASE-21879 Read HFile ’s Block into ByteBuffer directly.
retained until those key values are successfully written to the WAL log and Memstore. The ConcurrentSkipListSet in Memstore does not directly store the Cell data, but reference to cells, which are encoded0 码力 | 18 页 | 1.14 MB | 1 年前3
共 4 条
- 1