マジセミドライブ

ウェビナー関連のニュースやITサービス&ツールの最新情報を随時配信します。

OSS情報

2020.01.01

【OSS情報アーカイブ】Embulk

【OSS情報アーカイブ】Embulk

※当記事に記載されている情報は、古くなっている場合があります。オフィシャルサイトで最新情報をご確認ください。

コンテンツ

「Embulk」とは

概要

Embulk(エンバルク)とは、プラグ可能なマルチソースバルクデータローダーです。バルク処理に特化したプラグインベースのデータローダーで、大規模データセットのバルク転送を実施します。「データベース」「DWH」「NoSQL」「ファイル形式」「クラウドデータストア」などのデータ転送を強力にサポートします。

基本説明

Embulk は、ストリーミング型ログ収集フレームワーク「fluentd」のバッチ版のようなデータ転送ツールです。特に、「1発実行」「日次バッチ処理」「定期バッチ処理」などのバルク処理用途に向いています。

転送元の「ファイル」「データベース」などからデータを吸い出し、転送先の「ストレージ」「データベース」などにロードするためのシンプルな仕組みを提供します。

プラグイン型アーキテクチャを採用しており、RubyやJavaでシンプルなコードを書くことで、さまざまな「データベース」「ファイルフォーマット」「ストレージ」に対して柔軟に対応できます。

ポイント

・さまざまなプラグインによる入力と出力の組み合わせ
・MavenおよびRubygemリポジトリでリリースされたプラグインに対応
・入力ファイル形式の自動推測機能
・並列実行機能—ビッグデータセット処理
・トランザクション制御機能—オールオアナッシングを保証

経緯

・2015年1月:初版リリース

ユースケース例

「CSVファイル」から「Elasticsearch + Kibana5」へのスケジュールされた一括データ読み込み

→embulk.org →recipes →scheduled-csv-load-to-elasticsearch-kibana5

オフィシャルサイト情報

■オフィシャルサイト

→embulk.org

■GitHub

→github.com →embulk/embulk

■主要開発元

Embulkは、The Embulk projectが中心となり開発が進められています。

■ライセンス情報

Embulkのライセンスは「Apache License Version 2.0」です。

詳細について、こちらを参照ください。
→github.com →embulk/embulk →LICENSE

■クイックスタート

「Linux & macOS用」と「Windows用」のコマンドが記述されています。

→embulk.org [→Quick Start]

同様製品

同様な機能を提供する製品として、次のようなものがあります。

オープンソース製品:「Fluentd」「Logstash」など。

プラグインアーキテクチャ

Embulkは柔軟なプラグイン構造による機能拡張が可能です。

「データ入力」「データ加工」「データ出力」などの機能別タイプに分かれています。

並列/分散処理

Embulkは、1回の処理を複数のタスクに分割することで並列実行する仕組みを備えているため、大規模データの高速バルク処理が可能です。

トランザクション再開機能

Embulkは、失敗したトランザクションの再開機能をサポートしています。

トランザクションが失敗した場合、その状態をYAMLファイルに保存します。同じコマンドを使用してトランザクションを再試行できます。

トランザクションを再開しない場合は、「embulk cleanupサブコマンド」を使用して中間データを削除できます。

構成ファイル

■概要

Embulkでは、YAMLファイルを使用して一括データ読み込み処理を定義します。

Liquidテンプレートエンジンを使用して、構成ファイルに環境変数を埋め込むことができます。

また、別の構成ファイルを含めることもできます。

→embulk.org → docs →embulk-configuration-file-format

■「in」セクション

入力プラグインオプションを指定します。

・レコードベース—MySQL、DynamoDBなど
・ファイルベース—S3、HTTPなど

parser

入力がファイルベースの場合、ファイル形式(csv、jsonなど)を解析するためにパーサープラグインを指定します。

decoder

入力がファイルベースの場合、圧縮または暗号化をデコードするためにデコーダプラグインを指定します。

・gzip
・bzip2
・zip
・tar.gz など

■「out」セクション

出力プラグインオプションを指定します。

・レコードベース—Oracle、Elasticsearch など
・ファイルベース—Googleクラウドストレージ など

formatter

出力がファイルベースの場合、特定ファイル形式(CSV、JSONなど)にフォーマットするため、フォーマッタープラグインを指定します。

encoder

出力がファイルベースの場合、圧縮または暗号化(gzipやbzip2など)をエンコードするために、エンコーダプラグインを指定します。

■「filters」セクション

フィルタリングプラグインを指定できます。

■「exec」セクション

並列処理を制御するためのエグゼキュータプラグインを指定できます。

「Embulk」のプラグイン機能

概要

Embulkは、さまざまなプラグインを使用して、各種システムやファイル形式との間でデータをロードできます。

再利用性を高めるために、プラグインを共有して管理することで、カスタムスクリプトを読みやすく、保守しやすく維持できます。

■プラグインリスト

次のプラ​​グイン種類リストが公開されています。

・入力プラグイン
・出力プラグイン
・フィルタプラグイン
・ファイルパーサープラグイン
・ファイルデコーダプラグイン
・ファイルフォーマッタプラグイン
・ファイルエンコーダプラグイン
・エグゼキュータプラグイン

→plugins.embulk.org

■プラグインバンドル機能

「embulk mkbundleサブコマンド」により、プラグインが分離されたバンドルを作成できます。

プラグイン(gems)を、embulkディレクトリではなく、バンドルディレクトリにインストールすることで、プラグインのバージョンをシンプルに管理できます。

入力プラグイン

■ファイル入力プラグイン

ファイル入力プラグインは、ローカルファイルからデータを読み込みます。

デコードプラグイン

■Gzipデコーダプラグイン

Gzip形式にデコードします。

■BZip2デコーダプラグイン

BZip2形式にデコードします。

パーサープラグイン

■CSVパーサープラグイン

CSVパーサープラグインは「CSVファイル」や「TSVファイル」を解析します。

列設定を宣言できますが、列設定を自動的に生成する推測機能も利用できます。

エスケープされていない不規則な引用符の処理方法も指定できます。

■JSONパーサープラグイン

JSONパーサープラグインは、JSONオブジェクトの配列を含むJSONファイルを解析します。

columnsオプションにより、「列のリスト」と「JSON値をEmbulk列に抽出する方法」を宣言します。

処理結果として、JSON形式の「record」という名前の単一レコードを出力します。

フォーマッタープラグイン

■CSVフォーマッタープラグイン

CSVフォーマッタープラグインは、「CSV形式」や「TSV形式」にデータをフォーマットします。

quote_policyオプションにより、引用するフィールドタイプを指定できます。

エンコーダープラグイン

■Gzipエンコーダープラグイン

Gzipエンコーダープラグインは、Gzipを使用して出力ファイルを圧縮します。

「0(圧縮なし)」から「9(最高レベル圧縮)」の圧縮レベルを指定できます。

■BZip2エンコーダープラグイン

BZip2エンコーダープラグインは、BZip2を使用して出力ファイルを圧縮します。

「1」から「9」の圧縮レベルを指定できます。

出力プラグイン

■ファイル出力プラグイン

ファイル出力プラグインは、ローカルファイルシステムにレコードを出力します。

sequence_formatにより、タスクの「タスクインデックス」と「シーケンス番号」をフォーマットします。

その他のプラグイン

■ローカルエグゼキュータプラグイン

ローカルエグゼキュータプラグインは、唯一の組み込みエグゼキュータプラグインで、ローカルのスレッドを使用してタスクを実行します。

max_threadsオプション

max_threadsオプションにより、最大同時実行性を制御できます。

大きな数値を設定すると、空いているコンピュータリソースを最大限活用したハイパフォーマンスの転送を実施できます。

小さい数を設定すると、スレッドが多すぎて対象データストレージが過負荷になる状況を緩和できます。

min_output_tasksオプション

min_output_tasksオプションにより、「ページの散乱」を有効にできます。

入力タスクごとに複数のフィルタと出力スレッドを使用できるようにすることで、1つの入力タスクが複数スレッドで動作できるようになります。

入力データ速度が低い場合に、大きな数値を設定することで、Embulk全体の同時実行性パフォーマンスを向上できます。

■推測エグゼキュータプラグイン

推測エグゼキュータプラグインは、guessコマンドによって呼び出される推測機能です。

適切な推測プラグインを指定することで、処理順番などもを含めたEmbulk構成を提案します。

■プレビューエグゼキュータプラグイン

プレビューエグゼキュータプラグインは、previewコマンドによって呼び出されるプレビュー機能です。

①指定された入力ソースからサンプルバッファを読み取る
②サンプルバッファをpreviewPageオブジェクトに書き込む
③previewPageオブジェクトをコンソールに出力

preview_sample_buffer_bytesオプションにより、入力ソースから読み取るサンプルバッファのバイト数を制御できます。

「Embulk」のプラグイン開発

Embulkで利用するプラグインを段階的に開発できます。

→dev.embulk.org →customization

ステップ1:新しいプロジェクトを作成

Embulkには、新しいプロジェクトを生成するための多数のテンプレートが用意されているため、すぐに開発をスタートできます。

「Javaレコード」「Javaファイル」「Rubyレコード」「Rubyファイル」用の各種テンプレートが提供されています。

ステップ2:プロジェクト構築

プラグインがJavaベースの場合は、プロジェクトをビルドする必要があります。

ステップ3:初期動作確認

プラグインが動作することを確認します。

ステップ4:コード変更

必要に応じてコードを変更します。

GitHubに登録されている多くのコードをサンプルとして参照できます。

オプション:リリース

作成したプラグインを公開してリリースできます。

■①RubyGems.orgにアカウントを作成

Embulkは「RubyGems.org」をパッケージ配布サービスとして使用しているため、こちらのサイトでアカウントを作成することでリリースできるようになります。

→rubygems.org

■②説明情報を記述してリリース

リリースするために必要となる情報を記述してリリースします。

 

参考元サイト

※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。

この記事のタグ一覧

おすすめの記事

【デジタル寺田の3分用語解説】「 経済産業省:コンテンツ制作のための 生成AI 利活用ガイドブック 」とは?📘

デジタル寺田の3分用語解説

2024.11.18

【デジタル寺田の3分用語解説】「 経済産業省:コンテンツ制作のための 生成AI 利活用ガイドブック 」とは?📘

経済産業省による「 生成AI 利活用ガイドブック 」は、企業やクリエイター向けに、安心して「生成AI」を利用するための、「指針」「実例」「注意点」を明示しています。「業務効率化」や「新しいアイデア創出」の支援を目的としています。

【デジタル寺田の3分用語解説】「 VMWare 問題 」とは?🖥️

デジタル寺田の3分用語解説

2024.11.18

【デジタル寺田の3分用語解説】「 VMWare 問題 」とは?🖥️

「 VMWare 」の仮想化技術は、「ITインフラの効率化」に大きく貢献する技術ですが、Broadcomによる買収後のライセンス変更が大きな問題として注目されています。柔軟で慎重な契約見直しが今後の鍵となります。

【デジタル寺田の3分用語解説】「 2029年問題 」とは?📅

デジタル寺田の3分用語解説

2024.11.18

【デジタル寺田の3分用語解説】「 2029年問題 」とは?📅

「 2029年問題 」とは、高校でのデジタル教育改革により、新入社員と既存社員間でデジタルスキル格差が拡大する懸念を指します。企業は早急に対応が求められています。この格差は、企業競争力や業務効率にも、影響を及ぼす可能性があります。