设为首页 收藏本站
查看: 859|回复: 0

hbase之python利用thrift操作hbase数据和shell操作

[复制链接]

尚未签到

发表于 2018-8-18 08:41:35 | 显示全部楼层 |阅读模式
  前沿:
  以前都是用mongodb的,但是量大了,mongodb显得不那么靠谱,改成hbase撑起一个量级。
  HBase是Apache Hadoop的数据库,能够对大型数据提供随机、实时的读写访问。HBase的目标是存储并处理大型的数据。HBase是一个开源的,分布式的,多版本的,面向列的存储模型。它存储的是松散型数据。
  HBase提供了丰富的访问接口。
  HBase Shell
  Java clietn API
  Jython、Groovy DSL、Scala
  REST
  Thrift(Ruby、Python、Perl、C++…)
  MapReduce
  Hive/Pig
  hbase(main):001:0>
  #创建表
  hbase(main):002:0* create 'blog','info','content'
  0 row(s) in 2.0290 seconds
  #查看表
  hbase(main):003:0> list
  TABLE
  blog
  test_standalone
  2 row(s) in 0.0270 seconds
  #增添数据
  hbase(main):004:0> put 'blog','1','info:editor','liudehua'
  0 row(s) in 0.1340 seconds
  hbase(main):005:0> put 'blog','1','info:address','bj'
  0 row(s) in 0.0070 seconds
  hbase(main):006:0> put 'blog','1','content:header','this is header'
  0 row(s) in 0.0070 seconds
  hbase(main):007:0>
  hbase(main):008:0*
  hbase(main):009:0* get 'blog','1'
  COLUMN                CELL
  content:header       timestamp=1407464302384, value=this is header
  info:address         timestamp=1407464281942, value=bj
  info:editor          timestamp=1407464270098, value=liudehua
  3 row(s) in 0.0360 seconds
  hbase(main):010:0> get 'blog','1','info'
  COLUMN                                                 CELL
  info:address                                          timestamp=1407464281942, value=bj
  info:editor                                           timestamp=1407464270098, value=liudehua
  2 row(s) in 0.0120 seconds
  #这里是可以按照条件查询的。
  hbase(main):012:0* scan 'blog'
  ROW                                                    COLUMN+CELL
  1                                                     column=content:header, timestamp=1407464302384, value=this is header
  1                                                     column=info:address, timestamp=1407464281942, value=bj
  1                                                     column=info:editor, timestamp=1407464270098, value=liudehua
  1 row(s) in 0.0490 seconds
  hbase(main):013:0>
  hbase(main):014:0* put 'blog','1','content:header','this is header2'
  0 row(s) in 0.0080 seconds
  hbase(main):015:0>
  hbase(main):016:0*
  hbase(main):017:0* put 'blog','1','content:header','this is header3'
  0 row(s) in 0.0050 seconds
  hbase(main):018:0> scan 'blog'
  ROW                                                    COLUMN+CELL
  1                                                     column=content:header, timestamp=1407464457128, value=this is header3
  1                                                     column=info:address, timestamp=1407464281942, value=bj
  1                                                     column=info:editor, timestamp=1407464270098, value=liudehua
  1 row(s) in 0.0180 seconds
  hbase(main):020:0> get 'blog','1','content:header'
  COLUMN                                                 CELL
  content:header                                        timestamp=1407464457128, value=this is header3
  1 row(s) in 0.0090 seconds
  hbase(main):021:0>
  原文:http://rfyiamcool.blog.51cto.com/1030776/1537505
  #可以看到历史版本记录
  hbase(main):022:0* get 'blog','1',{COLUMN => 'content:header',VERSIONS => 2}
  COLUMN                                                 CELL
  content:header                                        timestamp=1407464457128, value=this is header3
  content:header                                        timestamp=1407464454648, value=this is header2
  2 row(s) in 0.0100 seconds
  #可以看到历史版本记录
  hbase(main):023:0> get 'blog','1',{COLUMN => 'content:header',VERSIONS => 3}
  COLUMN                                                 CELL
  content:header                                        timestamp=1407464457128, value=this is header3
  content:header                                        timestamp=1407464454648, value=this is header2
  content:header                                        timestamp=1407464302384, value=this is header
  3 row(s) in 0.0490 seconds
  hbase(main):024:0>
  base用java来操作是最方便,也效率最高的方式。但java并非轻量级,不方便在任何环境下调试。而且不同的开发人员熟悉的语言不一样,开发效率也不一样。hbase 通过thrift,还可以用python,ruby,cpp,perl等语言来操作。
  thrift是facebook开发开源的类似google的protobuf的远程调用组件。但protobuf只有数据的序列化,且只支持二进制协议,没有远程调用部分。protobuf原生支持cpp,python,java,另外还有第三方实现的objectc,ruby等语言。而thrift是实现了序列化,传输,协议定义,远程调用等功能,跨语言能力更多。某些方面二者可以互相替代,但一些方面则各有适用范围。
  原文:http://rfyiamcool.blog.51cto.com/1030776/1537505
  thrift的安装及thrift python的相关模块 ~
http://www.apache.org/dist//thrift/0.9.1/thrift-0.9.1.tar.gz  
tar zxvf thrift-0.8.0.tar.gz
  
cd thrift-0.8.0
  
./configure -with-cpp=no
  
make
  
sudo make install
  
sudo pip install thrift
  这里是可以生成python的thrift和hbase模块 ~
thrift -gen py /home/ubuntu/hbase-0.98.1/hbase-thrift/src/main/resources/org/apache/hadoop/hbase/thrift/Hbase.thrift
DSC0000.jpg

from thrift.transport import TSocket  

  
from thrift.protocol import TBinaryProtocol
  

  
from hbase import Hbase
  

  
transport=TSocket.TSocket('localhost',9090)
  

  
protocol=TBinaryProtocol.TBinaryProtocol(transport)
  

  
client=Hbase.Client(protocol)
  

  
transport.open()
  

  
client.getTableNames()
  原文:http://rfyiamcool.blog.51cto.com/1030776/1537505
  hbase 0.98的版本 貌似没有thrift的相关组建,我这里的用的是0.94版本搞定的。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-553268-1-1.html 上篇帖子: Zabbix+Shell脚本监控线上服务 下篇帖子: shell脚本菜
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表