當前位置:首頁 » 數據倉庫 » hbase資料庫操作
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

hbase資料庫操作

發布時間: 2022-09-19 22:42:13

『壹』 為什麼說HBase是列式資料庫

Hbase是一個面向列存儲的分布式存儲系統,它的優點在於可以實現高性能的並發讀寫操作,同時Hbase還會對數據進行透明的切分,這樣就使得存儲本身具有了水平伸縮性。

通常,順序讀取數據要比隨機訪問更快。而且,硬碟定址時間的提升比起CPU速度的進步要慢得多 (參看摩爾定律),在使用硬碟作為存儲媒介的系統上這種情況很可能還會持續一段時間。

下面簡單羅列了一些選擇行資料庫還是列資料庫的權衡依據。當然,如果能夠把數據全放在內存中,那麼使用內存資料庫性能會更好。

特點:

因為硬碟定址時間相較於計算機上其他部件的運行速度來說不是一般的慢,所以常用相同工作負載下的硬碟訪問性能來比較行資料庫和列資料庫。

在只需要根據某幾列來聚合數據的時候按列的數據組織方式更有效。因為這樣只需要讀取一部分數據,要比讀取全部數據更快。

當只需要修改某一列值的時候按列的數據組織方式更有效。因為可以直接找到某列數據並改,而與行中的其他列無關。

『貳』 hbase是什麼工具

將數據導入HBase中有如下幾種方式:使用HBase的API中的Put方法使用HBase 的bulk load 工具使用定製的MapRece Job方式 使用HBase的API中的Put是最直接的方法,用法也很容易學習。但針對大部分情況,它並非都是最高效的方式。當需要將海量數據在規定時間內載入HBase中時,效率問題體現得尤為明顯。待處理的數據量一般都是巨大的,這也許是為何我們選擇了HBase而不是其他資料庫的原因。在項目開始之前,你就該思考如何將所有能夠很好的將數據轉移進HBase,否則之後可能面臨嚴重的性能問題。 HBase有一個名為 bulk load的功能支持將海量數據高效地裝載入HBase中。Bulk load是通過一個MapRece Job來實現的,通過Job直接生成一個HBase的內部HFile格式文件來形成一個特殊的HBase數據表,然後直接將數據文件載入到運行的集群中。使用bulk load功能最簡單的方式就是使用importtsv 工具。importtsv 是從TSV文件直接載入內容至HBase的一個內置工具。它通過運行一個MapRece Job,將數據從TSV文件中直接寫入HBase的表或者寫入一個HBase的自有格式數據文件。盡管importtsv 工具在需要將文本數據導入HBase的時候十分有用,但是有一些情況,比如導入其他格式的數據,你會希望使用編程來生成數據,而MapRece是處理海量數據最有效的方式。這可能也是HBase中載入海量數據唯一最可行的方法了。當然我們可以使用MapRece向HBase導入數據,但海量的數據集會使得MapRece Job也變得很繁重。若處理不當,則可能使得MapRece的job運行時的吞吐量很小。在HBase中數據合並是一項頻繁執行寫操作任務,除非我們能夠生成HBase的內部數據文件,並且直接載入。這樣盡管HBase的寫入速度一直很快,但是若合並過程沒有合適的配置,也有可能造成寫操作時常被阻塞。寫操作很重的任務可能引起的另一個問題就是將數據寫入了相同的族群伺服器(region server),這種情況常出現在將海量數據導入到一個新建的HBase中。一旦數據集中在相同的伺服器,整個集群就變得不平衡,並且寫速度會顯著的降低。我們將會在本文中致力於解決這些問題。我們將從一個簡單的任務開始,使用API中的Put方法將Mysql中的數據導入HBase。接著我們會描述如何使用 importtsv 和 bulk load將TSV數據文件導入HBase。我們也會有一個MapRece樣例展示如何使用其他數據文件格式來導入數據。上述方式都包括將數據直接寫入HBase中,以及在HDFS中直接寫入HFile類型文件。本文中最後一節解釋在向HBase導入數據之前如何構建好集群。本文代碼均是以Java編寫,我們假設您具有基本Java知識,所以我們將略過如何編譯與打包文中的Java示例代碼,但我們會在示例源碼中進行注釋。

『叄』 hbase的作用

HBase 是典型的 NoSQL 資料庫,通常被描述成稀疏的、分布式的、持久化的,由行鍵、列鍵和時間戳進行索引的多維有序映射資料庫,主要用來存儲非結構化和半結構化的數據。因為 HBase 基於 Hadoop 的 HDFS 完成分布式存儲,以及 MapRece 完成分布式並行計算,所以它的一些特點與 Hadoop 相同,依靠橫向擴展,通過不斷增加性價比高的商業伺服器來增加計算和存儲能力。

HBase 雖然基於 Bigtable 的開源實現,但它們之間還是有很多差別的,Bigtable 經常被描述成鍵值資料庫,而 HBase 則是面向列存儲的分布式資料庫。

下面介紹 HBase 具備的顯著特性,這些特性讓 HBase 成為當前和未來最實用的資料庫之一。
容量巨大
HBase 的單表可以有百億行、百萬列,可以在橫向和縱向兩個維度插入數據,具有很大的彈性。

當關系型資料庫的單個表的記錄在億級時,查詢和寫入的性能都會呈現指數級下降,這種龐大的數據量對傳統資料庫來說是一種災難,而 HBase 在限定某個列的情況下對於單表存儲百億甚至更多的數據都沒有性能問題。

HBase 採用 LSM 樹作為內部數據存儲結構,這種結構會周期性地將較小文件合並成大文件,以減少對磁碟的訪問。
擴展性強
HBase 工作在 HDFS 之上,理所當然地支持分布式表,也繼承了 HDFS 的可擴展性。HBase 的擴展是橫向的,橫向擴展是指在擴展時不需要提升伺服器本身的性能,只需添加伺服器到現有集群即可。

HBase 表根據 Region 大小進行分區,分別存在集群中不同的節點上,當添加新的節點時,集群就重新調整,在新的節點啟動 HBase 伺服器,動態地實現擴展。這里需要指出,HBase 的擴展是熱擴展,即在不停止現有服務的前提下,可以隨時添加或者減少節點。
高可靠性
HBase 運行在 HDFS 上,HDFS 的多副本存儲可以讓它在岀現故障時自動恢復,同時 HBase 內部也提供 WAL 和 Replication 機制。

WAL(Write-Ahead-Log)預寫日誌是在 HBase 伺服器處理數據插入和刪除的過程中用來記錄操作內容的日誌,保證了數據寫入時不會因集群異常而導致寫入數據的丟失;而 Replication 機制是基於日誌操作來做數據同步的。

『肆』 電腦培訓分享Hbase知識點總結

hbase概念:

非結構化的分布式的面向列存儲非關系型的開源的資料庫,根據谷歌的三大論文之一的bigtable

高寬厚表

作用:

為了解決大規模數據集合多重數據種類帶來的挑戰,尤其是大數據應用難題。

能幹什麼:

存儲大量結果集數據,低延遲的隨機查詢。

sql:

結構化查詢語言

nosql:

非關系型資料庫,列存儲和文檔存儲(查詢低延遲),hbase是nosql的一個種類,其特點是列式存儲。

非關系型資料庫--列存儲(hbase)

非關系型資料庫--文檔存儲(MongoDB)

非關系型資料庫--內存式存儲(redis)

非關系型資料庫--圖形模型(graph)

hive和hbase區別?

Hive的定位是數據倉庫,雖然也有增刪改查,但其刪改查對應的是整張表而不是單行數據,查詢的延遲較高。其本質是更加方便的使用mr的威力來進行離線分析的一個數據分析工具。

HBase的定位是hadoop的資料庫,電腦培訓http://www.kmbdqn.com/發現是一個典型的Nosql,所以HBase是用來在大量數據中進行低延遲的隨機查詢的。

hbase運行方式:

standalonedistrubited

單節點和偽分布式?

單節點:單獨的進程運行在同一台機器上

hbase應用場景:

存儲海量數據低延遲查詢數據

hbase表由多行組成

hbase行一行在hbase中由行健和一個或多個列的值組成,按行健字母順序排序的存儲。


『伍』 hbase是如何做到並發寫的和隨機寫的

閱讀數:9381
Hbase概述
hbase是一個構建在HDFS上的分布式列存儲系統。HBase是Apache Hadoop生態系統中的重要 一員,主要用於海量結構化數據存儲。從邏輯上講,HBase將數據按照表、行和列進行存儲。

如圖所示,Hbase構建在HDFS之上,hadoop之下。其內部管理的文件全部存儲在HDFS中。與HDFS相比兩者都具有良好的容錯性和擴展性,都可以 擴展到成百上千個節點。但HDFS適合批處理場景,不支持數據隨機查找,不適合增量數據處理且不支持數據更新。

Hbase是列存儲的非關系資料庫。傳統資料庫MySQL等,數據是按行存儲的。其沒有索引的查詢將消耗大量I/O 並且建立索引和物化視圖需要花費大量時間和資源。因此,為了滿足面向查詢的需求,資料庫必須被大量膨脹才能滿 足性能要求。
Hbase數據是按列存儲-每一列單獨存放。列存儲的優點是數據即是索引。訪問查詢涉及的列-大量降低系統I/O 。並且每一列由一個線索來處理,可以實現查詢的並發處理。基於Hbase數據類型一致性,可以實現資料庫的高效壓縮。
HBase數據模型

HBase是基於Google BigTable模型開發的, 典型的key/value系統。一個Row key對應很多Column Family,Column Family中有很多Column。其中,保存了不同時間戳的數據。

如圖所示,Rowkey cutting對應列簇info和roles。其中,info中有key-value對hight-9ft,state-CA。更清晰的結構如下圖所:
Hbase的所有操作均是基於rowkey的。支持CRUD(Create、Read、Update和Delete)和 Scan操作。 包括單行操作Put 、Get、Scan。多行操作包括Scan和MultiPut。但沒有內置join操作,可使用MapRece解決。

HBase物理模型

Hbase的Table中的所有行都按照row key的字典序排列。Table 在行的方向上分割為多個Region。、Region按大小分割的,每個表開始只有一個region,隨 著數據增多,region不斷增大,當增大到一個閥值的時候, region就會等分會兩個新的region,之後會有越來越多的 region。
Region是HBase中分布式存儲和負載均衡的最小單元。 不同Region分布到不同RegionServer上。

Region雖然是分布式存儲的最小單元,但並不是存儲 的最小單元。Region由一個或者多個Store組成,每個store保存一個 columns family。每個Strore又由一個memStore和0至多個StoreFile組成。memStore存儲在內存中,StoreFile存儲在HDFS上。
HBase基本架構

HBase構建在HDFS之上,其組件包括 Client、zookeeper、HDFS、Hmaster以及HRegionServer。Client包含訪問HBase的介面,並維護cache來加快對HBase的訪問。Zookeeper用來保證任何時候,集群中只有一個master,存貯所有Region的定址入口以及實時監控Region server的上線和下線信息。並實時通知給Master存儲HBase的schema和table元數據。HMaster負責為Region server分配region和Region server的負載均衡。如果發現失效的Region server並重新分配其上的region。同時,管理用戶對table的增刪改查操作。Region Server 負責維護region,處理對這些region的IO請求並且切分在運行過程中變得過大的region。

HBase 依賴ZooKeeper,默認情況下,HBase 管理ZooKeeper 實例。比如, 啟動或者停止ZooKeeper。Master與RegionServers 啟動時會向ZooKeeper注冊。因此,Zookeeper的引入使得 Master不再是單點故障。

Client每次寫資料庫之前,都會首先血Hlog日誌。記錄寫操作。如果不做日誌記錄,一旦發生故障,操作將不可恢復。HMaster一旦故障,Zookeeper將重新選擇一個新的Master 。無Master過程中,數據讀取仍照常進行。但是,無master過程中,region切分、負載均衡等無法進行。RegionServer出現故障的處理原理是定時向Zookeeper匯報心跳,如果一旦時 間內未出現心跳HMaster將該RegionServer上的Region重新分配到其他RegionServer上。失效伺服器上「預寫」日誌由主伺服器進行分割並派送給新的 RegionServer 。Zookeeper是一個可靠地服務,一般配置3或5個Zookeeper實例。
尋找RegionServer定位的順序是ZooKeeper --ROOT-(單Region) -.META. -用戶表 。如上圖所示。-ROOT- 表包含.META.表所在的region列表,該表只會有一 個Region。 Zookeeper中記錄了-ROOT-表的location。 .META. 表包含所有的用戶空間region列表,以及 RegionServer的伺服器地址。
HBase應用舉例

Hbase適合需對數據進行隨機讀操作或者隨機寫操作、大數據上高並發操作,比如每秒對PB級數據進行上千次操作以及讀寫訪問均是非常簡單的操作。
淘寶指數是Hbase在淘寶的一個典型應用。交易歷史紀錄查詢很適合用Hbase作為底層資料庫。

『陸』 本地如何連接hbase資料庫

1.使用xshell或者crt等工具連接到hbase所在的伺服器

2.然後通過ls查找到hbase

3.然後cd 切換到hbase目錄下

4.bin/start-hbase.sh

5.bin/hbase shell

6.list 查看該用戶下的所有表格

『柒』 HBase是什麼呢,都有哪些特點呢

Hbase是一種NoSQL資料庫,這意味著它不像傳統的RDBMS資料庫那樣支持SQL作為查詢語言。Hbase是一種分布式存儲的資料庫,技術上來講,它更像是分布式存儲而不是分布式資料庫,它缺少很多RDBMS系統的特性,比如列類型,輔助索引,觸發器,和高級查詢語言等待

那Hbase有什麼特性呢?如下:

  • 強讀寫一致,但是不是「最終一致性」的數據存儲,這使得它非常適合高速的計算聚合

  • 自動分片,通過Region分散在集群中,當行數增長的時候,Region也會自動的切分和再分配

  • 自動的故障轉移

  • Hadoop/HDFS集成,和HDFS開箱即用,不用太麻煩的銜接

  • 豐富的「簡潔,高效」API,Thrift/REST API,Java API

  • 緩存,布隆過濾器,可以高效的列查詢優化

  • 操作管理,Hbase提供了內置的web界面來操作,還可以監控JMX指標

  • 什麼時候用Hbase?

    Hbase不適合解決所有的問題:

  • 首先資料庫量要足夠多,如果有十億及百億行數據,那麼Hbase是一個很好的選項,如果只有幾百萬行甚至不到的數據量,RDBMS是一個很好的選擇。因為數據量小的話,真正能工作的機器量少,剩餘的機器都處於空閑的狀態

  • 其次,如果你不需要輔助索引,靜態類型的列,事務等特性,一個已經用RDBMS的系統想要切換到Hbase,則需要重新設計系統。

  • 最後,保證硬體資源足夠,每個HDFS集群在少於5個節點的時候,都不能表現的很好。因為HDFS默認的復制數量是3,再加上一個NameNode。

  • Hbase在單機環境也能運行,但是請在開發環境的時候使用。

    內部應用

  • 存儲業務數據:車輛GPS信息,司機點位信息,用戶操作信息,設備訪問信息。。。

  • 存儲日誌數據:架構監控數據(登錄日誌,中間件訪問日誌,推送日誌,簡訊郵件發送記錄。。。),業務操作日誌信息

  • 存儲業務附件:UDFS系統存儲圖像,視頻,文檔等附件信息

  • 不過在公司使用的時候,一般不使用原生的Hbase API,使用原生的API會導致訪問不可監控,影響系統穩定性,以致於版本升級的不可控。

HFile

HFile是Hbase在HDFS中存儲數據的格式,它包含多層的索引,這樣在Hbase檢索數據的時候就不用完全的載入整個文件。索引的大小(keys的大小,數據量的大小)影響block的大小,在大數據集的情況下,block的大小設置為每個RegionServer 1GB也是常見的。

探討資料庫的數據存儲方式,其實就是探討數據如何在磁碟上進行有效的組織。因為我們通常以如何高效讀取和消費數據為目的,而不是數據存儲本身。

Hfile生成方式

起初,HFile中並沒有任何Block,數據還存在於MemStore中。

Flush發生時,創建HFile Writer,第一個空的Data Block出現,初始化後的Data Block中為Header部分預留了空間,Header部分用來存放一個Data Block的元數據信息。

而後,位於MemStore中的KeyValues被一個個append到位於內存中的第一個Data Block中:

註:如果配置了Data Block Encoding,則會在Append KeyValue的時候進行同步編碼,編碼後的數據不再是單純的KeyValue模式。Data Block Encoding是HBase為了降低KeyValue結構性膨脹而提供的內部編碼機制。

『捌』 本地如何連接hbase資料庫

1.使用xshell或者crt等工具連接到hbase所在的伺服器
2.然後通過ls查找到hbase
3.然後cd
切換到hbase目錄下
4.bin/start-hbase.sh
5.bin/hbase
shell
6.list
查看該用戶下的所有表格

『玖』 hbase是怎樣刪除和修改數據的,和oracle這類傳統的rdbms有什麼區別

簡單來說,傳統關系型資料庫的修改與刪除,可以快速通過主鍵、列或索引直接鎖定到某一行或某些行,進行物理刪除。
而對於Hbase來說,受到hdfs文件系統的局限(hdfs文件系統不能修改,添加也很不方便),進行CRUD的操作就會變得相對復雜。
Hbase的修改,是根據某個行鍵添加一行數據,並未這行數據生成一個較新的時間戳來實現,每個行鍵都會對應多個時間戳的數據,那麼最新的時間戳就是最終修改後的內容。
而刪除則是通過標記來實現,如果要刪除某行記錄,Hbase會添加一個帶有刪除標記的行,通過這個刪除標記來辨認該行建的數據是否刪除。
Hbase與關系型資料庫的區別:
1、場景
Hbase是面向列的資料庫,適合大量的插入的同時又要具備不俗的讀功能,而Oracle或其他關系型資料庫適合處理比較復雜的業務關系或事務處理,而且,在數據在一定量級下都會有良好的表現,並不是所有業務的數據壓力都會發生比較極端的情況。
2、索引
Hbase只能做主鍵索引,而關系型資料庫可以根據需求不同加入適合的索引機制,供用戶查詢。
3、瓶頸
Hbase的瓶頸是硬碟的傳輸速度,Oracle的瓶頸是硬碟的尋道時間(可以看做是硬碟的轉數)。
4、業務
Hbase適合按照時間排序的業務,而Oracle或其他關系型資料庫應用比較廣泛,如OLTP或OLAP