ESのElasticsearch深さ探査についての基本的な理解

Elasticsearchについての基本的な理解

Elasticsearchは、インデックスと検索へのリアルタイム分散解析エンジンのインデックス、内部使用のLuceneです。
リアルタイム:新しいデータを参照するには、迅速に検索されます。
分散:あなたは動的クラスタサイズ、弾性膨張を調整することができます。
Luceneには:テキスト検索フレームワークは、プレーンテキストデータ処理のためのJava言語で記述されたが、それは、インデックスを提供し、検索インタフェースを実行しますが、分散型のサービスを提供していないだけでライブラリのさ。

ESの基本的な考え方

  • クラスタ:クラスタがクラスタはマスタノードを含む複数のノードを有する表し、ノードは、選出された中心に再生されます。
  • シャード:代表的なインデックスの断片化、ESは、インデックスが複数に分割することができ、複数の断片に完全指標とすることができる、分散型検索を実現しました。
  • レプリカ:代表インデックスのコピー、ESは、ロード・バランシングは、リクエストを検索することができ、システムの耐障害性を向上させるために、両方の、インデックスの複数のコピーを設定することができます。
  • 復旧:データ復旧担当者やコールデータの再配分は、ESは、ノードが参加するか、終了するとき、マシンの負荷率に応じて再配布されますが、データ復旧は、ノードの再起動時にハングします。
  • 川:ESのデータを同期する方法、データソースの代表だけでなく、(データベースなどの)他の記憶装置をES。(川
    等のCouchDB、RabbiMQ含みます)
  • gatawayは:インデックスはスナップショット記憶を表し、ES、デフォルトのメモリがいっぱいになると、メモリ内の最初のインデックスにあり、その後、ローカルのハードディスクに保存ES。閉じられたESが再起動すると、インデックスESは、ハードディスクからのバックアップデータを読み込みます。ESがサポートする複数
    のゲートウェイ方法を:ローカル・ファイル・システム(デフォルト)、分散ファイルシステム、HadoopのHDFSのとクラウドストレージ。
  • discovery.zen:ESの代わり自動検出機構ノードは、ノードは、ESが、放送を介して見えるであろう、そして、マルチキャストプロトコルを介してノード間で通信するために存在します。
  • 交通:クライアントとのjiedian内部またはクラスタ相互作用の代わりにES、デフォルトはJSON、古道具などをサポートしながら、対話するための内部TCPプロトコルを使用することです。

いくつかの機能のエス

スケーラビリティ:システムの水平方向のスケーラビリティを達成するために、各マシンに割り当てられたいくつかの部分にスライスデータのところで。
並列読み出し:断片化ユニットを読み書きは、基本的な基礎となるオブジェクトのスライスでは、読者が一緒に複数のマシンによって実行される、並列に動作することができるように、巨大なインデックスに分割されます。
レジリエンス:フォームのコピーは、別のマシンに入れコピー、複数にデータをコピーします。
同時更新:ESは、2つの主要部分、すなわちメイン及びサブ断片断片からのデータ点のコピー。正式なデータとしてマスタデータには、書き込み処理は、プライマリパーティションを作成し、その後、ベースのプライマリパーティションに成功した副パーティション、回復期を書き込みます。
リアルタイム:(ディスクが以前に書き込まれていない)新しいインデックスがインデックスを作成できることが考えそうな限り、ESシステムは、システムキャッシュにデータを書き込みした後に、データが読める外です。

ESのインデックス構造

ESは、ドキュメント指向です。文書の形式で格納されているテキストのES品種、文書、メッセージ、ログ、またはページのコンテンツであってもよいです。
シリアル化形式の文書としてJSONを使用してESを参照してください。一般的に言って、ESは、JSON形式をサポートしています。
_index、_タイプによって記憶構造上、及び文書を一意に識別するために、3つのパラメータを_id。

  • _index:論理物理フラグメンテーション名前空間への1つまたは複数の点
  • _type:全体のパターンデータは、同一のまたは類似のセットであります
  • _id:提供されるシステム又はユーザによって自動的に生成された文書タグ

ESインデックスはスライスを多く含む、スライスは、それ自体が独立して、インデックスを実行し、タスクを検索することができ、完全な検索エンジンですLuceneインデックスは、あります。
Luceneインデックスは、セグメントの多くを行った、各セグメントは、逆インデックスです。

彼らは、ファイル不変に書き込まれた後の後に転置インデックスを使用します。ロックを必要としないファイルへのアクセスは、インデックスが時にファイル・システム・キャッシュなどで読むことができます。
私たちは、ドキュメントを変更すると一貫性の指標を維持するためには、元のインデックスは、削除済みとしてマークされます(ただし、物理的に削除しないでください)、新しいインデックスを使用します。

ESでは、第2の書き込みキャッシュごとに、データがファイルに書き込まれます一度空に、リフレッシュと呼ばれるプロセスは、毎回のLuceneの新しいセグメントを作成し更新します。
その過程で、新たなセグメント、合併プロセスの最後に書かれていません削除されたデータとしてマーク:ESの使用は小さなセグメントに大きなセグメント戦略にマージされますので、しかし、あまりにも多くのLuceneセグメントは、その性能に影響を与えます古いセグメントデータが削除され、削除のマークが付けられたデータをディスクから削除されません。

転置インデックスを理解するには?
フォワード指数:統計的文書WORDCOUNTの結果として理解することができる:こんにちは2回世界1回
反転索引:逆索引は、「単語-文書行列」を達成することである逆索引により、特定の記憶形式のを、あなたはすぐに単語に基づいて単語を含む文書のリストを取得することができます。
ここに画像を挿入説明

ESクラスタ

ESクラスタは、マスタ・スレーブモードを使用しています

  • このモードでは、権威ノードとしてシステム設計、マスター、マスターの動作の一部のみを簡略化し、メタデータクラスタを維持することができます。
  • そこ単一ノード障害の必要性、災害復旧の問題のマスターノードであり、クラスタサイズは、マスターノード管理機能によって制限されています。

ESクラスタノードの役割
マスターノード

  • クラスタ関連操作側の責任、クラスタ管理が変更されます。
  • マスターノードは、ノードの更新からデータを受信した場合、マスターノードによってクラスタ状態は、維持日付にクラスタの状態の各ノードように、これらの更新は、クラスタ内の他のノードにブロードキャストされます。
node.master: true
node.data: false

データノード

  • CURD、検索、集計など:データを保存するための責任は、データ関連の操作を行います。
  • データノードのCPU、メモリ、I / Oは比較的高いが必要です
  • 一般的には、データ書き込み処理及びデータは、相互作用ノード。そしてそれは、マスターノードを扱っていません。
node.master: false
node.data: true
node.ingest: false

前処理ノード

  • インデックスファイルを許可する前に動作を前処理する前に、すなわち、データが書き込まれ、及びパイプライン(パイプ)、データは、プロセッサの特定の予め定義された数(プロセッサ)によって変換濃縮されます。
  • デフォルトでは、インジェストの起動時にすべてのノード。
node.master: false
node.data: false
node.ingest: master

調整ノード

  • 調整ノードは、データを保存するためのデータ転送ノードを要求します
  • 各データは、ローカル実行要求中のノード、及び結果コーディネータノードを返します。後に単一のグローバル結果にデータノードの集合、各データノードの結果を調整します。
  • 結果を収集し、ソートするCPUとメモリリソースの多くがかかっているので、そう他のノードへの圧力を緩和することができ、協調ノードがあります。
node.master: false
node.data: false
node.ingest: false

部族のノード

  • 部族のノードが複数のクラスタ間での共同クライアントとして動作することができます
  • それは、本質的にインテリジェントなロードバランサでリクエストをルーティングする機能を提供します
  • それは今調整ノードに置き換えられました
node.master: false
node.data: false

クラスタ健康状態

ビューのデータの整合ポイ​​ントをコング、クラスタの健康状態は、単一:(ために適用されます3つのインデックスに分かれています)

  • 緑:すべてのプライマリおよびセカンダリスライススライスは正常に動作しています。
  • 黄:すべてのマスタースライスは正常に動作しているが、すべてのサブフラグメントは、正常に動作していません。この手段の故障、単一ノードのリスクという。
  • 赤:メインの断片が正しく動作しませんでした。

クラスター展開

クラスタの拡張は、ノードを追加すると、それは均一それによって索引付け、および自動的に完了され、ロード・バランシング、探し、クラスタの各ノードに割り当てられたスライスであろう。
クラスタがESに失敗した場合、ESは自動的にノードの例外を処理します:

  • ときにマスターノードの異常、プライマリノードのクラスタ再選
  • マスタースライス例外は、一次サブフラグメント断片に昇格される場合

拡張されたクラスタを処理する:
1.ときだけつのノード:三つの主要な断片ノード1があり、何のサブスライスは、
ここに画像を挿入説明
第2のノードを追加しない2、サブフラグメントをノード2に割り当てられている
ここに画像を挿入説明
第3のノードを追加3. 、6つのスライス(三原色3)はクラスタに割り当てされている3つのノードインデックスは、平均
、これはメイン処理と同一のノードに割り当てられていないサブフラグメントフラグメントは、単一ノードの障害によるデータ損失を回避することを保証します。
ここに画像を挿入説明

公開された231元の記事 ウォン称賛42 ビュー60000 +

おすすめ

転載: blog.csdn.net/weixin_40990818/article/details/104823076