1. elasticsearch와 hadoop

2. elasticsearch와 hadoop 연결 방법


   elasticsearch와 hadoop간 데이터 교환을 위해서는 아래 2가지 방법으로 연동을 함.


   1) elasticsearch on yarn

hadoop yarn cluster 안에서 elasticsearch가 동작하도록 하는 방식으로 현재 

beta 환경이여서 사용시 주의가 필요함


- elastic.co에서 elasticsearch-yarn 버전 다운로드

- hadoop에서 아래와 같은 명령어 수행하여 elasticsearch 설치

  $ hadoop jar elasticsearch-yarn-<version>.jar

No command specified Usage: -download-es : Downloads Elasticsearch.zip -install : Installs/Provisions Elasticsearch-YARN into HDFS -install-es : Installs/Provisions Elasticsearch into HDFS -start : Starts provisioned Elasticsearch in YARN -status : Reports status of Elasticsearch in YARN -stop : Stops Elasticsearch in YARN -help : Prints this help

  $ hadoop jar elasticsearch-yarn-<version>.jar -install-es

$ hadoop jar elasticsearch-yarn-<version>.jar -install

$ hadoop dfs -ls /apps/elasticsearch

- yarn 기반하에 elasticseach 시작 및 종료

$ hadoop jar elasticsearch-yarn-<version>.jar -start containers=2

 $ hadoop jar elasticsearch-yarn-<version>.jar -status

$ hadoop jar elasticsearch-yarn-<version>.jar -stop


   2) elasticsearch for apache hadoop

     기존 hadoop과 elasticsearch가 설치되어 있는 상태에서 연결 driver를 설정하여

     연동시키는 방법

     - java, elasticsearch, hadoop 상태 및 버전 check

       $ java -version ==> 1.7_55 버전 이상

$ curl -XGET http://localhost:9200 ==> 1.x 버전 이상

$ hadoop version ==> 1.x 혹은 2.x

연동하는 방법은 여러가지(map/reduce, cascading, hive, pig, spark, storm등)

있으나 hive로 사용

$ hive --version ==> 0.10 이상

- elastic.co에서 elasticsearch-hadoop 버전 다운로드

     - hive 설정파일에 다운로드 받은 jar 파일 위치(hadoop 파일시스템) 등록

       <property>

        <name>hive.aux.jars.path</name>

        <value>/lib/elasticsearch-hadoop.jar</value>

 </property>

     - hive 시작

       (metadata 저장공간으로 mysql을 사용하여 구성하는게 편함)

     - elasticsearch와 연결을 위한 external 테이블 생성

       create external table artists (...)

       stored by 'org.elasticsearch.hadoop.hive.EsStorageHandler'

       tableproperties('es.resource' = 'radio/artists', 'es.index.auto.create' = 'false')

       => radio : index,   artists : type

       

        * 다른 옶션 : es.batch.size.bytes, es.batch.size.entries


3. es-hadoop 동작 방식

Dynamic parallelism

        


3. es-hadoop configuration 파라미터


   1) es.resource   (ex: es.resource=<index>/<type>)

      es.resource.read

      es.resource.write

   2) es.nodes    (ex: es.nodes=localhost)

   3) es.port      (ex: es.port=9200)

   4) es.query    (uri / query dsl / external resource)

   5) es.input.json (default : false)

   6) es.write.operation (document 존재할때 처리방안, index/create/update/upsert)

   7) es.update.script, es.update.script.lang

   8) es.update.script.params, es.update.script.params.json 

   9) es.batch.size.bytes (bulk api writing size, default: 1mb)

 10) es.batch.size.entries (maximum number of entries, default: 1000)

 11) es.batch.write.refresh (default: true)

 12) es.batch.write.retry.count (default: 3,  -값으면 무한정 수행)

 --- 13번부터 mapping 관련 config

 13) es.mapping.id (es.mapping.id=id  id를 es에 _id에 맵핑)

 14) es.mapping.parent (default:none)

 15) es.mapping.version  (es에 _version과 맵핑)

 16) es.mapping.version.type (internal/external/external_gt/external_gte/force)

 17) es.mapping.routing (es에 _routing과 맵핑)

 18) es.mapping.ttl (es에 _ttl과 맵핑)

 19) es.mapping.timestamp (es에 _timestamp와 맵핑)

 20) es.mapping.date.rich (default : true)

 21) es.mapping.include  (comma로 분리된 field 기술, 해당 데이터만 사용)

 22) es.mapping.exclude (comma로 분리된 field 기술, 해당 데이터는 사용하지 않음)

 --- 23번부터 index 관련 config

 23) es.index.auto.create (default:yes, index가 없으면 자동으로 생성)

 24) es.index.read.missing.as.empty (default:no, index가 없으면 exception 발생)

 25) es.field.read.empty.as.null (default:yes, empty field를 null 처리할지)

 26) es.field.read.validate.persense (default:warn, ignore/warn/strict, missing field가 발견될때 대응)

 -- 27번부터 network 관련 config

 27) es.nodes.discovery (default:true, cluster내 다른 노드를 찾을지...)

 28) es.nodes.client.only (default:false, true일 경우 모든 요청을 client를 통해서)

 29) es.http.timeout (default:1m,  es와 http connection 타임아웃값 설정)

 30) es.http.retries (default:3, http fail시 retry 횟수)

 31) es.scroll.keepalive (default:10m, scroll query에 타임아웃값 설정)

 32) es.scroll.size (default:50, 각 scroll 요청시 return되는 document 수)

 33) es.action.heart.beat.lead (default: 15s)

 -- 34번부터 인증관련 config

 34) es.net.http.auth.user 

 35) es.net.http.auth.pass


 

       

'NoSQL > Elasticsearch' 카테고리의 다른 글

elasticsearch optimize api  (0) 2016.06.15
elasticsearch warmers  (0) 2016.06.15
elasticsearch cluster 상태확인  (0) 2016.06.14
elasticsearch 구성  (0) 2016.06.13
elasticsearch 사용법  (0) 2016.06.10

+ Recent posts