HBase in Action-第二部分Advanced concepts-(3)非Java客户端【REST、Thrift】
来源:互联网 发布:阿里云账号能注销吗 编辑:程序博客网 时间:2024/06/05 13:28
HBase Shell
HBase shell使用起来最方便,进入HBase shell控制台即可使用。
- $ $HBASE_HOME/bin/hbase shell
基于数据库的项目,往往会在某个目录下存储专门的sql脚本,记录每次迭代数据库变更;同理,HBase脚本也可以组织成文件,用相同的方式管理起来:
- #!/bin/sh
- exec $HBASE_HOME/bin/hbase shell <<EOF
- create 'twits',{NAME => 't', VERSIONS => 1}
- EOF
值得一提的是,HBase shell是用JRuby实现的,所以create语句语法类似于Ruby的函数调用。HBase同样提供了JRuby版client,简单强大。。
REST
如图,REST Gateway Service以独立进程运行,它负责和HBase通信。为了避免REST服务器单点问题,提高吞吐量,可以启动多台REST服务器组成集群,但要注意的是,Scanner API是有状态的,需要进行资源分配,所以进行scan操作时,客户端要始终连接同一台REST服务器。
以后台进程启动REST服务。
- $ hbase-daemon.sh start rest -p 9999
- starting rest, logging to logs/hbase-hbase-rest-ubuntu.out
- $curl -XPUT \
- -H"Content-Type: application/json" \
- http://localhost:9999/users/TheRealMT/info:password\
- -d'{
- "Row": [
- {
- "Cell": [
- {
- "column":"aW5mbzpwYXNzd29yZA==",
- "$": "NzBOQHJJIE4wIDcwdDBSMA=="
- }
- ],
- "key":"VGhlUmVhbE1U"
- }
- ]
- }'
Thrift
对于非Java码农,最方便的还是使用跨语言RPC调用框架Thrift。HBase提供了Thrift IDL服务描述接口,支持多达14种不同语言,并实现了相应的后台服务。
Thrift服务的架构与REST服务类似。Thrift客户端在一次会话内,都和一台服务器保持连接,所以建立Thrift Gateway集群,进行负载均衡要方便一些。
首先启动Thrift服务:
- $ hbase thrift start
- ...
- ThriftServer:starting HBase ThreadPool Thrift server on /0.0.0.0:9090
- $ thrift -gen py../hbase-0.92.1/src/main/resources/org/apache/hadoop/hbase/
- thrift/Hbase.thrift
各个语言的API接口都和JAVA客户端基本一致,使用方法就不多说了。
Asynchbase:异步客户端
原生的JAVA客户端完全是同步的。Asynchbase是全新实现的异步客户端,Asynchbase的最主要用户是OpenTSDB(存储层使用HBase的开源大规模集群监控系统,请参考http://opentsdb.net/)。
下图异步请求过程参考opentsdb:
- 客户端发送异步请求。
- 获得异步结果Deferred(类似于Java的Future接口)。
- 注册回调Callbacks到Deferred,完成客户端逻辑所在线程返回。
- 服务端异步执行数据请求,完成后触发回调。
Asynchbase具有以下几个特点:
- 异步&非阻塞&线程安全,所以特别适合大量并发写操作场景,提供更高的吞吐量
- 多版本支持,Asynchbase是完全重新实现的接口,所以不像原生客户端,需要和对应版本的集群配套使用。
- API方面最强大的是Callback回调链,链上的前一个callback将返回结果作为参数传递给下一个callback,进行一连串的异步操作组合。
- HBase in Action-第二部分Advanced concepts-(3)非Java客户端【REST、Thrift】
- 读书笔记-HBase in Action-第二部分Advanced concepts-(3)非Java客户端
- 读书笔记-HBase in Action-第二部分Advanced concepts-(2)Coprocessor
- 读书笔记-HBase in Action-第二部分Advanced concepts-(1)HBase table design
- HBase rest 和thrift java例子
- Spring in Action 第二部分学习笔记
- R in action 笔记(第二部分)
- 读书笔记-HBase in Action-第一部分 HBase fundamentals
- REST in Action 《REST 实战》
- 编译Hbase-thrift-php客户端
- 读书笔记-HBase in Action-第三部分应用-(1)OpenTSDB
- 读书笔记-HBase in Action-第三部分应用-(2)GIS系统
- 读书笔记-HBase in Action-第四部分-(1)部署
- 读书笔记-HBase in Action-第四部分-(2)运维
- hBase-thrift 实践(java)
- Thrift 客户端 JAVA
- Hbase 笔记(6) HBae Shell、REST、Thrift/Avro
- Netty in Action (六)第二章节 第二部分 搭建第一个Netty应用
- 人生导师——c++进阶,看哪些书啊
- 过滤器:活性碳过滤器的技术参数详细解读
- 短号范围
- 《一网打尽:贝佐斯与亚马逊时代》的推荐及推荐书单
- eclipse打开出现Failed to create the java virtual machine
- HBase in Action-第二部分Advanced concepts-(3)非Java客户端【REST、Thrift】
- Unix编程之size_t、ssize_t
- 【转】R语言与机器学习中的回归方法学习笔记
- 【cocos2d-x 手游研发小技巧(5)获取网络图片缓存并展示】
- linux中shell变量$#,$@,$0,$1,$2的含义解释
- MFC常用函数(总)for Myse
- Linux 有问必答:在Linux上如何将文本文件转换成PDF格式
- 系统维护 电脑蓝屏代码大全
- Android Intent.FLAG_NEW_TASK详解