协处理器概述
在HBase中,使用“Get”或者“Scan”获取数据,而在RDBMS中使用SQL查询。为了仅获取相关数据,您可以使用HBase Filter过滤它 ,而在RDBMS中使用WHERE谓词。
获取数据后,您可以对其执行计算。这种范例适用于具有几千行和几列的“小数据”。但是,当您扩展到数十亿行和数百万列时,在网络中移动大量数据将在网络层产生瓶颈,客户端需要足够强大并且有足够的内存来处理大量数据和计算。此外,客户端代码可能变得庞大而复杂。
在这种情况下,协处理器可能有意义。您可以将业务计算代码放入在RegionServer上运行的协处理器中,与数据位于同一位置,并将结果返回给客户端。
这只是使用协处理器可以带来好处的一种情况。以下是一些类比,可能有助于解释协处理器的一些好处。
协处理器类比
触发器和存储过程
Observer协处理器类似于RDBMS中的触发器,因为它在特定事件(例如,Get或Put)发生之前或之后执行代码。端点协处理器类似于RDBMS中的存储过程,因为它允许您对RegionServer本身上的数据而不是客户端上的数据执行自定义计算。
MapReduce
MapReduce的工作原理是将计算移动到数据位置。协处理器在相同的主体上运行。
AOP
如果您熟悉面向方面编程(AOP),则可以将协处理器视为通过拦截请求然后运行某些自定义代码来应用建议,然后将请求传递到其最终目标(甚至更改目标)。
协处理器实现概述
1、 您的类应该实现一个协处理器接口–协处理器,RegionObserver,CoprocessorService–仅举几例;
2、 使用HBaseShell静态或动态地加载协处理器;
3、 从客户端代码调用协处理器HBase透明地处理协处理器;
框架API在协处理器包中提供。