サーバ/インフラエンジニア養成読本
サーバ/インフラエンジニア養成読本 ログ収集~可視化編 [現場主導のデータ分析環境を構築!] (Software Design plus)
- 作者: 鈴木健太,吉田健太郎,大谷純,道井俊介
- 出版社/メーカー: 技術評論社
- 発売日: 2014/08/08
- メディア: 大型本
- この商品を含むブログ (1件) を見る
特集3 Elasticsearch 入門
第1章 データストア入門
- MongoDB
- Hadoop
- Graphite
- influxDB
第2章 Elasticsearch の基礎
- OSS
- ドキュメント思考
- スキーマフリー
- 分散システム
- マルチテナント
- RESTful API
- (near) リアルタイム
- クラスタ
- Elasticsearch プロセス群
- ノード
- Elasticsearch 1 プロセス
- ドキュメント
- 1レコード
- フィールド
- カラム
- インデックス
- ドキュメントの集合
- タイプ
- インデックスに登録するドキュメントを論理的に分類するもの
- シャード(セグメント)
- インデックスを小さな単位に分割したもの
- プライマリシャード/レプリカシャード
- レプリカシャードはプライマリシャードのコピー
- マッピング
- インデックスに保存されるデータの構造を定義するためのもの
- 型指定
- 転置インデックス
- ログデータを保存する単位
- Fluentd や logstash は日付けが変わったタイミングでElasticsearchにインデックスを作成する機能
第3章 Elasticsearch のはじめ方
- インストールについてなどは前項にて
- ヒープサイズは実メモリの半分を上限として設定
- ファイルディスクリプタは32000以上、推奨64000以上
- 設定ファイルは /etc/elasticsearch/elasticsearch.yml に(rpm インストール時)
- クラスタ名は同一ネットワーク上に同じものがあると参加してしまう可能性があるので明示的に指定
- ノード名はデフォルトでランダム付与で再起動時に変更されると都合が悪いので明示的に指定
- 複数IPを持つサーバの場合は network.host で IPを指定
- クラスタ設定
- 大量データの取り込み
- Bulk API
- stream2es
- query string query
- Kibana の検索窓で使用されているクエリDSL
- ファセット
- 検索にヒットしたデータに対して簡単な集計ができる機能
- インデックス削除の誤操作禁止
- action.destructive_requires_nameの設定をtrueにする
- デフォルトでは入力されたデータをある特定の条件で単語に区切ってからインデックス登録している
- 期待しない結果になる場合も
- マッピング定義
- not_analyzed
- Multi Field
- Index Template
- インデックス名が特定のパターンにマッチした場合に登録しておいた設定が適用される
第4章 運用TIPS
- Elasticsearch を起動しているマシンの実メモリの半分以上を Elasticsearch のヒープサイズに指定しない
- インデックスをファイルとして保存し、検索のたびにファイルへのアクセスが発生する
- OSのファイルキャッシュを活用できるようにOSにも十分なメモリを確保しておく
- スレッド数を大きくする
- インデックスされるデータ量が多い場合にキューのサイズが溢れてしまいデータが欠落する可能性がある
- フラッシュインターバルを大きくする
- デフォルトで 30分、またはファイルサイズが 200mb に到達した場合 transactional logとして出力
- 大量データの登録更新時にファイル I/O による性能劣化
- デフォルトで 30分、またはファイルサイズが 200mb に到達した場合 transactional logとして出力
- 定期的にインデックスを削除する
- 大量のインデックスを作成した場合、大量のファイルが作成される
- スケールアウト
- ノードの追加
- レプリカシャードの追加による検索リクエスト増加への対応
第5章 インデックス管理ツールと厳選プラグイン
- Curator
- インデックスを無限に保持して検索することは性能的観点から問題
- インデックスの削除
- インデックスのクローズ
- Bloom filter cache の無効化
- インデックスのオプティ
- プロキシ設定
- -DproxyHost=ホスト名 -DproxyPort=ポート番号
- marvel
- 開発用は無償、プロダクション環境では有料
第6章 大量データのハンドリング elasticsearch-hadoop
- Hadoop
- Hive
- Pig