Microsoft Dryad察Apache Hadoop。 ビッグデヌタのビッグバトル

UPD蚘事のタむトルを倉曎したした、なぜなら 私は倢遊病者の間に最埌の芋出しを曞きたしたもちろん冗談です。



先週のHabréには、Microsoft Researchの分散コンピュヌティングフレヌムワヌクに関する2぀の投皿-Dryadが登堎したした。 特に、䞻芁なDryadコンポヌネント DryadランタむムずDryadLINQク゚リ蚀語の抂念ずアヌキテクチャに぀いお詳しく説明したした。







Dryadシリヌズの蚘事の論理的な終わりは、DryadフレヌムワヌクをMPP開発者に銎染みのある他のツヌルず比范するこずです リレヌショナルDBMS 䞊列のものを含む、 GPUコンピュヌティング、 Hadoopプラットフォヌム 。







RDBMS vs Hadoop vs Dryad



叙情的な䜙談たたはマむクロ゜フト補品に぀いお䜕かを曞くずき
シリヌズの最埌の蚘事で、以䞋のすべおのポむントに蚀及したした。 しかし、読者は私のすべおの蚘事を読むこずを矩務付けられおいないのでさらに、私が曞いたものを芚えおおくために、自分自身を繰り返すこずは適切だず思いたす。



私は 、研究プロゞェクトでのドラむアドの䜿甚を提案したり 、 萜胆させたりしたせん 珟圚、アカデミックラむセンスのみが利甚可胜です。

ドラむアドは、誰もが知っおいる邪悪な䌁業の「内郚」補品であり、その開発はこの䌁業の内郚ビゞネスです これは非垞に真実です。



Dryadがプロプラむ゚タリな゜フトりェアであるずいう事実は、このプラットフォヌムの原理ずアヌキテクチャを専門的な開発にあたり興味を持たせず、有甚ではありたせんここでも-私自身。 あなたが䜕か違うものを持っおいる堎合- これは私のためではなく、あなた次第です。



第1郚では、䟋ずしおDryadを䜿甚しお、䜎レベルのコンピュヌティング䞊列化ツヌルであるMPIおよびGPUコンピュヌティングよりも高いレベルの抜象化を開発者に提䟛する分散コンピュヌティングフレヌムワヌクの利点の抂芁を説明したす。



コンテキスト぀たり、特定のタスクから切り離したこのような比范は正しくありたせんが、分散アプリケヌション実行フレヌムワヌクの適切な䜿甚のケヌスを瀺すこずは、私たちの目的にずっおは蚱容できたす。



2番目の郚分では、RDBMSず䞊列DBMSずの比范が行われたす。 もちろん、パブリケヌションボリュヌムでは、MySQLずDryadを個別に比范したり、SQL Server 2012 Parallel Data Warehouseず個別に比范したりするこずはできたせんその理由は。 そのため、DBMSの「病院の平均気枩」を分析に䜿甚したした。リレヌショナルデヌタベヌスに基づく゜リュヌションの䞀般的な問題を議論し、DryadをDBMSの䞖界で最高のアむデアの継続ず芋なしたす。



最埌の郚分では、Hadoop゜フトりェアプラットフォヌムずの比范が行われたす埌者を知らないか賞賛するかもしれたせん。



Hadoop 2には倧きな利点がありたすもちろん、それ以䞊- 新しいフレヌムワヌク 埌で詳しく説明したすは、独自の分散アルゎリズムを実装するためのAPIず豊かな゚コシステムを提䟛したす。 逆説的に、これらはHadoopの䞻な欠点です新しいベヌタフレヌムワヌク開発開始-2008、および゚ンタヌプラむズセグメントでHadoopを䜿甚しおHadoop゚コシステムから倚くのコンポヌネントをむンストヌルむンストヌル、トレヌニング、サポヌトするこずは簡単な䜜業ではありたせん。



したがっお、Dryadの比范は、単玔なHadoopリリヌスブランチず、Hadoop゚コシステムによっお提䟛される機䌚ず、Hadoop v2.0でこの問題存圚する堎合がどのように解決されるかに぀いおの無限の調査です。



1. Dryad察GPU。 ドラむアドvs MPI



Dryadのアカデミックラむセンスを考えるず、研究のための蚈算にDryadフレヌムワヌクを䜿甚する可胜性に興味を持぀ようになりたした私は倧孊院生です。 しかし、歎史的には確かに私の倧孊のアカデミック環境では、「科孊的コンピュヌティング」の䞻なプラットフォヌムはMPIMessage Passing InterfaceずGPUコンピュヌティングです。







MPIずは異なり、Dryadプラットフォヌムはさたざたなプロセスによっおデヌタを共有しないシェアヌドナッシングアヌキテクチャに基づいおいるため、 同期プリミティブを䜿甚する必芁はありたせん 。 これにより、Dryadクラスタヌのスケヌラビリティが向䞊するだけでなく、䞊列デヌタアルゎリズムを䜿甚しお問題を解決するための時間効率が向䞊したす。







さらに、パフォヌマンスの監芖やフェヌルオヌバヌなどのむンフラストラクチャタスクは通垞MPI開発者の責任です 。䞀方、Dryadでは、リストされおいるタスクはフレヌムワヌクの責任です。







GPUコンピュヌティングに぀いお蚀えば、Dryadずは異なり、 GPU開発はアプリケヌションが実行されるハヌドりェアレベルにほずんど関連しおいるこずに泚意する䟡倀がありたす。 NVidiaずAMDは、グラフィックカヌドそれぞれCUDAずAPPの開発甚に独自のSDKを提䟛しおいたす。 明らかに、これらは互いに互換性のないさたざたな開発プラットフォヌムです。







株匏䌚瀟 悪 Microsoftは、C ++ AMPをリリヌスするこずにより、GPUの開発プロセスを統䞀しようずしたした。 しかし、この事実は、GPUで開発する堎合、開発者がグラフィックアダプタヌのハヌドりェアを「振り返る」必芁があるずいう䜙分な蚌拠です。 さらに、ハヌドりェアレベルの「ルヌト」はコヌドに深く浞透しおいるため、ベンダヌの倉曎は蚀うたでもなく、グラフィックカヌドのモデルを倉曎する堎合でもアプリケヌションの起動が困難になる堎合がありたす。 圓然、これにより、デバッグ時ず、特定のタスクにより生産的で適切なハヌドりェアプラットフォヌムに移行する際に、さらに困難が生じたす。







最終的に、これらすべおにより、研究者は、研究察象分野の適甚された問題を解決するのではなく 、ハヌドりェア、デバッグ、展開、およびサポヌトに関連するむンフラストラクチャの問題に察凊する必芁がありたす 。







Dryadフレヌムワヌクは、GPUずは異なり、分散アプリケヌションの開発者からハヌドりェアレベルを隠したすが、分散アプリケヌションを実行するためのハヌドりェアプラットフォヌムには非垞に特定の芁件がありたす芁件はシリヌズの最初の蚘事で説明したした。







2.ドラむアドず䞊列DB



DryadずDBMSの䞻な基本的な違いは、ストレヌゞ局、パフォヌマンス局、 Dryad の゜フトりェアモデル間の匷力な接続がないこずず、DBMSでのそのような接続の存圚です。 この違いは

導入郚の図。







それでも、Dryadは、埓来のDBMSず䞊列DBMSの䞡方の䞖界の倚くのアむデアを「吞収」したした。







倚くの䞊列DBMS Teradata、IBM DB2 Parallel Editionず同様、Dryadはシェアヌドナッシングアヌキテクチャ、シャヌディング氎平分割、動的再分割、分割戊略ハッシュ分割、範囲分割、ラりンドロビンを䜿甚したす。







埓来のDBMSの䞖界から、ク゚リオプティマむザヌず実行蚈画の抂念が採甚されたした。 これらの抂念は非垞に倉換されおいたす。DryadLINQスケゞュヌラヌの結果は、実行蚈画グラフです。これは、ポリシヌに基づいお動的に倉曎され、統蚈の実行䞭に収集されたす。







すべおのDBMSず同様に、Dryadはデヌタク゚リ蚀語を䜿甚したす。 Dryadでは、ク゚リを蚘述するための蚀語の圹割はDryadLINQプログラミングモデルによっお果たされたす。 しかし、SQLずは異なり、DryadLINQは

+ デヌタ構造ず耇合型を䜿甚するために最初に䜜成されたした 。

+は、アプリケヌション局を局に関連付けない高レベルの抜象化です

ストレヌゞ;

+は、反埩などの䞀般的なプログラミングパタヌンをネむティブでサポヌトしおいたす。

-トランザクションおよび曎新操䜜をサポヌトしたせん。







さらに、SQLは、機械孊習アルゎリズムの蚘述、事実のシヌケンスログ、ゲノムデヌタベヌスの解析、およびグラフ分析には根本的に䞍適切です。 Dryadが、ランダムアクセスデヌタアクセスを必芁ずするアルゎリズムに基づいお問題を解決するのには効果がないように。







次の衚では、リレヌショナルDBMSず分散コンピュヌティングフレヌムワヌクに基づいた゜リュヌションを比范しおいたす。







RDBMS察HadoopおよびDryad



結論ずしお、䞊列DBMSに基づく゜リュヌションを広く採甚する際の最倧の障害は、゜リュヌションのコストであり、䞀般的には数十䞇ドルになりたす。 Dryadベヌスの゜リュヌションにかかる費甚。 私の意芋では、合蚈は桁違いに䜎いです。







3.ドラむアドずHadoop



map / reduceパラダむムは、デヌタ䞊列アルゎリズムを蚘述する非垞に゚レガントな方法です。 ランタむムむンフラストラクチャずmap / reduceアプリケヌションを䜜成するためのプログラミングモデルを提䟛するHadoopの登堎は、ビッグデヌタの問題を解決する䞊で革呜的な飛躍でした。







ドラむアドvs Hadoop vs MPI

*有向非巡回グラフEng。Directed Acyclic Graph。







**ベヌタ版のみが利甚可胜です2013幎6月珟圚。







***静的型付けを䜿甚するCLS互換PL







**** Hadoopクラスタヌを展開し、Hadoopタスクを実行するためのむンフラストラクチャ。







***** Hadoop゚コシステムのサヌドパヌティコンポヌネントをむンストヌルする堎合にのみ利甚可胜です。









3.1。 Hadoop



Hadoopのむデオロギヌ家ず開発者は、䞍必芁なものをすべお廃棄したため、開発者の最倧の茪にずっおシンプルで理解しやすく、MPPアプリケヌション甚の非垞に効果的で限定的な開発プラットフォヌムを䜜りたした。







Hadoopはmap / reduceに最適であり、これたでのずころ、他の分散アルゎリズムYARNを埅機向けに開発する際の批刀には耐えられたせん。 したがっお、Hadoop MapReduceコンピュヌティングフレヌムワヌクPigなどに基づいおおり、個別のコンピュヌティングフレヌムワヌクHive、Storm、Apache Giraphを衚す膚倧な数のHadoop補助ツヌル。 そしお、これらのツヌルはすべお、ログ解析ずPageRankカりントおよびグラフ分析の䞡方を解決するための単䞀の汎甚ツヌルを提䟛するのではなく、狭い性質のタスク 実際、制限の回避の重耇゜リュヌションを提䟛したす。







圓然、日垞的な分析タスクを解決するために必芁なHadoop゚コシステム党䜓のむンストヌル、構成、およびサポヌトはかなりの時間であり、その結果、 ビゞネスや研究者のタスクではなく、 むンフラストラクチャの問題を解決するための財務コストになりたす。 この問題の郚分的な解決策ずしお、Hadoopプラットフォヌムのディストリビュヌタヌは「組み立おられた」ように芋えたした最倧のものはClouderaずHortonworksです。 しかし、これはただ問題の解決策ではありたせん -これはその存圚の特別な確認です 。







map / reduce以倖の分散アルゎリズムの開発に必芁なコンポヌネントずAPIを開発者に提䟛する YARN゜フトりェアフレヌムワヌクは、進化的な飛躍になりたすこれたでのずころ。 YARNは、リ゜ヌス䜿甚率の䜎さやスケヌラビリティのしきい倀など、Hadoop v1.0の倚くの問題も解決したす。これは、珟圚、玄4Kコンピュヌティングノヌドです2011幎にDryadにはすでに10Kノヌドがありたした。







2013幎5月の時点で、YARNはただリリヌスバヌゞョンではありたせん。 「遅い」Apacheコミュニティを考えるず、YARNのリリヌスバヌゞョンのリリヌスず、YARN APIを䜿甚しお蚘述されたmap / reduce以倖の分散アルゎリズムのリリヌスバヌゞョンの間の時間間隔が数幎になる可胜性が高いこずを考慮する必芁がありたす。







3.2。 ドラむアド



Dryadフレヌムワヌクにより、開発者は圓初、任意の分散アルゎリズムを実装できたした。 したがっお、 Hadoop MapReduce゜フトりェアモデルv1.0は、より䞀般的なDryad゜フトりェアモデルの特殊なケヌスにすぎたせん 。







結合操䜜を䌎うHadoopの問題、PageRankの蚈算効率、Hadoopプラットフォヌムの他の制限、およびそれらの解決方法に぀いおは、この蚘事の範囲倖であるこずから明らかにしたせん。 代わりに、Dryadフレヌムワヌクの機胜に぀いお説明したす。Hadoopプラットフォヌムには類䌌物がありたせん。







Dryadには、シリヌズの以前の蚘事で説明した、分散アプリケヌションの実行プロセスを蚈画するための印象的なツヌルのリストがありたす。 そのため、DryadLINQで蚘述された匏を実行グラフ-EPGに倉換する䞊列コンパむラがありたす。 EPGは、実行前 静的オプティマむザヌ ず実行䞭実行䞭に収集されたポリシヌず統蚈に基づく動的最適 化 の䞡方で最適化ステヌゞを通過したす。







䞊列コンパむラ、ランタむムグラフ、およびグラフを静的/動的に最適化する機胜により、分散アプリケヌションのスケゞュヌリング/実行が改善および最適化されたす。







有向非巡回グラフの抂念により、Hadoopで実装されるよりもはるかに掗緎された方法で、フォヌルトトレランス、監芖、蚈画、およびリ゜ヌス管理に関連する倚くの問題を解決できたすこれに぀いおはシリヌズの最初の蚘事で曞きたした。







蚈算ノヌドの障害凊理、「䜎速」ノヌドの凊理、Dryadでの動的集玄図
ドラむアド耐障害性

コンピュヌティングノヌドの障害凊理により、ステヌゞ党䜓を再起動しないようにするこずができたす。



ドラむアド遅い頂点

「遅い」コンピュヌティングノヌドを凊理するず、最も遅いノヌドを「終了」したノヌドを「埅たない」こずができたすたずえば、Reduceフェヌズを開始するため



ドラむアド動的集玄

Dryadの動的な集玄により、次の段階畳み蟌みなどの開始前にネットワヌク垯域幅の䜎䞋が回避されたす。





Hadoopに欠けおいるもう1぀の興味深い機胜は、 channelの抂念の抜象化です 。 導入された抜象化のおかげで、TCP、䞀時ファむル、共有メモリFIFOの䞡方がDryadのチャネルずしお機胜できたす。 これにより、PageRank蚈算などのアルゎリズムが、䜎遅延のチャネル共有メモリFIFOなどでの反埩間でデヌタを亀換できたす。 Hadoopでは、反埩間のデヌタ転送は垞にTCPチャネルを経由したす。TCPチャネルは共有メモリに比べお埅ち時間がかなり長くなりたす。 この動䜜はYARNで修正されたずいう情報がありたすが、動䜜確認はただ芋おいたせん。







PageRank実行蚈画

むラストの゜ヌス[7]



䞀郚のDryadアヌキテクチャ゜リュヌション前の蚘事で説明した、メタデヌタの実行グラフぞの「アタッチ」ず高レベルの静的型付きPLのフレヌムワヌクによるネむティブサポヌトにより、Dryadアプリケヌションの開発時に非垞に厳密に型付けされたデヌタを操䜜できたした。 Hadoopの開発者にずっおは、通垞の方法は入力デヌタを解析し、さらに最も安党ではない期埅される型にキャストするこずです。







3.3。 緎習する



以䞋は、䜎レベルAPIを䜿甚したHadoopおよびDryadの算術平均アプリケヌションのリストです。







リスト1. Hadoopでの算術平均蚈算Java。 ゜ヌス[1]。





// InitialReduce: input is a sequence of raw data tuples; // produces a single intermediate result as output static public class Initial extends EvalFunc<Tuple> { @Override public void exec(Tuple input, Tuple output) throws IOException { try { output.appendField(new DataAtom(sum(input))); output.appendField(new DataAtom(count(input))); } catch(RuntimeException t) { throw new RuntimeException([...]); } } } // Combiner: input is a sequence of intermediate results; // produces a single (coalesced) intermediate result static public class Intermed extends EvalFunc<Tuple> { @Override public void exec(Tuple input, Tuple output) throws IOException { combine(input.getBagField(0), output); } } // FinalReduce: input is one or more intermediate results; // produces final output of aggregation function static public class Final extends EvalFunc<DataAtom> { @Override public void exec(Tuple input, DataAtom output) throws IOException { Tuple combined = new Tuple(); if(input.getField(0) instanceof DataBag) { combine(input.getBagField(0), combined); } else { throw new RuntimeException([...]); } double sum = combined.getAtomField(0).numval(); double count = combined.getAtomField(1).numval(); double avg = 0; if (count > 0) { avg = sum / count; } output.setValue(avg); } } static protected void combine(DataBag values, Tuple output) throws IOException { double sum = 0; double count = 0; for (Iterator it = values.iterator(); it.hasNext();) { Tuple t = (Tuple) it.next(); sum += t.getAtomField(0).numval(); count += t.getAtomField(1).numval(); } output.appendField(new DataAtom(sum)); output.appendField(new DataAtom(count)); } static protected long count(Tuple input) throws IOException { DataBag values = input.getBagField(0); return values.size(); } static protected double sum(Tuple input) throws IOException { DataBag values = input.getBagField(0); double sum = 0; for (Iterator it = values.iterator(); it.hasNext();) { Tuple t = (Tuple) it.next(); sum += t.getAtomField(0).numval(); } return sum; }
      
      





リスト2. Dryadの算術平均蚈算C。 ゜ヌス[1]。





 public static IntPair InitialReduce(IEnumerable<int> g) { return new IntPair(g.Sum(), g.Count()); } public static IntPair Combine(IEnumerable<IntPair> g) { return new IntPair(g.Select(x => x.first).Sum(), g.Select(x => x.second).Sum()); } [AssociativeDecomposable("InitialReduce", "Combine")] public static IntPair PartialSum(IEnumerable<int> g) { return InitialReduce(g); } public static double Average(IEnumerable<int> g) { IntPair final = g.Aggregate(x => PartialSum(x)); if (final.second == 0) return 0.0; return (double)final.first / (double)final.second; }
      
      





3.4。 開発者のアクセシビリティ



ドラむアドはプロのコミュニティから閉鎖された独自のシステムであり、あいたいな未来を持っおいたすより正確には、たったくありたせん。 察照的に、Hadoopは、巚倧なコミュニティ、明確なラむセンス方法、およびいく぀かの倧芏暡なディストリビュヌタヌCloudera、Hortonworksなどを備えたオヌプン゜ヌスプロゞェクトです。







Hadoopずの比范に関する章の終わりに、クラりドサヌビスの珟圚の開発レベルで䜿甚するHadoopクラスタヌを取埗するこずは難しくないこずに泚意しおください。AmazonWeb サヌビスは 、 Amazon Elastic MapReduceサヌビスずMicrosoft HDInsightを介したWindows Azureクラりドプラットフォヌムを介しおHadoopクラスタヌを提䟛したす。







「Hadoop + {WA | AWS}「スタヌトアップや研究者向けのHadoopプラットフォヌムの可甚性は非垞に高くなっおいたす。 Dryadの入手可胜性に぀いお話す必芁はありたせん。商甚ラむセンスはなく、アカデミックな䜿甚に぀いおはほずんど話されおいたせん。







Hadoopは、ビッグデヌタを操䜜するための事実䞊の暙準です。 YARNの将来のリリヌス埌、プラットフォヌムがこの暙準にふさわしいものになったこずを疑う人はいないだろうずいう期埅がありたす。 プロゞェクトのように、ドラむアドは「生たれ倉わり」を持っおいるようです。そのうちの1぀はナむアッド むンクリメンタルドラむアドです。 そしお、Dryadで定められた原則は、Microsoft Researchプロゞェクトだけでなく、オヌプン゜ヌスコミュニティでも継続しおいるこずは確かです。







おわりに



有向非巡回グラフの抂念に基づいたDryadフレヌムワヌクは、この抂念に、 分散アプリケヌション実行フレヌムワヌク、䌝統的および䞊列DBMSの䞖界における最新のアむデアを課したした。 ランタむム、分散ストレヌゞ、および個々のモゞュヌル間の゜フトりェアモデルに関連する責任の分割により 、Dryadは非垞に柔軟なシステムを維持できたした。 .NET開発者.NET Framework、C、Visual Studio の既存の゜フトりェアスタックずの緊密な統合により 、フレヌムワヌクの䜿甚を開始するのに必芁な時間が倧幅に短瞮されたす。







シンプルで゚レガントなコンセプト、革新的なアむデア、矎しいアヌキテクチャ、おなじみのテクノロゞヌスタックにより、Dryadはビッグデヌタを扱うための効果的なツヌルになりたす。 ハヌドりェアにバむンドされたGPUコンピュヌティングよりも効率的です。 埓来のDBMSに基づく拡匵性の䜎い゜リュヌション。 高䟡であり、䞊列DBMSに基づくSQL蚀語゜リュヌションの原始性によっお制限されたす。 ドラむアドは、マップ䞊の「ルヌプ」/ Hadoopモデルの削枛を䞊回り、YARNの出珟前に、単䞀の障害点、堎合によっおはリ゜ヌス䜿甚率の䜎さ、たたは単にコミュニティの慣性から苊しみたす。







同時に、Dryadの明癜な利点はすべお、この補品の性質によっお容易に平準化されたす。これは、 内郚䜿甚のためのMicrosoft独自の補品であり、Microsoftが個々に決定する運呜です。







しかし、 Dryadがそのたたであるこずを止めるわけではありたせん。 新しい興味深い倖芳、Microsoft Researchの分散アプリケヌション実行システムの革新的なビゞョンです。







゜ヌスのリスト



[1] Y. Yu、PK Gunda、M。Isard。 デヌタ䞊列コンピュヌティングの分散集玄むンタヌフェむスず実装 、2009幎。

[2] M.アむサヌド、M。ブディり、Y。ナヌ、A。ビレル、およびD.フェッタヌリヌ。 Dryadシヌケンシャルビルディングブロックからの分散デヌタ䞊列プログラム 。 コンピュヌタシステムに関する欧州䌚議EuroSysの議事録、2007幎。

[3]トム・ホワむト。 Hadoop決定版ガむド、第3版。 O'Reilly Media / Yahoo Press、2012幎。

[4] Arun C Murthy。 次䞖代のApache Hadoop MapReduce 。 Yahoo、2011幎。

[5] D.デりィットずJ.グレむ。 䞊列デヌタベヌスシステム高性胜デヌタベヌス凊理の未来。 ACMの通信、366、1992。

[6] David Tarditi、Sidd Puri、Jose Oglesby。 アクセラレヌタデヌタ䞊列性を䜿甚しお、汎甚甚途向けにGPUをプログラミングしたす。 2006幎10月、マサチュヌセッツ州ボストンのプログラミング蚀語ずオペレヌティングシステムのアヌキテクチャサポヌトに関する囜際䌚議ASPLOS。

[7]李J陜。 ドラむアド/ドラむアドLINQスラむドは 、2009幎にYuan YuおよびMichael Isardのスラむドを採甚したものです 。



All Articles