HBase的访问接口
HBase针对不同的编程语言有不同的访问接口,目前访问HBase的接口主要分为三大类:交互式接口、批处理接口,以及HBase自带的命令行接口。
1)交互式接口指的是具有交互性的接口,这些接口会按照需求发送API调用到服务器端。其主要包括以下四种:
❑原生Java接口。这是最常规也是最高效的访问方式。在很多场景中用户都可以直接使用Htable并使用RPC(远程过程调用)和Habse进行交互。
❑REST。REST(表现层状态转移)是一组架构规范。HBase提供了强大的REST服务器,并支持完整的客户端访问及API,用户可以使用REST风格的Http API访问HBase。
❑Thrift。Thrift是一个使用C++实现的驱动层接口,提供了跨语言的模式定义文件,包括Java、C++、Python和PHP等。它的目标是为各种语言提供便利的RPC机制,十分适合其他异构系统对HBase数据的访问。
❑Avro。Avro是一个类似于Thrift的驱动层接口,提供了和Thrift相似的功能,但是更加成熟。
2)批处理接口的使用场景是批量处理数据。与交互接口不同的地方在于,这些批处理通常是异步进行的,需要扫描大量的数据。这些处理案例大多数不是用户直接驱动的,且运行时间非常长。目前该类接口主要有以下三种:
❑MapReduce。MapReduce框架提供了多种以HBase为数据源的执行方法,如MapReduce Java API。
❑Hive。Hive是基于Hadoop平台的数据仓库工具。其提供了类似SQL的处理语言HiveQL,Hive 0.6.0及之后的版本提供了对HBase的支持。
❑Pig。Pig是一个大数据分析平台。其也提供了自己的查询语言Pig Latin,用户可以使用该查询语言操作HBase中的数据。
3)HBase自带的命令行接口最简单的接口。用户可以使用shell访问HBase的本地数据或者远程服务器并对数据库进行管理。
Cassandra的访问接口
Cassandra与HBase类似,也有多种多样的访问接口。Cassandra早期(0.6及之前版本)使用的是Thrift,之后因为Thrift开发缓慢且存在较多的问题,开始转向使用更加活跃和成熟的Avro。同时,Cassandra还有多种针对特定语言的高级客户端,例如面向Java的Hector和Pelops、面向C#的HectorSharp、面向Python的Chiton,以及面向Ruby的Fauna等。这些客户端均是第三方开发者为了便于开发而写的开源项目,这里只是列举出了一些主流语言的具有代表性的客户端。
对于Cassandra来说,客户端有很多种选择,每种都有各自的优势和局限,面向不同的语言,也有着不同的成熟度。对于开发者来说,可以根据自己的需求来选择连接Cassandra的方式。