Ⅰ 如何使用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。