Ⅰ 如何使用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.sc
Ⅱ python可以把爬蟲的數據寫入hbase么
在已經安裝了HBase服務的伺服器中,已經自動安裝了HBase的Thrift的肆並橋腳本,路徑為:/usr/lib/hbase/include/thrift
。
需要使用這個腳本生蔽陪成基於Python語言的HBase的Thrift腳本,具體命令如下:
thrift
--gen
py
hbase2.thrift
命令執行成功後會生成名為gen-py的目錄,其中包含了python版本的HBase包。
主要文件介紹如下:
l
Hbase.py
中定義了一些HbaseClient可以使用的方法
l
ttypes.py中定義了HbaseClient傳輸的數據類裂猛型
將生成的HBase包放入項目代碼或者放入Python環境的依賴包目錄中即可調用。
Ⅲ 如何在Python中訪問HBase的數據
for key, data in graph_table.scan(filter="SingleColumnValueFilter('cf', 'id', q", 1000)): print key, data 這個輪胡語毀仔句是查詢纖桐汪id
Ⅳ 如何啟動hbase 自帶了一個 zkcli
常用到的HBase啟動腳本有:
1.$HBASE_HOME/bin/start-hbase.sh
啟動整個集群
2.$HBASE_HOME/bin/stop-hbase.sh
停止整個集群
3.$HBASE_HOME/bin/hbase-daemons.sh
啟動或停止,所有的regionserver或zookeeper或backup-master
4.$HBASE_HOME/bin/hbase-daemon.sh
啟動或停止,單個master或regionserver或zookeeper
以start-hbase.sh為起點,可以看看腳本間的一些調用關系
start-hbase.sh的流程如下:
1.運行hbase-config.sh(作用後面解釋)
2.解析參數(0.96版本及以後才可以帶唯一參數autorestart,作用就是重啟)
3.調用hbase-daemon.sh來啟動master;調用hbase-daemons.sh來啟動regionserver zookeeper master-backup
hbase-config.sh的作用:
裝載相關配置,如HBASE_HOME目錄,conf目錄,regionserver機器列表,java_HOME目錄等,它會調用$HBASE_HOME/conf/hbase-env.sh
hbase-env.sh的作用:
主要是配置JVM及其GC參數,還可以配置log目錄及參數,配置是否需要hbase管理ZK,配置進程id目錄等
hbase-daemons.sh的作用:
根據需要啟動的進程,
如為zookeeper,則調用zookeepers.sh
如為regionserver,則調用regionservers.sh
如為master-backup,則調用master-backup.sh
zookeepers.sh的作用:
如果hbase-env.sh中的HBASE_MANAGES_ZK" = "true",那麼通過ZKServerTool這個類解析xml配置文件,獲取ZK節點列表(即hbase.zookeeper.quorum的配置值),然後通過SSH向這些節點發送遠程命令:
cd ${HBASE_HOME};
$bin/hbase-daemon.sh --config ${HBASE_CONF_DIR} start/stop zookeeper
regionservers.sh的作用:
與zookeepers.sh類似,通過${HBASE_CONF_DIR}/regionservers配置文件,獲取regionserver機器列表,然後SSH向這些機器發送遠程命令:
cd ${HBASE_HOME};
$bin/hbase-daemon.sh --config ${HBASE_CONF_DIR} start/stop regionserver
master-backup.sh的作用:
通過${HBASE_CONF_DIR}/backup-masters這個配置文件,獲取backup-masters機器列表(默認配置中,這個配置文件並不存在,所以不會啟動backup-master),然後SSH向這些機器發送遠程命令:
cd ${HBASE_HOME};
$bin/hbase-daemon.sh --config ${HBASE_CONF_DIR} start/stop master --backup
hbase-daemon.sh的作用:
無論是zookeepers.sh還是regionservers.sh或是master-backup.sh,最終都會調用本地的hbase-daemon.sh,其執行過程如下:
1.運行hbase-config.sh,裝載各種配置(java環境、log配置、進程ID目錄等)
2.如果是start命令?
滾動out輸出文件,滾動gc日誌文件,日誌文件中輸出啟動時間+ulimit -a信息,如
「Mon Nov 26 10:31:42 CST 2012 Starting master on dwxx.yy.taobao」
"..open files (-n) 65536.."
3.調用$HBASE_HOME/bin/hbase start master/regionserver/zookeeper
4.執行wait,等待3中開啟的進程結束
5.執行cleanZNode,將regionserver在zk上登記的節點刪除,這樣做的目的是:在regionserver進程意外退出的情況下,可以免去3分鍾的ZK心跳超時等待,直接由master進行宕機恢復
6.如果是stop命令?
根據進程ID,檢查進程是否存在;調用kill命令,然後等待到進程不存在為止
7.如果是restart命令?
調用stop後,再調用start。。。
$HBASE_HOME/bin/hbase的作用:
最終啟動的實現由這個腳本執行
1.可以通過敲入$HBASE_HOME/bin/hbase查看其usage
DBA TOOLS
shell run the HBase shell
hbck run the hbase 'fsck' tool
hlog write-ahead-log analyzer
hfile store file analyzer
zkcli run the ZooKeeper shell
PROCESS MANAGEMENT
master run an HBase HMaster node
regionserver run an HBase HRegionServer node
zookeeper run a Zookeeper server
rest run an HBase REST server
thrift run the HBase Thrift server
thrift2 run the HBase Thrift2 server
avro run an HBase Avro server
PACKAGE MANAGEMENT
classpath mp hbase CLASSPATH
version print the version
or
CLASSNAME run the class named CLASSNAME
2.bin/hbase shell,這個就是常用的shell工具,運維常用的DDL和DML都會通過此進行,其具體實現(對hbase的調用)是用ruby寫的
3.bin/hbase hbck, 運維常用工具,檢查集群的數據一致性狀態,其執行是直接調用
org.apache.hadoop.hbase.util.HBaseFsck中的main函數
4.bin/hbase hlog, log分析工具,其執行是直接調用
org.apache.hadoop.hbase.regionserver.wal.HLogPrettyPrinter中的main函數
5.bin/hbase hfile, hfile分析工具,其執行是直接調用
org.apache.hadoop.hbase.io.hfile.HFile中的main函數
6.bin/hbase zkcli,查看/管理ZK的shell工具,很實用,經常用,比如你可以通過(get /hbase-tianwu-94/master)其得知當前的active master,可以通過(get /hbase-tianwu-94/root-region-server)得知當前root region所在的server,你也可以在測試中通過(delete /hbase-tianwu-94/rs/dwxx.yy.taobao),模擬regionserver與ZK斷開連接,,,
其執行則是調用了org.apache.zookeeper.ZooKeeperMain的main函數
7.回歸到剛才hbase-daemon.sh對此腳本的調用為:
$HBASE_HOME/bin/hbase start master/regionserver/zookeeper
其執行則直接調用
org.apache.hadoop.hbase.master.HMaster
org.apache.hadoop.hbase.regionserver.HRegionServer
org.apache.hadoop.hbase.zookeeper.HQuorumPeer
的main函數,而這些main函數就是了new一個了Runnable的HMaster/HRegionServer/QuorumPeer,在不停的Running...
8.bin/hbase classpath 列印classpath
9.bin/hbase version 列印hbase版本信息
10.bin/hbase CLASSNAME, 這個很實用,所有實現了main函數的類都可以通過這個腳本來運行,比如前面的hlog hfile hbck工具,實質是對這個介面的一個快捷調用,而其他未提供快捷方式的class我們也可以用這個介面調用,如Region merge 調用:
$HBASE_HOME/bin/hbase/org.apache.hadoop.hbase.util.Merge
Ⅳ Python訪問hbase集群
HBase-thrift項目是對HBase Thrift介面的羨談封裝,芹派拆屏蔽底層的細節,使用戶可以方便地通過嫌棗HBase Thrift介面訪問HBase集群,python通過thrift訪問HBase。