次ã®çµ±èšæ
å ±*ã䜿çšããŠã
忣ã¢ããªã±ãŒã·ã§ã³ãå®è¡ãã
ããã®äžè¬çãªãã¬ãŒã ã¯ãŒã¯ãæ³åããŠãã ããã

* 2011幎ã®çµ±èšããŒã¿ã
ãããHadoopã§ã¯ãªãããšãæ³åããŠãã ããããããã©ã®ãããªãã¬ãŒã ã¯ãŒã¯ã§ãããããã®åºç€ã«æ®ããããã¢ã€ãã¢ãšæŠå¿µãããã³ãã®ãã¬ãŒã ã¯ãŒã¯ãHadoopãããããã«é©æ°çïŒäž»èгçïŒã§ããçç±ã«ã€ããŠã¯ã以äžã§èª¬æããŸãã
1.ãã©ã€ã¢ãã äžè¬çãªæ
å ±
Dryadã¯
ã忣ã¢ããªã±ãŒã·ã§ã³ãå®è¡ããããã®æ±çšãœãããŠã§ã¢ãã¬ãŒã ã¯ãŒã¯ã§ã ã Dryadã¯ã
Microsoft Researchã®ãããžã§ã¯ãã§ãã Dryadãããžã§ã¯ãã®äžå¿æŠå¿µã¯ãå忣ã¿ã¹ã¯ã®
æåé埪ç°ã°ã©ã ïŒDAGïŒã®æ§ç¯ã§ãã
ã°ã©ãã®é ç¹ã¯ ããŒã¿ ïŒå®éã«ã¯ããã°ã©ã ïŒ
ã«å¯Ÿããæäœã§ ãããã°ã©ãã®
ãšããžã¯ããŒã¿ãéä¿¡ããã
ãã£ãã«ã§ãã
æåéå·¡åã°ã©ãã®ã¢ãã«ã«åºã¥ãæœè±¡åã«ããã倿°ã®
䞊åã¢ã«ãŽãªãºã ã
å埩ã¢ã«ãŽãªãºã ã
æ©æ¢°åŠç¿ã¢ã«ãŽãªãºã ã®å®è¡èšç»ã广çã«å®è£
ã§ããŸãã ãããã£ãŠãHadoop **ã§å®è£
ãããŠããïŒ
YARNã®åã®ïŒ
map / reduceããã°ã©ãã³ã°ã¢ãã«ã¯ãåºæ¬çã«
DryadãæäŸãã忣ã³ã³ãã¥ãŒãã£ã³ã°ã¢ãã«ã®ç¹å¥ãªå Žåã«ãããŸããã
Dryadã¯ãäžèŠæš¡ãŸãã¯å€§èŠæš¡ã®ã³ã³ãã¥ãŒãã£ã³ã°ã¯ã©ã¹ã¿ãŒïŒ100ã10Kã®ã³ã³ãã¥ãŒãã£ã³ã°ããŒãïŒã§å®è¡ããããã«æé©åãããŠãããäž»ã«é »ç¹ãªå¯Ÿè©±ãå¿
èŠãšããªãé·æããããžã§ãã察象ãšããŠããŸãã
2004 ... 2008
Dryadã®éå»ãçŸåšãæªæ¥ã«å¯ŸåŠãã詊ã¿ã¯ãããªãéãããæ°ã®èšäºã«ã€ãªãããŸãããèè
ã¯ãå
ã®æ
å ±æºã§ã¯ãªããæ¬¡ã®ããã«äž»åŒµããŠããŸãã
- ãã®ãããªã·ã¹ãã ãæ§ç¯ãããšããã¢ã€ãã¢ã¯ã2004幎ã«çãŸããŸããïŒGoogle MapReduceãšã®é¡æšïŒãMichaelIsardïŒåŸã«åœŒã¯ãã€ã¯ããœããã®ç ç©¶è
ã«ãªããŸããïŒã
- 2006幎ããã«ã²ã€ãèªèº«ãã³ã³ãã¥ãŒã¿ãŒãµã€ãšã³ã¹äŒè°ã§ãã©ã€ã¢ãèªèº«ãçºè¡šããŸããã
- Dryadã¯ãBingãMicrosoft AdCenterã
Kinect ãWindows HPC Server 2008 R2ïŒåŸè
ãä¿¡é Œæ§ã®é«ããã®ãšããŠç¥ãããŠããŸãïŒã§äœ¿çšãããŠããŸãã
2008 ... 2009
Dryadã§å
·äœåãããæŠå¿µã説æããåºæ¬ææžã®1ã€ã¯ã
OSDI'08 ïŒUSENIX Symposium on Operating Systems Design and ImplementationïŒã§ã
Best Paper ããåè³ããŸããã
2009幎11æãDryadã¯
ã¢ã«ãããã¯ã©ã€ã»ã³ã¹ã®äžã§å©çšå¯èœã«ãªããŸããã
2010 ... 2011
2011幎ã«ãWindows HPCããŒã
㯠ã察å¿ããWindowsãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã©ã€ã³
ã®ãLINQ to HPCã ïŒWindows HPCãµãŒããŒçšã®DryadïŒ
ã®ããŒã¿çãçºè¡šããŸãã ã åã幎ã«ã
LINQ to HPCã¯ãã¬ãã¥ãŒããŒãžã§ã³ãããçµäºããªããããšãçºè¡šãããŸããïŒã€ãŸããå®éã«ã¯ãµããŒãã®çµäºã«ã€ããŠïŒã
2012 ... 2013 / UPD /
Windows HPCããŒã ããDryadãããžã§ã¯ãã®ãµããŒã/éçºã«ã€ããŠäœãèšããªãã£ãïŒãããŠååçã«èšããªãã£ãïŒããšã¯æ³šç®ã«å€ããŸãã ãã©ã€ã¢ãã®ãããªãæ¯æŽããŸãã¯å察ã«ãæç¢ºãªæ¯æŽæåŠã«é¢ãããã®ä»ã®å£°æã¯ãéå»ïŒ2012幎ïŒããã³ä»å¹Žã«æ°ã¥ãããŠããŸããã
2.ãã©ã€ã¢ããšã³ã·ã¹ãã

Dryadãããžã§ã¯ãã¯ã3ã€ã®äž»èŠãªã³ã³ããŒãã³ãã§æ§æãããŠããŸãã
- Dryad-忣ã¢ããªã±ãŒã·ã§ã³ã®ã©ã³ã¿ã€ã ïŒä»¥äžããããŸãããé¿ããããã«ããã®ã³ã³ããŒãã³ããDryad RuntimeãšåŒã³ãŸãïŒ;
- DryadLINQã¯ã.NETèšèªçµ±åããã°ã©ãã³ã°ã¢ãã«ã«åºã¥ããé«ã¬ãã«ã®ã¯ãšãªèšèªã§ãã
ã¯ãšãªïŒLINQïŒ;
- 忣ã¹ãã¬ãŒãžã«ã¿ãã° ïŒDSCïŒã¯ãæ§æå¯èœãªåé·æ§ãåãã忣ãã¡ã€ã«ã·ã¹ãã ã§ãã

以äžã«ãDryadãšã³ã·ã¹ãã ã®èŠçŽ ã§ããDryadã©ã³ã¿ã€ã ã©ã³ã¿ã€ã ãšDryadLINQã¯ãšãªèšèªã詳ããèŠãŠãããŸãã
3.ãã©ã€ã¢ãã©ã³ã¿ã€ã
Dryadã©ã³ã¿ã€ã ã¯ãHadoopãªã©
ã®åæ£ã¢ããªã±ãŒã·ã§ã³ã®
ã©ã³ã¿ã€ã ã§ãã ãæ¬¡ã®ãããªæ©èœãåããŸãã
- 忣ã¿ã¹ã¯ã®ã¹ã±ãžã¥ãŒãªã³ã°ãšç®¡çã
- ãªãœãŒã¹ç®¡çã
- èé害æ§;
- ç£èŠ
Dryadã©ã³ã¿ã€ã ã®ã¿ã¹ã¯ã¯ã
é ç¹ã
ããã°ã©ã ã§ãã
ãã°ã©ãã®
ãšããžã
ããŒã¿ãã£ãã«ã§ãã
æåé埪ç°ã°ã©ãã§ãã ãã®è«çã°ã©ãã¯ãå®è¡å¯èœç°å¢ã«ãã£ãŠã¯ã©ã¹ã¿ãŒå
ã®ç©çãªãœãŒã¹ã«ããããããŸãã äžè¬ã«ãã°ã©ãå
ã®é ç¹ã®æ°ã¯ãã¯ã©ã¹ã¿ãŒå
ã®ç©çã³ã³ãã¥ãŒãã£ã³ã°ããŒãã®æ°ãè¶
ããŸãã

3.1ã ããŒã¿ãã£ãã«
ããŒã¿ãã£ãã«ãšé ç¹ã¯æœè±¡åã§ãããæ¬¡ã®ããã«è¡šãããŸãã
- å
±æã¡ã¢ãªFIFO ïŒãã·ã³å
ïŒïŒæäœïŒã°ã©ãã®é ç¹ïŒéã§ããŒã¿ã亀æããæéã®æ¹æ³ã§ãããæäœã¯åäžã®ã³ã³ãã¥ãŒãã£ã³ã°ããŒãå
ã§å®è¡ããå¿
èŠããããŸãã
- TCPãã€ã ïŒãã·ã³éïŒïŒãã£ã¹ã¯ãžã®ã¢ã¯ã»ã¹ãå¿
èŠãšããªããã£ãã«ïŒãã£ã¹ã¯ããã®ããŒã¿ã®æžã蟌ã¿/èªã¿åãã«é¢é£ãããªãŒããŒããããåé¿ããŸãïŒ; ãã£ãã«ã¯ãéä¿¡æã«ããŒã¿ãéä¿¡ããæäœãå©çšå¯èœãªå Žåã«ã®ã¿äœ¿çšã§ããŸãã
- SMB / NTFSãã¡ã€ã« ïŒäžæãã¡ã€ã«ïŒïŒãã£ãã«çµç±ã§éä¿¡ãããåºåãèšé²ãããŸã
ãã£ã¹ã¯ã«å
¥åããŒã¿ãèªã¿èŸŒãŸããŸãã ããã©ã«ãã®ãã£ã³ãã«ã
忣ã¿ã¹ã¯ãæãå¹ççã«å®è¡ããããã«ã¯ã©ã¹ã¿ãŒã®ç©çãªãœãŒã¹ã«é¢ããæ
å ±ãé瀺ããå¿
èŠãããããããã£ãã«ã®æœè±¡åã¯äžèŠãããšãã¯ãªãŒã³ãã§ã¯ãããŸããã ããã«ããããããã忣ã¢ããªã±ãŒã·ã§ã³ã®éçºè
ã¯ãããã£ãã«ãæœè±¡åã®éåããèªèããŸãããã 圌女ã¯ä»ã®ã¬ãã«ïŒã¿ã¹ã¯ãããŒãžã£ãŒïŒã®äžã«é ããŸããããã«ã€ããŠã¯ä»¥äžã§èª¬æããŸãã
3.2ã ããŒã¿ã¢ãã«
DryadããŒã¿ã¢ãã«ã¯ã
ã·ã§ã¢ãŒãããã·ã³ã°ã¢ãŒããã¯ãã£ã§ãã ãã®ãããªã¢ãŒããã¯ãã£ã®å©ç¹ã¯äŒçµ±çã«
ã¹ã±ãŒã©ããªã㣠ã
倿Žè¿œè·¡ããµããŒãããå¿
èŠæ§ã®äžåšã
è€éãªãã©ã³ã¶ã¯ã·ã§ã³ã®å®è£
ãããã³
åæããªããã£ãã®äœ¿çšã§ãã Dryadãã©ãããã©ãŒã ã¯ã倧éã®éçããŒã¿ã«é©ããŠããŸãããé »ç¹ã«ããŒã¿ã倿ŽãŸãã¯ã¹ããªãŒãã³ã°ããã®ã«ã¯é©ããŠããŸããã
Dryadã¯ã
äžå€ã§
æééã®å
¥åããŒã¿ãåãåãããšãæåŸ
ããŠããŸãã 忣ããã°ã©ã ã®å®è¡çµæã¯ããã¹ãŠã®ã«ãŒãã³ãå®è¡ããããŸã§å©çšã§ããŸããã ã¹ããªãŒãã³ã°ããŒã¿ã䜿çšããã¿ã¹ã¯ã¯ãDryadã§ã¯åºæ¬çã«äžå¯èœã§ãããšæ³å®ããã®ã¯è«ççã§ãã
3.3ã ãžã§ããããŒãžã£ãŒ
Dryadãžã§ãã¯ã
ãžã§ããããŒãžã£ãŒ ïŒJMïŒã«ãã£ãŠèª¿æŽãããŸãã Job Managerã«ã¯ãã¿ã¹ã¯ãèšç®ããããã®ã°ã©ããäœæããããã®ã¢ããªã±ãŒã·ã§ã³åºæã®ã³ãŒããå«ãŸããŠããŸãã
ãžã§ããããŒãžã£ãŒã¯ä»¥äžãæ
åœããŸãã
- èšç®ã°ã©ãã®åæå ã
- ãããã®é ç¹ã«é¢é£ä»ããããç©çããŒããŠã§ã¢ãããããã®é ç¹ã«ãã£ãŠåŠçãããããŒã¿ã«ããããžãŒçã«å¯èœãªéãè¿ããªãããã«ã æäœ ïŒé ç¹ã以äžãé ç¹æäœãšåŒã³ãŸãïŒãèšç»ããŸãã
- èéå®³æ§ ;
- ããã©ãŒãã³ã¹ã®ç£èŠãšçµ±èšã®åé ã
- æ¢åã®ããªã·ãŒã«åŸã£ãã°ã©ãã®åçãªå€æ ã
ã¢ããªã±ãŒã·ã§ã³ããŒã¿ã¯ãé ç¹æäœããé ç¹æäœã«çŽæ¥éä¿¡ãããŸãã Job Managerã¯ã忣ã¿ã¹ã¯ã®å®è¡ã®åæåãã¹ã±ãžã¥ãŒãªã³ã°ãããã³ç£èŠã®ã¿ãè¡ããŸãã ãããã£ãŠã
JMã¯ããã©ãŒãã³ã¹ã®
ããã«ããã¯ã§ã¯ãããŸãã ã ããã«ã転éäžã«ãé ç¹æäœã³ãŒãã¯ãJob ManagerãŸãã¯åæ§ã®é ç¹æäœãå®è¡ãããæãè¿ãã³ã³ãã¥ãŒãã£ã³ã°ããŒããã転éã§ããŸãã
3.4ã ããŒã ãµãŒããŒã ããŒã¢ã³
ããŒã ãµãŒããŒ
ããŒã ãµãŒããŒã¯ã䜿çšå¯èœãªèšç®ããŒããšã¯ã©ã¹ã¿ãŒå
ã®ããããžã®å Žæã«é¢ããæ
å ±ã®é瀺ãæ
åœããŸãã
ããŒã¢ã³ããã»ã¹ã¯åã³ã³ãã¥ãŒãã£ã³ã°ããŒãã§èµ·åãããŸãããã®äž»ãªç®çã¯ããžã§ããããŒãžã£ãŒã«ãã£ãŠéä¿¡ãããé ç¹æäœãèµ·åããããšã§ãã ããŒã¢ã³ã¯ãããã·ãªããžã§ã¯ããšããŠæ©èœããããããžã§ããããŒãžã£ãŒã¯ããªã¢ãŒãããŒã¢ã³ã«ãã£ãŠèµ·åãããé ç¹æäœã®ã¹ããŒã¿ã¹ãšã¹ããŒãžãèŠã€ããããšãã§ããŸãã
Dryadã¢ãŒããã¯ãã£ãšã
ãžã§ããããŒãžã£ ã
ããŒã ãµãŒã㌠ïŒNSïŒãããã³
ããŒã¢ã³ ïŒPDïŒã®ãã®ã¢ãŒããã¯ãã£å
ã®å Žæã以äžã«ç€ºããŸãã

ã€ã©ã¹ãã®ãœãŒã¹[3]
ïŒ
å³ã®èª¬æ ïŒJMã¯NSããåä¿¡ãã䜿çšå¯èœãªããŒããšãã®å Žæã®ããŒã¿ã«åºã¥ããŠå®è¡ã°ã©ããåæåããŸããJMã¯ã°ã©ãã®å®è¡ãç£èŠããPDããã¹ããŒã¿ã¹ãåãåããŸããçŸåšå®è¡äžã®æäœã瀺ããŸããïŒ
3.5ã åçãªã°ã©ã倿Ž
ãžã§ããããŒãžã£ãŒã¯ãHadoopã®JobTrackerãšåæ§ã«ã
éçãªããã©ãŒãã³ã¹ã®æé©åãæäŸã
ãŸã ã ãã ããHadoopãšã¯ç°ãªããDryadã«ã¯
ããã©ãŒãã³ã¹ã
åçã«æé©åããæ©èœããããŸãã
æåéå·¡åã°ã©ãã® Dryadã®äžå¿æŠå¿µãš
ã³ãŒã«ããã¯ã¡ã«ããºã ã®ãµããŒãïŒã³ãŒã«ããã¯ã¯é ç¹æäœã®å®è¡ãã§ãŒãºã®å€æŽã«ã€ããŠJMã«éç¥
ããŸãïŒã®ãããã§ãå®è¡ã°ã©ãã¯ã©ã³ã¿ã€ã äžã«å€æŽã§ããŸãã åçãªå€æŽã«ãããæ¬¡ã®åé¡ãéåžžã«ãšã¬ã¬ã³ãã«è§£æ±ºã§ããŸãã
- è€æ°ã®ããŒããå¥ã®ããŒãã®å
¥åã«ããŒã¿ã転éããå¿
èŠãããå Žåã®ãããã¯ãŒã¯åž¯åå¹
ã®äœäž ïŒHadoopã§ã¯ãCombineã¹ããŒãžãšReduceã¹ããŒãžéã§ããŒã¿ã転éãããšãã«ãã®ãããªäœäžã芳å¯ãããŸãïŒ;

- ãé
ããæäœã®å®äºãåŸ
ã€ããã®åçŽãªã³ã³ãã¥ãŒãã£ã³ã°ããŒã ïŒHadoopã§ã¯ããã¹ãŠã®ãããã¿ã¹ã¯ãå®äºãããŸã§ç³ã¿èŸŒã¿ãéå§ã§ããªããããåçŽãªãããã¹ããããçºçããããã°ã©ã ã®æé©ãªå®è¡æéããæãé
ãããããã®å®è¡æéãšçãããªããŸããã¿ã¹ã¯ïŒã

ããã«ãå®è¡æã®ã°ã©ãã®åçãªå€æŽãšç¹å®ã®ããŒã¿è»¢éæ¹æ³ããã®ããã£ãã«ãã®æŠå¿µã®æœè±¡åã«ãããããŒã¿ãç©ççã«æ ŒçŽãããŠããããŒãããã ãã§ãªããããŒã¿ãé ç¹ã«å°éã§ããããšãéèŠã§ãïŒã€ãŸããå®è£
ãããŠããªãå Žåã¯å®è£
ããããšãå¯èœã§ãïŒããããŸãïŒ
- 1ã€ã®ããŒã¢ã³ã¯ãäžéããŒã¿ãå«ãäžæãã¡ã€ã«ãé ç¹æäœã«å¯ŸããŠããŒã«ã«ãªã©ãã¯ã«ä¿åã§ããŸãããã®æäœã§ã¯ããã®ããŒã¿ãå
¥åãšããŠåãå
¥ããããŸãã
- 1ã€ã®ããŒã¢ã³ã¯ããã®ããŒã¿ãå
¥åãšããŠåãå
¥ããé ç¹æäœãåãèšç®ããŒãã§å®è¡ãããŠããå Žåããã¹ãã®RAMã«ããŒã¿ãä¿åã§ããŸãã
3.6ã åŒŸåæ§
åè¿°ã®ããã«ãããŒã¢ã³ã¯ãããã·ã§ããããããžã§ããããŒãžã£ãŒã¯ãªã¢ãŒãããŒã¢ã³ã«ãã£ãŠèµ·åãããé ç¹æäœã®ã¹ããŒã¿ã¹ãšã¹ããŒãžãèŠã€ããããšãã§ããŸãã ããŒã¢ã³ããã¯ã©ãã·ã¥ãããå Žåããžã§ããããŒãžã£ãŒã¯ãããèªèããŸãã
- ããŒã¢ã³ãèªèº«ã®ããã»ã¹ãéããåã«JMã«éä¿¡ãããšã©ãŒã¡ãã»ãŒãž
- ããŒã¢ã³ãéãããšãã«JMã«èšºæã€ãã³ããéä¿¡ãããªãã£ãå Žåã«åããŠãããŒãããŒãã¡ãã»ãŒãžã®æå¹æéãŸã§ã
PDã®é害ã蚺æããåŸãPDã§å®è¡ãããæäœã¯å¥ã®ããŒã¢ã³ã§åå®è¡ãããŸãã

ããŒã ãµãŒããŒãã¯ã©ãã·ã¥ããå Žåã«äœãèµ·ãããã«ã€ããŠãDryadã®ããã¥ã¡ã³ãã«ã¯æ
å ±ãèŠã€ãããŸããã§ããã NSããã»ã¹ããã®ããŒãããŒãããªãå ŽåãJob Managerã¯å¥ã®ããŒãã§NSãåèµ·åãããšæ³å®ããã®ã劥åœã§ãã NSã責任ãè² ãæ
å ±ãé瀺ããããã®ãã¯ã©ã¹ã¿ãŒã®èšç®èœåã®äžéšã§ããããŒã ãµãŒããŒã®ããŠã³ã¿ã€ã äžã«ãåã«ããã©ãŒã«ã¢ãŠããããŸãã
ãŸããJob Managerãåäžé害ç¹ã«ãªããªãããã«ããããã«ã©ã®ãããªå¯Ÿçãè¬ãããããã¯ãããã¥ã¡ã³ãããæããã«ãªããŸããã§ããã å忣ã¢ããªã±ãŒã·ã§ã³ã«ç¬èªã®ãžã§ããããŒãžã£ãŒãããå Žåããžã§ããããŒãžã£ãŒã忢ããŠããName Nodeã倱æããå Žåã®Hadoopã®å Žåã®ããã«ãã¯ã©ã¹ã¿ãŒå
šäœã®ããŠã³ã¿ã€ã ã¯çºçããŸããã
ãã ãã忣ã¢ããªã±ãŒã·ã§ã³ããšã«åå¥ã®JMããã»ã¹ãååšãããšãããã«2ã€ã®åé¡ãçºçããŸãã
- Job Managerã®åæåã«ããã£ãæé
- ãªãœãŒã¹å
±æã®åé¡ãJob Managerã¯ç©ºããªãœãŒã¹ïŒCPUãRAMã垯åå¹
ïŒã®éããé©åã«ãæšå®ã§ããŸããã ãã®ç©çã³ã³ãã¥ãŒãã£ã³ã°ããŒããåŠçããŠããJMããã»ã¹ãããã«ããã€ãããã¯ããããŸããã
4.ç·Žç¿
ãã©ã€ã¢ãã¯ã¢ã«ãããã¯ã©ã€ã»ã³ã¹ã®äžã§ç¡æã§å
¥æã§ããŸã[4]ã ãã¬ãŒã ã¯ãŒã¯ãéå§ããã«ã¯ãMicrosoft HPC Pack 2008 SP1ã4 Gb RAMã1 Gb Ethernetãããã³ã¯ã©ã¹ã¿ãŒã®åããŒãã«200 Gbã®ç©ºã容éãããWindows HPCã¯ã©ã¹ã¿ãŒãå¿
èŠã§ã[1]ã
Dryadã¢ããªã±ãŒã·ã§ã³ã¯ãC ++ãšCïŒã®äž¡æ¹ã§äœæã§ããŸãïŒCLSäºæèšèªãé©åã§ãããšæ³å®ããã®ã¯åççã§ãïŒã
Dryadã®æäœã®åæ£å®è¡ã®åœä»€ã¯æ¬¡ã®ãšããã§ãïŒInitialReduceãCombineãInitializeãIterateãMergeã¯ã忣å®è¡ã®å¯Ÿå¿ããã¹ããŒãžãæ
åœãã颿°ã®ååã§ãããªã¹ãã®äŸã§ã¯ç®è¡å¹³åãèæ
®ããŠããŸãïŒã
///<summary>For iterator-based implementation</summary> [AssociativeDecomposable("InitialReduce", "Combine")] public static TOutput H(IEnumerable<TInput> source) { ⊠}
ãªã¹ã1.ã€ãã¬ãŒã¿ãŒããŒã¹ã®å®è£
äŸ ãœãŒã¹[2]ã 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; } [AssociativeDecomposable("InitialReduce", "Combine")] public static IntPair PartialSum(IEnumerable<int> g) { return InitialReduce(g); } 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()); }
///<summary>For accumulator-based implementation</summary> [AssociativeDecomposable("Initialize", "Iterate", "Merge")] public static TOutput H(IEnumerable<TInput> source) { ⊠}
ãªã¹ã2.ã¢ãã¥ã ã¬ãŒã¿ãŒããŒã¹ã®å®è£
äŸã ãœãŒã¹[2]ã public static double Average(IEnumerable<int> g) { IntPair final = g.Aggregate(x => PartialSum(x)); if (final.second == 0) return 0.0; else return (double)final.first / (double)final.second } [AssociativeDecomposable("Initialize", "Iterate", "Merge")] public static IntPair PartialSum(IEnumerable<int> g) { return new IntPair(g.Sum(), g.Count()); } public static IntPair Initialize() { return new IntPair(0, 0); } public static IntPair Iterate(IntPair x, int r) { x.first += r; x.second += 1; return x; } public static IntPair Merge(IntPair x, IntPair o) { x.first += o.first; x.second += o.second; return x; }
DryadLINQã¯ãšãªèšèªã¯ã³ãŒãã®è€éããã«ãã»ã«åãããããäžè¬ã«ãã¢ããªã±ãŒã·ã§ã³éçºè
ã¯ãªã¹ãã«ãªã¹ããããŠãããã¶ã€ã³ãæžãå¿
èŠã¯ãããŸããã DryadLINQã«ã€ããŠã¯ããã®ã·ãªãŒãºã®æ¬¡ã®èšäºã§èª¬æããŸãã
5.å¶éãšæ¬ ç¹
çµè«ãšããŠãDryadã®å¶éãšããã®ã¯ã©ã¹ã®ãœãããŠã§ã¢ã®ç®çã®èª€è§£ã«äž»ã«é¢é£ããã誀ã£ããæåŸ
ãç°¡åã«ç¢ºèªããŸãã
Dryadã®äž»ãªå¶éã®1ã€ã¯ã
ãªã¢ã«ã¿ã€ã ã¢ãŒãã§ã®åäœã«é©å¿ããããšã®é£ãããšããããã
ã¹ããªãŒãã³ã°ããŒã¿ã§ã®åäœã®
æ ¹æ¬çãªäžå¯èœæ§ã§ã ã ãŸããDryadãã¬ãŒã ã¯ãŒã¯ã¯ãããã¿ã¹ã¯ã«å¯ŸããŠåªããå¹çãçºæ®ããŸãããDraydã®äœ¿çšã¯ã©ã³ãã ã¢ã¯ã»ã¹æäœã§ã¯æ£åœåãããªãããšã远å ããå¿
èŠããããŸãã ããã«ããžã§ããããŒãžã£ãŒããžã§ããããŒãžã£ãŒããã¯ã©ãã·ã¥ãããããšãïŒã¢ããªã±ãŒã·ã§ã³ã¬ãã«ã§ïŒ
åäžé害ç¹ã®æœåšçãª
åé¡ã«æ³šæããŸãïŒãã®ãããªé害ç¹ã¯ãªããããããŸããããããã¥ã¡ã³ããããã®åé¡ã®è§£æ±ºæ¹æ³ã¯æç¢ºã§ã¯ãããŸããïŒã
ãŸããDryadã¯
忣ã³ã³ãã¥ãŒãã£ã³ã°ãã¬ãŒã ã¯ãŒã¯ã«ãããªãããšãçè§£ããå¿
èŠããããŸãããããã£ãŠãDryadã«æåŸ
ããããšã¯ã§ããŸããã
- RDBMSã§ã¯ãªãããã ãã©ã³ã¶ã¯ã·ã§ã³ãµããŒã ã
- Dryadã¯æ ¹æ¬çã«ç°ãªãããŒã«ã§æ ¹æ¬çã«å¹
åºãåé¡ã解決ããããã GPUã³ã³ãã¥ãŒãã£ã³ã°ã«å¹æµããããã©ãŒãã³ã¹ ã
- ãªãŒãã³ãœãŒã¹ã©ã€ã»ã³ã¹ã ãã
ãã€ã¯ããœãã ããšããšã¯ç°ãªãã¿ã€ãã®è£œåïŒãã ããã¢ã«ãããã¯ã©ã€ã»ã³ã¹ã§ã¯åŒãç¶ãç¡æã§ã¢ã¯ã»ã¹ã§ããŸãïŒã
- ãããã®ãã¬ãŒã ã¯ãŒã¯å
ã§åäœãã忣ã¢ããªã±ãŒã·ã§ã³ã®è¿
éãªéçº /ãã©ãã€ã ã®åæžãDryadã¯Hadoopã§ã¯ãªãããã§ããããã/åæžã¢ãã«ã¯ãDryadã®ç¹æ®ãªã±ãŒã¹ã«ãããŸããããHadoopã®å Žåã¯å¯äžã®å®è¡ã¢ãã«ã§ãã
ãããã«
Dryadã®æ®ãã®éšåã¯
ã忣ã¢ããªã±ãŒã·ã§ã³éçºè
åãã®åŒ·åã§æè»ãªæœè±¡åã§ãã ãã©ãããã©ãŒã ã¯ã䞊åãœãããŠã§ã¢ã®éçºã«é¢ããææ°ã®æŠå¿µãšã¢ã€ãã¢ã®æ¥µããŠææ©çãªå
±çã§ããã䜿ãæ
£ããèšèªããŒã«ãšã忣ã³ã³ãã¥ãŒãã£ã³ã°ãã¬ãŒã ã¯ãŒã¯ããã°ãã°çŽé¢ããïŒãããŠãã£ãã«è§£æ±ºãããªãïŒåé¡ã解決ãããšã¬ã¬ã³ããªæ¹æ³ãæäŸããŸã ã
ãœãŒã¹ã®ãªã¹ã
[1]
ãã©ã€ã¢ããããžã§ã¯ã ã Microsoft Researchã
[2] Y. YuãPK GundaãMãIsardã
ããŒã¿äžŠåã³ã³ãã¥ãŒãã£ã³ã°ã®åæ£éçŽïŒã€ã³ã¿ãŒãã§ã€ã¹ãšå®è£
ã2009幎ã
[3] M.ã¢ã€ãµãŒããMãããã£ãŠãYããŠãŒãAããã¬ã«ãããã³D.ãã§ãã¿ãŒãªãŒã
DryadïŒã·ãŒã±ã³ã·ã£ã«ãã«ãã£ã³ã°ãããã¯ããã®åæ£ããŒã¿äžŠåããã°ã©ã ã
ã³ã³ãã¥ãŒã¿ã·ã¹ãã ã«é¢ããæ¬§å·äŒè°ïŒEuroSysïŒã®è°äºé²ã2007幎ã
[4]
Dryadããã³DryadLINQã¢ã«ãããã¯ãªãªãŒã¹ ã Microsoft Researchã
*ã¢ã«ãã¡ãããé ã«ãœãŒããããŠããŸãã
**ãã®èšäºã®æ¯èŒã¯ãHadoopãã©ãããã©ãŒã ã®æåã®ããŒãžã§ã³ïŒã€ãŸããYARNãªãïŒã§ã®ã¿è¡ãããŸãã DryadãšDBMSãGPUã³ã³ãã¥ãŒãã£ã³ã°ãHadoopãã¬ãŒã ã¯ãŒã¯ã®è©³çŽ°ãªæ¯èŒã¯ãDryad
ã·ãªãŒãºã®æçµèšäºã§è¡ãããŸãã