hbase-列存儲動態數據庫


1)   HBase是什么?

HBase是建立在Hadoop文件系統之上的分布式面向列的數據庫。它是一個開源項目,是橫向擴展的。

HBase是一個數據模型,類似於谷歌的大表設計,可以提供快速隨機訪問海量結構化數據。它利用了Hadoop的文件系統(HDFS)提供的容錯能力。

它是Hadoop的生態系統,提供對數據的隨機實時讀/寫訪問,是Hadoop文件系統的一部分。

人們可以直接或通過HBase的存儲HDFS數據。使用HBase在HDFS讀取消費/隨機訪問數據。 HBase在Hadoop的文件系統之上,並提供了讀寫訪問。

 

 

2)   HBase的存儲機制

HBase是一個面向列的數據庫,在表中它由行排序。表模式定義只能列族,也就是鍵值對。一個表有多個列族以及每一個列族可以有任意數量的列。后續列的值連續地存儲在磁盤上。表中的每個單元格值都具有時間戳。

總之,在一個HBase:表是行的集合à行是列族的集合à列族是列的集合à列是鍵值對的集合,如圖:

 

 

3)   Hbase的特點
  1. 建立在HDFS之上,面向列的針對結構化數據的可伸縮、高可靠、高性能、分布式列存儲的動態模式數據庫,列式數據庫(nosql)專門解決hadoop不擅長的工作。
  2. 采用BigTable的數據模型。增強的稀疏排序映射表(Key/Value),其中“鍵”是由行關鍵字、列關鍵字、時間截構成。
  3. 提供對大規模數據的隨機、實時讀寫訪問功能,其保存的數據可通過MapReduce處理。

 

4)   行數據庫與列數據庫的區別

 

 

 

 

 

5)   hbase表特點:
  1. 表比較大,一個表有數十億行,上百萬列;
  2. 無模式:每行都有一個可排序的主鍵和任意多的列,列可以根據需要冬天的增加,同一張表中的行也已有截然不同的列;
  3. 稀疏:空值列並不占用存儲空間,列獨立檢索;
  4. 數據多版本:每個單元中的數據可以有多個版本,默認情況下版本號自動分配,是單元格插入時間戳;
  5. 數據類型單一:數據都是字符串,沒有類型
6)   存儲核心—Hstore

Hstore分為menstore和storefiles兩部分。

        用戶寫入的數據首先會放入MemStore,當MemStore滿了以后會Flush成一個StoreFile(底層實現是HFile),當StoreFile文件數量增長到一定閾值,會觸發Compact合並操作,將多個StoreFiles合並成一個StoreFile,合並過程中會進行版本合並和數據刪除

        HBase其實只有增加數據,所有的更新和刪除操作都是在后續的compact過程中進行的,這使得用戶的寫操作只要進入內存中就可以立即返回,保證了HBase I/O的高性能架構。

7)   Hbase架構

 

 

一個HMaster(管理服務器)控制多個Region Server(數據服務器);

  1. HMater負責表的創建、刪除、維護以及Region的分配和負載均衡;
  2. Region Server負責管理維護Region以及響應讀寫請求;
  3. 客戶端與HMaster進行有關表的元數據操作,之后直接讀寫Region servers。

 

 

Master職責:

1. 為regionserver分配region;

2. 負責regionserver的負載均衡;

3. 垃圾文件回收;

4. 處理schema請求

Zookeeper職責:

  1. 保證集群只有一個Master;
  2. 監控Region Server狀態,實時通知Master;
  3. Hbase目錄入口地址;
  4. Hbase的Schema信息

Region職責:

  1. 對數據的讀寫支持;
  2. 對region管理的支持;
  3. Hbase目錄入口地址;
  4. Hbase的Schema信息
8)   HBase 和 HDFS關系

9)   hive與hbase區別

        相同點:都是架構在hadoop之上,都是用hadoop作為底層存儲

        不同點:

          Hive:

  1. 是批處理系統,目的是檢索MapReduce jobs的編寫工作;
  2. 是純邏輯表並且是全表掃描,本身不存儲和計算數據,完全依賴HDFS和MapReduce;
  3. 時效性低

        Hbase:

  1. 是實時操作系統,目的是彌補hadoop的缺陷項目;
  2. 是物理表,采用列存儲索引數據或實時數據,提供超大的內存hash表;
  3. 高時效性。
10) Hbase環境搭建
在安裝hadoop分布式文件系統的集群中選擇任意幾台機器安裝hbase
安裝jdk,hadoop,tar,設置環境變量(同hadoop/hive類似操作)
驗證安裝是否成功:hbase version
完全分布式配置:
 [hbase/conf/hbase-env.sh]
 export JAVA_HOME=/soft/jdk
 export HBASE_MANAGES_ZK=false
 [hbse-site.xml]
 <!-- 使用完全分布式 -->
 <property>
 <name>hbase.cluster.distributed</name>
 <value>true</value>
 </property>
 <!-- 指定hbase數據在hdfs上的存放路徑 -->
 <property>
 <name>hbase.rootdir</name>
 <value>hdfs://ip:8020/hbase</value>
 </property>
 <!-- 配置zk地址 -->
 <property>
 <name>hbase.zookeeper.quorum</name>
 <value>ip1:2181,ip2:2181,ip3:2181</value>
 </property>
 <!-- zk的本地目錄 -->
 <property>
 <name>hbase.zookeeper.property.dataDir</name>
 <value>/home/centos/zookeeper</value>
 </property>
配置regionservers
  [hbase/conf/regionservers]
  節點名稱1
  節點名稱2
  …
啟動集群:進入hbase的bin目錄
./start-hbase.sh


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM