よしだのブログ

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

(Hadoop/Cloudera) Cloudera Search のセットアップ

どうも!今日は、EC2 からちょっと離れ、Hadoop + Solr のコンビネーションである、Cloudera Search のセットアップについてです。本当はこっちが本題。

f:id:yoshi0309:20140312164614j:plain

Cloudera Search なんですが、Hadoop + Solr*1はもちろん、Flume*2など話題のコンポーネントを一度にセットアップできるという、なんともお得なディストリビューションなのです。Hadoop 上で Solr を動かすメリット・デメリット等も含め調べていきたいと思っていますが、今日は初期セットアップまでやりました。

Solrサービスの追加

Cloudera Manager のインストール → Hdfs / MapReduce などのコンポーネントのインストール → MapReduce の動作確認 が事前に完了していることとします。まず、Solr サービスをインスタンスに追加します。この作業があって初めて、インスタンスにSolrが実際にインストールされます。Cloudera Manager のインストール時に Solr を選択する画面が出ますが、サービスには追加されていませんでした*3

実際の作業は、Cloudera Manager のトップページのクラスター名の右側にある▼ボタンを押下して、サービスを追加するを押すと、Solr のサービスが追加できます。追加時に、導入するインスタンスの選択を行います。

参考:Adding a Service

Solrのイニシャライズとコレクションの作成。

次に、Solr の初期化とコレクションの作成を行います。Solr を触ったことがある人には、”初期化”に馴染みがないと思いますが、実際にはZooKeeper上にSolrの設定ファイルをアップロードする処理を行ってくれます。Cloudera Search は SolrCloud が前提となるので、この作業が必要になります。

基本的にSolrの設定は solrctl というコマンドラインツールで行います。まず、初期化を行います。

$ solrctl init

次に、Solr のコレクションを作成します。generate でデフォルトの solrconfig.xml や schema.xml を生成します。もちろん、最初から設定ファイルがあれば、それを使ってもOKです。その後、create で指定した config を collection1 として Zookeeperにアップロードします。アップロード後に確認のため、listを実行します。Zookeeper にアップされたコレクションを一覧します。

$ solrctl instancedir --generate $HOME/solr_configs
$ solrctl instancedir --create collection1 $HOME/solr_configs
$ solrctl instancedir --list

最後に、実際に Solr にコレクションを作成します。

$ solrctl collection --create collection1 -s 1

確認として、Solrの管理画面を確認します。Cloudera Manager のホーム画面から、クラスタ以下のSolrをクリックします。Solr のコンポーネントの画面が表示されるので、右上の「Solrサーバー Web UI」をクリックします。

f:id:yoshi0309:20140311215156p:plain

そうすると、Solr の UI が表示されます。ちゃんと DataDir が HDFS になっています。コレクション名は collection1 を指定したのですが、実際には collection1_shard1_replica1 となっています。

f:id:yoshi0309:20140311215153p:plain

ここまでで、Solrの初期セットアップは完了しました。次回は、スキーマの修正をしつつ、データの投入にトライしてみます。

*1:ElasticSearchのほうが流行っているのは秘密。

*2:fluentdのほうが流行っているのは内緒。

*3:Percellでまとめてダウンロードしてくれるだけのようです。