大数据学习(4)--分布式数据库HBase
生活随笔
收集整理的這篇文章主要介紹了
大数据学习(4)--分布式数据库HBase
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 目錄
- 1.HBase概述
- 1.1BigTable
- 1.2 HBase簡介
- 1.3 HBase和傳統的關系型數據庫之間的區別
- 2.HBase訪問接口
- 3.HBase數據模型
- 3.1 數據模型概述
- 3.2 數據模型相關概念
- 3.3 數據坐標
- 3.4 概念視圖
- 3.5 物理視圖
- 3.6 面向列的存儲
- 4.HBase的實現原理
- 4.1 HBase功能組件
- 4.2 表和region
- 4.3 region的定位
- 5.HBase運行機制
- 5.1 HBase系統架構
- 5.2 region服務器工作原理
- 5.3 Store工作原理
- 5.4 HLog工作原理
- 6.HBase應用方案
- 6.1 HBase實際應用過程中的性能優化方案
- 6.2 HBase性能監測
- 6.3 在HBase上構建SQL引擎
- 6.4 構建HBase二級索引(列的直接索引)
- 7.HBase編程實踐
- 7.1 HBase的安裝和配置
- 7.2 HBase常用的Shell命令
- 7.3 HBase常用的JAVA API及應用
- 8.總結
目錄
1.HBase概述
1.1BigTable
1.2 HBase簡介
HBase是一個高可靠、高性能、面向列、可伸縮的分布式數據庫,是谷歌BigTable的開源實現,主要用來存儲非結構化和半結構化的松散數據。HBase的目標是處理非常龐大的表,可以通過水平擴展的方式,利用廉價計算機集群處理由超過10億行數據和數百萬列元素組成的數據表
1.3 HBase和傳統的關系型數據庫之間的區別
2.HBase訪問接口
3.HBase數據模型
3.1 數據模型概述
- HBase是一個稀疏、多維度、排序的映射表,這張表的索引是行鍵、列族、列限定符(列名)和時間戳每個值是一個未經解釋的字符串,沒有數據類型
- 用戶在表中存儲數據,每一行都有一個可排序的行鍵和任意多的列
- 表在水平方向由一個或者多個列族組成,一個列族中可以包含任意多個列,同一個列族里面的數據存儲在一起
- 列族支持動態擴展,可以很輕松地添加一個列族或列,無需預先定義列的數量以及類型,所有列均以字符串形式存儲,用戶需要自行進行數據類型轉換
- HBase中執行更新操作時,并不會刪除數據舊的版本,而是生成一個新的版本,舊有的版本仍然保留(這是和HDFS只允許追加不允許修改的特性相關的)
3.2 數據模型相關概念
3.3 數據坐標
3.4 概念視圖
3.5 物理視圖
從上面的概念師徒我們可以看到,有很多行的記錄在某些列簇的列上面時沒有數據的,如果直接按照概念視圖進行存儲,則會造成很大的空間上的浪費,所以物理視圖中,將概念視圖中按照列簇進行拆分成多個表格,然后對拆分后的表格進行存儲。
3.6 面向列的存儲
行式存儲指的是將一條記錄以行的方式進行存儲;列式存儲指的是將一條記錄按照列的方式進行存儲。
列式存儲相比于行式存儲的優勢:
- 由于在實際的數據分析應用中,我們常常感興趣的是某一列的數據的一個分布情況,所以按照列存儲的話,很方便的將數據按照屬性(列名)提取出來。如果按照行存儲,則要遍歷每一行,然后將數據進行拼接,效率低下。
- 每條記錄的相同列的數據的取值,類型相近,利于數據的存儲
- 可以動態的實現列的添加,而不像傳統的關系型數據庫,在確定表的結構后便無法進行修改。
4.HBase的實現原理
4.1 HBase功能組件
4.2 表和region
4.3 region的定位
元數據:描述數據的數據
5.HBase運行機制
5.1 HBase系統架構
5.2 region服務器工作原理
5.3 Store工作原理
5.4 HLog工作原理
6.HBase應用方案
6.1 HBase實際應用過程中的性能優化方案
默認的HBase行健時按照升序存儲的,而實際應用中常常時查看最新的幾條記錄,所以實際過程中會將HBase的存儲修改為降序存儲。
6.2 HBase性能監測
- Master-status(自帶)
- Ganglia
- OpenTSDB
- Ambari
6.3 在HBase上構建SQL引擎
6.4 構建HBase二級索引(列的直接索引)
7.HBase編程實踐
參考網站
7.1 HBase的安裝和配置
7.2 HBase常用的Shell命令
7.3 HBase常用的JAVA API及應用
8.總結
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的大数据学习(4)--分布式数据库HBase的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《Java8实战》笔记(13):函数式的
- 下一篇: linux cmake编译源码,linu