よしだのブログ

サブタイトルはありません。

オレオレ意訳。Cloudera Search ユーザーガイド / Introducing Cloudera Searcn

どうも!Cloudera Search を調べてますが、その続きです。
 関連:(Hadoop/Cloudera) Cloudera Search のセットアップ - よしだのブログ

f:id:yoshi0309:20140312164614j:plain

今日のお題は User Guide のイントロを意訳すること。

前回は Cloudera Search のインストール〜セットアップまでやりました。今回は、一度ドキュメントに立ち戻り、Cloudera Search の特長を確認したいと思います。というわけで、以下の User Guide のイントロをざっくり意訳してみました。誤訳も多いと思いますので、必ずオリジナルも合わせて参照してください!
 オリジナル:Cloudera Search User Guide

今回は意訳をそのまま載せますのでかなり長文です(約4000字)。特長の整理は別途やろうかと思います。
 追記3/26 整理しました→Cloudera Search で実現できる検索方式3パターン - よしだのブログ

How Cloudera Search Works

near-real-time 検索のユースケースでは、Cloudera Search は、Apache Flume により収集され CDH に格納される途中のイベントをインデキシングする。Cloudera Search とのインテグレーションにより、LuceneHDFS に直接インデックスを書き込み保存する。Flume のイベントをルーティングし、HDFSパーティションに保管する機能も同様に適用されている。イベントは、複数のFlumeのエージェントによりルーティング、送信され、複数の Lucene のインデクサーによってそれぞれのインデックスのシャードに書き込まれる。これにより、よりよいインデキシングと検索時のスケールを実現する。インデックスは、ローカルディスクと全く同じように、 HDFS から Solr core によってロードされる。Cloudera Search での違いは、強固で分散されスケール可能なHDFSというストレージのレイヤーを使用している点で、これがダウンタイムを無くし、さらにデータの移動が不要になることにより作業の柔軟性を確保する。検索クエリは、Solr の標準APIでも、Cloudera Search についているシンプルな検索画面(Hue)でも、発行することができる。

Cloudera Search のバッチオリエンテッドインデキシングの機能は、一括でアップロードされたファイルを、横断検索したいニーズや、あまり頻繁に更新されない大量のデータセットを検索したいニーズに対応する。このような場合は、Cloudera Search はMapReduceをベースにしたスケールが可能なインデキシング処理のワークフローを提供する。MapReduce のワークフローは、HDFSの特定のファイルやフォルダ上で起動され、フィールド展開およびSolrスキーマへのマッピングが、mapフェーズで実行される。ReducerはSolrを、設定に応じて、単一のインデックスかもしくはインデックスシャードとしてデータを書き込むために使う。HDFSにインデックスが保管されると、インデックスは標準のSolrの仕組みを使って検索ができる

Lily HBase Indexer Service*1 は、継続的にストリームが格納されるHBaseセルを検索インデックスに処理するための、フレキシブル、スケーラブル、フォールトトレラント、トランザクショナル、near-real-time 指向のシステムである。Flume sink がデータを挿入してから検索結果に表示されるまでの、典型的な時間はおよそ数秒であり、さらにチューニングが可能である。Lily HBase Indexer は、HBaseに保管されているデータをインデキシングするために Solr を使う。HBaseが、テーブルのセルに、インサート/アップデート/デリートを適用する際に、インデクサーは標準のHBaseレプリカ機能を使用して、HBaseのテーブルのコンテンツと、Solrが同期を保つようにする。また、インデクサーは、HBaseのデータをSolrに入れるために、展開や変換、ロードなど柔軟なカスタマイズを提供する。Solrの検索結果は、HBaseのデータストアへのリンクである "columnFamily:qualifier" リンクを含むことができる。この方法を使うことで、検索結果から HBaseセルへ直接アクセスすることができるアプリケーションを構築することができる。インデキシングや検索は、HBaseの運用の安定性やHBaseの書き込みのスループットに影響しない。何故ならば、インデキシングや検索のプロセスは、HBaseからは分割されており非同期であるからである。

Cloudera Search Features

  • Cloudera Manager を使用した管理、モニタリング
    (略)
  • HDFSへのインデックス保管
    Cloudera Search は、インデックスのストレージとしてHDFSを使用している。Solr/Lucene によって作成されたインデックスを、ローカルディスクの代わりに、HDFSに直接書き込むことができる。これによって、対障害性と冗長性を提供する。Cloudera は Cloudera Search を、HDFS上の高速な読み書きのために最適化した。また、データとインデックスが共にHDFS上に格納されるため、ユーザー処理は別のストレージへのデータの移動の処理や作業を必要としない。
  • MapReduce による、インデックス作成のバッチ処理
    (略)
  • データ投入における、リアルタイムでスケーラブルなインデキシング
    Cloudera Search は、near-real-time インデキシングをサポートするために、Flumeとのインテグレーションを提供する。Flume からの新しいイベントの送信はHDFSに書き込まれとともに、同じイベントはCloudera Search のインデクサーに直接書き込まれる。また、Flume は、CDHへの送信途上での、イベントのルーティングやフィルタリング、アノテーションの追加をサポートする。これらの機能はインデックスのシャーディング、分割、ドキュメントレベルでのアクセスコントロールに利用できる。
  • Hueを通じた、簡単なデータの検索と参照
    (略)
  • シンプルなデータ処理機構
    Cloudera Search は、一般的なフォーマットのファイルをパースするために Apache Tika を使用している。加えて、Cloudera Search は、 Avro、Hadoop Sequence、Snappy ファイルフォーマットのマッピングを、ログファイルフォーマット、JSONXML、HTMLと同様にサポートする。また、Cloudera Search は、Morphlines*2を使用したデータ処理を提供する。このビルトインは、これらのフォーマットのインデックス設定のための簡素化をサポートする。
  • HBase検索
    (略)

補足

Lily HBase Indexer - http://ngdata.github.io/hbase-indexer/

It allows you to quickly and easily index HBase rows into Solr

Morphlines入門? - http://blog.johtani.info/blog/2013/07/31/introduction-morphlines/

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

Introducing Morphlines: The Easy Way to Build and Integrate ETL Apps for Hadoop - http://blog.cloudera.com/blog/2013/07/morphlines-the-easy-way-to-build-and-integrate-etl-apps-for-apache-hadoop/

今後、調べたいこと。

  • マルチ構成時に、同一のインデックスデータを読み書きできるか?
  • パフォーマンス
    • 検索、インデキシング
    • HDFSのレスポンタイムは遅いはずだけど‥?
  • レプリカ不要?
  • Flume / Morphlines
  • MapReduceでのインデキシング

*1:補足を参照

*2:補足を参照