『壹』 HBase是什麼呢,都有哪些特點呢
Hbase是一種Nosql資料庫,這意味著它不像傳統的RDBMS資料庫那樣支持SQL作為查詢語言。Hbase是一種分布式存儲的資料庫,技術上來講,它更像是分布式存儲而不是分布式資料庫,它缺少很多RDBMS系統的特性,比如列類型,輔助索引,觸發器,和高級查詢語言等待
那Hbase有什麼特性呢?如下:
強讀寫一致,但是不是「最終一致性」的數據存儲,這使得它非常適合高速的計算聚合
自動分片,通過Region分散在集群中,當行數增長的時候,Region也會自動的切分和再分配
自動的故障轉移
Hadoop/HDFS集成,和HDFS開箱即用,不用太麻煩的銜接
豐富的「簡潔,高效」API,Thrift/REST API,Java API
塊緩存,布隆過濾器,可以高效的列查詢優化
操作管理,Hbase提供了內置的web界面來操作,還可以監控JMX指標
首先資料庫量要足夠多,如果有十億及百億行數據,那麼Hbase是一個很好的選項,如果只有幾百萬行甚至不到的數據量,RDBMS是一個很好的選擇。因為數據量小的話,真正能工作的機器量少,剩餘的機器都處於空閑的狀態
其次,如果你不需要輔助索引,靜態類型的列,事務等特性,一個已經用RDBMS的系統想要切換到Hbase,則需要重新設計系統。
最後,保證硬體資源足夠,每個HDFS集群在少於5個節點的時候,都不能表現的很好。因為HDFS默認的復制數量是3,再加上一個NameNode。
存儲業務數據:車輛GPS信息,司機點位信息,用戶操作信息,設備訪問信息。。。
存儲日誌數據:架構監控數據(登錄日誌,中間件訪問日誌,推送日誌,簡訊郵件發送記錄。。。),業務操作日誌信息
存儲業務附件:UDFS系統存儲圖像,視頻,文檔等附件信息
什麼時候用Hbase?
Hbase不適合解決所有的問題:
Hbase在單機環境也能運行,但是請在開發環境的時候使用。
內部應用
不過在公司使用的時候,一般不使用原生的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
查看該用戶下的所有表格
『叄』 linux上搭建hbase
1.下載和安裝hbase資料庫
[root@tong1 ~]# wget http://mirrors.hust.e.cn/apache/hbase/stable/hbase-0.98.9-hadoop2-bin.tar.gz
[root@tong1 ~]# tar xvf hbase-0.98.9-hadoop2-bin.tar.gz
[root@tong1 ~]# mv hbase-0.98.9-hadoop2 /usr/local/
[root@tong1 local]# chown -R hadoop:hadoop hbase-0.98.9-hadoop2
[root@tong1 local]# ll hbase-0.98.9-hadoop2
total 352
drwxr-xr-x. 4 hadoop hadoop 4096 Dec 16 14:16 bin
-rw-r--r--. 1 hadoop hadoop 164928 Dec 16 14:20 CHANGES.txt
drwxr-xr-x. 2 hadoop hadoop 4096 Jan 8 12:48 conf
drwxr-xr-x. 4 hadoop hadoop 4096 Dec 16 14:16 dev-support
drwxr-xr-x. 3 hadoop hadoop 4096 Dec 16 14:22 hbase-annotations
drwxr-xr-x. 3 hadoop hadoop 4096 Dec 16 14:23 hbase-assembly
drwxr-xr-x. 3 hadoop hadoop 4096 Dec 16 14:22 hbase-checkstyle
drwxr-xr-x. 3 hadoop hadoop 4096 Dec 16 14:23 hbase-client
drwxr-xr-x. 3 hadoop hadoop 4096 Dec 16 14:22 hbase-common
drwxr-xr-x. 3 hadoop hadoop 4096 Dec 16 14:23 hbase-examples
drwxr-xr-x. 3 hadoop hadoop 4096 Dec 16 14:25 hbase-hadoop1-compat
drwxr-xr-x. 3 hadoop hadoop 4096 Dec 16 14:23 hbase-hadoop2-compat
drwxr-xr-x. 3 hadoop hadoop 4096 Dec 16 14:23 hbase-hadoop-compat
drwxr-xr-x. 3 hadoop hadoop 4096 Dec 16 14:23 hbase-it
drwxr-xr-x. 3 hadoop hadoop 4096 Dec 16 14:23 hbase-prefix-tree
drwxr-xr-x. 3 hadoop hadoop 4096 Dec 16 14:23 hbase-protocol
drwxr-xr-x. 3 hadoop hadoop 4096 Dec 16 14:23 hbase-rest
drwxr-xr-x. 3 hadoop hadoop 4096 Dec 16 14:23 hbase-server
drwxr-xr-x. 3 hadoop hadoop 4096 Dec 16 14:23 hbase-shell
drwxr-xr-x. 2 hadoop hadoop 4096 Dec 16 14:23 hbase-testing-util
drwxr-xr-x. 3 hadoop hadoop 4096 Dec 16 14:23 hbase-thrift
-rw-r--r--. 1 hadoop hadoop 11358 Dec 2 07:36 LICENSE.txt
drwxrwxr-x. 2 hadoop hadoop 4096 Jan 8 12:01 logs
-rw-r--r--. 1 hadoop hadoop 897 Dec 16 14:16 NOTICE.txt
-rw-r--r--. 1 hadoop hadoop 81667 Dec 16 14:16 pom.xml
-rw-r--r--. 1 hadoop hadoop 1377 Dec 16 14:16 README.txt
drwxr-xr-x. 3 hadoop hadoop 4096 Dec 16 06:37 src
[root@tong1 local]#
2.修改hbase配置文件
[root@tong1 local]# cd /usr/local/hbase-0.98.9-hadoop2/conf/
[root@tong1 conf]# vim hbase-site.xml
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://tong1:9000/hbase</value> -與hadoop中的core-site.xml文件中一至
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
</configuration>
[root@tong1 conf]# vim hbase-env.sh
export JAVA_HOME=/usr/local/jdk1.8.0_25
[root@tong1 conf]#
3.啟動hbase服務
[root@tong1 conf]# su - hadoop
[hadoop@tong1 ~]$ start-hbase.sh
localhost: starting zookeeper, logging to /usr/local/hbase-0.98.9-hadoop2/bin/../logs/hbase-hadoop-zookeeper-tong1.out
starting master, logging to /usr/local/hbase-0.98.9-hadoop2/logs/hbase-hadoop-master-tong1.out
localhost: starting regionserver, logging to /usr/local/hbase-0.98.9-hadoop2/bin/../logs/hbase-hadoop-regionserver-tong1.out
[hadoop@tong1 ~]$ hbase shell
2015-01-08 15:01:36,052 INFO [main] Configuration.deprecation: hadoop.native.lib is deprecated. Instead, use io.native.lib.available
2015-01-08 15:01:36,082 INFO [main] Configuration.deprecation: hadoop.native.lib is deprecated. Instead, use io.native.lib.available
2015-01-08 15:01:36,109 INFO [main] Configuration.deprecation: hadoop.native.lib is deprecated. Instead, use io.native.lib.available
2015-01-08 15:01:36,135 INFO [main] Configuration.deprecation: hadoop.native.lib is deprecated. Instead, use io.native.lib.available
2015-01-08 15:01:36,147 INFO [main] Configuration.deprecation: hadoop.native.lib is deprecated. Instead, use io.native.lib.available
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 0.98.9-hadoop2, , Mon Dec 15 23:00:20 PST 2014
hbase(main):008:0* create 'tong1' ,'test'
0 row(s) in 0.9120 seconds
=> Hbase::Table - tong1
hbase(main):009:0> scan 'tong1'
ROW COLUMN+CELL
0 row(s) in 0.0390 seconds
hbase(main):010:0>
4.在瀏覽器查看狀態即可。
『肆』 電腦培訓分享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的問題,開啟hbase後一會hmaster和hregionserver就沒了
一、通常向HBase批量導入數據有三種常用方式
1、使用HBase提供的TableOutputFormat,原理是通過一個Maprece作業將數據導入HBase
2、還有一種方式就是使用HBase原生Client API(put)
3、前兩種方式因為須要頻繁的與數據所存儲的RegionServer通信。一次性入庫大量數據時,特別佔用資源,所以都不是很有效。因為HBase在HDFS中是以HFile文件結構存儲的,所以高效便捷的方法就是直接生成HFile文件然後使用Bulk Load方法,即HBase提供的HFileOutputFormat類。
二、Bulk Load基本原理
Bulk Load處理由兩個主要步驟組成:
1、生成HFile文件
Bulk Load的第一步會執行一個Maprece作業,其中使用到了HFileOutputFormat輸出HBase數據文件:StoreFile。
HFileOutputFormat的作用在於使得輸出的HFile文件能夠適應單個region。使用TotalOrderPartitioner類將map輸出結果分區到各個不同的key區間中,每一個key區間都相應著HBase表的region。
2、導入HBase表
第二步使用completebulkload工具將第一步的結果文件依次交給負責文件相應region的RegionServer,並將文件move到region在HDFS上的存儲文件夾中。一旦完畢。將數據開放給clients。
假設在bulk load准備導入或在准備導入與完畢導入的臨界點上發現region的邊界已經改變,completebulkload工具會自己主動split數據文件到新的邊界上。可是這個過程並非最佳實踐,所以用戶在使用時須要最小化准備導入與導入集群間的延時,特別是當其它client在同一時候使用其它工具向同一張表導入數據。
Bulk Load常遇到的一個ERROR:」java.io.IOException: Retry attempted 10 times without completing, ling out」
錯誤解析:
我們使用的Hbase1.0.2版本下,如果Hfile文件 跨越多個region,bulkload會自動地將Hfile文件split,但是對於每次retry只會將指定的Hfile文件split一次。但是在hbase-site.xml配置文件里有個參數hbase.bulkload.retries.number控制了hbase對一個hfile最多plit多少次。這個參數默認是10,如果某個hfile跨越的region數超過10個就會報上述Exception。
解決方案:
將hbase.bulkload.retries.number這個參數設置為更大的值,比如目標表的region數量或者將這個參數設置成0,0表示不斷重試直到成功。設置之後問題解決。
『陸』 大數據知識點裡面的 HBase 是什麼意思
HBase是一個分布式的、面向列的開源資料庫,基於Hadoop生態圈,在NoSQL蓬勃發展的今天被國內外眾多公司選擇,應用於現代互聯網系統的不同業務。
HBase業務場景
1.標簽數據的存儲
標簽數據是稀疏矩陣的代表,描述了實體的各類屬性,主要應用於智能推薦、商務智能或營銷引擎等領域。
2. 車聯網數據的收集
車聯網系統是利用車載設備收集車輛運行時產生的各項數據,通過網路實時上傳,在平台進行動態分析和利用。
3. 交易記錄的保存
在移動支付領域,保證歷史交易記錄等敏感信息的安全性是一個重要的話題。當數據中心遭遇自然災害、外部攻擊時,必須保證這些信息不丟,而且從業務角度要保證RTO盡可能短、RPO盡可能為0。
HBase基於底層的HDFS作為存儲系統,HDFS實現了三副本策略,按照一定的規則將副本放在不同的節點或機架中,本身具有較高的容災能力。在工程實踐中,也產生了Region replica、主備集群、互備雙活等策略來盡可能進行災備並保證高可用。
『柒』 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 機制是基於日誌操作來做數據同步的。