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的邏輯模型
以表的形式存放數據表由行與列組成,每一個列屬於某個列族,由行和列肯定的存儲單元爲元素
每一個元素保存了同一份數據的多個版本,由時間戳來標示區分
(1)行健
行健是數據行在表裏的惟一標石,並做爲檢索記錄的主鍵
訪問表裏的行只有三種方式:經過單個行健訪問,給定行健的範圍訪問,全表掃描
行健能夠是最大長度不超過64kb的任意字符串,並按照字典序存儲
對於常常要一塊兒讀取的行,要對行健值精心設計,以便他們能放在一塊兒存儲
(2)列族與列
列表示爲<列族>:<限定符>
Hbase在磁盤上按照列族存儲數據,這種列示數據庫的設計很是適合於數據分析的情形
列族裏的元素最好具備相同的讀寫方式(例如等長的字符串),以提升性能
(3)時間戳
對應每次數據操做的時間,可由系統自動生成,也可由用戶顯示覆制
Hbase支持兩種數據版本的回收方式:每一個數據單元,只存儲指定個數的最新版本;保存指定時間長度的版本(例如7天)
常見的客戶端時間查詢:「某個時刻起的最新數據」或「給我所有版本的數據」
元素有 行健,列族:限定符,時間戳惟一決定
元素以字節碼形式存放,沒有類型之分
4. Hbase物理模型
(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
5. Hbase vs Oracle
索引不一樣形成行爲的差別
Hbase適合大量數據同時又有讀的狀況
Hbase的瓶頸是硬盤傳輸速度,Oracle的瓶頸是硬盤尋道時間
Hbase很適合尋找按照時間排序的top n的場景
(1) 傳統數據庫的行式存儲
數據存放在數據文件內
數據文件的基本組成單位:塊/頁
快內結構:塊頭,數據區
(2) 行標識訪問:B樹索引
B樹索引原理
(3) Bigtable的LSM索引