ElasticSearch的River机械

ElasticSearch本身就提供了River机械,对于同步数据。

在这里,现在能找到的官方推荐River:

http://www.elasticsearch.org/guide/en/elasticsearch/rivers/current/

可是官方没有提供HBase的River。

事实上ES的River很easy,就是一个用户打包好的jar包,ES负责找到一个node。并启动这个River。假设node失效了,会自己主动找另外一个node来启动这个River。

public interface RiverComponent {
RiverName riverName();
}
public interface River extends RiverComponent { /**
* Called whenever the river is registered on a node, which can happen when:
* 1) the river _meta document gets indexed
* 2) an already registered river gets started on a node
*/
void start(); /**
* Called when the river is closed on a node, which can happen when:
* 1) the river is deleted by deleting its type through the delete mapping api
* 2) the node where the river is allocated is shut down or the river gets rerouted to another node
*/
void close();
}

Elasticsearch-HBase-River

github上有两个相关的项目:

https://github.com/mallocator/Elasticsearch-HBase-River

这个项目事实上非常easy,在River里用定时器启动一个HBase的Scanner,去扫描数据。并把数据插到ES里。和自己手动写代码去扫描差点儿相同。

https://github.com/posix4e/Elasticsearch-HBase-River

这个项目利用了HBase的Replication机制,模拟了一个Hbase Replication的结点,然后同步数据到ES里。

可是这个项目是基于Hbase0.94的,实现的功能有限。

Hbase0.94和HBase0.98 的API变化非常大,基本不可用。并且作者也说了不能用于生产环境。

HBase的Relication机制

能够參考官方文档和cloudera的一些博客文章:

http://hbase.apache.org/book.html#cluster_replication

http://blog.cloudera.com/blog/2012/07/hbase-replication-overview-2/

HBase的Relication机制,事实上和Mysql的同步机制非常像。HBase的每一个Region Server都会有WAL Log,当Put/Delete时。都会先写入到WAL Log里。

然后后台有线程会把WAL Log随机发给Slave的Region Server。而Slave的Region Server会在zookeeper上记录自己同步到的位置。

HBase同步数据到Solr的方案:Lily HBase Indexer

Cloudera内置的Cloudera Search实际上就是这个Lily Hbase Indexer:

https://github.com/NGDATA/hbase-indexer

这个项目就是利用了HBase的Replication功能。把HBase数据改动(Put,Delete)都抽像成为一系列Event,然后就能够同步到Solr里了。

这个项目抽象出了一个子项目:HBase Side-Effect Processor。

https://github.com/NGDATA/hbase-indexer/blob/master/hbase-sep/README.md

让用户能够自己写Listener来处理Event。

HBase数据同步到ElasticSearch的终于方案

考虑了上面的东东,所以决定基于HBase Side-Effect Processor,来自己写简单的程序同步数据到ES里。

事实上代码是很easy的,參考下Demo里的LoggingConsumer就好了。

https://github.com/NGDATA/hbase-indexer/blob/master/hbase-sep/hbase-sep-demo/src/main/java/com/ngdata/sep/demo/LoggingConsumer.java

    private static class EventLogger implements EventListener {
@Override
public void processEvents(List<SepEvent> sepEvents) {
for (SepEvent sepEvent : sepEvents) {
System.out.println("Received event:");
System.out.println(" table = " + Bytes.toString(sepEvent.getTable()));
System.out.println(" row = " + Bytes.toString(sepEvent.getRow()));
System.out.println(" payload = " + Bytes.toString(sepEvent.getPayload()));
System.out.println(" key values = ");
for (KeyValue kv : sepEvent.getKeyValues()) {
System.out.println(" " + kv.toString());
}
}
}
}

其他的一些东东:

ElasticSearch 和Solr cloud的比較

从网上找到的帖子,讨论比較多的是12年,貌似后面就比較少了。

https://github.com/superkelvint/solr-vs-elasticsearch 

http://stackoverflow.com/questions/2271600/elasticsearch-sphinx-lucene-solr-xapian-which-fits-for-which-usage

http://www.quora.com/Why-Cloudera-search-is-built-on-Solr-and-not-Elasticsearch   Cloudera-Search为什么选择Solr而不是ElasticSearch

个人倾向于ElasticSearch,由于从流行度来看,ES正在超越solr cloud:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGVuZ3l1bmFiYw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

Logstash + ElasticSearch + Kibana的完整日志收集分析工具链。也有非常多公司在用。

版权声明:本文博主原创文章,博客,未经同意,不得转载。

HBase数据同步ElasticSearch该程序的更多相关文章

  1. HBase数据同步到ElasticSearch的方案

    ElasticSearch的River机制 ElasticSearch自身提供了一个River机制,用于同步数据. 这里能够找到官方眼下推荐的River: http://www.elasticsear ...

  2. Mysql数据同步Elasticsearch方案总结

    Mysql数据同步Elasticsearch方案总结 https://my.oschina.net/u/4000872/blog/2252620

  3. 基于 MySQL Binlog 的 Elasticsearch 数据同步实践 原

    一.背景 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品.订单等数据的多维度检索. 使用 Elasticsearch 存储业务数据可以 ...

  4. 基于MySQL Binlog的Elasticsearch数据同步实践

    一.为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品.订单等数据的多维度检索. 使用 Elasticsearch 存储业务数 ...

  5. 使用Observer实现HBase到Elasticsearch的数据同步

    最近在公司做统一日志收集处理平台,技术选型肯定要选择elasticsearch,因为可以快速检索系统日志,日志问题排查及功业务链调用可以被快速检索,公司各个应用的日志有些字段比如说content是不需 ...

  6. 通过HBase Observer同步数据到ElasticSearch

    Observer希望解决的问题 HBase是一个分布式的存储体系,数据按照RowKey分成不同的Region,再分配给RegionServer管理.但是RegionServer只承担了存储的功能,如果 ...

  7. elasticsearch与mongodb分布式集群环境下数据同步

    1.ElasticSearch是什么 ElasticSearch 是一个基于Lucene构建的开源.分布式,RESTful搜索引擎.它的服务是为具有数据库和Web前端的应用程序提供附加的组件(即可搜索 ...

  8. Oracle和Elasticsearch数据同步

    Python编写Oracle和Elasticsearch数据同步脚本 标签: elasticsearchoraclecx_Oraclepython数据同步    Python知识库 一.版本 Pyth ...

  9. 几篇关于MySQL数据同步到Elasticsearch的文章---第一篇:Debezium实现Mysql到Elasticsearch高效实时同步

    文章转载自: https://mp.weixin.qq.com/s?__biz=MzI2NDY1MTA3OQ==&mid=2247484358&idx=1&sn=3a78347 ...

随机推荐

  1. linux 下修改 apache 启动的所属用户和组

    apache默认启动的用户和组是www-data,所以有些时候,就会涉及到权限问题,没有权限在执行目录下创建或者读写文件.改变用户和组的方法其实很简单: 1.进入到apache默认安装路径/etc/a ...

  2. [LeetCode] Combinations [38]

    称号 Given two integers n and k, return all possible combinations of k numbers out of 1 ... n. For exa ...

  3. 《学习opencv》笔记——矩阵和图像处理——cvMax,cvMaxS,cvMerge,cvMin and cvMinS

    矩阵和图像操作 (1)cvMax函数 其结构 void cvMax(//比較两个图像取最大值 const CvArr* src1,//图像1 const CvArr* src2,//图像2 CvArr ...

  4. Dapper的使用

    轻量型ORM框架Dapper的使用 /// <summary> /// 查询操作 /// </summary> /// <typeparam name="T&q ...

  5. JAVA基础实例(三)--排序

    冒泡排序 是一种简单的排序算法.它反复地走訪过要排序的数列,一次比較两个元素.假设他们的顺序错误就把他们交换过来.走訪数列的工作是反复地进行直到没有再须要交换,也就是说该数列已经排序完毕. 这个算法的 ...

  6. 正确lua简单的扩展,可以加速相关C++数据。

    很早的时候,我有一件事纠结.如果,我在这里C++打开界面脚本.使用C++其中一个目标,和.我的程序有很多不同的lua虚拟机.每个虚拟机与一个关联C++对象,它是多线程,那么如何快速应利用这个好时机lu ...

  7. Cocos观察者设计模式和通报机制

    观察员(Observer)模式也称为公告/订阅(Publish/Subscribe)模式.这是 MVC( 模型-视图-控制器)模型的重要组成部分.天气一直讨论的英国最喜欢的话题,近期天气变化几年已成为 ...

  8. Boost.Asio c++ 网络编程翻译(26)

    Boost.Asio-其他特性 这章我们讲了解一些Boost.Asio不那么为人所知的特性.标准的stream和streambuf对象有时候会更难用一些,但正如你所见.它们也有它们的益处.最后,你会看 ...

  9. Codeforces Round #254 (Div. 2):A. DZY Loves Chessboard

    A. DZY Loves Chessboard time limit per test 1 second memory limit per test 256 megabytes input stand ...

  10. ASP.Net MVC View

    ASP.Net MVC View(视图)   View视图职责是向用户提供界面.负责根据提供的模型数据,生成准备提供给用户的格式界面. 支持多种视图引擎(Razor和ASPX视图引擎是官方默认给出的, ...