SlideShare una empresa de Scribd logo
1 de 31
介绍
HBASE定位
• HBASE是存储
• 基于HDFS
• 实时随机读写
HBASE特性
•   线性扩展
•   行操作的强一致性
•   自动分表
•   支持MapReduce
•   Java,Thrift,REST-ful接口
HBASE基本性能参数
• 3台RegionServer.每台8G内存,8核
• 1亿行
          Row/s   MB/s     Row/s      BigTable
                           Per node   Row/s
                                      per node
随机写       14789   14.789   4930       8850

随机写       22180   22.180   7393       8850
(noLog)
随机读       1996    1.996    665        1212

顺序读       10678   10.678   3559       4425
目录
•   HBASE模型
•   架构设计
•   使用技巧
•   运维技巧
•   测试分析
HBASE模型
Hbase数据模型
•   Table
•   Region
•   ColumnFamily
•   Row
•   Column
              CELL
•   Version
•   Value
HBASE操作
• Put
  – Delete
  – 原子操作
  – WAL
• Scan
  – Get
  – Filter
  – Cache/Batch
• 批量操作
• 行锁
HBASE架构设计
总体结构
• Master
  – Region之上的操作
  – Put/Get不经过Master
• RegionServer
  – Region之下的操作
• HDFS
  – HFile
  – HLog
• ZooKeeper
  – 状态信息
RegionServer结构
HFile结构
• DataBlock
  – 存储Key-Value
• MetaBlock(可选)
  – 存储BloomFilter
• DataBlockIndex
  – Key到Block Offset
• Read
  – 占用内存,加载缓慢
• Write
Hfile性能测试
                        none             gz           lzo
Write                  20718          23885         55147
Full Scan              41436          94937        100000
Random Seek              600            989          956
Random Short
                       12241          25568         25655
Scan

120000
100000
 80000
 60000                                                        none
 40000                                                        gz
 20000                                                        lzo
        0
               Write   Full Scan   Random Seek Random Short
                                                   Scan
存储分布
• 寻找RegionServer
  – ZooKeeper
  – -ROOT-(单Region)
  – .META.
  – 用户表
Put/Get操作
•   PUT
•   DELETE
•   GET
•   SCAN
Region操作
•   Flush MemStore
•   Compact
•   Major Compact
•   Split
使用技巧
Schema设计
• Column Family的数量
  – 最好为1
• Key的设计
  – 避免单调递增
  – 最小化
• 最小化Column
Schema设计
• Column Family的数量
  – 最好为1
• Key的设计
  – 避免单调递增
  – 最小化
• 最小化Column
Schema设计
• Column Family的数量
  – 最好为1
• Key的设计
  – 避免单调递增
  – 最小化
• 最小化Column
MapReduce结合
• Mapper
  – Region数=Mapper数
• Reducer
  – Region数=Reducer数
  – Reducer写Hfile,再 BulkLoad
• Hive/Pig
建立索引
• 单列索引                  Index                    Key
                        Column:Value             Key…
• 组合索引                                           单列索引
• Join?
 – Key <=> Kind:ID
                     Index                        Key
                     Column:Value/Column:Value    Key…


                                                       组合索引
开发调优
• Table属性
  – BlockSize
  – BloomFilter
  – BlockCache
  – InMemory
• 尽可能使用Bulk Load
• Put使用客户端Cache
• Scan使用Cache/Batch
运维技巧
HBASE 部署
• Hadoop版本
  – Hadoop 0.20.x
  – Append补丁
• ZooKeeper
• Metric
• 内存
  – RegionServer 12GB
     • MemStore <=40%
     • HFile DataIndex
     • BlockCache <=20%
  – Master 4GB
  – ZooKeeper 1GB
Region管理
• 预创建Region
• Region的大小
  – hbase.hregion.max.filesize=256MB,1GB,4GB
  – 手动Split,交错负载
• Region合并
  –   hbase.hstore.compactionThreshold=3
  –   hbase.hstore.blockingStoreFiles=7(阻塞,超时)
  –   hbase.hstore.compaction.max=10
  –   hbase.hregion.majorcompaction=86400,0
• MemStore Flush
  – hbase.regionserver.global.memstore.upperLimit
  – hbase.regionserver.global.memstore.lowerLimit
运维调优
• Java GC
  – JVM GC调整(ParNewGC+CMS)
  – Full GC-10s/GB
  – MemStore本地分配(2MB,减少碎片)
• LZO压缩
  – 压缩单位为Block
  – 提高性能
• 并发数调整
  – hbase.regionserver.handler.count
• Cache设置
  – hfile.block.cache.size
测试分析
随机Get测试




• Get波动不是很大
Put测试




• Put有波动
• Region操作导致阻塞
Put测试
•   Client重试波动
•   HLog拖慢速度
•   Split波动
•   Compact波动

Más contenido relacionado

La actualidad más candente

Mysql调优
Mysql调优Mysql调优
Mysql调优ken shin
 
大规模网站架构
大规模网站架构大规模网站架构
大规模网站架构drewz lin
 
云梯的多Namenode和跨机房之路
云梯的多Namenode和跨机房之路云梯的多Namenode和跨机房之路
云梯的多Namenode和跨机房之路li luo
 
Leveldb background
Leveldb backgroundLeveldb background
Leveldb background宗志 陈
 
Bypat博客出品-服务器运维集群方法总结2
Bypat博客出品-服务器运维集群方法总结2Bypat博客出品-服务器运维集群方法总结2
Bypat博客出品-服务器运维集群方法总结2redhat9
 
redis 适用场景与实现
redis 适用场景与实现redis 适用场景与实现
redis 适用场景与实现iammutex
 
Mvcc (oracle, innodb, postgres)
Mvcc (oracle, innodb, postgres)Mvcc (oracle, innodb, postgres)
Mvcc (oracle, innodb, postgres)frogd
 
深入淺出Node.JS
深入淺出Node.JS深入淺出Node.JS
深入淺出Node.JS國昭 張
 
Kubernetes use-ceph
Kubernetes use-cephKubernetes use-ceph
Kubernetes use-cephYang Guanjun
 
阿里CDN技术揭秘
阿里CDN技术揭秘阿里CDN技术揭秘
阿里CDN技术揭秘Joshua Zhu
 
Kvmopt osforce
Kvmopt osforceKvmopt osforce
Kvmopt osforcemeecheng
 
淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化丁 宇
 
Design realization and application of RBD NBD - Wang Li
Design realization and application of RBD NBD - Wang LiDesign realization and application of RBD NBD - Wang Li
Design realization and application of RBD NBD - Wang LiCeph Community
 
数据库内核分享——第一期
数据库内核分享——第一期数据库内核分享——第一期
数据库内核分享——第一期frogd
 
Buffer pool implementaion inno db vs oracle
Buffer pool implementaion inno db vs oracleBuffer pool implementaion inno db vs oracle
Buffer pool implementaion inno db vs oraclefrogd
 
MySQL设计、优化、运维
MySQL设计、优化、运维MySQL设计、优化、运维
MySQL设计、优化、运维Jinrong Ye
 
淘宝网前台应用性能优化实践
淘宝网前台应用性能优化实践淘宝网前台应用性能优化实践
淘宝网前台应用性能优化实践丁 宇
 
MySQL技术分享:一步到位实现mysql优化
MySQL技术分享:一步到位实现mysql优化MySQL技术分享:一步到位实现mysql优化
MySQL技术分享:一步到位实现mysql优化Jinrong Ye
 

La actualidad más candente (20)

Mysql调优
Mysql调优Mysql调优
Mysql调优
 
大规模网站架构
大规模网站架构大规模网站架构
大规模网站架构
 
云梯的多Namenode和跨机房之路
云梯的多Namenode和跨机房之路云梯的多Namenode和跨机房之路
云梯的多Namenode和跨机房之路
 
Ceph monitor-op
Ceph monitor-opCeph monitor-op
Ceph monitor-op
 
Leveldb background
Leveldb backgroundLeveldb background
Leveldb background
 
Bypat博客出品-服务器运维集群方法总结2
Bypat博客出品-服务器运维集群方法总结2Bypat博客出品-服务器运维集群方法总结2
Bypat博客出品-服务器运维集群方法总结2
 
redis 适用场景与实现
redis 适用场景与实现redis 适用场景与实现
redis 适用场景与实现
 
Mvcc (oracle, innodb, postgres)
Mvcc (oracle, innodb, postgres)Mvcc (oracle, innodb, postgres)
Mvcc (oracle, innodb, postgres)
 
深入淺出Node.JS
深入淺出Node.JS深入淺出Node.JS
深入淺出Node.JS
 
Kubernetes use-ceph
Kubernetes use-cephKubernetes use-ceph
Kubernetes use-ceph
 
阿里CDN技术揭秘
阿里CDN技术揭秘阿里CDN技术揭秘
阿里CDN技术揭秘
 
Kvmopt osforce
Kvmopt osforceKvmopt osforce
Kvmopt osforce
 
淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化
 
Design realization and application of RBD NBD - Wang Li
Design realization and application of RBD NBD - Wang LiDesign realization and application of RBD NBD - Wang Li
Design realization and application of RBD NBD - Wang Li
 
数据库内核分享——第一期
数据库内核分享——第一期数据库内核分享——第一期
数据库内核分享——第一期
 
Buffer pool implementaion inno db vs oracle
Buffer pool implementaion inno db vs oracleBuffer pool implementaion inno db vs oracle
Buffer pool implementaion inno db vs oracle
 
MySQL设计、优化、运维
MySQL设计、优化、运维MySQL设计、优化、运维
MySQL设计、优化、运维
 
淘宝网前台应用性能优化实践
淘宝网前台应用性能优化实践淘宝网前台应用性能优化实践
淘宝网前台应用性能优化实践
 
MySQL技术分享:一步到位实现mysql优化
MySQL技术分享:一步到位实现mysql优化MySQL技术分享:一步到位实现mysql优化
MySQL技术分享:一步到位实现mysql优化
 
Hantuo openstack
Hantuo openstackHantuo openstack
Hantuo openstack
 

Similar a Hbase介绍

Pegasus: Designing a Distributed Key Value System (Arch summit beijing-2016)
Pegasus: Designing a Distributed Key Value System (Arch summit beijing-2016)Pegasus: Designing a Distributed Key Value System (Arch summit beijing-2016)
Pegasus: Designing a Distributed Key Value System (Arch summit beijing-2016)涛 吴
 
大型网站架构的发展
大型网站架构的发展大型网站架构的发展
大型网站架构的发展drewz lin
 
大型网站架构的发展
大型网站架构的发展大型网站架构的发展
大型网站架构的发展Hesey
 
分布式缓存与队列
分布式缓存与队列分布式缓存与队列
分布式缓存与队列XiaoJun Hong
 
H base 使用初体验
H base 使用初体验H base 使用初体验
H base 使用初体验兴 施
 
Exadata那点事
Exadata那点事Exadata那点事
Exadata那点事freezr
 
Linux内存管理
Linux内存管理Linux内存管理
Linux内存管理zijia
 
Linux内存管理
Linux内存管理Linux内存管理
Linux内存管理zijia
 
Linux Binary Exploitation - Stack buffer overflow
Linux Binary Exploitation - Stack buffer overflowLinux Binary Exploitation - Stack buffer overflow
Linux Binary Exploitation - Stack buffer overflowAngel Boy
 
百度前端技术交流会--搜搜前端架构演变与优化
百度前端技术交流会--搜搜前端架构演变与优化百度前端技术交流会--搜搜前端架构演变与优化
百度前端技术交流会--搜搜前端架构演变与优化tiantianli
 
[Baidu web frontend_conference_2010]_[soso_frontend_architecture]
[Baidu web frontend_conference_2010]_[soso_frontend_architecture][Baidu web frontend_conference_2010]_[soso_frontend_architecture]
[Baidu web frontend_conference_2010]_[soso_frontend_architecture]思念 青青
 
From Java Stream to Java DataFrame
From Java Stream to Java DataFrameFrom Java Stream to Java DataFrame
From Java Stream to Java DataFrameChen-en Lu
 
How do we manage more than one thousand of Pegasus clusters - backend part
How do we manage more than one thousand of Pegasus clusters - backend partHow do we manage more than one thousand of Pegasus clusters - backend part
How do we manage more than one thousand of Pegasus clusters - backend partacelyc1112009
 
数据库高可用架构
数据库高可用架构数据库高可用架构
数据库高可用架构freezr
 
Nosql三步曲
Nosql三步曲Nosql三步曲
Nosql三步曲84zhu
 
20110625.【打造高效能的cdn系统】.易统
20110625.【打造高效能的cdn系统】.易统20110625.【打造高效能的cdn系统】.易统
20110625.【打造高效能的cdn系统】.易统锐 张
 
Cephfs架构解读和测试分析
Cephfs架构解读和测试分析Cephfs架构解读和测试分析
Cephfs架构解读和测试分析Yang Guanjun
 
Hbase架构简介、实践
Hbase架构简介、实践Hbase架构简介、实践
Hbase架构简介、实践Li Map
 
1到100000000 - 分布式大型网站的架构设计
1到100000000 - 分布式大型网站的架构设计1到100000000 - 分布式大型网站的架构设计
1到100000000 - 分布式大型网站的架构设计RolfZhang
 

Similar a Hbase介绍 (20)

Pegasus: Designing a Distributed Key Value System (Arch summit beijing-2016)
Pegasus: Designing a Distributed Key Value System (Arch summit beijing-2016)Pegasus: Designing a Distributed Key Value System (Arch summit beijing-2016)
Pegasus: Designing a Distributed Key Value System (Arch summit beijing-2016)
 
大型网站架构的发展
大型网站架构的发展大型网站架构的发展
大型网站架构的发展
 
大型网站架构的发展
大型网站架构的发展大型网站架构的发展
大型网站架构的发展
 
Hbase
HbaseHbase
Hbase
 
分布式缓存与队列
分布式缓存与队列分布式缓存与队列
分布式缓存与队列
 
H base 使用初体验
H base 使用初体验H base 使用初体验
H base 使用初体验
 
Exadata那点事
Exadata那点事Exadata那点事
Exadata那点事
 
Linux内存管理
Linux内存管理Linux内存管理
Linux内存管理
 
Linux内存管理
Linux内存管理Linux内存管理
Linux内存管理
 
Linux Binary Exploitation - Stack buffer overflow
Linux Binary Exploitation - Stack buffer overflowLinux Binary Exploitation - Stack buffer overflow
Linux Binary Exploitation - Stack buffer overflow
 
百度前端技术交流会--搜搜前端架构演变与优化
百度前端技术交流会--搜搜前端架构演变与优化百度前端技术交流会--搜搜前端架构演变与优化
百度前端技术交流会--搜搜前端架构演变与优化
 
[Baidu web frontend_conference_2010]_[soso_frontend_architecture]
[Baidu web frontend_conference_2010]_[soso_frontend_architecture][Baidu web frontend_conference_2010]_[soso_frontend_architecture]
[Baidu web frontend_conference_2010]_[soso_frontend_architecture]
 
From Java Stream to Java DataFrame
From Java Stream to Java DataFrameFrom Java Stream to Java DataFrame
From Java Stream to Java DataFrame
 
How do we manage more than one thousand of Pegasus clusters - backend part
How do we manage more than one thousand of Pegasus clusters - backend partHow do we manage more than one thousand of Pegasus clusters - backend part
How do we manage more than one thousand of Pegasus clusters - backend part
 
数据库高可用架构
数据库高可用架构数据库高可用架构
数据库高可用架构
 
Nosql三步曲
Nosql三步曲Nosql三步曲
Nosql三步曲
 
20110625.【打造高效能的cdn系统】.易统
20110625.【打造高效能的cdn系统】.易统20110625.【打造高效能的cdn系统】.易统
20110625.【打造高效能的cdn系统】.易统
 
Cephfs架构解读和测试分析
Cephfs架构解读和测试分析Cephfs架构解读和测试分析
Cephfs架构解读和测试分析
 
Hbase架构简介、实践
Hbase架构简介、实践Hbase架构简介、实践
Hbase架构简介、实践
 
1到100000000 - 分布式大型网站的架构设计
1到100000000 - 分布式大型网站的架构设计1到100000000 - 分布式大型网站的架构设计
1到100000000 - 分布式大型网站的架构设计
 

Hbase介绍