雑文発散

«前の日記(2015-08-26) 最新 次の日記(2015-08-28)» 編集
過去の日記

2015-08-27 [長年日記]

[Elasticsearch] Elasticsearch 2.0.0-beta1 が出たので早速インストール

今朝、 @johtani さんが「ベータでた」とツイートしているのを見かけた。

「あ、もしかして!?」と、調べていくと、Elastic 社のブログ記事を発見。

Elasticsearch 2.0.0 での Pipeline Aggregations にはだいぶ期待しており、しばらく前には「Elasticsearch 2.0.0 で導入予定の Pipeline Aggregations が便利そうなので自分なりにまとめてみたよ」という日記も書いていた。

じゃあ、さっそく試してみようと思い、リリース記事からもリンクされてるここからダウンロードした。

既存の Elasticsearch 環境(1.7.x)をアップデートするのはちょっと躊躇したので、2.0.0-beta1 のクラスタを新たに作ることにした。社内のプライベートクラウドから、ポコポコと3台起動して構築していった。

@hsbt さんが「OpenStack は福利厚生」という発言をされているのだけど、こういうクラスタ構築時には勝手に使えるクラウド環境があるのは本当にありがたい。

ちなみにウチの場合は「福利厚生」とは言っていないし、使い放題とまでは言われてないけど、ちょこちょこ使うぶんには勝手に使っちゃって良い、、、はず。100台とか上げたら怒られるかも知れないけど、数台程度なら誤差だろ?と思っている。

話が逸れた。

起動した3台には、ダウンロードした deb ファイルをインストール。いつものようにクラスタ名とノード名を変更するために /etc/elasticsearch/elasticsearch.yml を開いたら驚いた。設定ファイルがずいぶんシンプルになっている。

cluster.namenode.name を変更し、更に discovery.zen.ping.unicast.hosts の設定に、起動した3台の IP アドレスを記入したので、これでほぼ終わりかなーと思って、試しに起動してみたら、listen しているアドレスが localhost となっていて、うまくクラスタ化されなかった。

あぁ、じゃあ、network.host0.0.0.0 にすればいいんだろ?と思って変更してもダメ。なんでだろー?と思ったけど、これは listen アドレスを定義するものじゃないらしい。結局、自サーバの IP アドレスを設定したら、うまくクラスタ化ができた。

# Set the bind adress to a specific IP (IPv4 or IPv6):
#
network.host: 192.168.0.1

でもこれだと、インストールしたサーバ上で localhost:9200 にアクセスできない。Elasticsearch の動作確認をするときに、各サーバ上で localhost 向けに Cat API をよく使っている。

% curl -XGET localhost:9200/_cat/nodes

これが localhost では接続できずに次のように自サーバのアドレスを指定する必要があった。

% curl -XGET 192.168.0.1:9200/_cat/nodes

もちろん DNS で解決できれば自サーバ名でも良いんだけど、、、どこでも localhost で叩いていたので、なんか勝手が違って面倒に思ってしまった。

まぁ、それでもこれでクラスタはできた。でも、データがなければ試せないので、今度は elasticsearch-dump を使って、既存クラスタのデータを 2.0.0-beta1 のクラスタへブチ込んだ。

elasticsearch-dump は初めて使ったけど便利だね。Elasticsearch 内のデータをファイルにダンプすることもできるけど、クラスタ間でコピーすることもできる。例えばこんな風に。

% elasticsearch-dump \
   --input=http://OLD-CLUSTER:9200/my_index \
  --output=http://NEW-CLUSTER:9200/my_index \
    --type=data

これでデータも用意できたので、次は Kibana で内容を確認したいなと思って、GitHub の kibana リポジトリ から 4.2.0-snapshot をダウンロードしてインストールした。さっそく Pipeline Aggregation がどのようなものなのか試してみよう!!!と意気込んでアクセスしてみたものの、それらしき項目が見当たらない。

で、調べてみたら、どうやらまだ実装されていない様子で、要望として Issue に上がっていた。

この Issue には enhancement のラベルが付けられてはいるものの、具体的なバージョン番号のラベルは付けられていないので、しばらく先になるのかもなぁ。

Pipeline Aggregations の結果のグラフとか、これまでとだいぶ違う内容をどうやって見せるんだろう!?と wktk してたのだけど、まぁそうだよね。そんな簡単には実装できないよね。。。

Kibana は無理でも、クエリを手で書いて実行すれば Pipeline Aggregations を試せるわけだけど、、、今日は残念ながら時間切れ。いや、本当はもっといじりたかったんだけど、まずはやるべきタスクを終わらせないといけないので諦めた。

隙を見て、明日以降も触っていこうっと。