天天看點

Elasticsearch hadoop使用示例 & 運維實戰之叢集規劃 &presto-elasticsearch connectorelasticsearch-hadoop使用示例Elasticsearch 運維實戰之叢集規劃叢集節點劃分安裝與配置啟動elasticsearchnginx反向代理插件安裝presto-elasticsearch connector功能改進點

在elasticsearch-hadoop的具體使用中碰到了幾個問題,有必要記錄一下,避免下次遇到時又要重新研究。

es.scroll.size 一次性讀入的記錄數,預設是10, 如果不設定為大一點的值,要從es中讀取1億條資料,那将是一個漫長的過程

es.field.read.as.array.include 有的字段在es中是以string類型存儲,但其中包含逗号(,), spark預設認為這是數組類型,如果讀取這種字段的話,就會報錯,怎麼辦,那就用es.field.read.as.array.include來顯式指明

spark讀取es中資料的時候,partition數目取決于es中指定index的shard數目,為了獲得比較高的并發讀取性能,建議适當設定shard數目,為什麼是适當,因為具體取決于叢集規模等多種因素。

在hive中,字段名是_大小寫不敏感_的, 但在es中是大小寫敏感的

你說,這又怎麼樣。 呵呵, 這意味着不做特殊處理,永遠無法讀出es中大寫字段名的内容,你看到的将是滿屏的_null_

這該怎麼破,很簡單,指定 es.mapping.names

比如在es中,字段名為demofield, 要讀出其中的内容,hive表的字義就該這樣寫

注意是先hive中的字段名,然後是es中的字段名

規劃一個可用于生産環境的elasticsearch叢集。

整個叢集的節點分為以下三種主要類型

master nodes -- 負責維護叢集狀态,不儲存index資料, 硬體要求: 一般性的機器就可以,給es程序配置設定16g記憶體

data nodes -- 隻儲存index的資料,不被選舉為master nodes 硬體要求: 配置要求越高越好,使用大硬碟,有條件可以上ssd硬碟

client nodes -- 主要用于負載均衡,不被選舉為master node, 也不儲存index資料 硬體要求: 24核cpu, 64g記憶體或更高

一個合理的叢集應該包含三個master nodes, 1到多個data nodes, 最少一個client node

通用配置,以centos為例,使用rpm安裝包

修改/etc/sysconfig/elasticsearch, 修改es_heap_size和java_opts的内容,注意elasticsearch建議使用的最大記憶體是32g,

修改/etc/security/limits.conf, 添加如下内容

/etc/elasticsearch/elasticsearch.yml 内容配置

master節點

data節點

如果為elasticsearch配置了多塊硬碟,可以修改 data_dir 的值,多個目錄使用逗号(,)分開

client節點

需要注意的是elasticsearch在centos中使用service elasticsearch restart有時不能達到效果,需要分開來做

為了記錄針對叢集的查詢内容,建議使用nginx來做反向代理,nginx安裝在client node上,conf.d/default.conf 最簡單的配置如下

建議安裝如下插件

kopf 相容es 1.x, 2.x

<a href="https://github.com/lmenezes/elasticsearch-kopf">kopf</a>

head 相容es 1.x

bigdesk 相容es 1.x

elasticsearch搜尋功能強勁,就是查詢文法複雜,presto提供了非常open的plugin機制,我改進了下原有的presto-elasticsearch connector,現釋出于github

自動加載elasticsearch schema

支援分片資料加載

predication pushdown,注意由于presto spi接口的原因,目前隻支援and類型的過濾器下推,對于or表達式不支援,不支援like類型的過濾器下推

避免重複加載schema

運作辦法

在etc/catalog目錄下添加es.properties即可,内容如下

時間倉促,錯誤在所難免,歡迎批評指正。

繼續閱讀