使用Embulk将数据加载到Amazon Elasticsearch服务中

首先

AWS ElasticSearch服务是完全管理的,不需要运维,并且在目前(2017年5月18日)无可匹敌的吸引力(我没有使用Elastic Cloud的经验)。
在Azure上,可以通过MarketPlace提供的Elastic-Stack进行自动构建完全占有群集。GCP也与Azure几乎相同。尽管完全占有群集有一些优点,但ElasticCluster的运维/管理将作为一种权衡问题困扰着。

起初我们使用Azure的独立集群,但出现了连续的问题,因为不想要运维等之类的麻烦,所以我尝试了一下AWS,这里我将把这个过程和一些技巧整理一下。

环境

Load

搭建

    • AzureVMへembulkのセットアップはこのあたりを参考に

 

    • AWS ElasticSearch Serviceは本家の資料を参考に

APIを使って投げ込む事を想定している為、embulkが稼働するNodeからのアクセス制御を掛けておきます

embulk plugins

embulk-input-azure_blob_storag
embulk-output-elasticsearch_using_url
こちらの記事にある通り、Tresure Data mugaさん謹製のpluginではAWS ElasticSearch Serviceをサポートしていないので、embulk-output-elasticsearch_using_url を使います

进行

请按照以下步骤进行实施。

    • BlobにElasticSearchに投入したいログをUploadしておく

 

    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

确定

Load OK

Chinese paraphrase: 总结

    • ElasticSearchへの大量のデータロードにはembulkは最適な手段

 

    AWS ElasticSearch Serviceでは 9200 portが使えない為、embulk pluginの選択に注意、http経由で実施するのがおすすめ

以下是額外的談話

    およその費用比較
AWSAzureGCP費用\$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

未検証

广告
将在 10 秒后关闭
bannerAds