久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

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

 HK123COM 2019-02-14

目錄

 

正文

產(chǎn)生背景

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

Hadoop 的限制

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

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

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

總結(jié):

(1)海量數(shù)據(jù)量存儲成為瓶頸,,單臺機器無法負載大量數(shù)據(jù)

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

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

HBase簡介

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

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

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

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

NoSQL = NO SQL

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

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

NoSQL:hbase, redis, mongodb

RDBMS:mysql,oracle,sql server,db2

HBase 這個 NoSQL 數(shù)據(jù)庫的要點

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

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

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

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

主要用來存儲結(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ù)庫中的表結(jié)構(gòu)

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

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

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

HBase 中的特點

1、:一個表可以有上十億行,,上百萬列

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

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

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

 

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

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

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

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

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

 名詞概念

加入我們有如下一張表

Rowkey的概念

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

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

1、基于Rowkey的單行查詢

2,、基于Rowkey的范圍掃描

3,、全表掃描

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

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

Column的概念

列,,可理解成MySQL列,。

ColumnFamily的概念

列族, HBase引入的概念。

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

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

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

TimeStamp的概念

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

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

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

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

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

單元格(Cell)

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

 

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多