HBase Learn Part01

Chap 1 認識 HBase

本章重點 :node

  1. 瞭解 HBase 概念、發展歷史shell

  2. 瞭解 HBase 基本特性數據庫

  3. 瞭解 HBase 在 Hadoop Ecosystem編程

1-1 HBase 簡介

  1. HBase 是 Hadoop Database 高性能、面向列、可伸縮的分佈式存儲系統設計模式

  2. HBase 是 一種 NoSql (Not only SQL) 存儲系統, 專門用來快速隨機讀寫大規模數據緩存

  3. HBase 彌補了 Hadoop 只能離線批處理的不足,同時可以存儲小文件服務器

  4. HBase 提供海量數據的隨機檢索, 並保證必定的性能數據結構

1-2 HBase 歷史

  • 2008.01 HBase 列爲 Hadoop 的頂級項目架構

  • 2008.10 HBase 0.89.20100621併發

  • ......

  • HBase 0.98

  • HBase 1.0.0 里程碑

1-3 HBase 特性

HBase 做爲典型的 NoSQL 數據庫, 能夠經過 行鍵 (Rowkey) 檢索數據, 僅支持單行事務, 主要用於存儲 非結構化 和 半結構化 的鬆散數據。

  • 容量巨大

  • 面向列

  • 稀疏列

  • 擴展性

  • 高可靠性

  • 高性能

面向列

列式數據庫優勢:

  1. 數據按列存儲, 即 每一列單獨存放

  2. 數據即索引

  3. 只訪問查詢涉及的列, 能夠大量下降系統 IO

  4. 每一列由線索來處理, 即查詢的併發處理性能高

  5. 數據類型一致, 數據特性類似, 能夠高效壓縮

列式數據庫缺點:

  1. 不適合掃描小量數據

  2. 不適合隨機的更新

  3. 批量更新狀況各異,有的優化的比較好的列式數據庫(好比Vertica)表現比較好,有些沒有針對更新的數據庫表現比較差。

  4. 不適合作含有刪除和更新的實時操做。

稀疏列

  1. 行式存儲, 大量未 NULL 的列,佔用存儲空間

  2. HBase 列式存儲, 爲 空 的列並不佔用存儲空間, 所以表能夠設計的很是稀疏

擴展性

  1. HBase 底層依賴 HDFS, 基因上擴展性就好.

  2. HBase 的 Region 和 RegionServer 的概念對應到數據分區, 分區後數據能夠位於不一樣的機器, 因此 HBase 的核心架構也具有擴展性.

  3. HBase 的擴展性是熱擴展, 能夠隨時添加或者減小節點

高可靠性

  1. HBase 提供 WAL 和 Replication 機制.

  2. 協調服務 ZooKeeper 組件通過工業驗證的。

高性能

  1. 底層的 LSM 數據結構和 Rowkey 有序排列等架構, 具有高性能

  2. Region 切分、主鍵索引 和 緩存機制使得 HBase 具備隨機讀高性能

1-4 HBase 核心模塊

Hadoop 框架兩大核心組件

  1. HDFS

  2. MapReduce

HBase 四大核心模塊

  1. 客戶端 Client

  2. 協調服務模塊 ZooKeeper

  3. 主節點 HMaster

  4. Region節點 RegionServer

圖片描述

HBase架構圖

1). Client

整個 HBase 系統的入口, 使用 RPC 機制與 HMaster 和 RegionServer 通訊

  1. 管理類操做 : Client 與 HMaster 進行 RPC 通訊

  2. 數據讀寫操做 : Client 與 RegionServer 進行 RPC 交互

2). ZooKeeper

ZooKeeper Quorum(隊列) 負責管理 HBase 中 多 HMaster 的選舉, 保證HBase集羣中只有一個正常運行提供服務的 HMaster 節點。

還有 存儲HBase元數據信息、實時監控RegionServer、Region尋址入口等

3). 主節點 HMaster

HMaster 主要負責 Table 和 Region 的管理工做

  1. 管理用戶對 Table 的增、刪、改、查 操做。

  2. 管理 RegionServer 的負載均衡, 調整 Region 分佈。

  3. 在 Region 分裂後, 負責新 Region 的分配。

  4. 在 RegionServer 死機後, 負責失效 RegionServer 上的 Region 遷移

4). HRegionServer

HRegionServer 主要負責響應用戶 I/O 請求, 向 HDFS 文件系統中讀寫數據, 是 HBase 最核心的模塊。

圖片描述

HRegionServer 的組成結構

圖片描述

1-5 HBase Hadoop_Eco

圖片描述

HBase社區信

  1. 應該怎樣設計模式來存儲複雜的數據以保證讀寫性能的均衡?

  2. 應該怎樣規劃數據的訪問方式來保證最大限度地發揮 HBase 集羣的威力?

1-6 Hive & HBase

Hive

  1. Hive 是一種類 SQL 的引擎,而且運行 MapReduce 任務.

  2. Hive 能夠用來進行統計查詢

HBase

  1. HBase 能夠用來進行實時查詢

  2. HBase 是一種在 Hadoop之上的 NoSQL 的 Key/vale 數據庫。

數據也能夠從Hive寫到HBase,設置再從HBase寫回Hive

Chap 2 HBase架構組件

本章重點 :

  1. 瞭解 HBase 架構組件

2-1 HBase 核心組件

  1. HBase 利用 MapReduce 來處理 HBase 中的海量數據

  2. HBase 利用 HDFS 做爲文件存儲系統

  3. HBase 利用 ZooKeeper 做爲協同服務 (爲HBase提供 服務和失敗恢復機制)

HBase 功能

  1. HBase 主要用來存儲非結構化和半結構化的 鬆散數據

  2. HBase 僅能經過 row keyrow key 值 range 來檢索數據,僅支持單行事務(可經過 Hive 支持來實現多表鏈接等複雜操做)

  3. HBase 依靠橫向擴展, 須要經過增長廉價服務器來 增長計算和存儲能力

  4. HBase 的目的 是處理很是龐大的 table

2-2 HBase 部件的支持

Hadoop部件 function
HDFS 高可靠的底層存儲支持
MapReduce 高性能的計算能力
Zookeeper 穩定服務和failover機制
Pig&Hive 高層語言支持,便於數據統計
Sqoop 提供RDBMS數據導入,便於傳統數據庫向HBase遷移

2-3 HBase 的訪問接口

方式 特色 場合
Native Java API 最常規和高效 Hadoop MapReduce Job並行處理HBase表數據
HBase Shell 最簡單接口 HBase管理使用
Thrift Gateway 利用Thrift序列化支持多種語言 異構系統在線訪問HBase表數據
Rest Gateway 解除語言限制 Rest風格Http API訪問
Pig Pig Latin六十編程語言處理數據 數據統計
Hive 簡單,SqlLike 場合

2-4 HBase Table 數據模型

圖片描述

HBase Table 的特色

  1. 大 (一個table能夠上億行)

  2. 面向列 (族) 的存儲和權限控制,列(族)獨立檢索;

  3. 稀疏 (對於未null的列,並不佔用空間)

  4. 數據類型單一 : HBase中的數據都是字符串,沒有類型。

HBase Table 介紹

  1. Row Key: 行鍵,Table的主鍵,Table中的記錄按照Row Key排序

  2. Timestamp: 時間戳,每次數據操做對應的時間戳,能夠看做是數據的version number

  3. Column Family:列簇,Table在水平方向有一個或者多個Column Family組成,一個Column Family中能夠由任意多個Column組成,即Column Family支持動態擴展,無需預先定義Column的數量以及類型,全部Column均以二進制格式存儲,用戶須要自行進行類型轉換。

Chap 3 HBase安裝與配置

本章重點 :

  1. 瞭解 HBase集羣 的安裝、部署、啓動 和 中止

  2. 命令行方式對 HBase 進行 插入、查詢、刪除 數據等

注意

  1. 配置 HBase與Hadoop相似, 都是經過安裝包的 conf 目錄下的配置生效

  2. 修改一臺機器的配置文件後, 記得要同步到集羣中的全部節點

  3. 資源限制命令 : ulimit、 nproc (用戶打開的文件數、進程數等)

  4. Hadoop 版本2.x, dfs.datanode.max.xcievers 同時處理文件個數參數設置

3-1 HBase 安裝條件

JDK、SSH、DNS、LoopbackIP、NTP、ulimit、zookeeper

3-2 HBase 運行模式

  1. 單機模式

  2. 分佈式模式 (HDFS運行良好須要)

Edit conf/hbase-env.sh config

1. 文件告知 HBase Java 安裝路徑。
  2. HBase 運行環境, Heap Size 有關 JVM 選項
  3. 日誌文件保存目錄、進程優先級等

3-2-1 單機模式

這是 HBase 默認的運行模式, 在單機模式中, HBase 使用本地文件系統, 而不是 HDFS, 全部的服務 和 ZooKeeper 都運行在一個 JVM 中。ZooKeeper 監聽一個端口, 這樣客戶端就能夠鏈接 HBase 了。

  1. 配置 JDK

  2. HBase 安裝 (需修改 hbase-site.xml)

    hbase.rootdir 表明 HBase 數據存放的位置
    hbase.zookeeper.property.dataDir zk數據存放的位置
  3. 啓動 HBase

    bin/start-hbase.sh
    bin/hbase shell

3-2-2 僞分佈式模式

僞分佈式模式 (全部進程運行在一臺機器上)

編輯 conf/hbase-site.xml, 整個配置會覆蓋 HBase 的默認配置(hbase-default.xml)

配置 hbase.rootdir HBase在HDFS中使用的目錄位置。

<configuration>
  <property>
    <name>hbase.rootdir</name>
    <value>hdfs://localhost:9000/hbase</value>
  </property>
  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>
</configuration>

注意

  1. 須要將 localhost 設置成主機名, 其餘機器才能訪問它

啓動 HBase

  1. bin/start-hbase.sh

  2. HMaster...

  3. RegionServer...

3-2-3 分佈式模式

分佈式模式 整個服務分佈在各個節點上

3-3 HBase 的 Web UI

http://node190:60010/

3-4 HBase Shell 使用

命令行工具鏈接到 HBase

[hdfs@node196 ~]$ hbase shell
16/03/02 14:03:16 INFO Configuration.deprecation: hadoop.native.lib is deprecated. Instead, use io.native.lib.available
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 0.98.6-cdh5.3.6, rUnknown, Tue Jul 28 15:19:46 PDT 2015

hbase(main):001:0>
hbase(main):018:0> list 'table'
TABLE
0 row(s) in 0.0050 seconds

=> []
hbase(main):017:0> put 'test', 'row1', 'cf:a', 'value1'
0 row(s) in 0.0080 seconds
hbase(main):017:0> put 'test', 'row2', 'cf:b', 'value2'
0 row(s) in 0.0080 seconds
hbase(main):017:0> put 'test', 'row3', 'cf:c', 'value3'
0 row(s) in 0.0080 seconds
hbase(main):019:0> get 'test', 'row1'
COLUMN                             CELL
 cf:a                              timestamp=1456900507721, value=value1
1 row(s) in 0.0070 seconds
hbase(main):021:0> scan 'test'
ROW                                COLUMN+CELL
 row1                              column=cf:a, timestamp=1456900507721, value=value1
 row2                              column=cf:b, timestamp=1456900829731, value=value2
 row3                              column=cf:c, timestamp=1456900535757, value=value3
3 row(s) in 0.0080 seconds

3-5 中止 HBase 集羣

bin/stop-hbase.sh
相關文章
相關標籤/搜索