使用Embulk将数据加载到Amazon Elasticsearch服务中
首先
AWS ElasticSearch服务是完全管理的,不需要运维,并且在目前(2017年5月18日)无可匹敌的吸引力(我没有使用Elastic Cloud的经验)。
在Azure上,可以通过MarketPlace提供的Elastic-Stack进行自动构建完全占有群集。GCP也与Azure几乎相同。尽管完全占有群集有一些优点,但ElasticCluster的运维/管理将作为一种权衡问题困扰着。
起初我们使用Azure的独立集群,但出现了连续的问题,因为不想要运维等之类的麻烦,所以我尝试了一下AWS,这里我将把这个过程和一些技巧整理一下。
环境
搭建
-
- 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
确定
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
未検証