Submit Search
Upload
Elasticsearch as a Distributed System
•
Download as PPTX, PDF
•
10 likes
•
6,610 views
Satoyuki Tsukano
Follow
Elasticsearch as a Distributed System ~分散システムとしてのElasticsearch~
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 53
Download now
Recommended
はじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタ
Satoyuki Tsukano
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
Masatoshi Tada
iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方
歩 柴田
Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編
Yuki Morishita
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
NTT DATA Technology & Innovation
SolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみよう
Shinsuke Sugaya
Recommended
はじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタ
Satoyuki Tsukano
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
Masatoshi Tada
iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方
歩 柴田
Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編
Yuki Morishita
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
NTT DATA Technology & Innovation
SolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみよう
Shinsuke Sugaya
分散システムについて語らせてくれ
分散システムについて語らせてくれ
Kumazaki Hiroki
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
NTT DATA Technology & Innovation
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
異次元のグラフデータベースNeo4j
異次元のグラフデータベースNeo4j
昌桓 李
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Yahoo!デベロッパーネットワーク
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
NTT DATA OSS Professional Services
楽天がHadoopを使う理由
楽天がHadoopを使う理由
Rakuten Group, Inc.
コンテナにおけるパフォーマンス調査でハマった話
コンテナにおけるパフォーマンス調査でハマった話
Yuta Shimada
(2017.6.9) Neo4jの可視化ライブラリまとめ
(2017.6.9) Neo4jの可視化ライブラリまとめ
Mitsutoshi Kiuchi
PySparkによるジョブを、より速く、よりスケーラブルに実行するための最善の方法 ※講演は翻訳資料にて行います。 - Getting the Best...
PySparkによるジョブを、より速く、よりスケーラブルに実行するための最善の方法 ※講演は翻訳資料にて行います。 - Getting the Best...
Holden Karau
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...
NTT DATA Technology & Innovation
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキー
yoku0825
TLS, HTTP/2演習
TLS, HTTP/2演習
shigeki_ohtsu
Spring Bootの本当の理解ポイント #jjug
Spring Bootの本当の理解ポイント #jjug
Masatoshi Tada
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介
AdvancedTechNight
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTT DATA Technology & Innovation
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
Yahoo!デベロッパーネットワーク
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
Elasticsearchを使うときの注意点 公開用スライド
Elasticsearchを使うときの注意点 公開用スライド
崇介 藤井
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)
Yoshinori Matsunobu
Azure Synapse Analytics 専用SQL Poolベストプラクティス
Azure Synapse Analytics 専用SQL Poolベストプラクティス
Microsoft
More Related Content
What's hot
分散システムについて語らせてくれ
分散システムについて語らせてくれ
Kumazaki Hiroki
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
NTT DATA Technology & Innovation
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
異次元のグラフデータベースNeo4j
異次元のグラフデータベースNeo4j
昌桓 李
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Yahoo!デベロッパーネットワーク
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
NTT DATA OSS Professional Services
楽天がHadoopを使う理由
楽天がHadoopを使う理由
Rakuten Group, Inc.
コンテナにおけるパフォーマンス調査でハマった話
コンテナにおけるパフォーマンス調査でハマった話
Yuta Shimada
(2017.6.9) Neo4jの可視化ライブラリまとめ
(2017.6.9) Neo4jの可視化ライブラリまとめ
Mitsutoshi Kiuchi
PySparkによるジョブを、より速く、よりスケーラブルに実行するための最善の方法 ※講演は翻訳資料にて行います。 - Getting the Best...
PySparkによるジョブを、より速く、よりスケーラブルに実行するための最善の方法 ※講演は翻訳資料にて行います。 - Getting the Best...
Holden Karau
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...
NTT DATA Technology & Innovation
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキー
yoku0825
TLS, HTTP/2演習
TLS, HTTP/2演習
shigeki_ohtsu
Spring Bootの本当の理解ポイント #jjug
Spring Bootの本当の理解ポイント #jjug
Masatoshi Tada
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介
AdvancedTechNight
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTT DATA Technology & Innovation
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
Yahoo!デベロッパーネットワーク
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
Elasticsearchを使うときの注意点 公開用スライド
Elasticsearchを使うときの注意点 公開用スライド
崇介 藤井
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
What's hot
(20)
分散システムについて語らせてくれ
分散システムについて語らせてくれ
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
異次元のグラフデータベースNeo4j
異次元のグラフデータベースNeo4j
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
楽天がHadoopを使う理由
楽天がHadoopを使う理由
コンテナにおけるパフォーマンス調査でハマった話
コンテナにおけるパフォーマンス調査でハマった話
(2017.6.9) Neo4jの可視化ライブラリまとめ
(2017.6.9) Neo4jの可視化ライブラリまとめ
PySparkによるジョブを、より速く、よりスケーラブルに実行するための最善の方法 ※講演は翻訳資料にて行います。 - Getting the Best...
PySparkによるジョブを、より速く、よりスケーラブルに実行するための最善の方法 ※講演は翻訳資料にて行います。 - Getting the Best...
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキー
TLS, HTTP/2演習
TLS, HTTP/2演習
Spring Bootの本当の理解ポイント #jjug
Spring Bootの本当の理解ポイント #jjug
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
Elasticsearchを使うときの注意点 公開用スライド
Elasticsearchを使うときの注意点 公開用スライド
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Similar to Elasticsearch as a Distributed System
Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)
Yoshinori Matsunobu
Azure Synapse Analytics 専用SQL Poolベストプラクティス
Azure Synapse Analytics 専用SQL Poolベストプラクティス
Microsoft
20111028ssmjp
20111028ssmjp
Takeshi HASEGAWA
これがCassandra
これがCassandra
Takehiro Torigaki
30分でRHEL6 High Availability Add-Onを超絶的に理解しよう!
30分でRHEL6 High Availability Add-Onを超絶的に理解しよう!
Etsuji Nakai
SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門
Daiyu Hatakeyama
HDFS Supportaiblity Improvements
HDFS Supportaiblity Improvements
Cloudera Japan
Hadoop Troubleshooting 101 - Japanese Version
Hadoop Troubleshooting 101 - Japanese Version
Cloudera, Inc.
[INSIGHT OUT 2011] B32 open hardwareの夜明け pci express 3・infiniband fdrの登場(yama...
[INSIGHT OUT 2011] B32 open hardwareの夜明け pci express 3・infiniband fdrの登場(yama...
Insight Technology, Inc.
Zerto ホワイトペーパー:Oracleデータベース保護のベストプラクティス(ショート編)
Zerto ホワイトペーパー:Oracleデータベース保護のベストプラクティス(ショート編)
株式会社クライム
Osc2011 Do
Osc2011 Do
Kazuhisa Hara
cassandra調査レポート
cassandra調査レポート
Akihiro Kuwano
[Oracle DBA & Developer Day 2012] 高可用性システムに適した管理性と性能を向上させるASM と RMAN の魅力
[Oracle DBA & Developer Day 2012] 高可用性システムに適した管理性と性能を向上させるASM と RMAN の魅力
オラクルエンジニア通信
Guide to Cassandra for Production Deployments
Guide to Cassandra for Production Deployments
smdkk
Java EE7 䛸㻌JCache
Java EE7 䛸㻌JCache
maruyama097
第4回コンテナ型仮想化勉強会@東京 Oracle Solaris のコンテナ技術「Solaris Zones」
第4回コンテナ型仮想化勉強会@東京 Oracle Solaris のコンテナ技術「Solaris Zones」
Kazuyuki Sato
[db tech showcase Tokyo 2016] D27: Next Generation Apache Cassandra by ヤフー株式会...
[db tech showcase Tokyo 2016] D27: Next Generation Apache Cassandra by ヤフー株式会...
Insight Technology, Inc.
20120117 13 meister-elasti_cache-public
20120117 13 meister-elasti_cache-public
Amazon Web Services Japan
CPUの同時実行機能
CPUの同時実行機能
Shinichiro Niiyama
How to use Ceph RBD as CloudStack Primary Storage
How to use Ceph RBD as CloudStack Primary Storage
Kimihiko Kitase
Similar to Elasticsearch as a Distributed System
(20)
Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)
Azure Synapse Analytics 専用SQL Poolベストプラクティス
Azure Synapse Analytics 専用SQL Poolベストプラクティス
20111028ssmjp
20111028ssmjp
これがCassandra
これがCassandra
30分でRHEL6 High Availability Add-Onを超絶的に理解しよう!
30分でRHEL6 High Availability Add-Onを超絶的に理解しよう!
SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門
HDFS Supportaiblity Improvements
HDFS Supportaiblity Improvements
Hadoop Troubleshooting 101 - Japanese Version
Hadoop Troubleshooting 101 - Japanese Version
[INSIGHT OUT 2011] B32 open hardwareの夜明け pci express 3・infiniband fdrの登場(yama...
[INSIGHT OUT 2011] B32 open hardwareの夜明け pci express 3・infiniband fdrの登場(yama...
Zerto ホワイトペーパー:Oracleデータベース保護のベストプラクティス(ショート編)
Zerto ホワイトペーパー:Oracleデータベース保護のベストプラクティス(ショート編)
Osc2011 Do
Osc2011 Do
cassandra調査レポート
cassandra調査レポート
[Oracle DBA & Developer Day 2012] 高可用性システムに適した管理性と性能を向上させるASM と RMAN の魅力
[Oracle DBA & Developer Day 2012] 高可用性システムに適した管理性と性能を向上させるASM と RMAN の魅力
Guide to Cassandra for Production Deployments
Guide to Cassandra for Production Deployments
Java EE7 䛸㻌JCache
Java EE7 䛸㻌JCache
第4回コンテナ型仮想化勉強会@東京 Oracle Solaris のコンテナ技術「Solaris Zones」
第4回コンテナ型仮想化勉強会@東京 Oracle Solaris のコンテナ技術「Solaris Zones」
[db tech showcase Tokyo 2016] D27: Next Generation Apache Cassandra by ヤフー株式会...
[db tech showcase Tokyo 2016] D27: Next Generation Apache Cassandra by ヤフー株式会...
20120117 13 meister-elasti_cache-public
20120117 13 meister-elasti_cache-public
CPUの同時実行機能
CPUの同時実行機能
How to use Ceph RBD as CloudStack Primary Storage
How to use Ceph RBD as CloudStack Primary Storage
More from Satoyuki Tsukano
あなたのスキルを量子技術に活かそう!
あなたのスキルを量子技術に活かそう!
Satoyuki Tsukano
オープンソースの量子コンピュータ・クラウド基盤開発
オープンソースの量子コンピュータ・クラウド基盤開発
Satoyuki Tsukano
Quantum Computer: Now and Future
Quantum Computer: Now and Future
Satoyuki Tsukano
Quantum computer applications in serverless architecture and challenges
Quantum computer applications in serverless architecture and challenges
Satoyuki Tsukano
How to Contributet o Quantum Computer
How to Contributet o Quantum Computer
Satoyuki Tsukano
a story about an application that uses a real quantum computer
a story about an application that uses a real quantum computer
Satoyuki Tsukano
Introduction to Quantum Programming Studio
Introduction to Quantum Programming Studio
Satoyuki Tsukano
量子コンピュータのプログラミング・コンテスト体験記
量子コンピュータのプログラミング・コンテスト体験記
Satoyuki Tsukano
数学好きから見た量子コンピュータ~57を因数分解した話~
数学好きから見た量子コンピュータ~57を因数分解した話~
Satoyuki Tsukano
Packetbeatの基礎から、IoTデバイス異常検知への応用まで
Packetbeatの基礎から、IoTデバイス異常検知への応用まで
Satoyuki Tsukano
More from Satoyuki Tsukano
(10)
あなたのスキルを量子技術に活かそう!
あなたのスキルを量子技術に活かそう!
オープンソースの量子コンピュータ・クラウド基盤開発
オープンソースの量子コンピュータ・クラウド基盤開発
Quantum Computer: Now and Future
Quantum Computer: Now and Future
Quantum computer applications in serverless architecture and challenges
Quantum computer applications in serverless architecture and challenges
How to Contributet o Quantum Computer
How to Contributet o Quantum Computer
a story about an application that uses a real quantum computer
a story about an application that uses a real quantum computer
Introduction to Quantum Programming Studio
Introduction to Quantum Programming Studio
量子コンピュータのプログラミング・コンテスト体験記
量子コンピュータのプログラミング・コンテスト体験記
数学好きから見た量子コンピュータ~57を因数分解した話~
数学好きから見た量子コンピュータ~57を因数分解した話~
Packetbeatの基礎から、IoTデバイス異常検知への応用まで
Packetbeatの基礎から、IoTデバイス異常検知への応用まで
Elasticsearch as a Distributed System
1.
Elasticsearch as a
Distributed System ~分散システムとしてのElasticsearch~ (簡易版) 2017-12-12 Acroquest Technology 束野 仁政(つかの さとゆき)
2.
はじめに Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 2 1. Elasticsearchは分散システムである 2. 「Elasticsearch(の分散処理)を理解すること」と 「分散システムを理解すること」は共通点が多く、 Elasticsearchの分散処理を学ぶと応用が利く 3. この資料の内容は、単にインデクシング・検索するだけならオー バースペックな知識 4. Elasticsearchを分散システムとして捉えたときに、 スケールアウト・耐障害性・運用・問題解析などで必要となる 知識を説明する 5. 次の書籍は分散システムのミドルウェアを学ぶ上でオススメ Hadoop: The Definitive Guide Elasticsearch: The Definitive Guide
3.
目次 1. ノードの種類 2. シャード 3.
インデクシングの流れ 4. 検索の流れ 5. Data nodeの障害検出 6. Master nodeの障害検出 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 3 この資料はElastic Stack5.6をベースに作成してます
4.
ノードの種類 Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 4
5.
ノードの種類 Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 5 その他にも、Ingest Node、 Machine learning node等がありますが、ここでは説明しません。 Shard 0 Primary Shard 2 Replica Data node 1 Shard 2 Primary Data node 2 Shard 1 Replica Data node 3 Shard 0 Replica Shard 1 Primary Data node 4 Coordinating node Master-eligible node Master
6.
ノードの種類 Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 6 No. ノードの種類 役割 1 Master-eligible node クラスタの状態管理、ノードに対するシャードの割り当て等、クラスタ全体の処 理を行うノードをMaster nodeと呼ぶ。Master nodeの候補となるノードを Master-eligible nodeと呼び、この中から1ノードがMaster nodeに選出される。 2 Data node Elasticsearchのデータを保持するノード。データを保持し、クエリに対応した結 果を返す。 3 Coordinating node 検索リクエストやインデクシングリクエストなどを受け付けるノード。 すべてのノードは検索リクエストやインデクシングリクエストを受け付けることが できる。 4 Coordinating only node (Client node) Coordinating nodeの役割のみのノード。 参考 https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-node.html https://github.com/NII-cloud-operation/Literate-computing-Elasticsearch/blob/master/01_01_Outline.ipynb ノードの種類は次の通り ※1ノードが複数の種類を兼任できます
7.
シャード Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 7
8.
シャードとは? Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 8 Elasticsearchはインデックス毎にシャードと呼ばれるファイルにデ ータを保存する。 「1インデックス=複数シャード」にすることで、次の効果がある。 1. 処理のスケール インデックスを複数のシャードに分割し、複数のノードに分散し保持す ることで、並列処理が可能になる。そのため、シャードを増やすことによ り、インデクシング・検索の性能を向上できる。 これにより、インデクシング・検索処理をスケールすることができる。 ただし、シャードを作成しすぎると負荷が高くなるので注意。 2. 冗長化による耐障害性の確保 データのコピー(=レプリカ)を別ノードに保持することで、特定ノードに障 害が発生した場合でも処理を継続できる。
9.
シャードとは?~処理のスケール Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 9 インデックスのデータをシャードに分散して保持しているため、 並列処理を行うことができる この例では3並列で検索が可能 Coordinating node Shard 0 Primary Shard 2 Replica Data node 1 Shard 0 Replica Shard 1 Replica Data node 2 Shard 1 Primary Shard 2 Primary Data node 3
10.
シャードとは?~冗長化による耐障害性の確保 Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 10 Data Node 3が故障しても、コピーがあるため、 別ノードのシャードを利用して処理を継続 Coordinating node Shard 0 Primary Shard 2 Replica Data node 1 Shard 0 Replica Shard 1 Replica Data node 2 Shard 1 Primary Shard 2 Primary Data node 3
11.
シャードに関連する用語・機能 Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 11 1. プライマリシャードとレプリカシャードの組をレプリケーション グループと呼ぶ 2. シャードを割り当てる際に残ディスク容量を考慮し、 ディスクフルを防ぐことができる 3. 特定ノードへのシャードの偏りを改善するため、リバランス できる 4. インデックス単位でシャード設定を行うことができ、 デフォルトではシャード数=5, レプリカ数=1 REST APIで変更可能 5. シャード数はインデックス作成後に変更できない 6. Aggregation等はシャード単位で行われる
12.
レプリケーショングループ Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 12 Shard 0のレプリケーショングループ Coordinating node Shard 0 Primary Shard 2 Replica Data node 1 Shard 0 Replica Shard 1 Replica Data node 2 Shard 1 Primary Shard 2 Primary Data node 3 • 同一レプリケーショングループのデータは別ノードに配置される • 「レプリカ数 ≧ ノード数」に設定しても、ディスクアクセスを並列化できなければ 性能を向上できない
13.
ディスクベースのシャード割り当て Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 13 • cluster.routing.allocation.disk.watermark.low ノードのディスク使用率がこの値を超えると、新規シャードを割り当てない。デフォルト値は85% 残ディスク容量(MB等)を指定することもできる • cluster.routing.allocation.disk.watermark.high ノードのディスク使用率がこの値を超えると、別ノードにシャードを再配置する。デフォルト値は90% 残ディスク容量(MB等)を指定することもできる • cluster.info.update.interval クラスタ内の各ノードのディスク使用率をチェックする頻度。デフォルト値は30s Shard 0 Primary Shard 2 Replica Data node 1 Shard 0 Replica Shard 1 Replica Data node 2 Shard 1 Primary Shard 2 Primary Data node 3 シャードを割り当てる際に残ディスク容量を考慮し、 ディスクフルを防ぐ 82% 87% 92% 新規シャードを割り当て可能 新規シャードを割り当てない 別ノードにシャードを再配置
14.
リバランス Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 14 リバランスが行われる主なケース • cluster.routing.allocation.disk.watermark.highを 超え、残ディスク容量が少なくなった場合 • クラスタにノードが追加・削除された場合 (計画的な追加・削除、障害検出・障害回復、etc) Shard 0 Primary Data node 1 Shard 0 Replica Shard 1 Replica Data node 2 Shard 1 Primary Data node 3 特定ノードへのシャードの偏りを改善するため、リバラン スできる(基本的には自動で実行されます) 50% 90% 50%
15.
インデックス単位でシャード数、レプリカ数を設定可能 Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 15 • シャード数はインデックス作成後に変更できない (再インデックスが必要) • レプリカ数はインデックス作成後でも変更可能 Shard 0 Primary Shard 2 Replica Data node 1 Shard 0 Replica Shard 1 Replica Data node 2 Shard 1 Primary Shard 2 Primary Data node 3 • デフォルトではシャード数=5, レプリカ数=1 • REST APIで変更可能 インデックスA (シャード数=3, レプリカ数=1) Shard 0 Primary Shard 0 Replica Shard 0 Replica インデックスB (シャード数=1, レプリカ数=2)
16.
シャード単位で処理することの注意点 Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 16 • Aggregation等は、まずシャード単位で実行し、各シャードの 実行結果をマージし、クライアントに返す • そのため、処理によっては正確な結果にならない場合がある Coordinating node Shard 0 Primary Shard 2 Replica Data node 1 Shard 0 Replica Shard 1 Replica Data node 2 Shard 1 Primary Shard 2 Primary Data node 3 各シャードの実行結果をマージ シャード単位の実行結果
17.
インデクシングの流れ Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 17
18.
インデクシングの流れ~概要 Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 18 Elasticseachクラスタ内でのインデクシング処理の流れ 1. クライアントからのリクエストを受けたCoordinating nodeは インデクシング先のシャード番号を決める 2. Coordinating nodeはPrimaryシャードにインデクシングを リクエストする 3. Primaryシャードは、インデクシングを行う 4. Replicaシャードは、並列でインデクシングを行う 5. Replicaシャードは、Primaryシャードにレスポンスを返す 6. Primaryシャードに全Replicaシャードからレスポンスが返って きたら、Coordinating nodeにレスポンスを返す 7. Coordinating nodeはクライアントにレスポンスを返す
19.
インデクシングの流れ(1/8) Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 19 • クライアントからのリクエストを受けたCoordinating nodeはインデ クシング先のシャード番号を決める。 • シャード番号 = hash(document_id) % シャード数 この場合はシャード数=3 Coordinating node Shard 0 Primary Shard 2 Replica Data node 1 Shard 0 Replica Shard 1 Replica Data node 2 Shard 1 Primary Shard 2 Primary Data node 3 ①シャード番号を決定
20.
インデクシングの流れ(2/8) Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 20 • Coordinating nodeはPrimaryシャードにインデク シングをリクエストする Coordinating node Shard 0 Primary Shard 2 Replica Data node 1 Shard 0 Replica Shard 1 Replica Data node 2 Shard 1 Primary Shard 2 Primary Data node 3 ①シャード番号を決定②Primaryシャードにリクエスト
21.
インデクシングの流れ(3/8) Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 21 • Primaryシャードはインデクシングを行う Coordinating node Shard 0 Primary Shard 2 Replica Data node 1 Shard 0 Replica Shard 1 Replica Data node 2 Shard 1 Primary Shard 2 Primary Data node 3 ①シャード番号を決定②Primaryシャードにリクエスト ③インデクシング
22.
インデクシングの流れ(4/8) Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 22 • Replicaシャードにインデクシングをリクエストする • 全Replicaシャードに並列でリクエストする (この場合は、Replica数=1なので、1並列) Coordinating node Shard 0 Primary Shard 2 Replica Data node 1 Shard 0 Replica Shard 1 Replica Data node 2 Shard 1 Primary Shard 2 Primary Data node 3 ①シャード番号を決定②Primaryシャードにリクエスト ④Replicaシャードにリクエスト ③インデクシング
23.
インデクシングの流れ(5/8) Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 23 • Replicaシャードにインデクシングを行う Coordinating node Shard 0 Primary Shard 2 Replica Data node 1 Shard 0 Replica Shard 1 Replica Data node 2 Shard 1 Primary Shard 2 Primary Data node 3 ①シャード番号を決定②Primaryシャードにリクエスト ④Replicaシャードにリクエスト ③インデクシング ⑤インデクシング
24.
インデクシングの流れ(6/8) Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 24 • Primaryシャードにレスポンスを返す Coordinating node Shard 0 Primary Shard 2 Replica Data node 1 Shard 0 Replica Shard 1 Replica Data node 2 Shard 1 Primary Shard 2 Primary Data node 3 ①シャード番号を決定②Primaryシャードにリクエスト ④Replicaシャードにリクエスト ⑥レスポンス ③インデクシング ⑤インデクシング
25.
インデクシングの流れ(7/8) Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 25 • 全Replicaシャードからレスポンスが返ってきたら、 Coordinating nodeにレスポンスを返す Coordinating node Shard 0 Primary Shard 2 Replica Data node 1 Shard 0 Replica Shard 1 Replica Data node 2 Shard 1 Primary Shard 2 Primary Data node 3 ①シャード番号を決定②Primaryシャードにリクエスト ④Replicaシャードにリクエスト ⑥レスポンス ⑦レスポンス ③インデクシング ⑤インデクシング
26.
インデクシングの流れ(8/8) Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 26 • Coordinating nodeはクライアントにレスポンスを 返す Coordinating node Shard 0 Primary Shard 2 Replica Data node 1 Shard 0 Replica Shard 1 Replica Data node 2 Shard 1 Primary Shard 2 Primary Data node 3 ①シャード番号を決定②Primaryシャードにリクエスト ④Replicaシャードにリクエスト ⑥レスポンス ⑦レスポンス ③インデクシング ⑤インデクシング
27.
検索の流れ Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 27
28.
検索の流れ~概要 Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 28 Elasticseachクラスタ内での検索処理の流れ Query Phase 1. Coordinating nodeは各シャードにリクエスト 2. 各シャード内で検索を行う Fetch Phase 3. 各シャードの検索結果をCoordinating nodeに 返す 4. Coordinating nodeが各シャードからの検索結果 をマージし、クライアントにレスポンスを返す
29.
検索の流れ(1/4) Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 29 • Coordinating nodeは全レプリケーショングループから1シャードずつ選び、リ クエストする • リクエスト先のシャードは、各レプリケーショングループ内でラウンドロビンにより バランシングされる Coordinating node Shard 0 Primary Shard 2 Replica Data node 1 Shard 0 Replica Shard 1 Replica Data node 2 Shard 1 Primary Shard 2 Primary Data node 3 ①各シャードにリクエスト ① ① Shard 0の レプリケーショングループ Shard 1の レプリケーショングループ Shard 2の レプリケーショングループ
30.
検索の流れ(2/4) Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 30 • 各シャード内で検索を行う Coordinating node Shard 0 Primary Shard 2 Replica Data node 1 Shard 0 Replica Shard 1 Replica Data node 2 Shard 1 Primary Shard 2 Primary Data node 3 ①各シャードにリクエスト ① ① ②シャード内で検索 ②シャード内で検索 ②シャード内で検索
31.
検索の流れ(3/4) Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 31 • 各シャードの検索結果をCoordinating nodeに返す Coordinating node Shard 0 Primary Shard 2 Replica Data node 1 Shard 0 Replica Shard 1 Replica Data node 2 Shard 1 Primary Shard 2 Primary Data node 3 ①各シャードにリクエスト ③検索結果 ③ ③① ① ②シャード内で検索 ②シャード内で検索 ②シャード内で検索
32.
検索の流れ(4/4) Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 32 • Coordinating nodeが各シャードからの検索結果 をマージし、クライアントにレスポンスを返す Coordinating node Shard 0 Primary Shard 2 Replica Data node 1 Shard 0 Replica Shard 1 Replica Data node 2 Shard 1 Primary Shard 2 Primary Data node 3 ④各シャードの検索結果をマージ ①各シャードにリクエスト ②シャード内で検索 ②シャード内で検索 ②シャード内で検索 ③ ③① ① ③検索結果
33.
検索にかかる時間 Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 33 検索にかかる時間 • Query Phaseの時間 + Fetch Phaseの時間 = 検索が一番遅いシャードの処理時間 + マージ時間 Coordinating node Shard 0 Primary Shard 2 Replica Data node 1 Shard 0 Replica Shard 1 Replica Data node 2 Shard 1 Primary Shard 2 Primary Data node 3 ④各シャードの検索結果をマージ ①各シャードにリクエスト ②シャード内で検索 ②シャード内で検索 ②シャード内で検索 ③ ③① ① ③検索結果
34.
DATA NODEの障害検出 Copyright ©
Acroquest Technology Co., Ltd. All rights reserved. 34
35.
Data Node障害検出~目次 Copyright ©
Acroquest Technology Co., Ltd. All rights reserved. 35 本章では次の内容を説明する 1. クラスタ状態 2. Data Nodeの障害検出の流れ 3. インデックス復旧の優先度 4. Data Nodeの障害検出に関連する設定 5. シャード再割り当て途中でのノード復旧 障害検出方法にはいくつか種類があるが、 Elasticsearchのデフォルト方式である Zen Discoveryを前提として説明する
36.
クラスタ状態 Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 36 1. インデックス単位の状態には、次の種類がある 2. クラスタ全体の状態は、 インデックス単位の状態の最悪値になる 3. 具体的な状態(status)はREST APIで確認可能 状態 内容 green 正常な状態 yellow 割り当てられていないレプリカシャードあり red 割り当てられていないシャードあり GET _cluster/health/インデックス名 GET _cluster/health インデックス 単位 クラスタ 全体
37.
Data Nodeの障害検出の流れ~概要 Copyright ©
Acroquest Technology Co., Ltd. All rights reserved. 37 Data Nodeの障害検出の流れ 1. Master nodeは各ノードにヘルスチェックを行う 2. Data nodeに障害が発生し、 Master nodeが障害検出する 3. Data nodeがすぐに復旧するケースに備え、 Master nodeは1分間待機する 4. 障害により失われたプライマリシャードを復旧させる 5. 障害により失われたレプリカシャードを復旧させる
38.
Data Nodeの障害検出の流れ(1/5) Copyright ©
Acroquest Technology Co., Ltd. All rights reserved. 38 • Master nodeは各ノードにヘルスチェックを行う • ヘルスチェック間隔は1s Shard 0 Primary Shard 2 Replica Data node 1 Shard 2 Primary Data node 2 Shard 0 Replica Shard 1 Primary Data node 4 Coordinating node Master-eligible node Master Shard 1 Replica Data node 3
39.
Data Nodeの障害検出の流れ(2/5) Copyright ©
Acroquest Technology Co., Ltd. All rights reserved. 39 • Data nodeに障害が発生する • タイムアウト30s×3回連続でヘルスチェックに失敗すると、 Master nodeは「Data nodeに障害が発生した」と認識する Shard 0 Primary Shard 2 Replica Data node 1 Shard 2 Primary Data node 2 Shard 0 Replica Shard 1 Primary Data node 4 Coordinating node Master-eligible node Master ①障害検知 Shard 1 Replica Data node 3
40.
Data Nodeの障害検出の流れ(3/5) Copyright ©
Acroquest Technology Co., Ltd. All rights reserved. 40 • 障害検出したノードが保持するデータを復旧させたい • ただ、Data nodeがすぐに復旧するケースに備え、 Master nodeは1分間待機する Shard 0 Primary Shard 2 Replica Data node 1 Shard 2 Primary Data node 2 Shard 0 Replica Shard 1 Primary Data node 4 Coordinating node Master-eligible node Master ①障害検知 ②1分間待機 Shard 1 Replica Data node 3
41.
Shard 1 R→P Data node
3 Data Nodeの障害検出の流れ(4/5) Copyright © Acroquest Technology Co., Ltd. All rights reserved. 41 • 障害により失われたプライマリシャード(ここではShard 1)を復旧させる • レプリカシャードの1つをプライマリシャードに変更する • これは状態更新のみのため、即完了する Shard 0 Primary Shard 2 Replica Data node 1 Shard 2 Primary Data node 2 Shard 0 Replica Shard 1 Primary Data node 4 Coordinating node Master-eligible node Master ①障害検知 ②1分間待機 ③プライマリシャードの復旧
42.
Shard 1 Primary Data node
3 Data Nodeの障害検出の流れ(5/5) Copyright © Acroquest Technology Co., Ltd. All rights reserved. 42 • 障害により失われたレプリカシャード(ここではShard 0, 1)を復旧させる • プライマリシャードを別ノードにコピーし、レプリカシャードとする • ネットワーク上でデータ転送が行われるため、時間がかかる可能性あり Shard 0 Primary Shard 2 Replica Data node 1 Shard 2 Primary Data node 2 Shard 0 Replica Shard 1 Primary Data node 4 Coordinating node Master-eligible node Master ①障害検知 ②1分間待機 Shard 0 Replica ④レプリカシャードの復旧 ③プライマリシャードの復旧Shard 1 Replica
43.
インデックス復旧の優先度 Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 43 複数のインデックス復旧が必要な場合、 次の優先度で順番に復旧する 1. 設定値index.priorityが大きいもの インデックス毎にREST APIで変更可能 デフォルトの優先度は0 2. 作成日が新しいもの 3. インデックス名の辞書式順序で先に来るもの
44.
Data Nodeの障害検出に関連する設定 Copyright ©
Acroquest Technology Co., Ltd. All rights reserved. 44 1. リバランスも行われるため、実際の動作はもっと複雑 2. 関連する設定値(Zen Discoveryの場合) No. 設定名 設定内容 デフォルト値 1 discovery.zen.fd.ping_interval ヘルスチェック間隔 1s 2 discovery.zen.fd.ping_timeout ヘルスチェックタイムアウト 30s 3 discovery.zen.fd.ping_retries ヘルスチェック回数 3 4 index.unassigned.node_left.delayed_timeout ノードの障害検出後、データ復旧開始まで Master nodeが待機する時間 1m
45.
MASTER NODEの障害検出 Copyright ©
Acroquest Technology Co., Ltd. All rights reserved. 45
46.
Master Node障害検出~目次 Copyright ©
Acroquest Technology Co., Ltd. All rights reserved. 46 本章では次の内容を説明する 1. Master Nodeの障害検出の流れ 2. Split Brain対策 障害検出方法にはいくつか種類があるが、 Elasticsearchのデフォルト方式である Zen Discoveryを前提として説明する
47.
Master Nodeの障害検出の流れ(1/3) Copyright ©
Acroquest Technology Co., Ltd. All rights reserved. 47 • Master-eligible nodeはMaster nodeにヘルスチェックを行う • ヘルスチェック間隔は1s Shard 0 Primary Shard 2 Replica Data node 1 Shard 2 Primary Data node 2 Shard 0 Replica Shard 1 Primary Data node 4 Coordinating node Master-eligible node Master Shard 1 Replica Data node 3
48.
Master Nodeの障害検出の流れ(2/3) Copyright ©
Acroquest Technology Co., Ltd. All rights reserved. 48 • Master nodeに障害が発生する • タイムアウト30s×3回連続でヘルスチェックに失敗すると、 Master-eligible nodeは「Master nodeに障害が発生した」と認識する Shard 0 Primary Shard 2 Replica Data node 1 Shard 2 Primary Data node 2 Shard 0 Replica Shard 1 Primary Data node 4 Coordinating node Master-eligible node Master Shard 1 Replica Data node 3 ①障害検知
49.
Master Nodeの障害検出の流れ(3/3) Copyright ©
Acroquest Technology Co., Ltd. All rights reserved. 49 • Master-eligible node間で新しいMaster nodeを選出 • 後で説明する「Split Brain対策」に注意 • 以降は通常の処理に戻る Shard 0 Primary Shard 2 Replica Data node 1 Shard 2 Primary Data node 2 Shard 0 Replica Shard 1 Primary Data node 4 Coordinating node Master-eligible node Master Shard 1 Replica Data node 3 ①障害検知 ②新Masterを選出 Master
50.
Split Brain対策(1/3) Copyright ©
Acroquest Technology Co., Ltd. All rights reserved. 50 次のケースでは、Master nodeが2台になってしまい、 矛盾した処理を行う危険性がある Master Master Master Master Master nodeにヘルスチェック Master nodeは正常だが、ネッ トワーク障害により、ヘルスチェック が失敗 Master nodeに障害が発生し たと思い込み、別のノードが Master nodeになる このような現象を「Split Brain」と言う Node 1 Node 2 Node 1 Node 2 Node 1 Node 2 ① ② ③
51.
Split Brain対策(2/3) Copyright ©
Acroquest Technology Co., Ltd. All rights reserved. 51 過半数以上のMaster-eligible nodeを確認可能な ときだけ、Master nodeになれるようにする Master 過半数(この場合は2ノード)確認できず、 Node 2はMasterになれない Node 1はMasterのまま Master 過半数確認できず、 Masterになれない 過半数確認し、 Masterになる Master 過半数確認できず、 Masterをやめる Node 1 Node 2 Node 1 Node 2 Node 3 Node 3 過半数(この場合は2ノード)確認し、 Node 2(or Node 3)は Masterになる Node 1はMasterをやめる
52.
Split Brain対策(3/3) Copyright ©
Acroquest Technology Co., Ltd. All rights reserved. 52 1. そのため、Master-eligible nodeは3以上の奇数 台用意する 2. 最低限必要なMaster-eligible nodeの台数を elasticsearch.ymlの discovery.zen.minimum_master_nodesに 設定する 3. 次の値を設定すること(小数点は切り捨て) (Master-eligible nodeの台数 / 2) + 1
53.
53 分散システムとしての側面も押さえ、 Elasticsearchを効果的に使いましょう!
Download now