関する取り組みをご紹介するブログです。2019-03-05DigdagとEmbulkで行うDB同期の管理データプラットフォームグループの松原です。Analytics(以降LA)の開発、運用を行っています。今回はLAで行っている分析のためにサービス側のデータ(テーブル)を、Redshiftへ同期を行う処理について紹介します。概要LAではデータウェアハウスとしてRedshiftを運用しており、社内から比較的自由に利用できる様にしています。LAで取り扱っているデータはアクセスログが中心ですが、分析を行う利用者からはLA由来のデータ以外にも自分たちのサービスのデータを用いて分析を行いたい、という要望がよく出てきます。サービスのデータには個人情報を含むものも少なくありませんが、分析基盤として社内にデータを解放するためにはそのような情報は削る必要があります。そこで個人情報をマスキングしたサービス側データを利用できるよう、Redshiftに同期しています。システム構成(概要)大まかなシステム構成としては、下図のようになっています。多くのテーブルを同期しているので、カラム単位のマスキング処理や加工処理はEmbulkで行わず、同期元のデータベースであらかじめ行っておきます。Digdagの選定理由BigData-JAWS勉強会でAirflowのことを話してきましたにもあるように、すでにAirflowを運用していますが、ここではDigdagを選定しています。主な選定理由としては以下があります。構築や運用の容易さDigdagはサーバーモードで動かしても、JavaとPostgreSQLの動く環境があれば運用を開始できます。Airflowと比べると、今のところ構築・アップグレードなどの運用は容易です。やりたいことがシンプル今回はsh(embluk)、redshift、httpオペレータで用途として足りそうで、それぞれのタスク間の依存関係も複雑では無いです。そのためタスク間の依存関係はYAMLで宣言的に書いたほうがメンテンスしやすいと考えました。DAG自体も複雑で無いため、どこまで実行できたか・どこで失敗したのかの可視性は求めていないのでダッシュボードも簡易なもので問題ありませんでした。これらの理由により、Airflowで統一するより用途によりツールを使い分けた方が運用が容易なのでは、という結論になりました。規模感Redshiftへ同期しているデータに関する情報ですが以下のとおりです。Spectrum)これらのテーブルは、毎日業務開始前に前日のデータを同期しています。同期はデータの増分を追加するのではなく、全量差し替えています。現時点では同期対象のテーブル数が280テーブル程度あるため、テーブル個別のデータ変換処理はなるべく行わないようにしています。embulkやdigファイルを共通化しておくことで、同期対象テーブルの追加などの依頼があった場合にはテーブルとカラムの情報が書かれたファイル(下記の例だとtest1_tables.dig)のみを変更すれば良いようにしています。テーブル個別のデータ変換処理はできるだけ行わないようにしていますが、変換が必要な場合はAirflow側で処理を行うようにしています。2つのDBと同期を行う際のdigファイルの依存関係は、下図ようになります。それぞれのファイルは以下のような役割で分けています。既存のテーブルとSWAPし既存のテーブルを削除スケジュール設定、通知・エラー処理などを省略すると、主だったdigファイルは以下のようになります。digdag/flow/queries/swap.sql運用上行っていること以下のようなことを行って、運用コストを下げています。DISTKEYは手動で設定)の作成のスクリプト化タスクのログをS3に出力し、(shオペレーターから呼び出した)EmblukのログをLambdaでパース処理を行いエラー内容をSlackへ通知Redashで同期済みデータのヘルスチェックErrbotとmogを用いてChatOps(DAGの実行)Redshift上に同期したが、1年以上利用されてないテーブルの割り出しと、今後も同期するのかの確認(不要テーブルを同期対象から外す)これらを含めると、全体では以下のような構成になります。用いたデータフロー分散処理にあるバッチ処理と同様にRakeとwhenever(Cron)で運用されていたものをDigdagに置き換えました。置き換えを行うことで、メンテナンスコストはだいぶ下げることが出来たのではないかと思います。現在はデータソースがどこにあるのかと処理の複雑さによって、AirflowとDigdagのどちらを使うのかを使い分けています。今後やっていきたいこと今後もDigdagを用いた同期の改善の他にも、以下のようなこともやってきたいと考えています。AnalyticsにおけるRedshiftの運用データプラットフォームグループの松原です。弊社各サービスの...2018-06-12分析基盤のバッチ処理構成を考えるデータプラットフォームチームの橋本です。日頃は分析基盤Live...2018-04-10BigData-JAWS勉強会でAirflowのことを話してきましたデータプラットフォームチームのよしたけです。Inc.LIVESENSEはてなブログをはじめよう!livesense-blogさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。