1. hbase shell 中有版本過濾器嗎
進入hbase shell console
$HBASE_HOME/bin/hbase shell
如果有kerberos認證,需要事先使用相應的keytab進行一下認證(使用kinit命令),認證成功之後再使用hbase shell進入可以使用whoami命令可查看當前用戶!
2. hbase的初步介紹,這個是否權威呢
HBase是一個分布式的、面向列的開源資料庫,該技術來源於 Fay Chang
所撰寫的Google論文「Bigtable:一個結構化數據的分布式存儲系統」。就像Bigtable利用了Google文件系統(File
System)所提供的分布式數據存儲一樣,HBase在Hadoop之上提供了類似於Bigtable的能力。HBase是Apache的Hadoop項目的子項目。HBase不同於一般的關系資料庫,它是一個適合於非結構化數據存儲的資料庫。另一個不同的是HBase基於列的而不是基於行的模式。
了解更多開源相關,去LUPA社區看看吧。
3. 簡述通過Apache+HBase+API進行表過濾器應用的理解
摘要 過濾器是HBase為客戶端提供的一種高級API,是HBase的一種高級特性,它提供了非常強大的功能幫助用戶處理表中的數據。HBase中讀取數據的API主要是get()和scan(),它們都支持直接讀取數據和通過指定起始行健訪問數據的功能,可以通過添加限定條件如列族、列、時間戳等來限制查詢的數量,但是它們缺少一種細粒度的的篩選功能,比如基於正則表達式的篩選。由此誕生過濾器,Get類和Scan類都支持過濾器,通過方法setFilter(Filter filter)可以設置查詢時的過濾器。
4. 下面哪些選項正確描述了hbase的特性
標準的RHEL 6安裝會默認安裝SSH程序。雖然默認情況下防火牆是激活的,但是標准RHEL 6防火牆將埠22處於開著狀態以允許SSH訪問。相關的配置文件保存在/etc/ss目錄中。SSH伺服器的詳細配置屬於RHCE考試的范圍。相關的客戶端命令有scp和sftp,它們都要在本節中介紹。 SSH守護程序是安全的,因為它對消息進行加密。換言之,偵聽網路的用戶讀不到SSH客戶端與伺服器之間傳遞的消息,這在像Internet這樣公共網路中是非常必要的。RHEL 加入SSH 版本2,SSH 2是SSH 1的增強版,前者包含了密鑰交換演算法
5. 求教:怎樣用hbase過濾器實現,一個列多列值
HBase為篩選數據提供了一組過濾器,通過這個過濾器可以在HBase中的數據的多回個維度(行,列,數據版本答)上進行對數據的篩選操作,也就是說過濾器最終能夠篩選的數據能夠細化到具體的一個存儲單元格上(由行鍵,列明,時間戳定位)。
6. hbase的特點
hbase的特點:高可靠性、高性能、面向列、可伸縮的。
HBase – Hadoop Database,是一個高可靠性、高性能、面向列、可伸縮的分布式存儲系統,利用HBase技術可在廉價PC Server上搭建起大規模結構化存儲集群。
HBase是Apache的Hadoop項目的子項目。HBase不同於一般的關系資料庫,它是一個適合於非結構化數據存儲的資料庫。另一個不同的是HBase基於列的而不是基於行的模式。
(6)介紹下hbase的過濾器擴展閱讀
訪問介面:
1. Native Java API,最常規和高效的訪問方式,適合Hadoop MapRece Job並行批處理HBase表數據
2. HBase Shell,HBase的命令行工具,最簡單的介面,適合HBase管理使用
3. Thrift Gateway,利用Thrift序列化技術,支持C++,PHP,Python等多種語言,適合其他異構系統在線訪問HBase表數據
4. REST Gateway,支持REST 風格的Http API訪問HBase, 解除了語言限制
5. Pig,可以使用Pig Latin流式編程語言來操作HBase中的數據,和Hive類似,本質最終也是編譯成MapRece Job來處理HBase表數據,適合做數據統計。
7. 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結構性膨脹而提供的內部編碼機制。
8. 如何使用python在hbase里進行模糊查詢
注意:正則的寫法可能不對,保證能過濾出數據,但是可能不會嚴格匹配,正則問題請自己解決;
#導入thrift和habse包
from thrift import Thrift
from thrift.transport import TSocket
from thrift.transport import TTransport
from thrift.protocol import TBinaryProtocol
from hbase import Hbase
from hbase.ttypes import *
#此處可以修改地址和埠
host = '192.168.1.1'
#默認埠為9090
port = 9090
#要查詢的表名
table = 'table_name'
#定義一個過濾器,此為關鍵步驟
filter = "RowFilter(=,'regexstring:.3333.')" #此行原創:)
# Make socket
transport = TSocket.TSocket(host, port)
# Buffering is critical. Raw sockets are very slow
# 還可以用TFramedTransport,也是高效傳輸方式
transport = TTransport.TBufferedTransport(transport)
# Wrap in a protocol
#傳輸協議和傳輸過程是分離的,可以支持多協議
protocol = TBinaryProtocol.TBinaryProtocol(transport)
#客戶端代表一個用戶
client = Hbase.Client(protocol)
#打開連接
try:
transport.open()
scan.filterString=filter
scanner = client.scannerOpenWithScan(table, scan)
except Exception:
finally:
client.scannerClose(scan)
transport.close()
連接代碼網上一搜一大堆,非原創,來源已不可考,非本人研究成果;
關鍵就是這個:"RowFilter(=,'regexstring:.3333.')"
這個過濾器要寫對,hbase有十幾種內置的過濾器方法,有幾種比較運算符和比較器,上面這個是正則方式,即'regexstring:.3333.';
過濾器整個雙引號裡面的內容會通過thrift傳給hbase服務端處理,下劃線這部分正則要支持java的正則要求不然會報錯,過濾器的用法官網有,網上也有些資料,但是坑比較多,這幾天各種被坑//包括官方坑
Apache HBase