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

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

    • 分享

      HBase學(xué)習(xí)之路 (一)HBase基礎(chǔ)介紹

       HK123COM 2019-02-14

      目錄

       

      正文

      產(chǎn)生背景

      自 1970 年以來,關(guān)系數(shù)據(jù)庫(kù)用于數(shù)據(jù)存儲(chǔ)和維護(hù)有關(guān)問題的解決方案。大數(shù)據(jù)的出現(xiàn)后, 好多公司實(shí)現(xiàn)處理大數(shù)據(jù)并從中受益,并開始選擇像 Hadoop 的解決方案。Hadoop 使用分 布式文件系統(tǒng),用于存儲(chǔ)大數(shù)據(jù),并使用 MapReduce 來處理。Hadoop 擅長(zhǎng)于存儲(chǔ)各種格式 的龐大的數(shù)據(jù),任意的格式甚至非結(jié)構(gòu)化的處理。

      Hadoop 的限制

      Hadoop 只能執(zhí)行批量處理,并且只以順序方式訪問數(shù)據(jù)。這意味著必須搜索整個(gè)數(shù)據(jù)集, 即使是最簡(jiǎn)單的搜索工作。 當(dāng)處理結(jié)果在另一個(gè)龐大的數(shù)據(jù)集,也是按順序處理一個(gè)巨大的數(shù)據(jù)集。在這一點(diǎn)上,一個(gè) 新的解決方案,需要訪問數(shù)據(jù)中的任何點(diǎn)(隨機(jī)訪問)單元。

      Hadoop 隨機(jī)存取數(shù)據(jù)庫(kù)

      應(yīng)用程序,如 HBase,Cassandra,CouchDB,Dynamo 和 MongoDB 都是一些存儲(chǔ)大量數(shù)據(jù)和 以隨機(jī)方式訪問數(shù)據(jù)的數(shù)據(jù)庫(kù)。

      總結(jié):

      (1)海量數(shù)據(jù)量存儲(chǔ)成為瓶頸,單臺(tái)機(jī)器無法負(fù)載大量數(shù)據(jù)

      (2)單臺(tái)機(jī)器 IO 讀寫請(qǐng)求成為海量數(shù)據(jù)存儲(chǔ)時(shí)候高并發(fā)大規(guī)模請(qǐng)求的瓶頸

      (3)隨著數(shù)據(jù)規(guī)模越來越大,大量業(yè)務(wù)場(chǎng)景開始考慮數(shù)據(jù)存儲(chǔ)橫向水平擴(kuò)展,使得存儲(chǔ)服 務(wù)可以增加/刪除,而目前的關(guān)系型數(shù)據(jù)庫(kù)更專注于一臺(tái)機(jī)器

      HBase簡(jiǎn)介

      HBase 是 BigTable 的開源(源碼使用 Java 編寫)版本。是 Apache Hadoop 的數(shù)據(jù)庫(kù),是建 立在 HDFS 之上,被設(shè)計(jì)用來提供高可靠性、高性能、列存儲(chǔ)、可伸縮、多版本的 NoSQL 的分布式數(shù)據(jù)存儲(chǔ)系統(tǒng),實(shí)現(xiàn)對(duì)大型數(shù)據(jù)的實(shí)時(shí)、隨機(jī)的讀寫訪問。

      HBase 依賴于 HDFS 做底層的數(shù)據(jù)存儲(chǔ),BigTable 依賴 Google GFS 做數(shù)據(jù)存儲(chǔ)

      HBase 依賴于 MapReduce 做數(shù)據(jù)計(jì)算,BigTable 依賴 Google MapReduce 做數(shù)據(jù)計(jì)算

      HBase 依賴于 ZooKeeper 做服務(wù)協(xié)調(diào),BigTable 依賴 Google Chubby 做服務(wù)協(xié)調(diào)

      NoSQL = NO SQL

      NoSQL = Not Only SQL:會(huì)有一些把 NoSQL 數(shù)據(jù)的原生查詢語(yǔ)句封裝成 SQL,比如 HBase 就有 Phoenix 工具

      關(guān)系型數(shù)據(jù)庫(kù) 和 非關(guān)系型數(shù)據(jù)庫(kù)的典型代表

      NoSQL:hbase, redis, mongodb

      RDBMS:mysql,oracle,sql server,db2

      HBase 這個(gè) NoSQL 數(shù)據(jù)庫(kù)的要點(diǎn)

      ① 它介于 NoSQL 和 RDBMS 之間,僅能通過主鍵(rowkey)和主鍵的 range 來檢索數(shù)據(jù)

      ② HBase 查詢數(shù)據(jù)功能很簡(jiǎn)單,不支持 join 等復(fù)雜操作

      ③ 不支持復(fù)雜的事務(wù),只支持行級(jí)事務(wù)(可通過 hive 支持來實(shí)現(xiàn)多表 join 等復(fù)雜操作)。

      HBase 中支持的數(shù)據(jù)類型:byte[](底層所有數(shù)據(jù)的存儲(chǔ)都是字節(jié)數(shù)組)

      主要用來存儲(chǔ)結(jié)構(gòu)化和半結(jié)構(gòu)化的松散數(shù)據(jù)。

      結(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化

      結(jié)構(gòu)化:數(shù)據(jù)結(jié)構(gòu)字段含義確定,清晰,典型的如數(shù)據(jù)庫(kù)中的表結(jié)構(gòu)

      半結(jié)構(gòu)化:具有一定結(jié)構(gòu),但語(yǔ)義不夠確定,典型的如 HTML 網(wǎng)頁(yè),有些字段是確定的(title), 有些不確定(table)

      非結(jié)構(gòu)化:雜亂無章的數(shù)據(jù),很難按照一個(gè)概念去進(jìn)行抽取,無規(guī)律性

      與 Hadoop 一樣,HBase 目標(biāo)主要依靠橫向擴(kuò)展,通過不斷增加廉價(jià)的商用服務(wù)器,來增加 計(jì)算和存儲(chǔ)能力。

      HBase 中的特點(diǎn)

      1、:一個(gè)表可以有上十億行,上百萬(wàn)列

      2、面向列:面向列(族)的存儲(chǔ)和權(quán)限控制,列(簇)獨(dú)立檢索。

      3、稀疏:對(duì)于為空(null)的列,并不占用存儲(chǔ)空間,因此,表可以設(shè)計(jì)的非常稀疏。

      4、無模式:每行都有一個(gè)可排序的主鍵和任意多的列,列可以根據(jù)需要?jiǎng)討B(tài)的增加,同一 張表中不同的行可以有截然不同的列

       

       HBase表結(jié)構(gòu)邏輯視圖

      初次接觸HBase,可能看到以下描述會(huì)懵:“基于列存儲(chǔ)”,“稀疏MAP”,“RowKey”,“ColumnFamily”。

      其實(shí)沒那么高深,我們需要分兩步來理解HBase, 就能夠理解為什么HBase能夠“快速地”“分布式地”處理“大量數(shù)據(jù)”了。

        1.內(nèi)存結(jié)構(gòu)

        2.文件存儲(chǔ)結(jié)構(gòu)

       名詞概念

      加入我們有如下一張表

      Rowkey的概念

      Rowkey的概念和mysql中的主鍵是完全一樣的,Hbase使用Rowkey來唯一的區(qū)分某一行的數(shù)據(jù)。

      由于Hbase只支持3中查詢方式:

      1、基于Rowkey的單行查詢

      2、基于Rowkey的范圍掃描

      3、全表掃描

      因此,Rowkey對(duì)Hbase的性能影響非常大,Rowkey的設(shè)計(jì)就顯得尤為的重要。設(shè)計(jì)的時(shí)候要兼顧基于Rowkey的單行查詢也要鍵入Rowkey的范圍掃描。具體Rowkey要如何設(shè)計(jì)后續(xù)會(huì)整理相關(guān)的文章做進(jìn)一步的描述。這里大家只要有一個(gè)概念就是Rowkey的設(shè)計(jì)極為重要。

      rowkey 行鍵可以是任意字符串(最大長(zhǎng)度是 64KB,實(shí)際應(yīng)用中長(zhǎng)度一般為 10-100bytes),最好是 16。在 HBase 內(nèi)部,rowkey 保存為字節(jié)數(shù)組。HBase 會(huì)對(duì)表中的數(shù)據(jù)按照 rowkey 排序 (字典順序)

      Column的概念

      列,可理解成MySQL列。

      ColumnFamily的概念

      列族, HBase引入的概念。

      Hbase通過列族劃分?jǐn)?shù)據(jù)的存儲(chǔ),列族下面可以包含任意多的列,實(shí)現(xiàn)靈活的數(shù)據(jù)存取。就像是家族的概念,我們知道一個(gè)家族是由于很多個(gè)的家庭組成的。列族也類似,列族是由一個(gè)一個(gè)的列組成(任意多)。

      Hbase表的創(chuàng)建的時(shí)候就必須指定列族。就像關(guān)系型數(shù)據(jù)庫(kù)創(chuàng)建的時(shí)候必須指定具體的列是一樣的。

      Hbase的列族不是越多越好,官方推薦的是列族最好小于或者等于3。我們使用的場(chǎng)景一般是1個(gè)列族。

      TimeStamp的概念

      TimeStamp對(duì)Hbase來說至關(guān)重要,因?yàn)樗菍?shí)現(xiàn)Hbase多版本的關(guān)鍵。在Hbase中使用不同的timestame來標(biāo)識(shí)相同rowkey行對(duì)應(yīng)的不通版本的數(shù)據(jù)。

      HBase 中通過 rowkey 和 columns 確定的為一個(gè)存儲(chǔ)單元稱為 cell。每個(gè) cell 都保存著同一份 數(shù)據(jù)的多個(gè)版本。版本通過時(shí)間戳來索引。時(shí)間戳的類型是 64 位整型。時(shí)間戳可以由 hbase(在數(shù)據(jù)寫入時(shí)

      自動(dòng))賦值,此時(shí)時(shí)間戳是精確到毫秒的當(dāng)前系統(tǒng)時(shí)間。時(shí)間戳也可以由 客戶顯式賦值。如果應(yīng)用程序要避免數(shù)據(jù)版本沖突,就必須自己生成具有唯一性的時(shí)間戳。 每個(gè) cell 中,不同版本的數(shù)據(jù)按照時(shí)間

      倒序排序,即最新的數(shù)據(jù)排在最前面。

      為了避免數(shù)據(jù)存在過多版本造成的的管理 (包括存貯和索引)負(fù)擔(dān),hbase 提供了兩種數(shù)據(jù)版 本回收方式:
        保存數(shù)據(jù)的最后 n 個(gè)版本
        保存最近一段時(shí)間內(nèi)的版本(設(shè)置數(shù)據(jù)的生命周期 TTL)。
      用戶可以針對(duì)每個(gè)列簇進(jìn)行設(shè)置。

      單元格(Cell)

      由{rowkey, column( = + ), version} 唯一確定的單元。 Cell 中的數(shù)據(jù)是沒有類型的,全部是字節(jié)碼形式存貯。

       

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

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多