悟空,拿我的打狗棒来

elasticsearch 如何快速搜索HDFS里的海量数据

Elasticsearch | 作者 chym | 发布于2017年08月23日 | 阅读数:8512

elasticsearch 如何快速搜索HDFS里的海量数据
已邀请:

Wenbo Yang - https://www.linkedin.com/in/yangwenbo214

赞同来自: exceptions xinfanwang

这个官网的一张截图。
 
我大概这么理解:我们要用es进行搜索,数据需要index到es中。es-hadoop是协助我们将hadoop data index到es中,实现数据实时检索。(并且这个数据移动是双向、seamlessly)
 
这个就引出了大家说的冷热数据的问题,冷数据存在HDFS,热数据存在ES。
 
我不认为es能把hdfs作为数据底层直接查询。

xinfanwang

赞同来自:

HDFS只是存储吧。你用es-hadoop可以通过spark,pig.hive等组织数据,再通过es访问。

chym

赞同来自:

是的,我们的组织方案也是这么搞的,对于半个月内的数据可以用ES存储,半个月之前的数据放到HDFS里,用你说的spark,pig.hive等组织数据,如果一年的数据,数据量很大,这样再间接通过es访问效率会不会很低,有没有好的办法?

xinfanwang

赞同来自:

如果是冷数据的话,直接用hive或HBASE,查询慢一段问题不大吧。热数据放ES这边查询。

chym

赞同来自:

按照这个图,通过ES-hadoop是否可以将ES的索引存到HDFS中,然后在ES查询过程中直接从HDFS中取数据?

xinfanwang

赞同来自:

我的理解是不能。只能用HDFS做repository, snapshot/restore可以。我猜测Lucene可能就不支持HDFS做数据存储,而ES底层是用Lucene管理数据的。

chym

赞同来自:

Lucene和HDFS的读写机制不一样,Lucene支持随机写的,HDFS不支持,所以一般都是通过先写到本地再转到HDFS,solr4.4之后可以直接写HDFS。通过ES-Hadoop可以将es的索引写到HDFS,不知道ES能否通过ES-Hadoop读取索引,感觉好像不能哦。

要回复问题请先登录注册