hadoop Hbase簡介(5)

Map-Reduce數據分析之二web

1. hadoop家族sql

(1) Pigshell

Hadoop客戶端數據庫

使用相似SQL的面向數據流的語言Pig Latinapi

Pig Latin能夠完成排序,過濾,求和,聚組,關聯等操做,能夠支持自定義函數服務器

Pig自動把Pig Latin映射爲Map-Reduce做業上傳到集羣運行,減小用戶編寫Java程序的苦惱架構

三種運行方式:Grunt shell,腳本方式,嵌入式負載均衡

(2) Hbase框架

Google Bigtable的開源實現分佈式

列示數據庫

可集羣化

可使用shell web api等多種方式訪問

適合高速讀寫(insert)的場景

HQL查詢語言(Hbase Query Language)

NoSQL的典型表明產品(not only Sql)

(3) Hive

數據倉庫工具,能夠把Hadoop下的原始結構化數據變成Hive中的表

支持一種與Sql幾乎徹底相同的語言HiveQL,除了不支持更新,索引和事務,幾乎sql的其餘特徵都能支持

能夠當作是從SQL到Map-Reduce的映射器

提供Shell,JDBC/ODBC ,Thrift,web等接口

(4) Zookeeper

Google chubby的開源實現

用以協調分佈式系統上各類服務,例如確認消息是否準確到達,防止單點失效,處理負載均衡等

應用場景:Hbase,實現NameNode自動切換

工做原理:領導者,跟隨者以及選舉過程

(5) Sqoop

用於在Hadoop和關係型數據庫之間的交換數據

經過JDBC接口連入關係數據庫

(6) Avro

數據序列化工具,由Hadoop的創始人Doug Cutting主持開發

用於支持大批量數據交換的應用,支持二進制序列化方式,能夠便捷,快速的處理大量數據

動態語言友好,Avro提供的機制使動態語言能夠方便地處理Avro數據Thrift 接口

(7) ChukWa

架構在Hadoop之上的數據採集與分析框架

主要進行日誌採集和分析

經過安裝在收集節點的「代理」採集最原始的日誌數據,代理將數據發給收集器

收集器定時將數據寫入Hadoop集羣

指定定時啓動的Map-Reduce做業對數據進行加工處理和分析

Hadoop基礎管理中心(HICC)最終展現數據

(8) Cassandra

NoSQL,分佈式的key-value型數據庫,由facebook貢獻

與Hbase相似,也是借鑑Google Bigtable 的思想體系

只有順序寫,沒有隨機寫的設計,知足高負荷情形的性能要求

2. Hbase簡介

Hbase是一個分佈式,面向列的開源數據庫,該技術來源於Chang et al所撰寫的Google論文「Bigtable:一個結構化數據的分佈式存儲系統」

就像Bigtable利用了Google文件系統所提供的分佈式數據局存儲同樣,Hbase在Hadoop之上提供了相似於Bigtable的能力

Hbase是Apache的Hadoop項目的子項目

Hbase不一樣於通常的關係數據庫,它是一個適合於非結構化數據存儲的數據庫,另外一個不一樣的是Hbase基於列而不是基於行模式

3. Hbase的邏輯模型

以表的形式存放數據表由行與列組成,每一個列屬於某個列族,由行和列肯定的存儲單元爲元素

每一個元素保存了同一份數據的多個版本,由時間戳來標示區分

clip_image002

(1)行健

行健是數據行在表裏的惟一標石,並做爲檢索記錄的主鍵

訪問表裏的行只有三種方式:經過單個行健訪問,給定行健的範圍訪問,全表掃描

行健能夠是最大長度不超過64kb的任意字符串,並按照字典序存儲

對於常常要一塊兒讀取的行,要對行健值精心設計,以便他們能放在一塊兒存儲

(2)列族與列

列表示爲<列族>:<限定符>

Hbase在磁盤上按照列族存儲數據,這種列示數據庫的設計很是適合於數據分析的情形

列族裏的元素最好具備相同的讀寫方式(例如等長的字符串),以提升性能

(3)時間戳

對應每次數據操做的時間,可由系統自動生成,也可由用戶顯示覆制

Hbase支持兩種數據版本的回收方式:每一個數據單元,只存儲指定個數的最新版本;保存指定時間長度的版本(例如7天)

常見的客戶端時間查詢:「某個時刻起的最新數據」或「給我所有版本的數據」

元素有 行健,列族:限定符,時間戳惟一決定

元素以字節碼形式存放,沒有類型之分

4. Hbase物理模型

clip_image004

(1) Region和Region服務器

表在行方向上,按照行健範圍劃分紅若干的Region

每一個表最初只有一個Region,當記錄數增長到超過某個閾值時,開始分裂成兩個region

物理上全部數據存放在HDFS,又region服務器提供的region管理

一臺物理節點只能跑一個HRegionServer

一個HregionServer能夠管理多個region實例

一個region實例包括Hlog日誌和存放數據的store

Hmaster做爲總控節點

Zookeeper負責調度

(2) Hlog

用於災難恢復

預寫式日誌,記錄全部更新操做,操做先記錄進日誌,數據纔會寫入

(3)-ROOT-和.META.表

Hbase中有兩張特殊的Table,-ROOT-和.META.

.META.記錄了用戶表的region信息,能夠有多個region

-ROOT-記錄了.META.表的region信息,只有一個region信息

Zookeeper中記錄了-ROOT-表的location

(3) Memstore與storefile

一個region由多個store組成,每一個store包含一個列族的全部數據

Store包括位於內存的memstore和位於硬盤的的storefile

寫操做先寫入memstore,當memstore中數據量達到某個閾值,Hregionserver會啓動flashicache進程寫入storefile,每次寫入造成單獨的storefile

當storefile文件的數量增加到必定閾值後,系統會進行合併,在合併過程當中會進行版本合併和刪除工做,造成更大的storefile

當storefile大小超過必定閾值後,會把當前的region分隔爲兩個,並由Hmaster分配到相應的region服務器,實現負載均衡

客戶端檢索數據時,如今memstore找,找不到在找storefile

clip_image006

5. Hbase vs Oracle

索引不一樣形成行爲的差別

Hbase適合大量數據同時又有讀的狀況

Hbase的瓶頸是硬盤傳輸速度,Oracle的瓶頸是硬盤尋道時間

Hbase很適合尋找按照時間排序的top n的場景

(1) 傳統數據庫的行式存儲

數據存放在數據文件內

數據文件的基本組成單位:塊/頁

快內結構:塊頭,數據區

clip_image008

(2) 行標識訪問:B樹索引

clip_image010

B樹索引原理

clip_image012

(3) Bigtable的LSM索引

clip_image014

相關文章
相關標籤/搜索