序文 この記事はポピュラーサイエンス記事です。ビッグデータ分散コンピューティング技術を、わかりやすい例を通して皆様にご説明できればと思います。ビッグデータ技術には、ストレージ、コンピューティング、分析などの一連の複雑な技術が含まれますが、その中核は常に分散コンピューティングでした。ビッグデータ テクノロジーを理解したい場合は、MapReduce 分散コンピューティング モデルから始めるのがよいでしょう。この理論モデルは新しい概念ではありません。これは、2004 年に Google によってリリースされました。10 年以上の開発を経て、現在のビッグデータ エコシステムの基盤となっています。ビッグデータ技術への道はMapReduceにあると言えます。 従来のコンピューティング技術 分散コンピューティング テクノロジの概念に入る前に、従来のコンピューティング テクノロジを確認する必要があります。コンピュータ分野の関連概念を鮮明かつわかりやすくするために、コンピュータを人間に例えてみましょう。 この図では、コンピューターの基本的なコンポーネント間の類似性を示しています。厳密ではありませんが、問題を説明するには十分です。この類推により、コンピュータ分野の問題を、私たちがよく知っている人間分野の問題に変換することができます。これからは、あなたも含め誰もがコンピュータであり、私たちはそれを「人間コンピュータ」と呼びます。あなたには基本的なコンピュータ部品があり、神はプログラム、つまりいくつかのコンピューティングタスクを完了できるようにするための一連の定められた命令を書くことができるプログラマーです。 次に、簡単なケースを使用して、「人間型コンピュータ」が従来のコンピューティング技術を使用して実際の問題を解決する方法を分析します。始める前に、いくつかの制限を追加する必要があります。通常のコンピュータのメモリに上限があるように、私たちの「人間コンピュータ」にもメモリの上限があります。ここでは、「人間型コンピュータ」が「メモリ」内に同時に最大 4 種類の情報を記憶できるものと想定します。たとえば、リンゴやナシなどの果物 4 個の数などです。 この「ヒューマノイド コンピューター」のパフォーマンスは比較的低いようですが、幸いなことに、対処する必要がある問題は複雑ではありません。大小のジョーカーが含まれていないトランプが数十枚あるのです。これらのカードのスートとサイズは不明です(トランプのデッキを作れない可能性があります)。各スートのトランプの枚数を数える「ヒューマノイドコンピュータ」のプログラムを設計するにはどうすればよいでしょうか? 答えは口から出てくるかもしれません。 「人間のコンピュータ」の場合は、各スートの番号を脳に記憶し、トランプカードを 1 枚ずつ取り出して数え、すべてのトランプカードを処理した後に 4 つのスートの番号を報告します。答えはまさに正解です。通常のコンピュータの最も単純な計算モードは次のようになります。統計結果はメモリに記録されます。入力デバイスが継続的にデータを読み取ると、メモリ内の統計結果が更新され、最終的に出力デバイスから結果が表示されます。 次の質問の難易度がアップします。これらのトランプの A から K までの 13 枚のカード面のそれぞれの数を数える必要があります。 「プログラム」をアップグレードするにはどうすればいいでしょうか? 以前の解決策をそのまま使用すると、「人間コンピュータ」の「メモリ」が足りなくなることがわかりました。なぜなら、その記憶限界は 4 種類の情報であり、A から K までの 13 種類のカード情報を保存できないからです。実際の生活の場面に関連して、多くの情報を記憶できないことがわかったとき、私たちは帳簿を使って記憶を補助します。コンピューターでも同様です。メモリが不足している場合は、ディスクを使用して情報を保存してください。この時点で、帳簿は「ディスク」に保存されている Excel ドキュメントに例えることができます。 すると、カードを数える問題の解決策は次のようになります。トランプカードが取られるたびに、対応するタイプのカードの数が帳簿で更新され、すべてのトランプカードを数えた後、結果が直接報告されます。 これは、単一のコンピューターの従来のコンピューティング モデルです。簡単に言えば、入力データに対して一定の統一された規則に従って加算、減算、乗算、除算などの数学演算を実行し、その結果を出力するプロセスです。プロセス中に生成されたデータはメモリまたはハードディスクに保存されます。上記の場合、トランプは「人間コンピュータ」の「入力データ」であり、コンピュータのバイナリ世界で認識できる数字やテキストに相当します。数えられたトランプの枚数が「出力結果」となり、パソコンの画面に表示される情報と同等になります。 実際、メモリ、ハードディスク、CPU などの基本コンポーネントがあれば、1 台のコンピューター (パソコンだけでなくスマートフォンも) で、インターネットの閲覧、音楽の聴取、映画の視聴など、私たちの日常の基本的なニーズに必要な計算をすでに実行できます。計算がCPUの限界を超えない限り(人間とコンピュータの囲碁ゲームなど)、問題はありません。さらに、メモリの最適化、ハードディスクの最適化など、単一のコンピューターの計算能力を強化するさまざまな手段も備えており、それによって人々の高まる物質的および文化的ニーズを満たしています。 さて、背景は十分です、本題に入りましょう。 ビッグデータ分散コンピューティング まず、分散コンピューティングとは何でしょうか?簡単に言えば、大量のデータを複数の小さなブロックに分割し、複数のコンピュータで計算作業を分担して、その結果を集計することを意味します。分散コンピューティングを実行するこれらのコンピューターはクラスターと呼ばれます。前回の記事で述べた人間とコンピューターの類推を引き続き使用すると、クラスターはチームになります。個人戦闘の時代は終わり、チームワークが重要になります。 分散コンピューティングはなぜ必要なのでしょうか? 「ビッグデータ」の到来により、1 台のコンピュータでは不十分になり、つまり、データ量が 1 台のコンピュータの処理能力をはるかに超えるようになりました。単位時間あたりのデータ量が大きい場合もあり、たとえば、12306 でオンラインでチケットを購入する場合、1 秒あたり数万回のアクセスがある可能性があります。また、Baidu 検索エンジンのように、サーバー上の何億もの中国語 Web ページ情報を取得する必要があるため、データの総量が大きいことも原因の 1 つです。 分散コンピューティングを実現するためのソリューションは数多くあります。ビッグデータ技術が登場する前から研究者たちはこれを研究してきましたが、広く利用されてはいませんでした。 2004 年に Google が MapReduce を発表するまで、MapReduce は普及しませんでした。ビッグ データ テクノロジー、分散コンピューティング、MapReduce の関係は、次の図で説明できます。 MapReduce は、ビッグデータ分野における分散コンピューティングのアプリケーションです。 MapReduce モデルは、商業的に実証された成熟した分散コンピューティング フレームワークです。 Google の分散ファイルシステム GFS および分散データストレージシステム BigTable とともに、Google のビッグデータの「3 つの宝」として知られ、ビッグデータ技術の発展に強固な理論的基礎を提供します。残念ながら、Google は商用製品を外部に発表しませんでした。ビッグデータ技術を飛躍的に進歩させたのは、Google の理論に従って実装されたオープンソースの無料製品である Hadoop でした。 Hadoopを中核としたビッグデータ技術のエコシステムが形成されました。
ポーカーのカードを数える例に戻りましょう。ビッグデータの時代におけるポーカーの問題はどのようになっているのでしょうか?
どうですか?ビッグデータがあなたに迫ってくるのを感じますか?私たち「人間コンピュータ」の「メモリ」と「ハードディスク」の容量には限りがあることを知っておく必要があります。 52種類のカードの情報は、1台のコンピュータの処理能力を超えています。もちろん、メモリやディスク容量を拡張すればこの問題は解決できる、52 種類のカードでは分散コンピューティングはまったく必要ない、と疑問を呈する人もいるかもしれません。考えてみましょう。この山の中に何百、あるいは何千もの種類のカードがあったらどうなるでしょうか? したがって、52 種類のカードは現実に即したもので、1 台のコンピューターでは同時にこれほど大量のデータを処理できなくなったことをすべての人に認識してもらうことを目的としています。連携するには複数のコンピューターが必要です。 MapReduce を使う時が来ました。 いくつかの資料を参照し、いくつかの実践を行った後、私は個人的に、MapReduce テクノロジは、divide、transform、shuffle、combine という 4 つの単語で簡単に要約できると考えています。これらはそれぞれ、「分割」、「変換」、「シャッフル」、「マージ」の 4 つのステップを表しています。 4 語の公式を使用してビッグ データ ポーカー問題を解決する方法を見てみましょう。 1. 分割: 入力データを複数の部分に分割する 1 台の「人間のコンピュータ」ではすべてのポーカー カードを処理することはできないため、カードをランダムに複数の部分に分割します。ポーカー カードの各部分は、「人間コンピュータ」によって処理されます。ポーション数は、1台のコンピュータの処理限界を超えず、各ポーションの数が可能な限り均等に分散されるように努めます。 ここで役割分担の問題について話し合う必要があります。複数のコンピュータが連携して動作する場合、役割を分担する必要があります。データのセグメンテーションを担当する「人間コンピュータ」を「司令官」として理解することができます。通常、「指揮官」は 1 人だけ (実際には複数いる場合もあります) おり、全体的な調整とスケジュールの責任を負います。特定のコンピューティング タスクの実行を担当する「人間型コンピューター」は、「コンピューティング ソルジャー」です。 「コンピューティング兵士」は、担当するさまざまなタスクに応じて、「可変コンピューティング兵士」と「複合コンピューティング兵士」に分けられます。前者は「変換」の 2 番目のステップを担当し、後者は「合併」の最後のステップを担当します。 もちろん、「計算兵士」の総数は多ければ多いほど良いのですが、「可変計算兵士」と「複合計算兵士」の割合は固定されておらず、データ量や計算の効率に応じて調整することができます。人員が不足している場合、コンピュータ兵士が 2 つの役割を担うことがあります。実際の状況では、コンピュータは複数のプロセスを持ち、複数のタスクを実行できるため、「指揮官」は同時に「コンピュータ兵士」としても機能する可能性があり、つまり、理論上はコンピュータが複数の役割を果たすことができる。 「指揮官」はトランプを切る前に、まず「可変数兵」と「合同数兵」の数を割り当て、次に「可変数兵」の数に応じてトランプを対応する数に分割し、各トランプのシェアを「可変数兵」に渡して次のステップに進みます。 2. 変換: 各入力データをマップする(つまり、MapReduceのMap) 各「変数計算兵士」は、配られたトランプカードを同じルールに従って変換し、変換された結果を後続のステップで処理できるようにする必要があります。この変換は、加算、減算、乗算、除算などの数学演算である場合もあれば、入力データの構造の変換である場合もあります。たとえば、ポーカーの問題の場合、目的は数を数えることなので、ポーカー カードをコンピューターが処理しやすい数値構造に変換できます。各ポーカー カードに小さなメモを貼り付け、そのメモにカードの数が 1 と書き込まれます。 これらのラベル付きトランプをバリアントトランプと呼びます。後続のステップでカードの種類の数を数えるときは、各ラベルの数字を合計するだけです。各「カウンティング ソルジャー」がすべての種類のポーカー カードの数を直接数えない理由について、興味がある方もいるかもしれません。これは、この「マッピング変換」操作の本質が、各ポーカーカードを同じルールで変換することであり、数を数える作業は最後のステップに残されているからです。厳密なパイプライン操作により全体的な効率が向上し、特定の問題に応じて変換ルールが策定されるため、さまざまな種類の計算に適応しやすくなります。 3. シャッフル: 変換されたデータを特定のルールに従ってグループ化する 変形操作が完了したら、各「変形計算兵」は、カードの種類に応じて、自身の変形トランプカードを複数の小さな部分に分割する必要があります。それぞれの小さな部分は最終的に、指定された「結合計算兵士」によって結合され、カウントされます。この処理は「シャッフル」と呼ばれ、変形したトランプカードを「変数計算兵」がルールに従ってグループ化し、指定された「結合計算兵」に割り当てる処理です。 シャッフルは2段階に分かれています。最初の段階では、各「異形カウント兵士」が特定のルールに従って異形トランプカードを分類します。分類ルールは各「総数兵士」の統計範囲によって決まり、分類数は「総数兵士」の数によって決まります。上の図に示すように、異なる範囲のカードの種類を数える責任を持つ「合計数え兵士」が 3 人いると仮定すると、「異形数え兵士」は、各「合計数え兵士」が担当するカードの種類に応じて、異形トランプカードを 3 つの小さな部分に分割し、各部分を対応する「合計数え兵士」に渡す必要があります。 シャッフルの第 2 段階では、指揮官の指示の下、「連合兵士」が各「異形兵士」の手元に行き、自分の異形トランプを取ります。これにより、同じ種類のトランプは 1 人の「連合兵士」の手元だけに残ります。シャッフルの目的は、同じ種類のトランプのバリエーションをまとめて、数えやすくすることです。 4. マージ: シャッフルされたデータを統計的にマージする (つまり、MapReduce の Reduce) 「兵士の組み合わせ」は、同じ計算ルールに従って、手札にある異形トランプカードを1枚ずつ組み合わせます。計算ルールも特定の問題に応じて策定する必要があります。ここでは、トランプのラベルの値を直接累積して最終結果を計算します。 そして、「合同計算兵」全員が計算結果を「指揮官」に提出し、「指揮官」が最終的な統計結果をまとめて発表します。 要約する 以上が「分割・変形・洗浄・結合」の四字熟語の紹介です。完全なプロセスは次のとおりです。 分散処理技術は、論理的には複雑ではありませんが、その具体的な実装には、「指揮官」がどのようにしてすべての「コンピューティング兵士」を調整して派遣するか、また「コンピューティング兵士」同士がどのように通信するかなど、複雑なプロセスが多数あります。しかし、MapReduce を使用してコンピューティング タスクを完了するプログラマーにとっては、これらの複雑なプロセスは透過的です。分散コンピューティング フレームワークはこれらの問題を自ら処理します。プログラマーは、2 番目のステップの変換ルールと 4 番目のステップのマージ ルールの 2 つの計算ルールを定義するだけで済みます。 諺にあるように、最も簡単な方法が最善であり、物事がどのように変化しても、本質的には同じままです。 MapReduce を理解すれば、ビッグデータ分散処理技術を理解でき、ビッグデータ分散処理技術を理解すれば、ビッグデータ技術の核心を理解できます。 著者について 上級ソフトウェア開発エンジニアの Lu Liang は、ビジネスシステムのモデリングとアーキテクチャ分析に長けており、分散アーキテクチャとビッグデータ技術に関する深い理論的研究と実践経験を持っています。 個人ブログ: www.leonlu.cc |
<<: UMStorデータストレージシステムは企業のデータ価値を高めます
>>: クラウドコンピューティングの運用と保守をうまく行う方法
今日のソーシャルおよびモバイル インターネット マーケティングでは、さまざまな情報とリソースがさまざ...
Cloudcone はすでに毎年恒例のブラックフライデーのプレセールを事前に開始しており、ロサンゼル...
現在、ウェブサイトの最適化を行う人員は絶えず変化しており、Baiduアルゴリズムはどのような方向に進...
[[331081]] 2020 年 1 月 9 日から 31 日まで、O'Reilly はク...
Kamatera は 1995 年に設立された老舗の米国子会社です (サブブランドとして clubv...
クラウドコンピューティング企業は、流行の影響に耐えただけでなく、ビジネスの成長も達成しました。しかし...
今日、仮想化サービスの人気の高まりからクラウド コンピューティング サービス プラットフォームの広範...
FasterVM は、アジア、特に国内の通信ユーザー向けに最適化された新しいデータセンター、ロサンゼ...
最近、IT Manager World が主催し、Dell が主導して参加した「Inspiring ...
georgedatacenter は、主に米国ダラスとオランダのアムステルダムのデータセンターで V...
最近、Tencent Cloud TStackとKylinサーバーオペレーティングシステムV4は、F...
[51CTO.com クイック翻訳] Web スケールのアプリケーションでは、優れたユーザー エクス...
一般的な SEO の見解では、静的ページは SEO に有益であるため、多くの SEO 担当者が We...
コア要約: 8月5日、全国のエレクトロニクス業界の各界やゲームプレイヤーの注目を集めた世界的なデジタ...
最近、業界で注目を集めている「3B戦争」が過熱している。国内の権威あるトラフィック統計機関であるCN...