読者です 読者をやめる 読者になる 読者になる

かまたま日記3

プログラミングメイン、たまに日常

Embulk Meetup Tokyo #2 に参加してきた

Embulk

eventdots.jp

Embulk - 進化するバルクデータローダ

Embulkについて作者の古橋さんから何が出来るか、アーキテクチャ、今後の展望などの説明。

気になったポイント

  • 組み込みEmbulk。Embulkを自分のサービス内で使える、JavaRubyで可能
  • plugin bundle -> bundler的なEmbulkプラグインのバージョン固定の仕組み
  • Gradle 2.6 -> ./gradle -t build、 勝手にソースコードを検知してビルドしてくれる、便利そう
  • JSON型がEmbulk0.8では追加される

Embulk at Treasure Data, Inc.

TD社の赤間さんからTD社内でEmbulkがどう使われてるかの説明。

気になったポイント

  • 基本的にTD社のconnect機能で使われてるEmbulkはOSS版と同じ、必要な機能はOSS版にコントリビュートしていく。
  • Fluentdと違ってプラグイン開発も関わっていく
  • TDのテスト事情, 80%のカバレッジが無いとリリースできない、厳格。

新人がEmbulk mBaaSプラグインを開発した話

新人研修の一環でembulkのプラグインを開発しようとしたけど挫折した話。 発表のあとの質問コーナーでEmbulkのプラグイン開発は難しいものなのか、という質問が来てましたが、現状はJavaないしRubyがそれなりに書けて、他のプラグインのコードを読むことに抵抗がない人ならそんなに難しくないって感じなので、新人研修でプログラミング教育の一環でやるのはちと辛かったかと思います。

Embulkに足りない5つのコト

DeNAでのBulkdataシステム(HDFSからVertica)を構築するにあたってEmbulkに足りない部分をいろいろ補完しましたよという話とそれにあたってEmbulkに望むことを発表。かなりあるあるで共感できる内容でした。

  • YAML管理
    • 複数人がYAMLをいじるので管理が大変
      • スキーマごとに同じような定義ファイルを用意しないといけない、機密情報をファイルに書きたくない、など
    • なので、DBから設定情報を読んできて動的にファイルを作るジェネレータを作った
  • 単体処理フレームワーク
    • 事前処理、事後処理を行うための仕組みがない(このファイルがあるときだけ処理をする、とか)
    • Embulkラッパーで実装
  • ジョブキュー
    • Embulkは単にバルクジョブの実行基盤なので、スケジューリングなどの機能はない
    • Sidekiqを使った簡単な実行管理システムを作成
    • 流石にEmbulkにこの機能は望んではいない
  • 並列処理
    • INとOUTで同じ並列数なので、OUTだけ絞りたいといった事が出来ない
    • input-hdfsとoutput-vertica ではPlugin側でそれぞれ調整できるようにした
  • 続きから実行
    • ファイルパスは変わらないけど追記されているファイルの場合、現状のEmbulkのnext-config機能だと難しい
    • 自作、できなかったのでラッパー側で対応

DBに諸々の情報を入れて、実行直前に生成

あえてEmbulkを使ってログ監視すると幸せになれる状況、およびその導入事例

構造化されてないエラーログを構造化するための基盤としてEmbulkを作った話。 ERRORログ出過ぎ問題はどこでもあるんだなーと共感してしまいましたw

Embulkを活用したログ管理システム

顧客に応じたログファイル管理システムをEmbulkを使って構築した話。 embulk-parser-grok は便利そうなので、ちょっと調べてみようかと思いました。