@johtaniの日記 2nd

@johtani ‘s blog 2nd edition

Morphlines入門?

Morphlinesについてちょっとだけ、さらに調べました。

誤解

Solr勉強会でなんとなく私の認識を話しましたが、ちょっと誤解してたみたいです。スミマセン。

誤解:Morphlineというプラットフォーム/ミドルウェアがありそうなイメージ

まぁ、書いてあるのでちゃんと読めって話ですが、Morphlineはあくまでライブラリだということでした。 私はなんとなくManifoldCFのようなミドルウェアorプラットフォームが存在して、 そこにFlumeのSinkとかMapReduceによるIndexerが動作するのかと思ってました。

まぁ、これが間違いでした。正解のイメージはこっちですね。

各プラットフォーム(FlumeとかHadoopとか)に組み込んむライブラリで、 それぞれ組み込んだ先でMorphlineの設定を記述することで、パイプライン処理ができるっぽいです。

Flumeについては、MorphlineSolrSinkというクラスでMorphlineの設定ファイルを読み込み、いろいろ処理出来ます。

Map/ReduceだとCloudera Searchに含まれてるMapReduceIndexerToolがMorphlineの設定を読み込んでコマンド実行してくれるみたいです。 MapReduceIndexerToolはまだちゃんと読んでないのですが、MapperとしてMorphlineのコマンドが実行されるのかなぁ?という感じです。 (結構入り組んでるので、ちゃんと読まないとわからない。。。)

ということで、Morphlineというプラットフォームがあって、一元的にFlumeやMap/Reduceに対するコマンドをパイプライン化するという話でありませんでした。

※ちなみに、上の画像ですが、愛用しているNUBoardを使って書いてます。 考えをまとめるのにすごく役立つ一品です。持ち運び可能なノート型ホワイトボードです。

疑問点

ただ、読んでてまだ不明な点があります。まぁ、ぼちぼち調べるかなぁと。。。

  • Solrのschemaはどーなってんの?
  • MorphlineにSolrへロードするコマンド(loadSolr)があるけど、FlumeのMorphlineSolrSinkってのもSolrに書き込みそうだけど?
  • Map/ReduceでSolrに書き込むもMorphlineのコマンドとの違いは?(前にソースを見たときはSOLR-1301がベースになっていて、SolrOutputFormatってクラスがEmbeddedSolrServer起動してインデクシングしてた)
  • GoLiveってなんだろ?(MapReduceIndexerToolに入ってて、M/Rでインデックス作ったあとにSolrのクラスタに配布+マージするやつっぽい)
  • どんなコマンドがあるの?(Cloudera Morphlines Ref Guide

以下は、参考資料と参考資料にあるSlideshareの資料を一部訳したものになります。

参考資料

メモ

現在のコマンドライブラリ(スライド 18-19ページ)

  • Solrへのインテグレートとロード
  • フレキシブルなログファイル解析
  • 1行、複数行、CSVファイル
  • 正規表現ベースのパターンマッチと展開
  • Avro、JSON、XML、HTMLのインテグレーション
  • Hadoop シーケンスファイルのインテグレーション
  • SolrCellとApache Tikaパーサすべてのインテグレーション
  • Tikaを利用したバイナリデータからMIMEタイプの自動判別
  • 動的Javaコードのスクリプティングサポート
  • フィールドの割り当て処理、比較処理
  • リストやセット書式のフィールド処理
  • if-then-else条件分岐
  • 簡易ルールエンジン(tryRules)
  • 文字列とタイムスタンプの変換
  • slf4jロギング
  • Yammerメトリックとカウンター
  • ネストされたファイルフォーマットコンテナの解凍
  • などなど

プラグインコマンド(スライド 20ページ)

  • 簡単に新しいI/Oや変換コマンドが追加可能
  • サードパーティや既存機能のインテグレード
  • CommandインタフェースかAbstractCommandのサブクラスを実装
  • Javaクラスパスに新規作成したものを追加
  • 登録処理などは必要ない

新しいプラグインコマンドとして考えられるもの(22ページ)

  • RDBやKVSやローカルファイルなどの外部データソースをレコードにjoin
  • DNS名前解決とか短縮URLの展開とか
  • ソーシャル・ネットワークからリンクされたメタデータのフェッチ(??)
  • レコードの感情分析とアノテーション?

31ページの図がわかりやすいかも

以上。

Comments