从HDFS到ES的数据加载需要很长时间

时间:2019-03-12 17:16:59

标签: elasticsearch hive query-optimization elasticsearch-hadoop

我在hive中创建了一个外部表,需要将数据移动到ES(2个节点,每个节点1 TB)中。在常规查询下,需要花费很长时间(超过6个小时)的数据表才具有9GB的数据。

INSERT INTO TABLE <ES_DB>.<EXTERNAL_TABLE_FOR_ES> 
SELECT COL1, COL2, COL3..., COL10 
  FROM <HIVE_DB>.<HIVE_TABLE>;

ES索引具有默认的5个分片和1个副本。增加分片数量可以加快摄取速度吗? 有人可以建议采取任何改进措施来加快ES节点的接收速度。

1 个答案:

答案 0 :(得分:0)

您没有提到将数据馈入ES所使用的方法,因此很难确定您是在使用摄取管道还是采用了什么技术来弥合差距。鉴于此,我将坚持使用generic advice on how to optimize ingestion into Elasticsearch

Elastic发布了一些优化摄入系统的指南,我们发现有三点确实有所不同:

  1. 关闭副本:在注入数据时将副本数设置为零,以消除在复制数据的同时也注入数据的需求。这是一个索引级别的设置(“ number_of_replicas”)
  2. 不指定ID :从数据库架构中不清楚您是否跨任何标识符进行映射,但是可以避免将文档ID指定给Elastic并让其指定其ID拥有可显着提高性能的产品。
  3. 使用并行Bulk运算符:使用BulkAPI将数据推送到ES中并使用多个线程进行馈送,以便在服务器端始终有多个Bulk请求。

最后,您是否安装了Kibana并监视了您的节点以了解它们的限制?特别是CPU还是内存?