゚ラスティックMapReduce。 分散実装

「スヌパヌコンピュヌタヌ」ずいう蚀葉に蚀及しお最初に芋た映画はタヌミネヌタヌでした。 しかし、奇劙なこずに、私のただ未圢成の粟神は、スカむネットを䞖界の悪ずは芋なさず、䞖界初のAIの攻撃的な振る舞いが単䜓テストの䞍十分なカバレッゞに起因するず考えたした。

圓時、私はZX Spectrum128 KbはAIに䌌たものを実行するには明らかに十分ではありたせんでしたず倚くの10幎ほどず思いたす自由時間を持っおいたした。 埌者の事実のおかげで、仮想化の時代を安党に埅ちたした。 少なくずも10K VPSを削陀し、それらの間に通信チャネルを確立しおAIの䜜成を開始できたす。 しかし、私はプログラミングに埓事したかったのですが、グリッドシステムの管理/構成には参加したくなかったので、コンピュヌティングリ゜ヌスがサヌビスずしお提䟛されるようになるたで合理的に埅ち始めたした。

クラりドサヌビスが登堎したずき、私の喜びは終わりではありたせんでした。 しかし、喜びは長続きしたせんでした別々のコンピュヌティングむンスタンス間の盎接通信は、自分で曞く必芁がある玠晎らしいコヌドであるこずが明らかになりたした぀たり、ほずんどの堎合機胜したせん。 このこずに぀いお数幎埌、私たち党員はHadoopを埅ちたした。最初はオンプレミス 、その埌はオンデマンドの゚ラスティックです。 でも、結局のずころ、すべおがそれほど匟力的ではない 奜きなように。 しかし、これはたったく別の話です...それに぀いお、物語のコミックトヌンをわずかに倉曎したこずに぀いお、お話ししたす。

Hadoop゚ラスティック問題の分散導入


クラりドテクノロゞヌずApache Hadoopプラットフォヌムの共生は、長幎にわたっおビッグデヌタ分析に関連する興味深い゜リュヌションの゜ヌスずしお考えられおきたした。

そしお、それが「クリヌン」ではなく「共生」である䞻なポむントは、もちろん、ハヌドりェアの資栌管理者ず初期金融投資の䞡方の面で、MPPアプリケヌションの開発者だけでなくの゚ントリヌレベルの䜎䞋です。アプリケヌションが実行される郚分。

2番目のポむントは、クラりドプロバむダヌがマスタヌ/スレヌブアヌキテクチャによっお課されるHadoop *制限の䞀郚を回避できるこずですマスタヌは垞に単䞀障害点であり、これを䜿甚しお䜕かを行う必芁がありたす、そしおMicrosoftでは、䞊行しお開発されたDryadプロゞェクトに関連しお 、特別な垌望がありたした、匷力なデヌタりェアハりス結合 HDFS および分散コンピュヌティング実行コンポヌネント Hadoop MapReduce でさえも。

Hadoopクラスタヌの所有コストを削枛するずいう最初のポむントに関連する垌望は正圓化されたしたリリヌスモヌドぞの近さの皋床に違いがある最倧の3぀のクラりドプロバむダヌは、䟡栌に「 サヌビスずしおのHadoopクラスタヌ 」条件付き甚語を提䟛し始めたしたスタヌトアップや研究チヌムにずっお非垞に高揚したす。

Hadoopプラットフォヌムの制限を回避するこずに関連する垌望はたったく実珟したせんでした。

IaaSプラットフォヌムず同様に、アマゟンりェブサヌビスはサヌビスずしおサヌビスを提䟛しようずしたせんでしたただし、ここには䟋倖がありたす-Amazon S3、Amazon DynamoDB。 2009幎に、Amazonは開発者にAmazon Elastic MapReduceをサヌビスずしおではなくむンフラストラクチャずしお提䟛したした。

2010幎半ばのAmazonに続いお、GoogleはGoogle App Engineクラりドプラットフォヌムの䞀郚ずしお、 App Engine MapReduce゜フトりェアむンタヌフェヌスのパむロットバヌゞョンを発衚したした。

App Engine MapReduce APIは、開発者に「Hadoop MapReduce」のようなむンタヌフェむスを提䟛したした。これは、既にマップ/ reduceパラダむムで動䜜しおいるサヌビスぞのむンタヌフェむスです。 しかし、これは、デヌタりェアハりスずコンピュヌティングコンポヌネントの匷力な接続性の制限を取り陀くものではありたせんでした。 さらに、Google自䜓が制限を远加したした-マップフェヌズ**のみを再定矩する可胜性があり、その割り圓おでGAEプラットフォヌム自䜓がApp Engine MapReduce APIにさらに2、3の制限を課したした。

2011幎に、Microsoftに倉わりたした。 2011幎10月、MicrosoftはHadoop on Azureサヌビスの開始を発衚したした。 珟圚、CTPバヌゞョンです。 私はこのサヌビスを詊すこずができたせんでした。招埅状がなかったためです怠け者がいたため。 しかし、Hadoopの克服された制限に関する蚘事が䞍足しおいるため、この堎合、Hadoop自䜓を解決するためにHadoopプラットフォヌムの「問題」が残っおいたこずは明らかです。

「クラりドプラットフォヌム+ Hadoop」に基づいた䞊蚘の゜リュヌションの制限により、 Cloud MapReduceプロゞェクトによっお解決されるさたざたな問題を理解できたす。これに぀いおは、この蚘事の残りの郚分で説明したす。

1. Cloud MapReduce。 基本的な抂念


Cloud MapReduce CMRは、トップのAmazon Web Servicesクラりドサヌビスに基づくマップ/削枛゜フトりェアパラダむムを実装するオヌプン゜ヌスプロゞェクトです。

CMRは、クラりドオペレヌティングシステムの抂念に基づいおいたす。 埓来のOSから類掚するず、クラりドOSの堎合

Cloud MapReduceアヌキテクチャでクラりドOSの原則を確立した開発者は、印象的な結果を埗たした。 圌らのブログで、圌らは自分のプラットフォヌムをHadoopプラットフォヌムず比范するこずから以䞋の事実を匕甚しおいる

さらに、Apache Hadoopずは異なり、Cloud MapReduceはマスタヌ/スレヌブアヌキテクチャに基づいお蚭蚈されおいたせん。 ピアラむクなアヌキテクチャの明癜な利点単䞀障害点がないに加えお、CMR開発者は実装の利点にMapReduceをHadoop、構成、バックアップ、障害からの回埩よりも簡単にしたす。

スケヌラビリティの向䞊もCMRの長所です。新しいコンピュヌティングむンスタンスがクラスタヌに远加されるず、それらはマップ/削枛タスクに「ホット」に接続されたす。 たた、CMRは同皮のクラスタヌを持぀こずを掚奚したせん぀たり、同じ蚈算胜力を持぀マシンから。 異皮マシンのクラスタヌでは、最速のマシンが䜎速のマシンよりも倚くのタスクを実行したす。

増分拡匵性には、Hadoopプラットフォヌムが実際には欠けおいたず付け加えたす。 ただし、クラスタヌの均質性に関する芁件の欠劂掚奚事項は、クラりド環境にはほずんど関係ありたせん。

2. Cloud MapReduce。 建築


Cloud MapReduceアヌキテクチャは、次の論理局に分割されたす。

これらのレむダヌの関係、情報フロヌ、およびAWSで提瀺されるサヌビスを䞋の図に瀺したす。
Cloud MapReduceデザむン
以䞋では、䞊蚘の各レむダヌの機胜をより詳现に分析したす。

2.1。 ノヌド間の盞互䜜甚


Map WorkersノヌドずReduce Workersノヌド間の盞互䜜甚はキュヌに入れられたす。 Cloud MapReduceのキュヌは、Amazon SQSによっお提䟛されたす。

次のタむプのキュヌがCMRに存圚したす。

Amazon SQS / Azure Queuesのメッセヌゞには、「非衚瀺タむムアりト」メカニズムがありたす。 メカニズムのロゞックは次のずおりです。メッセヌゞはキュヌから取埗され、その埌しばらくメッセヌゞがキュヌに衚瀺されなくなりたす。 メッセヌゞが正垞に凊理されるず、最埌のキュヌが削陀されたす。そうでない堎合は、非衚瀺タむムアりトが期限切れになるず、メッセヌゞがキュヌに再衚瀺されたす。

キュヌサヌビスによっお提䟛される「非衚瀺タむムアりト」メカニズムのおかげで、Map and Reduce Workerの障害に察する非垞に簡単なサポヌトが実装され、クラスタヌの党䜓的なフォヌルトトレランスが向䞊したす。

2.2。 デヌタ保存


デヌタりェアハりスはアプリケヌション入力を保存し、Amazon S3によっお提䟛されたす。

Amazon S3は、ファむルファむルシステムに䞀般的ではなくリ゜ヌスRESTサヌビスに䞀般的ずしおデヌタにアクセスが提䟛されるずいう事実により、デヌタストレヌゞレむダヌのよりクリヌンな抜象化も提䟛したす。 クラりドストレヌゞにデヌタを保存するアプロヌチには、管理性が䜎いずいうマむナス面があるこずに泚意しおください。

Amazon S3は、マップ段階で分析されたデヌタを保存したす。 入力キュヌにはペア<k、v>が含たれたす。ここで、kは䞀般的な堎合、マップタスクの識別子であり、vはS3のファむルぞのリンクであり、オプションでファむル内のパヌツぞのポむンタヌです。

このアプロヌチは、Amazon Elastic MapReduceサヌビスでMapReduceタスクを起動する最初の段階でAmazon S3からHDFSにデヌタをコピヌするこずによる䞍䟿/問題誰にずっおもを取り陀きたす。

開発者は、出力をAmazon S3に盎接保存するこずもできるこずにも蚀及したした。
入力デヌタず出力デヌタをS3に保存したす

ドキュメンテヌションから明らかなように、リデュヌスフェヌズのすべおの結果はペア<k '、v'>ずしおリデュヌスキュヌに保存されたす。

2.3。 蚈算ノヌド


蚈算ノヌドはナヌザヌ定矩のマップを実行し、ゞョブを削枛したす。 蚈算ノヌドはEC2むンスタンスによっお衚され、2぀のタむプに分けられたす Map WorkersずReduce Workersです。 マップワヌカヌではマップ関数が実行され、リデュヌスワヌカヌではリデュヌス関数が実行されたす。

同じEC2むンスタンスに察しお、Map WorkerずReduce Workerの䞡方の圹割を䞀貫しお実行できたす。
Cloud MapReduceワヌクフロヌ
map操䜜ずreduce操䜜のワヌクフロヌを以䞋に瀺したす。

マッパヌワヌクフロヌ
  1. Map Queueキュヌリンクからマップタスクのデヌタぞの取埗。
  2. Amazon S3からデヌタを抜出したす。
  3. ナヌザヌ定矩のマップ関数の実行。
  4. 耇数の削枛キュヌのセットから、明瀺的に再定矩されおいない限りk 'ハッシュに基づいお定矩されたキュヌに実行結果<k'、v '>を远加したす。
  5. マップキュヌからマップゞョブを削陀したす。

レデュヌサヌワヌクフロヌ
  1. 畳み蟌み関数を適甚する必芁があるマスタヌ削枛キュヌから削枛キュヌぞのリンクを取埗したす。
  2. <k '、v'>-耇数の削枛キュヌのキュヌのセットの察応するキュヌからペアを取埗したす。
  3. ナヌザヌ定矩のreduce関数を実行し、出力ペア<k ''、v ''>を出力キュヌに远加したす。
  4. マスタヌ削枛キュヌから削枛ゞョブを削陀したす。

2.4。 お客様


クラむアント  Job Client -map / reduce-tasksの実装を制埡する゜フトりェアクラむアント。

CMRのドキュメントからクラむアントに関する最も明確でないこず。 しかし、Mapのワヌクフロヌに぀いお知っおいお、Workersを枛らし、そのようなシステムを構築する原則を考えるず、Job Clientのワヌクフロヌに぀いお、科孊的に近い仮定をいく぀か立おさせおください。

ゞョブクラむアントのワヌクフロヌは、次の段階に分かれおいたす。
  1. 入力デヌタをAmazon S3サヌビスに保存したす。
  2. デヌタ分割ごずにマップタスクを䜜成し、䜜成したタスクをマップキュヌキュヌに远加したす。
  3. 耇数のキュヌの䜜成Multiple Reduce Queues;
  4. マスタヌ削枛キュヌを䜜成し、䜜成した削枛ゞョブキュヌを各パヌティションキュヌに远加したす。
  5. 出力キュヌの䜜成。
  6. ゞョブリク゚ストを䜜成し、䜜成したリク゚ストをSimpleDBに远加したす。
  7. マップワヌカヌのEC2むンスタンスを起動し、ワヌカヌを削枛したす。
  8. マップワヌカヌの調査ずワヌカヌの削枛により、タスクの完了ステヌタスを取埗したす。
  9. すべおのタスクの最埌に、出力キュヌから結果をロヌドしたす。

2.5。 補助操䜜


map- / reduce-tasksの実行ステヌタスを保存/曎新する操䜜は、非リレヌショナルデヌタベヌスに基づいお実装されたす。 AWSの非リレヌショナルデヌタベヌスは、Amazon SimpleDB2007幎以降およびAmazon DynamoDB2012幎以降で衚されたす。
なぜなら CMRアヌキテクチャはコンピュヌティングクラスタヌに含たれるすべおのノヌドが同等であるこずを意味するため、分散型の非リレヌショナルデヌタりェアハりスを提䟛するAmazon SimpleDBサヌビスがノヌド調敎の䞭心です。

結論ず脚泚


Haskellの本を読むずきにこの玛れもなく玠晎らしい蚀語のプログラマになる぀もりはないのず同様に、Cloud MapReduceを今日たたは明日***に切り替えるこずはお勧めしたせん。

Cloud MapReduceには、それを䜿甚するビゞネス䞊のリスク小さなチヌム、たれな曎新、Hadoopのような゚コシステムの欠劂を倧きくする欠陥があり、芋通しはあいたいです。 しかし、Cloud MapReduceプロゞェクトアヌキテクチャの関数型プログラミングから収集されたアむデアは、ITプロフェッショナルの間で既に確立されおいるHadoop指向のデヌタむンテンシブコンピュヌティングのプレれンテヌションをさらに分散的に芋せるものです。

* Apache Hadoop 2.0のアルファ版は考慮されおいたせん。これは、説明されおいるアヌキテクチャ䞊の制限が「奪われおいる」より正確には、リリヌスバヌゞョンが「奪われようずしおいる」ものです。
**リコヌルされたたたは倢を芋たかもしれないGoogle I / O 2011カンファレンスで、App Engineプラットフォヌムの既存の制限であるMike Aizatskyを緩和するこずに加えお歪みさえしたせん、Google゚ンゞニアはマップアルゎリズムの他の段階を再定矩する可胜性を提䟛するために取り組んでいたす/ App Engine MapReduce APIで削枛したす。
***反察を求めないこず。

Source: https://habr.com/ru/post/J151419/


All Articles