公司有个项目,现有的数据都是直接存 HBase 里,现在新来了个需求是需要根据字段内容查询数据给用户展示的功能(类似一般关系型数据库那样的查询),直接用 HBase 查询等于是全表扫描了,速度慢而且也对集群压力较大。
然后现在考虑让查询全部用 es 查,那么对于现有 HBase 数据导出到 ES ,以及以后 HBase 表的增量数据同步到 ES 不知是否有主流的方案?
因为新接触这块内容,有点菜,对这方面比较陌生。因此来 v 站请教下大佬们 谢谢!
1
JerryMouse 353 天前 via iPhone
对于将现有的 HBase 数据导出到 Elasticsearch ( ES )并进行增量同步的问题,有一些主流的方案可供考虑。
1. **HBase MapReduce 导出到 Elasticsearch:** - 利用 HBase 的 MapReduce 作业将数据导出到中间格式(如 JSON 或 Avro )。 - 将导出的数据通过 Elasticsearch 的 Bulk API 加载到 ES 中。 - 对于增量同步,可以定期运行这个作业,只导出最近更新的数据。 2. **使用 Apache Nifi 或 Kafka Connect:** - Apache Nifi 或 Kafka Connect 可以用作数据流处理工具,从 HBase 抓取数据并将其发送到 Elasticsearch 。 - 配置定期拉取并同步,以处理增量数据更新。 3. **使用 Logstash:** - Logstash 是一个数据处理工具,可以从 HBase 读取数据,并将其发送到 Elasticsearch 。 - 通过配置 Logstash 管道,可以实现定期的全量或增量同步。 4. **HBase Coprocessor:** - 利用 HBase 的 Coprocessor 功能,可以在 HBase 数据更新时触发事件,并将相应的数据同步到 Elasticsearch 。 - 这需要编写自定义的 Coprocessor 来处理数据变更事件。 选择方案时需要考虑数据一致性、性能、可靠性和实现难度。根据具体需求和技术栈,选择适合项目的方案。 —— 以上来自把你问题复制到 gpt3 后他给的回复 |
2
JNian 353 天前
Debezium
|
3
howfree 353 天前
finkcdc 不知道支不支持 Hbase,mysql 是可以同步到 es 的
|
4
grittiness OP |