SlideShare a Scribd company logo
介绍
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波动

More Related Content

What's hot

Mysql调优
Mysql调优Mysql调优
Mysql调优
ken shin
 
大规模网站架构
大规模网站架构大规模网站架构
大规模网站架构
drewz lin
 
云梯的多Namenode和跨机房之路
云梯的多Namenode和跨机房之路云梯的多Namenode和跨机房之路
云梯的多Namenode和跨机房之路
li luo
 
Ceph monitor-op
Ceph monitor-opCeph monitor-op
Ceph monitor-op
Yang Guanjun
 
Leveldb background
Leveldb backgroundLeveldb background
Leveldb background
宗志 陈
 
Bypat博客出品-服务器运维集群方法总结2
Bypat博客出品-服务器运维集群方法总结2Bypat博客出品-服务器运维集群方法总结2
Bypat博客出品-服务器运维集群方法总结2
redhat9
 
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-ceph
Yang Guanjun
 
阿里CDN技术揭秘
阿里CDN技术揭秘阿里CDN技术揭秘
阿里CDN技术揭秘
Joshua Zhu
 
Kvmopt osforce
Kvmopt osforceKvmopt osforce
Kvmopt osforce
meecheng
 
淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化
丁 宇
 
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
Ceph 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 oracle
frogd
 
MySQL设计、优化、运维
MySQL设计、优化、运维MySQL设计、优化、运维
MySQL设计、优化、运维
Jinrong Ye
 
淘宝网前台应用性能优化实践
淘宝网前台应用性能优化实践淘宝网前台应用性能优化实践
淘宝网前台应用性能优化实践
丁 宇
 
MySQL技术分享:一步到位实现mysql优化
MySQL技术分享:一步到位实现mysql优化MySQL技术分享:一步到位实现mysql优化
MySQL技术分享:一步到位实现mysql优化
Jinrong Ye
 

What's hot (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 to 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 overflow
Angel Boy
 
[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]
思念 青青
 
百度前端技术交流会--搜搜前端架构演变与优化
百度前端技术交流会--搜搜前端架构演变与优化百度前端技术交流会--搜搜前端架构演变与优化
百度前端技术交流会--搜搜前端架构演变与优化
tiantianli
 
From Java Stream to Java DataFrame
From Java Stream to Java DataFrameFrom Java Stream to Java DataFrame
From Java Stream to Java DataFrame
Chen-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 part
acelyc1112009
 
数据库高可用架构
数据库高可用架构数据库高可用架构
数据库高可用架构
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 to 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 - 分布式大型网站的架构设计
 

Recently uploaded

DevOpsDays Taipei 2024 DevOps加入Biz讓DevOps在企業價值定位
DevOpsDays Taipei 2024 DevOps加入Biz讓DevOps在企業價值定位DevOpsDays Taipei 2024 DevOps加入Biz讓DevOps在企業價值定位
DevOpsDays Taipei 2024 DevOps加入Biz讓DevOps在企業價值定位
Edward Kuo
 
【炎龍老師的 AI 模組課程】03 和 AI PK 誰比較會認 IVE 成員: Contrastive Learning、人臉辨識
【炎龍老師的 AI 模組課程】03 和 AI PK 誰比較會認 IVE 成員: Contrastive Learning、人臉辨識【炎龍老師的 AI 模組課程】03 和 AI PK 誰比較會認 IVE 成員: Contrastive Learning、人臉辨識
【炎龍老師的 AI 模組課程】03 和 AI PK 誰比較會認 IVE 成員: Contrastive Learning、人臉辨識
Yen-lung Tsai
 
【炎龍老師的 AI 模組課程】02 用遷移式學習做八哥辨識: CNN 的原理、用名門 CNN 模型作遷移式學習
【炎龍老師的 AI 模組課程】02 用遷移式學習做八哥辨識: CNN 的原理、用名門 CNN 模型作遷移式學習【炎龍老師的 AI 模組課程】02 用遷移式學習做八哥辨識: CNN 的原理、用名門 CNN 模型作遷移式學習
【炎龍老師的 AI 模組課程】02 用遷移式學習做八哥辨識: CNN 的原理、用名門 CNN 模型作遷移式學習
Yen-lung Tsai
 
下载软件看app观看【网芷:ht28.co】带反差小姨子开房>>>[网趾:ht28.co】]<<<
下载软件看app观看【网芷:ht28.co】带反差小姨子开房>>>[网趾:ht28.co】]<<<下载软件看app观看【网芷:ht28.co】带反差小姨子开房>>>[网趾:ht28.co】]<<<
下载软件看app观看【网芷:ht28.co】带反差小姨子开房>>>[网趾:ht28.co】]<<<
arrogancepchzxp
 
【炎龍老師的 AI 模組課程】01 用全連結神經網路打造手寫辨識 AI: AI 原理與 MNIST 數據集
【炎龍老師的 AI 模組課程】01 用全連結神經網路打造手寫辨識 AI: AI 原理與 MNIST 數據集【炎龍老師的 AI 模組課程】01 用全連結神經網路打造手寫辨識 AI: AI 原理與 MNIST 數據集
【炎龍老師的 AI 模組課程】01 用全連結神經網路打造手寫辨識 AI: AI 原理與 MNIST 數據集
Yen-lung Tsai
 
【炎龍老師的 AI 模組課程】04 打造自己的 ChatGPT: 文字生成 AI 的原理、LLM 為什麼這麼厲害、OpenAI API
【炎龍老師的 AI 模組課程】04 打造自己的 ChatGPT: 文字生成 AI 的原理、LLM 為什麼這麼厲害、OpenAI API【炎龍老師的 AI 模組課程】04 打造自己的 ChatGPT: 文字生成 AI 的原理、LLM 為什麼這麼厲害、OpenAI API
【炎龍老師的 AI 模組課程】04 打造自己的 ChatGPT: 文字生成 AI 的原理、LLM 為什麼這麼厲害、OpenAI API
Yen-lung Tsai
 

Recently uploaded (6)

DevOpsDays Taipei 2024 DevOps加入Biz讓DevOps在企業價值定位
DevOpsDays Taipei 2024 DevOps加入Biz讓DevOps在企業價值定位DevOpsDays Taipei 2024 DevOps加入Biz讓DevOps在企業價值定位
DevOpsDays Taipei 2024 DevOps加入Biz讓DevOps在企業價值定位
 
【炎龍老師的 AI 模組課程】03 和 AI PK 誰比較會認 IVE 成員: Contrastive Learning、人臉辨識
【炎龍老師的 AI 模組課程】03 和 AI PK 誰比較會認 IVE 成員: Contrastive Learning、人臉辨識【炎龍老師的 AI 模組課程】03 和 AI PK 誰比較會認 IVE 成員: Contrastive Learning、人臉辨識
【炎龍老師的 AI 模組課程】03 和 AI PK 誰比較會認 IVE 成員: Contrastive Learning、人臉辨識
 
【炎龍老師的 AI 模組課程】02 用遷移式學習做八哥辨識: CNN 的原理、用名門 CNN 模型作遷移式學習
【炎龍老師的 AI 模組課程】02 用遷移式學習做八哥辨識: CNN 的原理、用名門 CNN 模型作遷移式學習【炎龍老師的 AI 模組課程】02 用遷移式學習做八哥辨識: CNN 的原理、用名門 CNN 模型作遷移式學習
【炎龍老師的 AI 模組課程】02 用遷移式學習做八哥辨識: CNN 的原理、用名門 CNN 模型作遷移式學習
 
下载软件看app观看【网芷:ht28.co】带反差小姨子开房>>>[网趾:ht28.co】]<<<
下载软件看app观看【网芷:ht28.co】带反差小姨子开房>>>[网趾:ht28.co】]<<<下载软件看app观看【网芷:ht28.co】带反差小姨子开房>>>[网趾:ht28.co】]<<<
下载软件看app观看【网芷:ht28.co】带反差小姨子开房>>>[网趾:ht28.co】]<<<
 
【炎龍老師的 AI 模組課程】01 用全連結神經網路打造手寫辨識 AI: AI 原理與 MNIST 數據集
【炎龍老師的 AI 模組課程】01 用全連結神經網路打造手寫辨識 AI: AI 原理與 MNIST 數據集【炎龍老師的 AI 模組課程】01 用全連結神經網路打造手寫辨識 AI: AI 原理與 MNIST 數據集
【炎龍老師的 AI 模組課程】01 用全連結神經網路打造手寫辨識 AI: AI 原理與 MNIST 數據集
 
【炎龍老師的 AI 模組課程】04 打造自己的 ChatGPT: 文字生成 AI 的原理、LLM 為什麼這麼厲害、OpenAI API
【炎龍老師的 AI 模組課程】04 打造自己的 ChatGPT: 文字生成 AI 的原理、LLM 為什麼這麼厲害、OpenAI API【炎龍老師的 AI 模組課程】04 打造自己的 ChatGPT: 文字生成 AI 的原理、LLM 為什麼這麼厲害、OpenAI API
【炎龍老師的 AI 模組課程】04 打造自己的 ChatGPT: 文字生成 AI 的原理、LLM 為什麼這麼厲害、OpenAI API
 

Hbase介绍