HBase in Action-第二部分Advanced concepts-(3)非Java客户端【REST、Thrift】

HBase 2.x核心技术 阅读详情


HBase Shell

HBase shell使用起来最方便,进入HBase shell控制台即可使用。

[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. $ $HBASE_HOME/bin/hbase shell  
常见操作有 create (创建表)/ put (插入或更新数据)/ get (根据rowkey查询)/ scan (范围查询)/ delete (删除列)/ deleteAll (根据rowkey删除整行数据)/ disable & drop (禁用表之后再删除)。

基于数据库的项目,往往会在某个目录下存储专门的sql脚本,记录每次迭代数据库变更;同理,HBase脚本也可以组织成文件,用相同的方式管理起来:

[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. #!/bin/sh  
  2. exec $HBASE_HOME/bin/hbase shell <<EOF  
  3. create 'twits',{NAME => 't', VERSIONS => 1}  
  4. EOF  

值得一提的是,HBase shell是用JRuby实现的,所以create语句语法类似于Ruby的函数调用。HBase同样提供了JRuby版client,简单强大。。


REST

如图,REST Gateway Service以独立进程运行,它负责和HBase通信。为了避免REST服务器单点问题,提高吞吐量,可以启动多台REST服务器组成集群,但要注意的是,Scanner API是有状态的,需要进行资源分配,所以进行scan操作时,客户端要始终连接同一台REST服务器。

                                                                                  以后台进程启动REST服务。

[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. $ hbase-daemon.sh start rest -p 9999  
  2. starting rest, logging to logs/hbase-hbase-rest-ubuntu.out  
REST服务支持多种响应格式,比如XML、JSON、Protobufs和文本。下面示例调用RESTAPI,更改用户密码。注意列名和值都需要使用Base64编码。
[php]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. $curl -XPUT \  
  2. -H"Content-Type: application/json" \  
  3. http://localhost:9999/users/TheRealMT/info:password\  
  4. -d'{  
  5.   "Row": [  
  6.     {  
  7.       "Cell": [  
  8.       {  
  9.         "column":"aW5mbzpwYXNzd29yZA==",  
  10.         "$": "NzBOQHJJIE4wIDcwdDBSMA=="  
  11.       }  
  12.       ],  
  13.       "key":"VGhlUmVhbE1U"  
  14.     }  
  15.   ]  
  16. }'  

Thrift

对于非Java码农,最方便的还是使用跨语言RPC调用框架Thrift。HBase提供了Thrift IDL服务描述接口,支持多达14种不同语言,并实现了相应的后台服务。

Thrift服务的架构与REST服务类似。Thrift客户端在一次会话内,都和一台服务器保持连接,所以建立Thrift Gateway集群,进行负载均衡要方便一些。


首先启动Thrift服务:

[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. $ hbase thrift start  
  2. ...  
  3. ThriftServer:starting HBase ThreadPool Thrift server on /0.0.0.0:9090  
客户端根据不同语言进行代码生成,以Python为例:
[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. $ thrift -gen py../hbase-0.92.1/src/main/resources/org/apache/hadoop/hbase/  
  2. thrift/Hbase.thrift  

各个语言的API接口都和JAVA客户端基本一致,使用方法就不多说了。


Asynchbase:异步客户端

原生的JAVA客户端完全是同步的。Asynchbase是全新实现的异步客户端,Asynchbase的最主要用户是OpenTSDB(存储层使用HBase的开源大规模集群监控系统,请参考http://opentsdb.net/)。

下图异步请求过程参考opentsdb:


  1. 客户端发送异步请求。
  2. 获得异步结果Deferred(类似于Java的Future接口)。
  3. 注册回调Callbacks到Deferred,完成客户端逻辑所在线程返回。
  4.  服务端异步执行数据请求,完成后触发回调。

Asynchbase具有以下几个特点:

  1. 异步&非阻塞&线程安全,所以特别适合大量并发写操作场景,提供更高的吞吐量
  2. 多版本支持,Asynchbase是完全重新实现的接口,所以不像原生客户端,需要和对应版本的集群配套使用。
  3. API方面最强大的是Callback回调链,链上的前一个callback将返回结果作为参数传递给下一个callback,进行一连串的异步操作组合。
转自:http://blog.youkuaiyun.com/idontwantobe/article/details/36644785,如有侵权,联系删除
Flink:异步IO关联HBase维表数据 一、使用异步IO关联HBase维表数据优点 为避免在流计算环境中频繁的以同步方式查询外部维表,Flink官方提供使用异步IO与外部系统并发的交互方式,这样可以减轻因为网络交互引起的系统吞吐和延迟问题。当然,为了避免频繁与外部系统进行交互,建议使用内部缓存的方式存储近期容易使用到的维度数据,也就是LRU(最近最少使用)思想,业界经常使用的一个缓存机制是Guava 库提供的 CacheBuilder。 整体的设计思想就是:先用异步IO将HBase维表数据加载到缓存中,这样在关联维表时候先去缓存中查找,如果找不到 阅读详情

相关推荐

高性能HBase客户端AsynchronousHBase.zip

asynchbase(Asynchronous HBase)是完全异步,非阻塞的,线程安全的,高性能的 HBase 客户端。asynchbase 是 Java 库使用 HBase 的替代品,要求一个完全异步,非阻塞,线程安全,高性能的 HBase API。这个 HBase 客户端跟 HBase 的客户端 HTable 有着很大的区别,不需要重写所有的 HBase API 交互代码,原生异步,而且使用一些线程就可以跟 HBase 进行高效的交互。 标签:Asynchronous

Asynchbase:高性能异步HBase客户端库

Asynchbase是针对Apache HBase设计的一个高性能、非阻塞式Java客户端库。它利用Java的NIO(非阻塞输入/输出)技术,提供了一套简单易用且高效的API,允许开发者以异步的方式与HBase交互。这不仅提升了应用程序的响应速度和吞吐量,还使得在高并发环境下管理数据库连接变得更加轻松。项目托管于GitHub,[点击这里访问](https://github.com/OpenTSDB

gitblog_00375的博客 1197

阿里巴巴开源的Hbase Client node-hbase-client.zip

node-hbase-client 是 Node.js 的异步 HBase 客户端,使用纯 JavaScript 实现。当前状态:完全通过 HBase 0.94 和 0.94.16Java hbase-client支持 HBase 服务器的版本[√] 0.94.x[√] 0.94.0[√] 0.94.160.95.x0.96.x安装$ npm install hbase-client使用 CRUD:通过 zookeeper 创建 HBase 客户端:var HBase = require(&#39;hbase-client&#39;);var client = HBase.create({   zookeeperHosts: [     &#39;127.0.0.1:2181&#39; // only local zookeeper   ],   zookeeperRoot: &#39;/hbase-0.94.16&#39;,});输入client.putRow(&#39;someTableName&#39;, &#39;rowkey1&#39;, {&#39;f1:name&#39;: &#39;foo name&#39;, &#39;f1:age&#39;: &#39;18&#39;}, function (err) {   console.log(err);});获取client.getRow(&#39;someTableName&#39;, &#39;rowkey1&#39;, [&#39;f1:name&#39;, &#39;f1:age&#39;], function (err, row) {   console.log(row);});删除client.deleteRow(&#39;someTableName&#39;, &#39;rowkey1&#39;, function (err) {   console.log(err);}); 标签:阿里巴巴

Flink异步IO查询Hbase数据,采用旁路缓存redis

概念理解流计算系统中经常需要与外部系统进行交互,比如需要查询外部数据库以关联上用户的额外信息。通常,我们的实现方式是向数据库发送用户a的查询请求(例如在MapFunction中),然后等待结果返回,在这之前,我们无法发送用户b的查询请求。这是一种同步访问的模式,如下图左边所示。图中棕色的长条表示等待时间,可以发现网络等待时间极大地阻碍了吞吐和延迟。为了解决同步访问的问题,异步模式可以并发地处理多个请求和回复。

qq_34676998的博客 2313

生成式引擎优化(GEO)全流程解析

生成式引擎优化(GEO)已成为AI时代数字营销新趋势,通过优化企业内容以提升在AI生成答案中的引用率。本文系统梳理了GEO优化的完整流程,包括:1)前期准备与市场调研;2)数据治理与知识库构建;3)模型适配与算法优化;4)内容权威性建设;5)本地化营销;6)效果监测与优化。研究显示,实施GEO的企业AI曝光率提升62%,转化率增长2.3倍。未来GEO将向多模态内容、实时个性化、垂直场景深化方向发展。企业需建立动态知识图谱,采用结构化数据标记,持续优化内容策略,以在AI搜索时代获取流量优势。

解锁AI流量新红利!🚀 GEO优化(生成引擎优化)助您掌控AI搜索,让AI成为您的品牌最佳代言人! 3246

Silvaco Atlas入门指南——从零开始掌握半导体器件仿真

本文为Silvaco Atlas半导体器件仿真软件的入门指南,详细介绍了从零开始掌握该工具的核心流程。内容涵盖Atlas的基本概念、仿真流程、核心文件(输入、结构、输出文件)、交互式与批处理两种操作模式,并逐步演示了如何从定义网格、划分区域、设置电极到进行掺杂、选择物理模型并求解,最终获取和分析器件特性的完整步骤。旨在帮助微电子相关专业人员和工程师快速上手这一强大的“数字实验室”,提升半导体器件设计与研发效率。

weixin_29306317的博客 401

HBase 2.4.17 异步客户端代码示例

HBase 2.4.17 异步客户端代码示例

猫猫爱吃小鱼粮 783

ROS TF坐标转换实战:从零搭建机器人坐标系(附常见问题排查)

本文提供了一份ROS TF坐标转换的实战指南,详细讲解了如何从零为机器人搭建完整的坐标系,并深入解析了TF的原理。内容涵盖静态与动态坐标变换的发布、URDF模型使用、以及Rviz和rqt_tf_tree等可视化调试工具。文章还附带了常见问题排查表,帮助开发者快速定位并解决TF树断裂、数据错位等典型问题。

weixin_29268385的博客 204

读书笔记-HBase in Action-第二部分Advanced concepts-(3)非Java客户端

HBase Shell HBase shell使用起来最方便,进入HBase shell控制台即可使用。 $ $HBASE_HOME/bin/hbase shell 常见操作有create(创建表)/put(插入或更新数据)/get(根据rowkey查询)/scan(范围查询)/delete(删除列)/deleteAll(根据rowkey删除整行数据)/disable&drop(禁用表之后再

Idontwantobe 2104

四阶龙格库塔法求解一次常微分方程组(python实现)

之前在博客发布了关于使用四阶龙格库塔方法求解一次常微分方程组的文章,由于代码缺少具体的验证,部分朋友可能存在疑问,因此这里打算再重新写一篇博客来验证一下程序的正确性,另外,这里是使用python语言来实现的。

HelloWorldTM的博客 8543

YOLOv8 骨骼结构识别详细说明

YOLOv8骨骼结构识别是一种基于深度学习技术的医学影像分析方法,主要用于X光、CT等影像中的骨骼定位与识别。该系统具有多骨骼同步识别能力,可应用于手部、脊柱、骨盆等不同部位,并能精确定位骨骼关键点。技术实现包括数据预处理、模型训练、推理检测、关键点分析和批量处理五个核心模块,支持骨折检测、骨龄评估等临床应用。该系统需注意医学合规性,要求高质量标注数据,并针对骨骼影像特点进行特征工程优化,同时考虑不同设备的部署需求。

u010117029的博客 330

读书笔记-HBase in Action-第二部分Advanced concepts-(3)非Javaclient

HBase Shell HBase shell使用起来最方便,进入HBase shell控制台就可以使用。 $ $HBASE_HOME/bin/hbase shell常见操作有create(创建表)/put(插入或更新数据)/get(依据rowkey查询)/scan(范围查询)/delete(删除列)/deleteAll(依据rowkey删除整行数据)/disable&dr...

weixin_30402085的博客 94

Python之aaindex包语法、参数和实际应用案例

`aaindex`是一个专为生物信息学设计的Python包,主要用于处理氨基酸指数(AAindex)数据库。该数据库收集了各种氨基酸的物理化学性质和统计特性,涵盖疏水性、电荷、体积等500多种特性。`aaindex`包提供了便捷的接口,让用户能够快速访问这些数据,并应用于蛋白质序列分析、结构预测、功能推断等领域。

王国平的博客 1036

hbase异步客户端连接-非阻塞并发模式实验记录(还没弄完)

happybase使用thrift协议是阻塞的。 在网上无意间看到这句话,我有点慌了, 开玩笑,阻塞的怎么弄并发。。。。。。。 不停谷歌之后,发现了aiohappybase这个东东,下面来使用并且压测检验下.

微电子学与固体电子学-俞驰 970

1、CUDA 编程基础

GPU计算的发展历程与重要性。首先回顾了计算机技术的发展,特别是摩尔定律的影响,强调了计算能力的快速提升。然而,随着晶体管尺寸的缩小和频率的停滞,单线程性能增长放缓。为了继续提升性能,多核处理器开始普及,促使软件开发者开始考虑并行计算。介绍了延迟导向设计和吞吐量导向设计的概念,CPU和GPU分别代表了这两种设计方法。GPU是吞吐量导向的,拥有众多弱小的ALU,通过流水线处理提高算术吞吐量。GPU的成功在于其高并行性和高吞吐量,以及能够分摊高昂的固定成本的大量销售额。

Justinyh的博客 580

2025年开源气象大模型的实现原理与实践指南

气象大模型在人工智能时代实现了革命性突破,通过深度学习技术以更低的计算成本达到甚至超越传统数值天气预报的精度。开源气象大模型的出现使得全球研究者和机构都能参与气象AI的创新。本文详细解析了开源气象大模型的实现原理,包括核心架构、数据准备、训练方法和实际预测流程,并提供了实践指南。核心架构主要采用Transformer、图神经网络和扩散模型,处理多模态数据融合和时空联合建模。数据体系构建涉及数据来源、预处理和增强策略。模型训练关键技术包括损失函数设计、分布式训练优化和训练过程监控。微调与领域适应策略包括迁移学

专注AI大模型,软件混淆,授权 1181

Hbase异步客户端 VS Mysql的同步客户端

异步客户端 同步客户端 hbase的异步客户端 mysql的同步客户端

lixia0417mul2的博客 257

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

HBase之异步Replication机制

HBase 提供了一种群集复制机制,允许使用源群集的预写日志(WAL)来传播更改,从而使一个群集的状态与另一个群集的状态保持同步。集群复制的一些用例包括:HBase中的Replication是基于WAL的,其在主集群的每一个RegionServer进程内部起了一个叫作ReplicationSource的线程来负责Replication,同时在备集群的每一个RegionServer内部起了一个ReplicationSink的线程来负责接收Replication数据。ReplicationSource记录须要同

数据源的港湾 2486

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

HBase中asynchbase的使用方式

Hbase的原生java 客户端是完全同步的,当你使用原生API 例如HTableInterface 访问HBase表,每个动作都会有一个短暂的阻塞,这对于一些流程较长的操作看起来比较不利。 HBase在此还提供了另外一种java客户端 asynchbase,它实现了完全异步以及考虑线程安全。 依赖jar:asynchbase.jar slf4j-api.jar ...

酸奶王子 3964

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

javaAPI-Hbase异步之批量高效写入数据

package cn.ngsoc.hbase.util;   import org.apache.commons.lang.StringUtils; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.*; import org.apache.hadoop.hbase.client.*; impor...

大数据创新开发者、大数据技术开发、创新性大数据分享 7017

Hbase学习(三)-- Hbase客户端

对于使用Hbase,通常情况下是Hbase客户端到Hbase服务端再到HDFS客户端这么一个路径,所以使用Hbase时需要对Hbase客户端有较好的理解。实际上,由于Hbase的复杂性以及Region的定位设计在客户端上(hbase:meta元数据表缓存在客户端上用于定位region),导致Hbase客户端并不足够轻量级。 Hbase客户端实现: Hbase提供了多种语言的客户端,由于Hbase是通过Java语言实现的,所以非Java语言需要先访问ThriftServer,然后通过Jav...

qq_38787854的博客 7260

thrift python安装

安装thrift   下载    http://thrift.apache.org/download/

eric_lee的专栏 6924

FusionInsight平台——HBase客户端工具封装EveHBase

文章目录FusionInsight平台——EveHBase客户端工具封装简介项目地址ExamplesLICENSE FusionInsight平台——EveHBase客户端工具封装 简介 针对华为HBase封装的客户端EveHBase 支持普通客户端、安全模式客户端, 功能包括:建表、预分区、建索引、异步请求、Put、Get、Scan、结果自动解析为JavaBean等 项目地址 GitHub...

蒋含竹的博客 7824

异步hbase的用法

异步hbase包asynchbase-1.4.1.jar,maven的pom如下: &lt;dependency&gt;  &lt;groupId&gt;org.hbase&lt;/groupId&gt;  &lt;artifactId&gt;asynchbase&lt;/artifactId&gt;  &lt;version&gt;1.4.1&lt;/version&gt;&lt;

luoshi0801的专栏 2408

HBase-客户端请求

  客户端相关参数 参数 默认值 含义 hbase.htable.threads.max 2147483647  线程池中的线程数量 hbase.htable.threads.keepalivetime 60秒 keepalive时间  hbase.client.pause 1秒 重试的休眠时间  hbase.client.retries.num...

... 446
上一篇: CMD命令进入某个目录
下一篇: Lambda表达式让Spark编程更容易
heming621
博客等级 码龄15年 9粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值