博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Elasticsearch在Hdfs上build的实现及优化
阅读量:7119 次
发布时间:2019-06-28

本文共 725 字,大约阅读时间需要 2 分钟。

hot3.png

引言

前段时间参与Elasticsearch离线平台化项目,主要是做一套Elasticsearch的buildservice, 一方面通过bahamut的数据流定义能力,直接对接用户原始数据,实现全增量一体化,解决用户准备数据的痛点。另一方面,社区的elasticsearch并没有全量增量的概念,所有数据都是用户通过sdk一条一条发给es在线服务构建索引,很难处理海量数据的场景,而且也难免对在线的性能产生影响,尤其是索引Merge的时候会严重影响线上服务的稳定性。所以,需要给Es做一个BuildService, 使之能够在blink集群上直接构建索引。

志宸老师在这篇文章中介绍了总体架构,本文再详细对ElasticBuild如何在Hdfs上构建索引以及一些相关的优化做一些介绍。

加载Hdfs索引

Elasticsearch在启动的时候,会为每个Index的每个Shard初始化一个InternalEngine实例,主要工作是恢复lucene的indexWriter及es的translog,原生的es只支持从本地加载索引文件,而修改后的ElasticBuild由于索引不落盘直接写到hdfs, 所以需要实现一种绕过本地磁盘直接加载hdfs上索引的方案。

HdfsDirectory

直接想到的一种办法是将索引拖到本地后再加载,显然这种方式时间代价太大,而且blink上的实例磁盘不一定能支持这么大的索引。所幸的是,lucene的索引读写接口Directory支持各种读写扩展,参考开源的组件,引入HdfsDirectory可以解决这个问题。

转载于:https://my.oschina.net/u/3611008/blog/2964023

你可能感兴趣的文章
正则表达式菜鸟教程
查看>>
Delphi隐藏进程
查看>>
bpclntcmd一条神奇的命令,解决新安装nbu客户端无法连接的问题 (屡试不爽神命令)...
查看>>
CSharp任何可比较的数据类型(大小比较泛型实现方法)封装
查看>>
远期、期货和互换(一)
查看>>
JDK1.7 安装加(一劳永逸的环境配置)
查看>>
C#核编之System.Environment类
查看>>
记录一次crm系统的开发过程
查看>>
TCP的延迟ACK机制
查看>>
使用多态求矩形的面积和周长以及圆形的面积和周长
查看>>
javascript基础
查看>>
Make: Must be a separator on rules line XX. Stop.
查看>>
字符串操作
查看>>
linux常用指令
查看>>
hello2源码解析
查看>>
ORA-12505, TNS:listener does not currently know of SID given in connect desc .
查看>>
SpringMVC bean validator 使用
查看>>
UIAlertController
查看>>
ECLIPSE MYECLIPSE 在线安装SVN
查看>>
开源《热血传奇》服务端引擎(C#编写),可以顺利进行游戏(更新编译和部署教程)...
查看>>