TSUBOCK★LABO-ツボックラボ-

とあるセキュリティエンジニアの技術メモブログ

MENU

fluentdのバッチ版、EmbulkをDockerで試して触ってみた

f:id:panda-loves-smile:20200204162932p:plain

データ収集基盤を設計する際に、過去の大量のファイルもデータ収集基盤に取り込みたいという要望があり、大量のファイルをまとめて処理できるツールがないかと調べていたところ、Embulkという製品を見つけましたので、調べてまとめてみました。

Embulkとは

EmbulkはTreasure Data 社が開発したOSS製品で、リアルタイムにログを収集するlogstashやfluentdのようにファイルやデータベースからデータを吸い出して、別のストレージやデータベースに渡してくれる作業をバッチ処理で行ってくれるツールです。ストリームしてデータを流し込むlogstashやfluentdと違い、バルクで処理を行うので、大量のデータを処理するのに向いています。

今回はEmbulkをDockerで構築して触ってみたいと思います。本記事ではEmbulk用のDockerコンテナを作成し、動かすところまでを実施思います。

Dockerfileの作成

EmbulkのDockerコンテナを作成するため、Dockerfileを書きます。

FROM openjdk:8-jre-alpine

# Embulk 本体をインストールする
RUN wget -q https://dl.embulk.org/embulk-latest.jar -O /bin/embulk \
  && chmod +x /bin/embulk

# 使いたいプラグインを入れる
RUN apk add --no-cache libc6-compat \
  && embulk gem install embulk-output-td

WORKDIR /work

ENTRYPOINT ["java", "-jar", "/bin/embulk"]

イメージのビルド

前述で作成したDockerfileをdocker buildコマンドでビルドします。

$ docker build -t embulk .

ビルドされたかどうか、docker imagesで確認してみます。

$ docker images
----
REPOSITORY             TAG                 IMAGE ID            CREATED                  SIZE
embulk                 latest              e37ebe9559e7        11 minutes ago           140MB

これでdockerでEmbulkを起動する準備が整いました。

コンテナを起動してEmbulkを動かす

コンテナを起動してEmbulkを動かしてみたいと思います。

起動する場合はdocker run --rm -it -v $(pwd):/work embulk+Commandで実行が行なえます。例えばversionを確認したい場合は

$ docker run --rm -it -v $(pwd):/work embulk --version
Embulk v0.9.23

という感じで実行することができます。

Embulkはfluentdと同様にいろんなプラグインを導入して動かすことで、様々な処理を行うことができます。今回はDockerfileにoutputログインのみを導入しているが、使用する環境に応じてDockerfileを編集して使っていくと良さそうだ。