?

Hadoop云計算框架中的分布式數據庫HBase研究

2014-03-25 01:18王靜蕾
商丘職業技術學院學報 2014年2期
關鍵詞:存儲系統海量集群

王靜蕾

(鄭州旅游職業學院,河南 鄭州 450000)

1 Hadoop概述

Hadoop 是一個能夠對海量數據分布式處理的平臺,其中,包括軟件和眾多子項目,它是用 Java 語言實現的,而Java 是一個可移植性很高的語言.因此, Hadoop可以部署到非常廣泛的機器上,低成本和前所未有的高擴展性是它被廣泛采用的原因之一.Hadoop系統的原理是在計算機集群上利用簡單編程模型處理大數據集.它的專長是海量數據的存儲和處理,它的優點在于將本地計算與本地存儲結合,在運行時不用移動數據而只需移動計算,這樣既簡化了管理又節省帶寬和開銷,同時還提升計算的可靠性.

Hadoop 系統共包括4個核心模塊: Hadoop Common、Hadoop Distributed FileSystem(HDFS)即Hadoop 分布式文件系統、Hadoop YARN 以及 Hadoop Mapreduce(并行計算框架).其中HDFS是Hadoop的最底層的文件系統,它存儲了Hadoop 集群中所有存儲節點上的文件數據,是其他項目實現的基礎.

2 分布式文件系統HDFS 的系統架構

分布式文件系統HDFS的理念是實現高度容錯性和高擴展性,可以部署在低廉的硬件上.HDFS 內部的所有通信都基于標準的 TCP/IP 協議.因此,數據傳輸率較高,適合有超大數據集的應用程序.HDFS包含2種數據節點,一是用來管理文件系統命名空間的元數據節點(NameNode),它將所有的文件和文件夾的元數據保存在一個文件系統樹中,作為輔助NameNode從元數據節點(secondaryNameNode),用于周期性將NameNode的命名空間鏡像文件和修改日志合并,可以防止日志文件過大;二是數據節點(DataNode),用來存儲數據文件.當前HDFS包含2層結構:一層:Namespace 管理目錄,它支持常見的如創建文件,修改文件,刪除文件等文件系統操作.二層:Block Storage ,這一層有2部分組成,一是Block Management維護集群中NameNode的基本關系,它支持數據塊相關的操作,如:創建數據塊,刪除數據塊等,同時,它也會管理副本的復制和存放.二是Physical 存儲實際的數據塊并提供針對數據塊的讀寫服務.Block Storage的這2部分分別在NameNode和DataNode上實現,所以,該模塊由這2種節點分工完成.

如圖1所示,圖中NameNode為主控節點,多個DataNode為從屬節點.NameNode對文件的操作進行記錄,DataNode負責響應客戶端的請求并接收和傳送實際存儲的數據.HDFS工作原理是,客戶端要讀取一個文件,首先,在NameNode節點中查看Namespace,獲取數據塊的物理位置,然后,在諸多DataNode節點中選擇距離自己最近的節點進行讀取.客戶端若要寫數據時同樣先請求NameNode節點,獲取合適的DataNode節點存儲數據塊副本[1].

此結構使HDFS存在一個潛在的問題是當集群大到一定程度后,單個的NameNode會顯得力不從心.此時,所有的元數據信息的讀取和操作都需要與NameNode進行通信,這無疑成了這種大集群的性能瓶頸.為此,Hadoop 2.0里的HDFS Federation采用聯盟結構使得上述問題迎刃而解,但在此處不對這種聯盟結構過多的論述.

3 分布式數據庫 HBase

HBase (Hadoop Database)是一個構建在HDFS上分布式的、高可靠性與容錯性、可伸縮的、面向列的非結構化數據庫,和Hypertable同為Apache的Hadoop的子項目.需要關注的是,Hbase不是關系型數據庫,而是用來解決關系型數據庫處理海量數據(TB或是PB級的)瓶頸的,面向列的分布式數據庫.

HBase位置在HDFS之上,屬于Hadoop系統結構化存儲層,底層的HDFS為其提供了高可靠性的底層存儲支持,因此,利用Hbase技術可實現在廉價計算機客戶端上組建大規模結構化存儲集群.如圖2所示,MapReduce為HBase提供了高性能的計算能力,Hbase利用MapReduce來處理海量數據,但其外部API屏蔽了MapReduce編程的細節,這樣更容易被不熟悉MapReduce的開發者使用.Zookeeper為HBase提供了穩定服務和failover機制,Hbase利用Zookeeper作為集群協調工具,將數據節點注冊其中,使得它的管理節點隨時感知每個數據節點的狀態,同時也避免了管理節點的單點問題;Hive和Pig為HBase提供了高層語言支持,使得數據查詢和統計處理變的非常簡單. Sqoop則為HBase提供了方便的關系型數據庫中數據相互轉移的功能,使得Hbase和傳統數據庫之間的數據遷移變得非常方便.

圖1 HDFS層次結構

圖2 Hadoop子項目關系

3.1 Hbase的訪問接口和數據模型

一般而言,Hbase接口主要有以下六種[2]:1)Native Java API,適合Hadoop MapReduce Job并行批處理HBase表數據的最常規和高效的訪問接口;2)HBase Shell,適合管理使用的最簡單接口,是Hbase的命令行工具;3)Thrift Gateway,利用Thrift序列化技術,適合其他異構系統在線訪問HBase表數據,同時支持PHP,C++, Python等多種語言;4)Pig,利用Pig Latin流式編程語言來操作HBase中的數據,適合做數據統計;5)REST Gateway,解除了語言限制,用REST 風格的Http API訪問Hbase;6)Hive,編譯成MapReduce Job來處理HBase表數據.

Hbase的數據模型和Bigtable的數據模型是一致的,適用于數據密集型的系統.HBase以HTable數據表形式存儲數據,它的特點是基于列存儲.如表1(以當前兩個知名度較高的網購網站為例)所示.表結構由行(row)和列(column)組成,表中有3個基本的列,分別是 Row Key、Timestamp 和 Column Family.其中,Row Key 是表的主鍵(行鍵)用來檢索表中的記錄,可以是任意字符串,最大長度64KB,按照字典序存儲,表中的各行記錄是按照它進行排序的;Timestamp是每次數據操作對應的時間戳,類似于數據的version number;Column Family是表的列簇,一個表在水平方向可以有一個以上的Column Family組成,但超過2~3個列簇的表HBase就處理的不好.一個Column Family中可以由任意多個Column組成,它支持動態擴展,不用預先定義Column的數量以及類型,Column均以二進制格式存儲,用戶需要自行進行類型轉換.

表1 Hbase表結構實列

在創建HBase表時,一般情況下會自動創建一個region分區.在需要進行數據導放時,客戶端均向region分區中寫數據,到了足夠大之后進行分割.若要加快批量寫入的速度,可以預先多創建更多的空的region分區,當數據需要寫入時,便可集群內做負載均衡,寫入不同的分區中.

3.2 HBase的實現思路

Hbase適合作為站點數據統計工具的存儲系統.對于實時數據的統計,它可提供較低延遲的讀寫訪問,承受高并發的訪問請求,對于如站點訪客流水信息這樣的實時數據展示,只要設計了合理的key,根據key取單條訪問記錄時響應速度會很快;對于歷史數據的統計,HBase可以被視為一個巨大的Key-Value存儲系統,存儲各個網站上歷史訪問信息用于做離線的數據分析與報表生成;對于像PV、IP、UV此類的操作,要對HBase表中相關記錄進行掃描求和計算,如果被統計站點的數據量很大,可能會保證不了較快的響應速度.從前端發出一個查詢請求到最終結果的響應,時間會超過1s或更長.

圖3是一個使用HBase作為存儲系統的結構示意圖,應用程序分別通過入庫端與查詢端對HBase進行寫操作與讀操作.HBase服務端就是指HBase集群.從應用角度上看,Hbase可以分成2個方向:一是將HBase視為一個可靠可用的容量巨大的Key-Value存儲系統,按照設計好的表結構存儲具有稀疏結構的數據.這種思路是將其作為一個黑匣子來使用,如果它無法完全滿足業務需要,需要在應用程序層次做一些設計和優化工作來解決問題.第2種是基于HBase是開源的,那么對Hbase本身機制進行完善和擴展,以達到滿足業務需要的穩定可用的HBase版本.

圖3 HBase存儲系統

對于前文提出的對于PV、IP、UV此類的操作,無法保證很快的響應速度的問題,可以用2種方式進行解決.第1種是在HBase服務端進行聚合計算,這樣應用程序查詢端只需請求服務端計算后的結果,而不必請求HBase響應大量數據進行傳輸,節省了響應的時間. 第2種方式是改善Hbase表設計,加入空列專用于統計以減少Hbase服務端到查詢端的數據傳輸量. 另外,也可以在入庫端,加入一個專門用于存儲累加結果的表,每次有新數據時,先查詢表上記錄的數值,判斷是否加1,重新寫回相應的Key下,查詢端就能直接通過一次get操作得到結果. 同樣,也可以在查詢端加入緩存,在查詢請求來時,在現有的緩存值基礎上,加上新增行的記錄數,一般緩存更新時間周期很短,因此,新增數也很小,這樣查詢響應的時間會很短.

4 結語

“大數據”已成為今后互聯網發展趨勢,文章分析了 HBase 數據庫的存儲特點、數據存儲方式,為利用Hbase存儲海量數據理清了思路,也為進一步解決對海理數據快速有效的分析、挖掘數據的潛在價值的研究起到鋪墊作用.

參考文獻:

[1] 魏家賓.基于Hadoop的海量交易記錄查詢系統研究[D].江蘇:南京郵電大學,2013.

[2] HBase技術介紹[EB/OL].http://www.searchtb.com/2011/01/understanding-hbase.html,2011.

猜你喜歡
存儲系統海量集群
一種傅里葉域海量數據高速譜聚類方法
分布式存儲系統在企業檔案管理中的應用
海上小型無人機集群的反制裝備需求與應對之策研究
海量快遞垃圾正在“圍城”——“綠色快遞”勢在必行
天河超算存儲系統在美創佳績
一種無人機集群發射回收裝置的控制系統設計
Python與Spark集群在收費數據分析中的應用
勤快又呆萌的集群機器人
一個圖形所蘊含的“海量”巧題
華為震撼發布新一代OceanStor 18000 V3系列高端存儲系統
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合