乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      分布式系統(tǒng)概述(Hadoop與HBase的前生今世)

       昵稱10504424 2013-02-20

      引子:

      古代,人們用牛來拉重物。當一頭牛拉不動一根圓木時,他們不曾想過培育更大更壯的牛。

      同樣:我們也不需要嘗試開發(fā)超級計算機,而應試著結合使用更多計算機系統(tǒng)。

      —— Grace Hopper(計算機軟件第一夫人,計算機歷史上第一個BUG的發(fā)現(xiàn)者,也是史上最大BUG千年蟲的制造者)

      這就是分布式。


      再來看一組令人瞠目結舌的數(shù)據(jù):

      2012年11月11日

      支付寶總交易額191億元,訂單1億零580萬筆,生成15TB日志,訪問1931億次內(nèi)存數(shù)據(jù)塊,13億個物理讀……

      從上面的資料中我們看到了:高性能!高并發(fā)!高一致性!高可用性!海量數(shù)據(jù)!

      這就是海量數(shù)據(jù)處理。遠遠超出單臺計算機的能力范疇。

      這就是分布式集群能力的體現(xiàn),更說明了采用分布式系統(tǒng)的必要性。


      正文:

      單臺設備的性能、資源、可擴展性等限制 —— 分布式系統(tǒng)(Hadoop)

      傳統(tǒng)關系型數(shù)據(jù)庫在面對海量數(shù)據(jù)時的乏力 —— 分布式數(shù)據(jù)庫(HBase)

      關系型數(shù)據(jù)庫,顧名思義,善于處理數(shù)據(jù)模型間復雜的關系、邏輯、事務。

      但在處理海量數(shù)據(jù)時速度、并發(fā)量、可擴展性卻慘不忍睹。

      當然,我們可以通過巧妙的設計與二次開發(fā)來解決上述問題。

      速度:分表(減少單表數(shù)據(jù)量)、緩存查詢、靜態(tài)預生成、提高硬件性能。

      并發(fā)量:打破單機(或雙機)模式,組建數(shù)據(jù)庫集群。

      可擴展性:復雜的數(shù)據(jù)遷移方案。

      這個過程想必相當痛苦,而且由于技術約束,造成的用戶體驗也不夠好。

      比如我們查銀行賬單、手機話費的歷史記錄,總要先選擇指定的月份或時間范圍,然后點提交。

      這就是分表帶來的用戶體驗下降。


      什么是Hadoop

      而在原生的分布式系統(tǒng)中,整個集群的節(jié)點間共享計算、存儲、IO資源,完美的解決了性能、并發(fā)、數(shù)據(jù)存儲問題。

      看一組關于Google的資料(約在2010年):

      Google共有36個數(shù)據(jù)中心。其中美國有19個、歐洲12個、俄羅斯1個、南美1個和亞洲3個(北京-Google.cn<這個……>、香港-Google.com.hk和東京各1個)。
      數(shù)據(jù)中心以集裝箱為單位,每個數(shù)據(jù)中心有眾多集裝箱,每個集裝箱里面有1160臺服務器。

      如何使這么多臺服務器協(xié)同工作?

      Google的三大核心元素:
        1、Google文件系統(tǒng)(GFS)
        2、Google大表;Bigtable:是Google一種對于半結構化數(shù)據(jù)進行分布存儲與訪問的接口或服務);由于Google的文件系統(tǒng)異常龐大,以至于甲骨文和IBM公司的商業(yè)數(shù)據(jù)庫在方面無用武之地。另外,商業(yè)數(shù)據(jù)庫都是按 CPU數(shù)量來收費,如果Google使用商業(yè)數(shù)據(jù)庫,可想而知,這是一筆天文數(shù)字。所以,Google量體裁衣地設計了符合自身的大表。
        3、Mapreduce 算法;它是Google開發(fā)的C++編程工具,用于大于1TB數(shù)據(jù)的大規(guī)模數(shù)據(jù)集并行運算。MapReduce能夠找出一個詞語在Google搜索目錄中 出現(xiàn)的次數(shù);一系列網(wǎng)頁中特定詞語出現(xiàn)的頻率;鏈接到某個特定網(wǎng)站的所有網(wǎng)站數(shù)量等。

      好用的東西,總能找到對應的開源實現(xiàn),這就是Hadoop。



      Hadoop的構成


      其中:

      Pig,可以使用Pig Latin流式編程語言來操作HBase中的數(shù)據(jù)

      Hive,可以使用類似SQL語言來訪問HBase,最終本質(zhì)是編譯成MapReduce Job來處理HBase表數(shù)據(jù),適合做數(shù)據(jù)統(tǒng)計。


      誰在用Hadoop

      Amazon、Adobe、Ebay、Facebook、Twitter、Yahoo、IBM……

      國內(nèi):淘寶和支付寶的數(shù)據(jù)倉庫、華為、百度的搜索日志分析,騰訊……

      這里有更多的資料可查 http://wiki./hadoop/PoweredBy

      Facebook實時消息存儲系統(tǒng)于2010年下半年遷移到了HBase。


      HBase的前生今世

      2006 年末 —— Google “BigTable: A Distributed Storage System for Structured Data”;

      2007 02月 —— HBase的源代碼初稿;

      2007 10月 —— 第一個版本,隨Hadoop 0.15.0 捆綁發(fā)布;

      2010 05月 —— HBase從Hadoop子項目升級成Apache頂層項目;


      什么是HBase

      HBase是一個在Hadoop上開發(fā)的面向列(同類軟件還有Cassandra和HyperTable)的分布式數(shù)據(jù)庫。

      利用HDFS作為其文件存儲系統(tǒng)

      利用MapReduce來處理HBase中的海量數(shù)據(jù)

      利用Zookeeper作為協(xié)同服務,主要用于實時隨機讀/寫超大規(guī)模數(shù)據(jù)集

      很多關系型數(shù)據(jù)庫為了應對這種場景提供了復制(replication)和分區(qū)(partitioning)解決方案,讓數(shù)據(jù)庫能從單個節(jié)點上擴展出去。

      但是難以安裝和維護,且需要犧牲一些重要的RDBMS(Relational DataBase Management System)特性,連接、復雜查詢、觸發(fā)器、視圖以及外鍵約束這些功能要么運行開銷大,要么根本無法使用。

      HBase從另一個方向來解決可伸縮性的問題。它自底向上的進行構建,能夠簡單的通過增加節(jié)點來達到線性擴展。

      HBase并不是關系型數(shù)據(jù)庫,它不支持SQL,但它能夠做RDBMS不能做的事;

      在廉價硬件構成的集群上管理超大規(guī)模的稀疏表。


      HBase的特點

      面向列:列的動態(tài)、無限擴展 —— 內(nèi)容評論的擴展,同類數(shù)據(jù)集中存儲便于壓縮

      稀疏表:有數(shù)據(jù)時這個單元格才存在 —— 節(jié)省空間


      HBase表格示意圖


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

      Timestamp: 時間戳,每次數(shù)據(jù)操作對應的時間戳,可以看作是數(shù)據(jù)的version number

      Column Family:列簇,Table在水平方向有一個或者多個Column Family組成,一個Column Family中可以由任意多個Column組成,即Column Family支持動態(tài)擴展,無需預先定義Column的數(shù)量以及類型,所有Column均以二進制格式存儲,用戶需要自行進行類型轉換。


      HBase的組件構成

      HMaster (HA),負責Table和Region的管理工作

      1、建表、刪表、查看表格屬性;

      2、管理RegionServer負載均衡,調(diào)整Region分布;

      3、Region Split后,負責新Region的分配;

      4、在RegionServer失效后,負責失效節(jié)點上的Regions遷移;

      RegionServer(x N),主要負責響應用戶I/O請求,向HDFS文件系統(tǒng)中讀寫數(shù)據(jù)



      HBase中表格的存儲

      一張表存儲在[1-N)個HRegion中,每個HRegion保存某張表RowKey連續(xù)的一段記錄。


      建表時可以預劃分HRegion——提高并行度,進而提升讀寫速度

      否則初始表存在單一HRegion中,隨著數(shù)據(jù)增大HRegion會分裂為多個HRegion

      HBase中有兩張?zhí)厥獾腡able,-ROOT-和.META.

       .META.:記錄了用戶表的Region信息,.META.可以有多個regoin

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

       Zookeeper中記錄了-ROOT-表的location


      首先 HBase Client端會連接Zookeeper Qurom

      通過 Zookeeper組件Client 能獲知哪個 RegionServer管理-ROOT- Region 。

      那么Client就去訪問管理 -ROOT-的HRegionServer ,在META中記錄了 HBase中所有表信息,(你可以使用   scan '.META.' 命令列出你創(chuàng)建的所有表的詳細信息 ),從而獲取Region 分布的信息。一旦 Client獲取了這一行的位置信息,比如這一行屬于哪個 Region,Client 將會緩存這個信息并直接訪問 HRegionServer。

      久而久之Client 緩存的信息漸漸增多,即使不訪問 .META.表 也能知道去訪問哪個 HRegionServer。

      HBase讀數(shù)據(jù)

      HBase讀取數(shù)據(jù)優(yōu)先讀取HMemcache中的內(nèi)容,如果未取到再去讀取Hstore中的數(shù)據(jù),提高數(shù)據(jù)讀取的性能。

      HBase寫數(shù)據(jù)

      HBase寫入數(shù)據(jù)會寫到HMemcache和Hlog中,HMemcache建立緩存,Hlog同步Hmemcache和Hstore的事務日志,發(fā)起Flush Cache時,數(shù)據(jù)持久化到Hstore中,并清空HMemecache。


      文本部分內(nèi)容與圖片引用于互聯(lián)網(wǎng),引用地址如下:

      http://www./2011/01/understanding-hbase.html


      Author:Pirate Leo

      myBlog: http://blog.csdn.net/pirateleo/

      myEmail: codeevoship@gmail.com

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多