<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    The important thing in life is to have a great aim , and the determination

    常用鏈接

    統(tǒng)計(jì)

    IT技術(shù)鏈接

    保險(xiǎn)相關(guān)

    友情鏈接

    基金知識(shí)

    生活相關(guān)

    最新評(píng)論

    一文讀懂分布式數(shù)據(jù)庫(kù)Hbase

    一、

    1、什么是Hbase

    一個(gè)高可靠性、高性能、列存儲(chǔ)、可伸縮、實(shí)時(shí)讀寫的分布式數(shù)據(jù)庫(kù)系統(tǒng)。

    適合于存儲(chǔ)非結(jié)構(gòu)化數(shù)據(jù),基于列的而不是基于行的模式

    如圖:Hadoop生態(tài)中hbase與其他部分的關(guān)系。


    2、關(guān)系數(shù)據(jù)庫(kù)已經(jīng)流行很多年,并且hadoop已經(jīng)有了HDFS和MapReduce,為什么需要HBase?

    Hadoop可以很好地解決大規(guī)模數(shù)據(jù)的離線批量處理問(wèn)題,但是,受限于HadoopMapReduce編程框架的高延遲數(shù)據(jù)處理機(jī)制,使得Hadoop無(wú)法滿足大規(guī)模數(shù)據(jù)實(shí)時(shí)處理應(yīng)用的需求
    HDFS面向批量訪問(wèn)模式,不是隨機(jī)訪問(wèn)模式
    傳統(tǒng)的通用關(guān)系型數(shù)據(jù)庫(kù)無(wú)法應(yīng)對(duì)在數(shù)據(jù)規(guī)模劇增時(shí)導(dǎo)致的系統(tǒng)擴(kuò)展性和性能問(wèn)題(分庫(kù)分表也不能很好解決)
    傳統(tǒng)關(guān)系數(shù)據(jù)庫(kù)在數(shù)據(jù)結(jié)構(gòu)變化時(shí)一般需要停機(jī)維護(hù);空列浪費(fèi)存儲(chǔ)空間
    因此,業(yè)界出現(xiàn)了一類面向半結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)和處理的高可擴(kuò)展、低寫入/查詢延遲的系統(tǒng),例如,鍵值數(shù)據(jù)庫(kù)、文檔數(shù)據(jù)庫(kù)和列族數(shù)據(jù)庫(kù)(如BigTableHBase等)
    HBase已經(jīng)成功應(yīng)用于互聯(lián)網(wǎng)服務(wù)領(lǐng)域和傳統(tǒng)行業(yè)的眾多在線式數(shù)據(jù)分析處理系統(tǒng)中
    3、HBase與傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)的區(qū)別

    1)數(shù)據(jù)類型:關(guān)系數(shù)據(jù)庫(kù)采用關(guān)系模型,具有豐富的數(shù)據(jù)類型和存儲(chǔ)方式,HBase則采用了更加簡(jiǎn)單的數(shù)據(jù)模型,它把數(shù)據(jù)存儲(chǔ)為未經(jīng)解釋的字符串
    2)數(shù)據(jù)操作:關(guān)系數(shù)據(jù)庫(kù)中包含了豐富的操作,其中會(huì)涉及復(fù)雜的多表連接。HBase操作則不存在復(fù)雜的表與表之間的關(guān)系,只有簡(jiǎn)單的插入、查詢、刪除、清空等,因?yàn)?/span>HBase在設(shè)計(jì)上就避免了復(fù)雜的表和表之間的關(guān)系
    3)存儲(chǔ)模式:關(guān)系數(shù)據(jù)庫(kù)是基于行模式存儲(chǔ)的。HBase是基于列存儲(chǔ)的,每個(gè)列族都由幾個(gè)文件保存,不同列族的文件是分離的
    4)數(shù)據(jù)索引:關(guān)系數(shù)據(jù)庫(kù)通常可以針對(duì)不同列構(gòu)建復(fù)雜的多個(gè)索引,以提高數(shù)據(jù)訪問(wèn)性能。HBase只有一個(gè)索引——行鍵,通過(guò)巧妙的設(shè)計(jì),HBase中的所有訪問(wèn)方法,或者通過(guò)行鍵訪問(wèn),或者通過(guò)行鍵掃描,從而使得整個(gè)系統(tǒng)不會(huì)慢下來(lái)
    5)數(shù)據(jù)維護(hù):在關(guān)系數(shù)據(jù)庫(kù)中,更新操作會(huì)用最新的當(dāng)前值去替換記錄中原來(lái)的舊值,舊值被覆蓋后就不會(huì)存在。而HBase中執(zhí)行更新操作時(shí),并不會(huì)刪除數(shù)據(jù)舊的版本,而是生成一個(gè)新的版本,舊有的版本仍然保留
    6)可伸縮性:關(guān)系數(shù)據(jù)庫(kù)很難實(shí)現(xiàn)橫向擴(kuò)展,縱向擴(kuò)展的空間也比較有限。相反,HBase和BigTable這些分布式數(shù)據(jù)庫(kù)就是為了實(shí)現(xiàn)靈活的水平擴(kuò)展而開發(fā)的,能夠輕易地通過(guò)在集群中增加或者減少硬件數(shù)量來(lái)實(shí)現(xiàn)性能的伸縮
    二、Hbase數(shù)據(jù)模型

    1、模型概述

    HBase是一個(gè)稀疏、多維度、排序的映射表,這張表的索引是行鍵、列族、列限定符和時(shí)間戳
    每個(gè)值是一個(gè)未經(jīng)解釋的字符串,沒(méi)有數(shù)據(jù)類型
    用戶在表中存儲(chǔ)數(shù)據(jù),每一行都有一個(gè)可排序的行鍵和任意多的列
    表在水平方向由一個(gè)或者多個(gè)列族組成,一個(gè)列族中可以包含任意多個(gè)列,同一個(gè)列族里面的數(shù)據(jù)存儲(chǔ)在一起
    列族支持動(dòng)態(tài)擴(kuò)展,可以很輕松地添加一個(gè)列族或列,無(wú)需預(yù)先定義列的數(shù)量以及類型,所有列均以字符串形式存儲(chǔ),用戶需要自行進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換
    HBase中執(zhí)行更新操作時(shí),并不會(huì)刪除數(shù)據(jù)舊的版本,而是生成一個(gè)新的版本,舊有的版本仍然保留(這是和HDFS只允許追加不允許修改的特性相關(guān)的)

    2、數(shù)據(jù)坐標(biāo)
    HBase
    中需要根據(jù)行鍵、列族、列限定符和時(shí)間戳來(lái)確定一個(gè)單元格,因此,可以視為一個(gè)“四維坐標(biāo)”,即[行鍵,列族, 列限定符,時(shí)間戳]

    [201505003,Info,email, 1174184619081]

    xie@qq.com

    [201505003,Info,email, 1174184620720]

    you@163.com


    3、概念視圖

    4、物理視圖


    三、HBase實(shí)現(xiàn)原理

    1、HBase的實(shí)現(xiàn)包括三個(gè)主要的功能組件:

    1)庫(kù)函數(shù):鏈接到每個(gè)客戶端
    2)一個(gè)Master主服務(wù)器
    3)許多個(gè)Region服務(wù)器
    主服務(wù)器Master負(fù)責(zé)管理和維護(hù)HBase表的分區(qū)信息,維護(hù)Region服務(wù)器列表,分配Region,負(fù)載均衡
    Region服務(wù)器負(fù)責(zé)存儲(chǔ)和維護(hù)分配給自己的Region,處理來(lái)自客戶端的讀寫請(qǐng)求
    客戶端并不是直接從Master主服務(wù)器上讀取數(shù)據(jù),而是在獲得Region的存儲(chǔ)位置信息后,直接從Region服務(wù)器上讀取數(shù)據(jù)
    客戶端并不依賴Master,而是通過(guò)Zookeeper來(lái)獲得Region位置信息,大多數(shù)客戶端甚至從來(lái)不和Master通信,這種設(shè)計(jì)方式使得Master負(fù)載很小
    2、Region
    開始只有一個(gè)
    Region,后來(lái)不斷分裂
    Region拆分操作非常快,接近瞬間,因?yàn)椴鸱种蟮?/span>Region讀取的仍然是原存儲(chǔ)文件,直到“合并”過(guò)程把存儲(chǔ)文件異步地寫到獨(dú)立的文件之后,才會(huì)讀取新文件
    同一個(gè)Region不會(huì)被分拆到多個(gè)Region服務(wù)器
    每個(gè)Region服務(wù)器存儲(chǔ)10-1000個(gè)Region

    元數(shù)據(jù)表,又名.META.表,存儲(chǔ)了RegionRegion服務(wù)器的映射關(guān)系
    當(dāng)HBase表很大時(shí), .META.表也會(huì)被分裂成多個(gè)Region
    根數(shù)據(jù)表,又名-ROOT-表,記錄所有元數(shù)據(jù)的具體位置
    -ROOT-表只有唯一一個(gè)Region,名字是在程序中被寫死的
    Zookeeper文件記錄了-ROOT-表的位置


    客戶端訪問(wèn)數(shù)據(jù)時(shí)的“三級(jí)尋址”

    為了加速尋址,客戶端會(huì)緩存位置信息,同時(shí),需要解決緩存失效問(wèn)題

    尋址過(guò)程客戶端只需要詢問(wèn)Zookeeper服務(wù)器,不需要連接Master服務(wù)器

    3、HBase的三層結(jié)構(gòu)中各層次的名稱和作用

    層次

    名稱

    作用

    第一層

    Zookeper文件

    記錄了-ROOT-表的位置信息

    第二層

    -ROOT-

    記錄了.META.表的Region位置信息

    -ROOT-表只能有一個(gè)Region。通過(guò)-ROOT-表,就可以訪問(wèn).META.表中的數(shù)據(jù)

    第三層

    .META.

    記錄了用戶數(shù)據(jù)表的Region位置信息,.META.表可以有多個(gè)Region,保存了HBase中所有用戶數(shù)據(jù)表的Region位置信息

    四、HBase運(yùn)行機(jī)制
    1、HBase系統(tǒng)架構(gòu)


    (1、客戶端包含訪問(wèn)HBase的接口,同時(shí)在緩存中維護(hù)著已經(jīng)訪問(wèn)過(guò)的Region位置信息,用來(lái)加快后續(xù)數(shù)據(jù)訪問(wèn)過(guò)程

    (2、Zookeeper可以幫助選舉出一個(gè)Master作為集群的總管,并保證在任何時(shí)刻總有唯一一個(gè)Master在運(yùn)行,這就避免了Master的“單點(diǎn)失效”問(wèn)題
    Zookeeper是一個(gè)很好的集群管理工具,被大量用于分布式計(jì)算,提供配置維護(hù)、域名服務(wù)、分布式同步、組服務(wù)等。

    (3. Master
    主服務(wù)器Master主要負(fù)責(zé)表和Region的管理工作:
    管理用戶對(duì)表的增加、刪除、修改、查詢等操作
    實(shí)現(xiàn)不同Region服務(wù)器之間的負(fù)載均衡
    Region分裂或合并后,負(fù)責(zé)重新調(diào)整Region的分布
    對(duì)發(fā)生故障失效的Region服務(wù)器上的Region進(jìn)行遷移
    (4. Region服務(wù)器
    Region服務(wù)器是HBase中最核心的模塊,負(fù)責(zé)維護(hù)分配給自己的Region,并響應(yīng)用戶的讀寫請(qǐng)求
    2、Region


    (1、用戶讀寫數(shù)據(jù)過(guò)程
    用戶寫入數(shù)據(jù)時(shí),被分配到相應(yīng)Region服務(wù)器去執(zhí)行
    用戶數(shù)據(jù)首先被寫入到MemStoreHlog
    只有當(dāng)操作寫入Hlog之后,commit()調(diào)用才會(huì)將其返回給客戶端
    當(dāng)用戶讀取數(shù)據(jù)時(shí),Region服務(wù)器會(huì)首先訪問(wèn)MemStore緩存,如果找不到,再去磁盤上面的StoreFile中尋找
    (2、緩存的刷新
    系統(tǒng)會(huì)周期性地把MemStore緩存里的內(nèi)容刷寫到磁盤的StoreFile文件中,清空緩存,并在Hlog里面寫入一個(gè)標(biāo)記、
    每次刷寫都生成一個(gè)新的StoreFile文件,因此,每個(gè)Store包含多個(gè)StoreFile文件

    每個(gè)Region服務(wù)器都有一個(gè)自己的HLog文件,每次啟動(dòng)都檢查該文件,確認(rèn)最近一次執(zhí)行緩存刷新操作之后是否發(fā)生新的寫入操作;如果發(fā)現(xiàn)更新,則先寫入MemStore,再刷寫到StoreFile,最后刪除舊的Hlog文件,開始為用戶提供服務(wù)
    (3、StroreFile的合并
    每次刷寫都生成一個(gè)新的StoreFile,數(shù)量太多,影響查找速度
    調(diào)用Store.compact()把多個(gè)合并成一個(gè)
    合并操作比較耗費(fèi)資源,只有數(shù)量達(dá)到一個(gè)閾值才啟動(dòng)合并
    3、Store工作原理
    StoreRegion服務(wù)器的核心
    多個(gè)StoreFile合并成一個(gè)
    觸發(fā)分裂操作,1個(gè)父Region被分裂成兩個(gè)子Region
    單個(gè)StoreFile過(guò)大時(shí),又
    4、HLog工作原理
    分布式環(huán)境必須要考慮系統(tǒng)出錯(cuò)。HBase采用HLog保證系統(tǒng)恢復(fù)
    HBase系統(tǒng)為每個(gè)Region服務(wù)器配置了一個(gè)HLog文件,它是一種預(yù)寫式日志(WriteAhead Log
    用戶更新數(shù)據(jù)必須首先寫入日志后,才能寫入MemStore緩存,并且,直到MemStore緩存內(nèi)容對(duì)應(yīng)的日志已經(jīng)寫入磁盤,該緩存內(nèi)容才能被刷寫到磁盤

    Zookeeper會(huì)實(shí)時(shí)監(jiān)測(cè)每個(gè)Region服務(wù)器的狀態(tài),當(dāng)某個(gè)Region服務(wù)器發(fā)生故障時(shí),Zookeeper會(huì)通知Master
    Master首先會(huì)處理該故障Region服務(wù)器上面遺留的HLog文件,這個(gè)遺留的HLog文件中包含了來(lái)自多個(gè)Region對(duì)象的日志記錄
    系統(tǒng)會(huì)根據(jù)每條日志記錄所屬的Region對(duì)象對(duì)HLog數(shù)據(jù)進(jìn)行拆分,分別放到相應(yīng)Region對(duì)象的目錄下,然后,再將失效的Region重新分配到可用的Region服務(wù)器中,并把與該Region對(duì)象相關(guān)的HLog日志記錄也發(fā)送給相應(yīng)的Region服務(wù)器
    Region服務(wù)器領(lǐng)取到分配給自己的Region對(duì)象以及與之相關(guān)的HLog日志記錄以后,會(huì)重新做一遍日志記錄中的各種操作,把日志記錄中的數(shù)據(jù)寫入到MemStore緩存中,然后,刷新到磁盤的StoreFile文件中,完成數(shù)據(jù)恢復(fù)
    共用日志優(yōu)點(diǎn):提高對(duì)表的寫操作性能;缺點(diǎn):恢復(fù)時(shí)需要分拆日志
    五、HBase性能
    1、行鍵(RowKey)

    行鍵是按照字典序存儲(chǔ),因此,設(shè)計(jì)行鍵時(shí),要充分利用這個(gè)排序特點(diǎn),將經(jīng)常一起讀取的數(shù)據(jù)存儲(chǔ)到一塊,將最近可能會(huì)被訪問(wèn)的數(shù)據(jù)放在一塊。

    舉個(gè)例子:如果最近寫入HBase表中的數(shù)據(jù)是最可能被訪問(wèn)的,可以考慮將時(shí)間戳作為行鍵的一部分,由于是字典序排序,所以可以使用Long.MAX_VALUE- timestamp作為行鍵,這樣能保證新寫入的數(shù)據(jù)在讀取時(shí)可以被快速命中。

    InMemory:創(chuàng)建表的時(shí)候,可以通過(guò)HColumnDescriptor.setInMemory(true)將表放到Region服務(wù)器的緩存中,保證在讀取的時(shí)候被cache命中。

    Max Version:創(chuàng)建表的時(shí)候,可以通過(guò)HColumnDescriptor.setMaxVersions(int maxVersions)設(shè)置表中數(shù)據(jù)的最大版本,如果只需要保存最新版本的數(shù)據(jù),那么可以設(shè)置setMaxVersions(1)

    Time To Live創(chuàng)建表的時(shí)候,可以通過(guò)HColumnDescriptor.setTimeToLive(inttimeToLive)設(shè)置表中數(shù)據(jù)的存儲(chǔ)生命期,過(guò)期數(shù)據(jù)將自動(dòng)被刪除,例如如果只需要存儲(chǔ)最近兩天的數(shù)據(jù),那么可以設(shè)置setTimeToLive(2* 24 * 60 * 60)

    2、HBaseMaster默認(rèn)基于WebUI服務(wù)端口為60010HBase region服務(wù)器默認(rèn)基于WebUI服務(wù)端口為60030.如果master運(yùn)行在名為master.foo.com的主機(jī)中,mater的主頁(yè)地址就是http://master.foo.com:60010,用戶可以通過(guò)Web瀏覽器輸入這個(gè)地址查看該頁(yè)面
    可以查看HBase集群的當(dāng)前狀態(tài)
    3、NoSQL區(qū)別于關(guān)系型數(shù)據(jù)庫(kù)的一點(diǎn)就是NoSQL不使用SQL作為查詢語(yǔ)言,至于為何在NoSQL數(shù)據(jù)存儲(chǔ)HBase上提供SQL接口

    易使用,減少編碼

    4、HBase只有一個(gè)針對(duì)行健的索引

    訪問(wèn)HBase表中的行,只有三種方式:

    通過(guò)單個(gè)行健訪問(wèn)
    通過(guò)一個(gè)行健的區(qū)間來(lái)訪問(wèn)
    全表掃描

    總結(jié):
    1、HBase數(shù)據(jù)庫(kù)是BigTable的開源實(shí)現(xiàn),和BigTable一樣,支持大規(guī)模海量數(shù)據(jù),分布式并發(fā)數(shù)據(jù)處理效率極高,易于擴(kuò)展且支持動(dòng)態(tài)伸縮,適用于廉價(jià)設(shè)備
    2、HBase可以支持NativeJava APIHBaseShellThriftGatewayHive等多種訪問(wèn)接口,可以根據(jù)具體應(yīng)用場(chǎng)合選擇相應(yīng)訪問(wèn)方式
    3、HBase實(shí)際上就是一個(gè)稀疏、多維、持久化存儲(chǔ)的映射表,它采用行鍵、列鍵和時(shí)間戳進(jìn)行索引,每個(gè)值都是未經(jīng)解釋的字符串。
    4、HBase采用分區(qū)存儲(chǔ),一個(gè)大的表會(huì)被分拆許多個(gè)Region,這些Region會(huì)被分發(fā)到不同的服務(wù)器上實(shí)現(xiàn)分布式存儲(chǔ)
    5、HBase的系統(tǒng)架構(gòu)包括客戶端、Zookeeper服務(wù)器、Master主服務(wù)器、Region服務(wù)器。客戶端包含訪問(wèn)HBase的接口;Zookeeper服務(wù)器負(fù)責(zé)提供穩(wěn)定可靠的協(xié)同服務(wù);Master主服務(wù)器主要負(fù)責(zé)表和Region的管理工作;Region服務(wù)器負(fù)責(zé)維護(hù)分配給自己的Region,并響應(yīng)用戶的讀寫請(qǐng)求

    posted on 2017-07-19 22:24 鴻雁 閱讀(247) 評(píng)論(0)  編輯  收藏 所屬分類: IT技術(shù)相關(guān)

    主站蜘蛛池模板: 久久午夜免费鲁丝片| 91精品免费在线观看| 最近中文字幕mv手机免费高清| 免费a在线观看播放| 亚洲av丰满熟妇在线播放| 亚洲日韩精品国产一区二区三区| av电影在线免费看| 国产又大又粗又长免费视频| 亚洲av无码成人精品区| 久久亚洲私人国产精品| 妇女自拍偷自拍亚洲精品| 免费无码中文字幕A级毛片| 国产福利免费在线观看| 久久精品亚洲中文字幕无码麻豆| 国产成人综合久久精品亚洲| 污视频在线免费观看| 午夜亚洲福利在线老司机| 亚洲永久中文字幕在线| 一二三区免费视频| 成人免费无码视频在线网站| 日本亚洲成高清一区二区三区 | 亚洲日本中文字幕天天更新 | 3344在线看片免费| 日本高清免费网站| 亚洲视频在线观看不卡| 一级中文字幕乱码免费| 影音先锋在线免费观看| 18gay台湾男同亚洲男同| 一个人看的www视频免费在线观看 一个人看的免费观看日本视频www | 国拍在线精品视频免费观看| 亚洲中文字幕久久精品无码喷水| 在线亚洲午夜片AV大片| 一级特黄aa毛片免费观看| 久久久久亚洲AV成人网人人软件| 亚洲色精品三区二区一区| 午夜理伦剧场免费| 在线亚洲97se亚洲综合在线| 蜜臀亚洲AV无码精品国产午夜.| 成人免费在线看片| 亚洲国产一区二区三区青草影视| h片在线播放免费高清|