免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開(kāi)通VIP
HBase學(xué)習(xí)之路 (一)HBase基礎(chǔ)介紹

目錄

 

正文

產(chǎn)生背景

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

Hadoop 的限制

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

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

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

總結(jié):

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

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

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

HBase簡(jiǎn)介

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

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 之間,僅能通過(guò)主鍵(rowkey)和主鍵的 range 來(lái)檢索數(shù)據(jù)

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

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

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

主要用來(lái)存儲(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)化:雜亂無(wú)章的數(shù)據(jù),很難按照一個(gè)概念去進(jìn)行抽取,無(wú)規(guī)律性

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

HBase 中的特點(diǎn)

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

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

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

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

 

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

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

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

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

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

 名詞概念

加入我們有如下一張表

Rowkey的概念

Rowkey的概念和mysql中的主鍵是完全一樣的,Hbase使用Rowkey來(lái)唯一的區(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通過(guò)列族劃分?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來(lái)說(shuō)至關(guān)重要,因?yàn)樗菍?shí)現(xiàn)Hbase多版本的關(guān)鍵。在Hbase中使用不同的timestame來(lái)標(biāo)識(shí)相同rowkey行對(duì)應(yīng)的不通版本的數(shù)據(jù)。

HBase 中通過(guò) rowkey 和 columns 確定的為一個(gè)存儲(chǔ)單元稱為 cell。每個(gè) cell 都保存著同一份 數(shù)據(jù)的多個(gè)版本。版本通過(guò)時(shí)間戳來(lái)索引。時(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ù)存在過(guò)多版本造成的的管理 (包括存貯和索引)負(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ù)是沒(méi)有類型的,全部是字節(jié)碼形式存貯。

 

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
HBase
NOSQL之旅-----HBase - 信心,恒心,野心,愛(ài)心兼具者,可謂準(zhǔn)成功人士! -...
HBase使用教程 - 推酷
干貨丨23個(gè)適合Java開(kāi)發(fā)者的大數(shù)據(jù)工具和框架
MongoDB、Hbase、Redis等NoSQL優(yōu)劣勢(shì)、應(yīng)用場(chǎng)景
?你應(yīng)該知道的 HBase 基礎(chǔ),都在這兒了
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服