* 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 ã·ãªãŒãºã®æçµèšäºã§è¡ãããŸãã