Amazon Elasticsearch Service로 Embulk를 사용하여 데이터 로드

소개



AWS ElasticSearch Service는 완전 관리형으로 운영할 필요가 없으며, 지금까지 (2017/5/18) 다른 추종을 용서하지 않는 매력이 있습니다 (필자는 Elastic사의 Elastic Cloud는 사용한 적이 없습니다)
Azure의 경우 MarketPlace에서 Elastic-Stack을 제공하여 완전 점유 클러스터를 자동으로 구축할 수 있습니다. GCP도 blog에 있는 대로 Azure와 거의 같다. 완전 점유 클러스터의 장점? 있을 것 같은 반면, ElasticCluster의 운영/관리가 trade-off로 되어 있습니다.

당초에는 Azure에서 개별 클러스터를 사용하고 있었습니다만 트러블이 계속되어, 운용 등은 하고 싶지 않기 때문에 AWS에 바람피워 보았으므로 그 기록과 Tips를 정리합니다

환경


  • 기존의 물건을 사용하여 Azure의 VM에 embbulk 설치, 데이터 로드 등의 제어에 사용합니다
  • 데이터를 Azure Blob에 저장
  • AWS ElasticSearch Service (ver5.1을 선택할 수 있었기 때문에 이것)
  • 그림


  • 설정


  • AzureVM에 embbulk 설정이 참고
  • AWS ElasticSearch Service는 본인의 자료
  • API를 사용하여 던지는 것을 상정하고 있기 때문에, embulk가 가동하는 Node로부터의 액세스 제어를 곱해 둡니다

  • embulk plugins
  • embulk-input-azure_blob_storag
  • embulk-output-elasticsearch_using_url
  • 여기 기사에서 볼 수 있듯이 Tresure Data muga의 근사한 플러그인은 AWS ElasticSearch Service를 지원하지 않으므로 embbulk-output-elasticsearch_using_url을 사용합니다
  • .


    실행



    이하의 순서로 실시
  • Blob에 ElasticSearch에 넣고 싶은 로그를 업로드하십시오
  • embulk에서 빠져 나와 ElasticSearch Service로 던져 버리는 config.yml 만들기
  • in:
      type: azure_blob_storage
      account_name: <BLOB NAME>
      account_key: <BLOB KEY>
      container: <CONTAINER NAME>
      path_prefix: <PREFIX as you like>
      decoders:
        - {type: gzip}
      parser:
        charset: UTF-8
        newline: CRLF
        type: jsonl
        schema:
    
    out:
      type: elasticsearch_using_url
      mode: normal
      nodes:
        - url: "<YOUR ElasticSearch Domain>.us-east-2.es.amazonaws.com:80"
      index: "sample"
      index_type: "sample"
    
  • 실행
  • $ embulk preview config.yml
    $ embulk run config.yml -l warn -r resume_state_aws.yml &>> embulk_awses.log
    

    확인


  • AWS 콘솔에서 확인


  • 요약


  • ElasticSearch에 대량의 데이터를로드하는 데 embbulk가 가장 좋은 방법
  • AWS ElasticSearch Service에서는 9200 포트를 사용할 수 없으므로 embulk plugin 선택에주의하고 http를 통해 구현하는 것이 좋습니다

  • 여담


  • 대략적인 비용 비교



  • AWS
    Azure
    GCP


    비용
    \$250 - $300 정도
    \$530
    미확인


  • VirtulMachine의 크기, 데이터 양은 1TB 정도
  • AWS
  • EC2: t2.midium x3 ,\$150
  • EBS: 1TB,\$100
  • 데이터 통신 요금

  • Azure
  • VM: D2v2 ,\$84.82 x6 =$505.44
  • Elastic-Stack 구축시, VM 사이즈를 선택할 수 있지만, D1v2(default)에서는 사용물이 되지 않았다
  • Blob: 1TB ,\$24
  • 데이터 통신 요금

  • GCP
  • 검증되지 않음


  • 좋은 웹페이지 즐겨찾기