良いプログラマビッグデータは、HBaseのルート学習の要約を、なぜ HBaseの
データの緩やかな増加に伴い、従来のリレーショナルデータベースは満足できないのクエリとストアデータを、むしろハイブは、単純なストレージ要件を満たすためにも、データベースが、データウェアハウスではなく、まだ非構造化、半構造化を満たすことができませんデータストレージおよびクエリの
2hbase は何ですか
HBaseのは、Apacheのオープンソース、マルチバージョン、スケーラブルな非リレーショナルデータベースです。
彼は、Googleのに基づいているのBigtable に設立基盤HDFS 高提供する上で のNoSQLを読み書きするために信頼性を、高性能列ベースのストレージ、スケーラブルで、リアルタイムデータベースシステム
3 該当シーン
大容量データストレージ
ランダム読み取りおよび書き込みやリアルタイムデータを管理します
4つの特長
柱状ストレージ
モード:なしモード(する必要はありません gp1808を使用し、あなたが直接テーブルを作成することができ、その結果HBaseのテーブルには、同じ名前ではありません)
データタイプ:シングルバイト[]
マルチバージョン(バージョン):各値は複数のバージョンを持つことができます
スパースストレージ:場合は KVがあるヌル、それはストレージスペースを占有されることはありません
5 構造フレーム
クライアント:
HBase クライアントがアクセス含めるのHBase インタフェース(Linuxのシェル、Java APIを)
いくつかの維持キャッシュ(キャッシュ)速度へのHBaseのような速度を、領域の位置情報
飼育係:
監視 HMASTER 状態を、1つのみがあることを確認し、アクティブでHMASTERは、高可用性を実現するために
すべてのメモリは、入口領域に対処します、
リアルタイム監視 hregionserver 状態の、 regionserrver オフラインにリアルタイムで通知に関する情報HMASTER
保存する HBaseのすべてのテーブルの情報を( HBaseのメタデータ)
Hmster(HBaseのボス)
されるリージョンサーバー分与領域に(新しい表)
负责regionserver的负载均衡
负责region的重新分配(处理hregionserver异常,hregion裂变)
Hdfs上的垃圾文件回收
处理schema的更新请求
Hregionserver(hbase的小弟)
维护老大给他的region(管理本机上的region)
处理client对region的IO请求,并和hdfs交互
Regionserver负责切分在运行过程中变大的region
Hregion:
Hbase中分布式的存储和负载的最小单元,表或者是表的一部分
(在HBase中数据按主键排序,同时表按主键划分为多个Region
Region按大小分割的,随着数据增多,Region不断增大,当增大到一个阀值的Region就会分成两个新的Region)
Region虽然是分布式存储的最小单元,但并不是存储的最小单元。每个Region包含着多个Store对象。每个Store包含一个MemStore或若干StoreFile,StoreFile包含一个或多个HFile。MemStore存放在内存中,StoreFile存储在HDFS上。
Hlog;
对hbase的操作进行记录,使用wal(Write-Ahead-Log)写数据,优先写入log,然后再写入memstore,以防数据丢失时可以进行日志回滚回复数据
Store:
相当于一个列簇。
Memstore:128M
内存缓冲区,用于将数据批量刷新到hdfs上
Hstorefile(hfile)
Hbase中的数据是以hfile的形式存储到hdfs上
写流程:
1client通过zookeeper的调度,向regionserver发出写数据请求,在region中写数据
2数据被写入region的memstore,直达memstore达到预设的阈值(128M)
3memstore中的数据被flush成一个storefile
4随着storefile文件的不断增多,当其数量增长到一定阈值的时候,触发了compact合并操作,将多个storefile合并成一个storefile,同时进行版本合并和数据删除
5storefiles通过不断的compact合并操作,逐渐形成越来越大的storefile
6单个storefile大小超过一定阈值之后,触发spilt操作,把当前的region切分成2个新的region,父region会下线,新切出的2个字region会被hmaster分配到相应的regionserver上,使得原先的一个region的压力的以分配到2个region上
读流程:
1client访问zookeeper,查找root表,获取meta表的信息
2从meta表中查找,获取存放的目标的region信息,从而找到对应的regionserver
3通过regionserver获取需要查询的数据
4regionserver的内存分为memstore和blockcache两部分,memstore主要用于写数据,blockcache主要用于读数据,请求先到memstore中查数据,查不到就在blockcache在查,再查不到就会到storefile上读,并把读的结果放入blockcache
寻址过程:client-->Zookeeper-->-ROOT-表-->.META.表-->RegionServer-->Region-->client
Rowkey:行键,和mysql的主键一样,不允许重复,按照字典顺序排列
Columnfamily:列簇
Column:列
Timestamp:时间戳,默认显示最新的时间戳
Version:版本号,记录数据的版本
Cell:单元格,一个key 一个value