频道栏目
首页 > 网络 > 云计算 > 正文
HbaseRESTFulAPI速查表
2017-03-23 10:00:00         来源:蓝星极盾  
收藏   我要投稿

HbaseRESTFulAPI速查表。

注意:curl命令示例

这些示例使用curl命令,并遵循以下准则:

使用-X参数指定HTTP动作。

对于GET查询,Accept头设置为text / xml,表示客户端(curl)期望接收以XML格式化的响应。 您可以将其设置为text / json以接收JSON响应。

对于PUT,POST和DELETE,只有带-d参数时发送数据,才应设置Content-Type头。 如果设置了Content-Type头 ,它应该域发送的数据格式相匹配,以使REST服务器能够反序列化数据为Object。

有关curl命令的更多使用说明,请查找curl相应版本的帮助文档。

下面的示例,Hbase的RESTFul端口在20550端口,生产系统一般会设置在8081或者8080,取决于Hbase RESTFul安装时的设置。

集群相关Endpoints

EndpointHTTP 动作描述示例

/version/clusterGETHbase集群当前运行的版本curl -vi -X GET \

-H "Accept: text/xml" \

"https://example.com:20550/version/cluster"

/status/clusterGET集群状态curl -vi -X GET \

-H "Accept: text/xml" \

"https://example.com:20550/status/cluster"

/GET列出所有非系统表curl -vi -X GET \

-H "Accept: text/xml" \

"https://example.com:20550/"

Namespace【命名空间】 EndpointsEndpointHTTP 动作说明示例

/namespacesGET列出所有的namespaces.curl -vi -X GET \

-H "Accept: text/xml" \

"https://example.com:20550/namespaces/"

/namespaces/namespaceGET显示指定的namespace.详情curl -vi -X GET \

-H "Accept: text/xml" \

"https://example.com:20550/namespaces/special_ns"

/namespaces/namespacePOST创建一个新的namespace.curl -vi -X POST \

-H "Accept: text/xml" \

"example.com:20550/namespaces/special_ns"

/namespaces/namespace/tablesGET列出某个namespace下的所有的表.curl -vi -X GET \

-H "Accept: text/xml" \

"https://example.com:20550/namespaces/special_ns/tables"

/namespaces/namespacePUT修改已经存在的namespace. 当前未使用.curl -vi -X PUT \

-H "Accept: text/xml" \

"https://example.com:20550/namespaces/special_ns"

/namespaces/namespaceDELETE删除一个namespace. namespace必须是空的.curl-vi-XDELETE\

-H"Accept:text/xml"\

"example.com:20550/namespaces/special_ns"

Table【表】 EndpointsEndpointHTTP 动作说明示例

/table/schemaGET给出指定表的模式描述.curl -vi -X GET \

-H "Accept: text/xml" \

"https://example.com:20550/users/schema"

/table/schemaPOST创建新表,或使用提供的模式替换现有表的模式curl -vi -X POST \

-H "Accept: text/xml" \

-H "Content-Type: text/xml" \

-d '' \

"https://example.com:20550/users/schema"

/table/schemaUPDATE使用提供的模式片段更新现有表curl -vi -X PUT \

-H "Accept: text/xml" \

-H "Content-Type: text/xml" \

-d '' \

"https://example.com:20550/users/schema"

/table/schemaDELETE删除表。 您必须使用table/schema ,而不仅仅是table/ 。curl -vi -X DELETE \

-H "Accept: text/xml" \

"https://example.com:20550/users/schema"

/table/regionsGET列出表区域.curl-vi-XGET\

-H"Accept:text/xml"\

"https://example.com:20550/users/regions"

Get操作的接口

EndpointHTTP 动作说明示例

/table/row/column:qualifier/timestampGET获取单个行的值。 值为Base-64编码。Latest version:

curl -vi -X GET \

-H "Accept: text/xml" \

"https://example.com:20550/users/row1"

Specific timestamp:

curl -vi -X GET \

-H "Accept: text/xml" \

"https://example.com:20550/users/row1/cf:a/1458586888395"

获取单个列的值。 值为Base-64编码。Latest version:

curl -vi -X GET \

-H "Accept: text/xml" \

"https://example.com:20550/users/row1/cf:a"

Specific version:

curl -vi -X GET \

-H "Accept: text/xml" \

"https://example.com:20550/users/row1/cf:a/"

/table/row/column:qualifier?v=number_of_versions

获取给定单元格的指定数量的多个版本的值。 值为Base-64编码。curl-vi-XGET\

-H"Accept:text/xml"\

"https://example.com:20550/users/row1/cf:a?v=2"

Scan操作的接口

EndpointHTTP 动作说明Example

/table/scanner/PUT获取扫描程序对象。 所有其他扫描操作都需要。 将批处理参数调整为扫描应在批处理中返回的行数。 有关向扫描器添加过滤器的示例,请参阅下一个示例。 扫描器端点URL作为HTTP响应中的位置返回。 此表中的其他示例假设扫描器端点为https://example.com:20550/users/scanner/145869072824375522207.curl -vi -X PUT \

-H "Accept: text/xml" \

-H "Content-Type: text/xml" \

-d '' \

"https://example.com:20550/users/scanner/"

/table/scanner/PUT要向扫描器对象提供过滤器或以任何其他方式配置扫描器,您可以创建文本文件并将过滤器添加到文件。 例如,要仅返回键的开头为u123并且批处理大小为100的行:

{

"type":"PrefixFilter",

"value":"u123"

}

curl -d参数表示带有文件传递的请求。curl -vi -X PUT \

-H "Accept: text/xml" \

-H "Content-Type:text/xml" \

-d @filter.txt \

"https://example.com:20550/users/scanner/"

/table/scanner/scanner_idGET从扫描仪获取下一批次。 单元格值是字节编码的。 如果扫描仪耗尽,则返回HTTP状态204。curl -vi -X GET \

-H "Accept: text/xml" \

"https://example.com:20550/users/scanner/145869072824375522207"

/table/scanner/scanner_idDELETE删除扫描程序并释放其使用的资源。curl -vi -X DELETE \

-H "Accept: text/xml" \

"https://example.com:20550/users/scanner/145869072824375522207"

Put操作接口

EndpointHTTP 动作说明示例

/table/row_key/PUT向表中插入一行。 行,列的值必须分别进行Base-64编码。 要对字符串进行编码,可以使用base64命令行程序。 要解码字符串,请使用base64 -d命令。 将编码作为--data的参数。所以/users/fakerowvalue指定的是列名。 通过标签元素插入多个行值。 还可以保存要插入的数据到文件,并将文件作为参数的值,比如:-d @filename.txt。XML:

curl -vi -X PUT \

-H "Accept: text/xml" \

-H "Content-Type: text/xml" \

-d 'dmFsdWU1Cg==' \

"https://example.com:20550/users/fakerow"

JSON:

curl -vi -X PUT \

-H "Accept: text/json" \

-H "Content-Type: text/json" \

-d '{"Row":[{"key":"cm93NQo=", "Cell": [{"column":"Y2Y6ZQo=", "$":"dmFsdWU1Cg=="}]}]}'' \

"example.com:20550/users/fakerow"

用于安全操作的客户端配置 - REST网关

将以下内容添加到每个REST网关的hbase-site.xml文件:

hbase.rest.keytab.file

$ KEYTAB

hbase.rest.kerberos.principal

$USER/_HOST@HADOOP.LOCALDOMAIN

分别替换$ USER和$ KEYTAB的相应凭据和密钥表。

REST网关将使用提供的凭据与HBase进行身份验证。 REST网关本身将不执行身份验证。 通过REST网关的所有客户端访问将使用REST网关的凭据并具有其权限。

客户端应该可以通过SPEGNO HTTP身份验证通过REST网关以直通方式向HBase集群进行身份验证。 这是未来的工作。

SPEGNO HTTP身份验证加固后

在Web / REST接口中标识和认证请求客户端

private static UserGroupInformation getUser(HttpServletRequest req) {

String remoteUser = req.getRemoteUser();

UserGroupInformation callerUGI = null;

if (remoteUser != null) {

callerUGI = UserGroupInformation.createRemoteUser(remoteUser);

}

return callerUGI;

}

这可以用于处理事件

@PUT@Path("/jobs/{jobid}/tasks/{taskid}/attempts/{attemptid}/state")

@Produces({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})

@Consumes({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})

publicResponseupdateJobTaskAttemptState(JobTaskAttemptStatetargetState,

@ContextHttpServletRequestrequest,@PathParam("jobid"))

throwsIOException,InterruptedException{

init();

UserGroupInformationcallerUGI=getUser(request);

//iftheUGIisnull,noremoteuser.

点击复制链接 与好友分享!回本站首页
上一篇:ELKStack实战之Elasticsearch[一]
下一篇:【Hadoop】HDFS的运行原理
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站