ã¡ãªã¿ã«ã10æ15æ¥ã«Yandexãªãã£ã¹ã§ãYTã ãã§ãªããä»ã®ã€ã³ãã©ã¹ãã©ã¯ãã£ãã¯ãããžãŒã§ããMedia StorageãYandex Query Languageã ClickHouseã«ã€ããŠã話ããŸãã äŒè°ã§ã¯ãç§å¯ãæããã«ããŸã-Yandexã«ããMapReduceã·ã¹ãã ã®æ°ãæããŸãã
ã©ã®ãããªåé¡ã解決ããŸããïŒ
掻åã®æ§è³ªäžãYandexã¯ãéåžžã®ãŠãŒã¶ãŒãåŠçããå¿ èŠã®ãªãããªã¥ãŒã ã®ããŒã¿ãä¿åããã³åŠçããå¿ èŠæ§ã«åžžã«çŽé¢ããŠããŸãã æ€çŽ¢ãã°ãšã€ã³ããã¯ã¹ããŠãŒã¶ãŒããŒã¿ãå°å³äœææ å ±ãäžéããŒã¿ãæ©æ¢°åŠç¿ã¢ã«ãŽãªãºã ã®çµæ-ãããã¯ãã¹ãŠãæ°çŸãã¿ãã€ãã®ãã£ã¹ã¯ã¹ããŒã¹ãå æããŸãã ãã®ãããªããªã¥ãŒã ãå¹ççã«åŠçããããã«ãMapReduceãã©ãã€ã ãäŒçµ±çã«äœ¿çšãããŠããŸããããã«ãããã³ã³ãã¥ãŒãã£ã³ã°å¹çãšãŠãŒã¶ãŒã³ãŒãã®ã·ã³ãã«ãã®ãã©ã³ã¹ãåããŠããŸãã
äœããã®åœ¢ã§ãMapReduceã«äŒŒãèšç®ã¯ãGoogleãMicrosoftãFacebookãYahooãªã©ã®å€§æããã°ããŒã¿äŒæ¥ãã¹ãŠã§äœ¿çšãããŠããŸãã ããã«ãã¯ããã«æ§ãããªãµã€ãºã®ããŒã¿ââãæäœããå Žåãäºå®äžã®MapReduceã¯é·ãéæšæºã«ãªããŸãããç¹ã«ãHadoop MapReduceãã¬ãŒã ã¯ãŒã¯ã§ã®ãªãŒãã³ãœãŒã¹å®è£ ã®æåãšãMapReduceã®äžã«äŸ¿å©ãªåæããŒã«ãæäŸããéçºããããšã³ã·ã¹ãã ã®ååšã®ããã§ãã
ãã¡ããããã¹ãŠã®ã¿ã¹ã¯ãMapReduceã¢ãã«ã«æåããããã§ã¯ãããŸããã äž»ãªå¶éã¯ã倧éã®ããŒã¿ãå€æã®ãã§ãŒã³å šäœãééãããããå®è¡ã䌎ãããšã§ãã ãããã®å€æã«ã¯æ°åãæ°æéãæã«ã¯æ°æ¥ããããŸãã ãã®äœæ¥æ¹æ³ã¯ãŠãŒã¶ãŒãžã®ã€ã³ã¿ã©ã¯ãã£ããªå¿çã«ã¯é©ããŠããªããããMapReduceã®èšç®ã«å ããŠãåŸæ¥ã¯KVã¹ãã¬ãŒãžïŒããŒãšå€ã®ã¹ãã¬ãŒãžïŒãªã©ã®ã·ã¹ãã ã䜿çšããŸãã ãã®ãããªã·ã¹ãã ã¯äžçäžã«æ°å€ããããŸãïŒæ°åãã©ãã€ãã®ããŒã¿ãä¿åããã®ã«é©ããã¯ã©ã·ãã¯RDBMSïŒOracleãMicrosoft SQL ServerãMySQLãPostgreSQLïŒããå§ãŸããå€ãã®ãã¿ãã€ãã§åäœããNoSQLã·ã¹ãã ïŒHBaseãCassandraïŒã§çµãããŸãã
MapReduceã®å Žåãåæã«äœ¿çšãããããã€ãã®ç°ãªãã·ã¹ãã ã®ååšã¯ããŸãæå³ããããŸããã äºå®ãããããã¹ãŠãå®éã«åãåé¡ã解決ãããšããããšã§ãã ãã ããKVã¹ãã¬ãŒãžã®å Žåã解決ãããã¿ã¹ã¯ã®å€æ§æ§ã®çšåºŠãšäžè¬çãªã¬ãã«ã®ç¹ç°æ§ã¯ã¯ããã«é«ããªããŸãã Yandexã§ã¯ããã®ãããªã·ã¹ãã ãäžåºŠã«ããã€ã䜿çšããŸãã ããŒã¿ã®äžéšã¯MySQLã«ä¿åãããŸããMySQLã¯ãä¿¡é Œæ§ãšããŸããŸãªæ©èœã®é¢ã§å®èšŒãããŠããŸãã ããŒã¿éãå€ããåŠçé床ãéèŠãªå ŽåãYandexç¬èªã®DBMSã§ããClickHouseã䜿çšããŸã ã æåŸã«ãéå»3幎éã«ããããYTã®ãã¬ãŒã ã¯ãŒã¯å ã§KVã¹ãã¬ãŒãžãäœæããã¿ã¹ã¯ã«ç©æ¥µçã«åãçµãã§ããŸããã é«ãä¿¡é Œæ§ã®ã¹ãã¬ãŒãžããã©ã³ã¶ã¯ã·ã§ã³ãµããŒããMapReduceèšç®ãšã®çµ±åãå¿ èŠãªå Žåã«äœ¿çšããŸãã
Hadoopã¹ã¿ãã¯ã䜿çšããªãã®ã¯ãªãã§ããïŒ
ããã°ããŒã¿ã€ã³ãã©ã¹ãã©ã¯ãã£ã®å€§éšåã«ã¯ãåæ§ã®åé¡ã解決ããå ¬é補åããããŸãã ãã¡ããããŸããHadoopãšã³ã·ã¹ãã ã«ã€ããŠè©±ããŸããããã«åºã¥ããŠãçè«çã«ã¯ãåæ£ãã¡ã€ã«ã·ã¹ãã ïŒHDFSïŒããã³MapReduceãã¬ãŒã ã¯ãŒã¯ããKVãªããžããªïŒHBaseãCassandraïŒãŸã§ã®èšç®ã¹ã¿ãã¯å šäœãæ§ç¯ã§ããŸããåæïŒHiveãImpalaïŒããã³ããŒã¿åŠçã·ã¹ãã ïŒSparkïŒã
ããã°ããŒã¿ãæ±ãäžå°äŒæ¥ã«ãšã£ãŠãHadoopã¯å€ãã®å Žåã競åããªãéžæè¢ã§ãã 倧èŠæš¡ãªãã¬ãŒã€ãŒã¯ãHadoopãç©æ¥µçã«äœ¿çšããã³éçºãããïŒããšãã°ãYahooãFacebookããããè¡ããŸããïŒãç¬èªã®ã€ã³ãã©ã¹ãã©ã¯ãã£ïŒGoogleãMicrosoftïŒãäœæããŸãã
ããã2ã€ã®å¯èœæ§ãéžæããŠãYandexã¯2çªç®ã®æ¹æ³ãæ¡çšããŸããã ãã®æ±ºå®ã¯å®¹æãªããšã§ã¯ãªãããã¡ãããå¯äžã®æ£ãã決å®ãšã¿ãªãããšã¯ã§ããŸããã å€ãã®èŠå ãèæ ®ãããŸããã æãéèŠãªãã®ãç°¡åã«èŠçŽããŠã¿ãŸãããã
- æŽå²çã«ãYandexã§ã¯æ倧éã®èšç®ã³ãŒããC ++ã§èšè¿°ãããŠããŸãã åæã«ãHadoopã¯åºæ¬çã«Javaãã©ãããã©ãŒã ãæåããŠããŸãã ããèªäœã¯èŽåœçã§ã¯ãããŸãã-C ++ã®å€ãã³ãŒãããµããŒãããJavaã§æ°ããã³ãŒããéçºããããã®ã¢ããã¿ãŒããã€ã§ãäœæã§ããŸãã ãã ããé·å¹Žã®éçºãéããŠãC ++ã§ã®äœæ¥ã«ãããŠå瀟ãããªãã®çµéšãç©ãã§ããããšããããŠJavaéçºãããæ§ããã«æ瀺ãããããšãèªèãã䟡å€ããããŸãã
- YahooãFacebookãªã©ã®äŒæ¥ã§ã®Hadoopã®äœ¿çšæåäŸã¯ãHadoopãå¹æçã«äœ¿çšããããã«éåžžã¯ããã©ããŒãžã§ã³ã¯äœ¿çšãããªãããšã瀺ããŠããŸããããã©ãŒã¯ã¯ãã®åŸã®é«åºŠãªæ¹è¯ãšãšãã«å®è¡ãããŸãã äœæããã«ã¯ãHadoopã®ã³ã¢éçºè
ã瀟å
ã«é
眮ããããšãéåžžã«æãŸããããŸãã¯å¿
èŠã§ãããããŸãã ãããã®å°é家ã¯ãã¢ã¡ãªã«ã®ITåžå Žã®åºæºã§ãéåžžã«ãŸããªã®ã§ãYandexã«ãšã£ãŠãååãªæ°ã®äººæãéãããšã¯éåžžã«é£ããäœæ¥ã§ãã
- ããããããã©ãããã©ãŒã ã®äžèšã®ãã©ãŒã¯ã¯ã¡ã€ã³ã®éçºãã©ã³ãã«æ±ºããŠæ³šã蟌ãŸããããã®ãã©ã³ããšäºææ§ããªããªãã§ãããã æ¢è£œã®ãšã³ã·ã¹ãã ãœãªã¥ãŒã·ã§ã³ã䜿çšããå©ç¹ã¯ã2ã€ã®ããŒã«ã»ããã«éå®ãããŸãããããã®ããŒã«ã¯ãåé¢æã«ãæã¡æ©ããããšãã§ãããã©ãŒã¯ãä»ããŠè»¢éã§ããŸãã
- ãããããªãHadoopããã©ãŒã¯ããã®ãé¢åãªã®ã§ããããïŒ å¯èœãªå Žåã¯ãéçºã«åå ããŠãå
¬éãããŠããé²åããŠããããŒãžã§ã³ã䜿çšããªãã®ã¯ãªãã§ããïŒ å®éã®ãšãããHadoopèªäœã¯ããªãåªããŠããŸãããå®ç§ã«ã¯ã»ã©é ããšããããšã§ãã Yandexã®èªç€Ÿã€ã³ãã©ã¹ãã©ã¯ãã£ã§ã®äœæ¥äžã«ãã·ã¹ãã ã«éåžžã«æ ¹æ¬çãªå€æŽãå ããªããã°è§£æ±ºã§ããªãåé¡ã«ç¹°ãè¿ãçŽé¢ããŸããã Hadoopã®éçºã«ã¯ååãªèœåããªããããå
¬çãªæ¯åºã«ãã®ãããªå€§å¹
ãªå€æŽãå ããããšã¯ã§ããŸããã ãã®ãããªéæ¿ãªãããã¯ãã»ãŒç¢ºå®ã«åŠ¥åœãªæéå
ã«ã³ãŒãã¬ãã¥ãŒã«åæ ŒããŸããã
- ãŸããHadoopã瀟å ã«å®å šã«çµ±åããã«ã¯ããã®ãã©ãããã©ãŒã ã«é«åºŠãªè³æ Œãæã€ã¹ãã·ã£ãªã¹ããé 眮ããå¿ èŠã¯ãããŸãããããšãã°ãClouderaãªã©ãHadoopãœãªã¥ãŒã·ã§ã³ã®å€§èŠæš¡ãªã€ã³ãã°ã¬ãŒã¿ãŒã®ãµãŒãã¹ã«éå®ããã°ååã§ãã ãã ãã掻åã®çš®é¡ããšã«ç§ãã¡ã«è¿ãäŒæ¥ã®åžžèãšçµéšã¯ããã®ãããªãã«ãã¯å®è£ ã®æåã®æ®µéã§ã¯åœ¹ç«ã€ããšããããŸãããHadoopã³ãŒãããŒã¹ã®å€§å¹ ãªå€æŽãå¿ èŠãšããè€éãªã¿ã¹ã¯ã¯ãåå¥ã«è§£æ±ºããå¿ èŠãããããšã瀺ããŠããŸãïŒããšãã°ã ã¡ãŒã«ãšã¯ã¹ããªãšã³ã¹ãåç §ããŠãã ããïŒ ã RU ïŒã
ãã¡ãããæ¢è£œã®HadoopããŒã«ãåå©çšããããšãæåŠãããšãHadoopã³ãã¥ããã£ãšç«¶åããæ¹æ³ããªããäžçäžã®äœçŸãäœåãã®éçºè ãæ°ããããšãã§ããªããããäœæ¥ãéåžžã«è€éã«ãªããŸããã äžæ¹ãäžã§ç€ºããããã«ãYandexã®ãšã³ã·ã¹ãã ã«ãšã£ãŠéèŠãªå€æŽãåççãªäŸ¡æ Œã§åŸãããšãã§ããªãããšãšãHadoopã䜿çšããŠããäŒæ¥ã®çµéšã¯ããã¹ãŠã®å©ç¹ãäžåããŸããã
ç§ãã¡ãè¡ã£ãéžæã«åºã¥ããŠãã€ã³ãã©ã¹ãã©ã¯ãã£ã®æãé¢é£æ§ã®é«ãéšåã«ç©æ¥µçã«åãçµã¿ãYTãã©ãããã©ãŒã èªäœãšãã®äžã«äœæãããããŒã«ãšãã£ãå°æ°ã®äž»èŠãªã·ã¹ãã ã®æ¹åã«äž»ãªåªåã泚ãã§ããŸãã
ç§ãã¡ã¯ä»äœãç¥ã£ãŠããŸããïŒ
äžèšãããYTã¯å°ãªããšãMapReduceã·ã¹ãã ã§ããããšãããããŸãã æ¬åœã§ããããã¹ãŠã§ã¯ãããŸããã YTã¯èªç以æ¥ãããã°ããŒã¿ã®åéã«ãããå¹ åºãèšç®äžã®åé¡ã解決ããããã®åºç€ãšãªãããšãç®æšã«èšèšãããŸããã
YaCã«é¢ããYTã¬ããŒããã3幎ã§ãã·ã¹ãã ã¯å€§å¹ ã«éçºãããŸããã ãã®åŸãèšåãããåé¡ã®å€ãã¯æ£åžžã«è§£æ±ºãããŸããã ãã ããäŒç€ŸïŒããã³ã€ã³ãã©ã¹ãã©ã¯ãã£ïŒãç©æ¥µçã«éçºãããŠãããããéå±ããŠããŸããã ãã®ãããæ°ããã¿ã¹ã¯ãæ¯æ¥å±ããŸãã
YTã®çŸåšã®ã¢ãŒããã¯ãã£ãç°¡åã«èª¬æããŸãããã
ã¯ã©ã¹ã¿ãŒ
YTã¯ããããã€ã¡ã³ããŠããããã¯ã©ã¹ã¿ãŒã§ãããã«ãã³ã³ããŒãã³ãã·ã¹ãã ã§ãã çŸåšãæ倧10,000å°ã®ãµãŒããŒïŒ ããŒã ïŒã®åèšæ°ãæã€ã¯ã©ã¹ã¿ãŒããµããŒãããŠããŸãããã®å°æ°ã®ãã·ã³ã«ã¯ãæ°çŸãã¿ãã€ãã®ããŒã¿ãä¿åã§ããã ãã§ãªããæ°åäžã®CPUã³ã¢ã§èšç®ãèšç»ããã³å®è¡ã§ããŸãã
YTã¯ã©ã¹ã¿ãŒã®ã»ãšãã©ã¯ãå®å šã«åãããŒã¿ã»ã³ã¿ãŒå ã«ãããŸãã ããã¯ãMapReduceã®èšç®ããã»ã¹ã§ã¯ããã·ã³éã§åçš®ã®ãããã¯ãŒã¯ãæã€ããšãéèŠã§ããããã§ããããã¯ãå°ççã«é¢ããŠãããšã¹ã±ãŒã«ã§éæããããšã¯ã»ãšãã©äžå¯èœã§ãã ãã®ã«ãŒã«ã«ã¯äŸå€ããããŸããå éšããŒã¿ãããŒãå°ããäžéšã®YTã¯ã©ã¹ã¿ãŒã¯ãããã«ããããããè€æ°ã®DCéã§åæ£ãããŸãã ãããã£ãŠããããã®1ã€ãŸãã¯è€æ°ã®å®å šãªé害ã¯ãã·ã¹ãã ã®åäœã«åœ±é¿ããŸããã
DFS
YTã®æäžå±€ã¯ãåæ£ãã¡ã€ã«ã·ã¹ãã ïŒDFSïŒã§ãã åæã®DFSå®è£ ã¯ãåŸæ¥ã®HDFSãŸãã¯GFSã«äŒŒãŠããŸããã ããŒã¿ã¯ã ãã£ã³ã¯ãšåŒã°ããå°ããªïŒéåžžã¯æ倧1 GBïŒãã©ã°ã¡ã³ãã®åœ¢ã§ã¯ã©ã¹ã¿ãŒããŒããã£ã¹ã¯ã«ä¿åãããŸãã ã·ã¹ãã ã§äœ¿çšå¯èœãªãã¹ãŠã®ãã£ã³ã¯ã«é¢ããæ å ±ãDFSã«ååšãããã¡ã€ã«ãšããŒãã«ãããã³ããããã©ã®ãã£ã³ã¯ã§æ§æããããã¯ã ãã¹ã¿ãŒãµãŒããŒã®ã¡ã¢ãªã«ãããŸã ã
DFS ã®åå空é ïŒãã£ã¬ã¯ããªæ§é ããã¡ã€ã«åãšããŒãã«åãã¡ã¿å±æ§ãã¢ã¯ã»ã¹èš±å¯ãªã©ïŒã¯ã CypressãšåŒã°ããŸãã ã»ãšãã©ã®åŸæ¥ã®ãã¡ã€ã«ã·ã¹ãã ãšã¯ç°ãªãããµã€ãã¬ã¹ã¯ãã©ã³ã¶ã¯ã·ã§ã³æ§ããµããŒãããŠããŸããã€ãŸããæ§é ãšããŒã¿ã䜿çšããŠè€éãªæäœãã¢ãããã¯ã«å®è¡ã§ããŸãã ããšãã°ããµã€ãã¬ã¹ãã©ã³ã¶ã¯ã·ã§ã³ã®ãã¬ãŒã ã¯ãŒã¯å ã§ã¯ãããã€ãã®ãã¡ã€ã«ãã·ã¹ãã ã«ã¢ãããã¯ã«ã¢ããããŒãããããããŒã¿ã®æ°ããéšåãã¡ã¿å±æ§ã«å°çããããšãèšé²ãããããããšãã§ããŸãã ãµã€ãã¬ã¹ã¯ãããŒãã®ããã¯ã·ã¹ãã ããµããŒãããŠããŸãã YTã¯ã©ã¹ã¿ãŒã®1ã€ã¯ããŒã¿ã»ã³ã¿ãŒéã§åæ£ãããå®éã«ã¯ãã£ã³ã¯ãæ ŒçŽããŸãããããã®ãµã€ãã¬ã¹ã¯éåžžã«ã¢ã¯ã»ã¹ããããã¡ã¿ããŒã¿ã¹ãã¬ãŒãžããã³èª¿æŽãµãŒãã¹ãšããŠããŸããŸãªã€ã³ãã©ã¹ãã©ã¯ãã£ããã»ã¹ã§äœ¿çšãããŸãïŒChubbyãZookeeperãŸãã¯etcdãšåæ§ïŒã
ã¯ã©ã¹ã¿ãæ§æãããã·ã³ã®æ°ãèãããšãæ©åšã®æ éã¯æ¯æ¥çºçããåºæã®çŸè±¡ã§ã¯ãããŸããã ã·ã¹ãã ã¯ã人éã®ä»å ¥ãªãã§ãèªåã¢ãŒãã§ã»ãšãã©ã®ã¿ã€ãã®å žåçãªé害ã«èããããã«èšèšãããŠããŸãã ç¹ã«ãã·ã¹ãã ã«ã¯ããããåäžéå®³ç¹ ïŒSPoFãåäžé害ç¹ïŒããããŸãããã€ãŸãã1å°ã®ãµãŒããŒãå£ããŠãã·ã¹ãã ã®åäœãäžæããããšã¯ã§ããŸããã ããã«ãå®çšçãªèŠ³ç¹ããã¯ããã倧ããªã©ã³ãã ãµãã»ããïŒããšãã°ãã¯ã©ã¹ã¿ãŒå ã®ã©ã³ãã ã«éžæããã2ã€ã®ãµãŒããŒïŒãŸãã¯ãã·ã³ã®æ§é ã°ã«ãŒãå šäœïŒã©ãã¯ãªã©ïŒã§é害ãçºçããå Žåã§ããã·ã¹ãã ãåäœãç¶ããããšãéèŠã§ãã
åæ£DFSã®å Žåããã¹ã¿ãŒãµãŒããŒïŒååšããå ŽåïŒã¯èªç¶ãªSPoFã圢æããŸããããã¯ãé»æºããªãã«ãªããšã·ã¹ãã ãããŒã¿ã®éåä¿¡ãåæ¢ããããã§ãã ãã®ãããæåãããã¹ã¿ãŒãµãŒããŒãè€è£œãããŠããŸãã ã æãåçŽãªã±ãŒã¹ã§ã¯ã1ã€ã®ãã¹ã¿ãŒãµãŒããŒã®ä»£ããã«ãåãç¶æ ãç¶æããã3ã€ã®ãã¹ã¿ãŒãµãŒããŒããããšæ³å®ã§ããŸãã 3ã€ã®ãã¹ã¿ãŒãµãŒããŒã®ããããã«é害ãçºçããŠããã·ã¹ãã ã¯åäœãç¶ç¶ã§ããŸãã ãã®ãããªåãæ¿ãã¯å®å šã«èªåçã«è¡ãããããŠã³ã¿ã€ã ã¯çºçããŸããã ãã¹ã¿ãŒãµãŒããŒã®ã»ããéã®åæã¯ã ã³ã³ã»ã³ãµã¹ã¢ã«ãŽãªãºã ã®çš®é¡ã®1ã€ã䜿çšããŠæäŸãããŸãã ãã®å Žåãç¬èªã®ãã¶ã€ã³ã®ã©ã€ãã©ãªã䜿çšããŸããããã¯HydraãšåŒã°ããŸãã Hydraã®æãè¿ããªãŒãã³ãœãŒã¹ã¢ããã°ã¯ãRaftã¢ã«ãŽãªãºã ã§ãã Apache Zookeeperã·ã¹ãã ã§ã¯ã綿å¯ãªã¢ã€ãã¢ïŒZABã¢ã«ãŽãªãºã ïŒã䜿çšãããŸãã
3ã€ã®è€è£œããããã¹ã¿ãŒãµãŒããŒã䜿çšãã説æããã¹ããŒã ã¯ããã©ãŒã«ããã¬ã©ã³ã¹ã®èŠ³ç¹ããã¯è¯å¥œã§ãããå¿ èŠãªããªã¥ãŒã ã«ã¯ã©ã¹ã¿ãŒãã¹ã±ãŒãªã³ã°ããããšã¯ã§ããŸããã å®éãã¡ã¿ããŒã¿ã®éã«é¢ããŠã¯ãå¥ã®ãã¹ã¿ãŒãµãŒããŒã®ã¡ã¢ãªã«ãã£ãŠå¶éããããŸãŸã§ãã ãã®ãããçŽ1幎åã«ããã«ãã»ã«ãšåŒã°ãããŠãŒã¶ãŒééçãªãã£ã³ã¯ã¡ã¿ããŒã¿ã·ã£ãŒãã£ã³ã°ã·ã¹ãã ãå®è£ ããŸããã ããã䜿çšããããšãã¡ã¿ããŒã¿ã¯ãã¹ã¿ãŒãµãŒããŒã®ç°ãªãããªãã¬ããéã§å ±æãããŸãïŒåœŒããèšãããã«shard ïŒã åããªãã¬ããå ã§ãHydraã¯åŒãç¶ãæ©èœãããã©ãŒã«ããã¬ã©ã³ã¹ãæäŸããŸãã
HDFSã§ã®ãã£ã³ã¯ã¡ã¿ããŒã¿ã®ã·ã£ãŒãã£ã³ã°ã¯çŸåšæäŸãããŠããªãããšã«æ³šæããŠãã ããã 代ããã«ãå©äŸ¿æ§ã®äœãHDFSãã§ãã¬ãŒã·ã§ã³ ïŒçããããŠãŒãã£ãªãã£ã®ãããžã§ã¯ãïŒã䜿çšããããšãææ¡ããŸããããã¯ãå°éã®ããŒã¿ã§ã¯æå³ããªããã¬ããŒãã«ãããšã倧äŒæ¥ã§ã®äœ¿çšçµéšã¯å¿ ããããã©ã¹ã§ã¯ãªãããã§ãã
ãã¡ããããã©ãŒã«ããã¬ã©ã³ã¹ã¯ãã¡ã¿ããŒã¿ã®ã¬ãã«ã ãã§ãªãããã£ã³ã¯ã«æ ŒçŽãããŠããããŒã¿ã®ã¬ãã«ã§ãéèŠã§ãã ãããå®çŸããã«ã¯ã2ã€ã®æ¹æ³ã䜿çšããŸãã 1ã€ç®ã¯ã¬ããªã±ãŒã·ã§ã³ã§ã ãã€ãŸããç°ãªããµãŒããŒäžã®è€æ°ïŒéåžžã¯3ã€ïŒã®ã³ããŒã«ããåãã£ã³ã¯ã®ã¹ãã¬ãŒãžã§ãã 2çªç®ã¯æ¶å»ã³ãŒãã£ã³ã°ã§ã ãã€ãŸããåãã£ã³ã¯ãå°æ°ã®éšåã«åå²ãããã§ãã¯ãµã ã䜿çšããŠè¿œå ã®éšåãèšç®ããããããã¹ãŠã®éšåãç°ãªããµãŒããŒã«ä¿åããŸãã
åŸè ã®æ¹æ³ã¯ç¹ã«èå³æ·±ãã§ãã ããªã¥ãŒã Xã®ä¿åã«éåžžã®ããªãã«ã¬ããªã±ãŒã·ã§ã³ã䜿çšããå Žåãè¿œå ã®ã¬ããªã«ã«ããã«2Xãè²»ããå¿ èŠããããé©åãªæ¶å»ã³ãŒãã䜿çšãããšããã®ãªãŒããŒãããã¯X / 2ã«åæžãããŸãã ç§ãã¡ã察åŠããªããã°ãªããªãéïŒæ°åãã¿ãã€ãïŒãèãããšããã®å¢å ã¯ãšãŠã€ããªã倧ããã§ãã æ¢åã®ã·ã¹ãã ã®ãã¬ãŒã ã¯ãŒã¯å ã§ãæ¶å»ã³ãŒãã£ã³ã°ã¯çŽ4幎éå©çšå¯èœã§ãã Hadoopã§ã®åæ§ã®ãµããŒãïŒããããEC-HDFSïŒãå©çšå¯èœã«ãªã£ãã®ã¯1幎åã«éããªãããšã«æ³šæããŠãã ããã
ããŒãã«
ãŠãŒã¶ãŒã«è¡šç€ºãããã¡ã€ã³ã¹ãã¬ãŒãžãŠãããããã¡ã€ã«ã§ããHadoop Mapreduceã®HDFSãã³ãã«ãšã¯ç°ãªããYT DFSãã¡ã€ã«ã¯ååšããŸãããã¢ã¯ãã£ãã«äœ¿çšãããããšã¯ãããŸããã 代ããã«ãããŒã¿ã¯äž»ã«ããŒãã« ïŒããŒã¿ã®åã§æ§æãããè¡ã®ã»ããïŒã«ä¿åãããŸãã ã·ã¹ãã ã®éçºäžãããŒãã«å ã®å¹ççã§ã³ã³ãã¯ããªããŒã¿ã¹ãã¬ãŒãžãå®çŸããããã«å€å€§ãªåŽåãè²»ãããŸããã ã¹ãã¬ãŒãžãã©ãŒããããã©ãŒãããïŒHadoop ORCãParquetïŒã®ã¢ã€ãã¢ãšãããŸããŸãªãããã¯å§çž®ã¢ã«ãŽãªãºã ïŒlz4ãgzipãbrotliãªã©ïŒãçµã¿åãããŠããŸãã
ãŠãŒã¶ãŒã«ãšã£ãŠããã®ãããªå®è£ ã®è©³çŽ°ã¯ééçã§ãã圌ã¯åã«ããŒãã«ã¬ã€ã¢ãŠãïŒåã®ååãšã¿ã€ãã瀺ãïŒãç®çã®å§çž®ã¢ã«ãŽãªãºã ãè€è£œæ¹æ³ãªã©ãèšå®ããŸããHadoopãŠãŒã¶ãŒã¯ãç¹å®ã®ãã©ãŒãããã®ããŒã¿ãå«ããYTãŠãŒã¶ãŒã¯ãããŒãã«å šäœãšãã®éšåã®çšèªã䜿çšããŸãã䞊ã¹æ¿ããããããçž®å°ãçµåæäœãå®è¡ããè¡ç¯å²ããšã«ããŒãã«ãèªã¿åããŸãã
MapReduceã¹ã±ãžã¥ãŒã©
æ ŒçŽããããŒã¿ã®ã»ãšãã©ã®èšç®ã¯ãMapReduceã¢ãã«ã§å®è¡ãããŸãã æ¢ã«è¿°ã¹ãããã«ãã¯ã©ã¹ã¿ãŒã®èšç®èœåã®åèšããŒã«ã¯æ°åäžã³ã¢ã§ãã ãããã®äœ¿çšã¯äžå€®ãã©ã³ããŒã«ãã£ãŠå¶åŸ¡ãããŸãã mapãsortãreduceãªã©ã®å€§ããªèšç®ïŒ æäœãšåŒã°ããïŒãåå¥ã®ããŒã«ã«ããŒãïŒ ãžã§ã ïŒã«åå²ãããããã®éã§ãªãœãŒã¹ãåé ããå®è¡ãç£èŠããé害ãçºçããå Žåã«èšç®ã®äžéšãåéããããšã§ãã©ãŒã«ããã¬ã©ã³ã¹ãä¿èšŒããŸãã
èšç»ã®ããã®2ã€ã®äž»èŠãªãªãœãŒã¹ã§ããCPUãšã¡ã¢ãªãåºå¥ããŸãã ãªãã¬ãŒã·ã§ã³éã§ãªãœãŒã¹ãåé¢ããããã«ãéåžžã«æè»ãªã¹ããŒã ã§ããéå±€ãããã³ããªãœãŒã¹ãã§ã¢ã·ã§ã¢ã䜿çšããŸããããã«ãããèšç®ãããªãŒæ§é ã«ã°ã«ãŒãåããå¥ã ã®ãµãããªãŒã«å¶éïŒäžéãšäžéïŒãèšå®ã§ããŸãã ç¹ã«ãåäžã®ã¯ã©ã¹ã¿ãŒã®ãã¬ãŒã ã¯ãŒã¯å ã§ãããŸããŸãªãããžã§ã¯ããçç£åè·¯ãšãã¹ãåè·¯ã®äž¡æ¹ãåæã«ä¿æããŸãã åãã¯ã©ã¹ã¿ãŒã§ãäžéšã®ãªãœãŒã¹ãã¢ãããã¯åæã«å²ãåœãŠãããŸãã
äžè¬çãªå€§èŠæš¡ãªYTã¯ã©ã¹ã¿ãŒã§ã¯ã1æ¥ã§25äžä»¶ãè¶ ããæäœãå®è¡ãããåèšã§1åã®ãžã§ããå®è¡ãããŸãã
çŸæç¹ã§ã¯ãã¯ã©ã¹ã¿ãŒå ã®ã¢ã¯ãã£ããªã¹ã±ãžã¥ãŒã©ãŒã¯åžžã«1ã€ã§ããããã©ãŒã«ããã¬ã©ã³ã¹ã®ããã«ãã·ã¹ãã ã«ã¯åžžã«ããã·ãã¹ã¿ã³ãã€ã¬ããªã«ããããŸãã ã¡ã€ã³ã¹ã±ãžã¥ãŒã©ã10ç§éã®ãªãŒããŒã§å€±æãããšããã®å¥ã®ã¬ããªã«ã«åãæ¿ãããŸãã åŸè ã¯ãèšç®æäœã®ç¶æ ã埩å ããå®è¡ãç¶ç¶ããŸãã
çŸåšãã¹ã±ãžã¥ãŒã©ã¯ãã¯ã©ã¹ã¿å šäœã§æãã¯ãªãã£ã«ã«ã«ããŒããããåäžã®ãã·ã³ã§ãã ã¹ã±ãžã¥ãŒã©ã³ãŒãã¯ãåæã«ç®¡çããå¿ èŠããããžã§ãïŒæ°åäžïŒãšæäœïŒæ°åïŒã®æ°ãèæ ®ããŠãç¹°ãè¿ãæé©åãããŠããŸãã é«åºŠãªäžŠååŠçãéæã§ãããããå®éã«ã¯1å°ã®ãã·ã³ã®ãªãœãŒã¹ãå®å šã«äœ¿çšããŠããŸãã ãã ããã¯ã©ã¹ã¿ãŒãµã€ãºã®ãããªãæé·ã®ããã«ããã®ã¢ãããŒãã¯è¡ãæ¢ãŸãã®ããã«æããããããæ°ããåæ£ã¹ã±ãžã¥ãŒã©ã®äœæã«ç©æ¥µçã«åãçµãã§ããŸãã
çŸåšãYT MapReduceã¬ã€ã€ãŒã¯ãäœçŸãã®Yandexéçºè ãã¢ããªã¹ãããããŒãžã£ãŒãæ¯æ¥äœ¿çšããŠãããŒã¿ã®åæèšç®ãå®è¡ããŠããŸãã ãŸããå€æ°ã®ããŸããŸãªãããžã§ã¯ããããã䜿çšããã¡ã€ã³ãµãŒãã¹ã®ããŒã¿ãèªåçã«æºåããŸãã
KVã¹ãã¬ãŒãž
æ¢ã«äœåºŠãè¿°ã¹ãããã«ãMapReduceã®èšç®ã¯ãç§ãã¡ã®åã®ã¿ã¹ã¯ã®å šç¯å²ãã«ããŒããŠããŸããã åŸæ¥ã®MapReduceããŒãã«ïŒ éçãšåŒã°ããŸã ïŒã¯ã倧éã®ããŒã¿ãå¹ççã«ä¿åããMapReduceæäœã§åŠçããã®ã«æé©ã§ãã äžæ¹ãKVã¹ãã¬ãŒãžã眮ãæããæ¹æ³ã§ã¯ãããŸããã å®éãéçããŒãã«ããã®è¡ã®äžè¬çãªèªã¿åãæéã¯æ°çŸããªç§åäœã§æž¬å®ãããŸãã ãã®ãããªããŒãã«ãžã®æžã蟌ã¿ã¯ããã ãã§ãªããæåŸã«ã®ã¿å¯èœã§ããããã察話åãµãŒãã¹ãäœæããããã«ãã®ãããªããŒãã«ã䜿çšããããšã«ã€ããŠè©±ãå¿ èŠã¯ãããŸããã
çŽ3幎åãYTã®äžéšãšããŠãHBaseãCassandraãªã©ã®ã·ã¹ãã ã§èŠããããã®ãšåæ§ã®æ°ããåçããŒãã«ã®äœæã«åãçµã¿å§ããŸããã ãããè¡ãã«ã¯ãããŒã¹ã¬ã€ã€ãŒïŒHydraãDFSïŒã«å€ãã®æ¹åãè¡ãå¿ èŠããããŸããã ãã®çµæãå ±éã®åå空éMapReduceã®ãã¬ãŒã ã¯ãŒã¯å ã§ãŠãŒã¶ãŒã®åçããŒãã«ãäœæããæ©äŒãæ¬åœã«ãããŸãã ãããã¯ãæååããã³äž»ããŒã®ç¯å²ã«å¯Ÿããå¹ççãªèªã¿åãããã³æžã蟌ã¿æäœããµããŒãããŸãã ç§ãã¡ã®ã·ã¹ãã ã¯ã ãã©ã³ã¶ã¯ã·ã§ã³æ§ãšå³å¯ãªäžè²«æ§ ïŒããããã¹ãããã·ã§ããåé¢ã¬ãã«ïŒãããã³åæ£ãã©ã³ã¶ã¯ã·ã§ã³ã®ãµããŒããã€ãŸãã1ã€ã®ãã©ã³ã¶ã¯ã·ã§ã³ã§1ã€ã®ããŒãã«ã®è€æ°ã®è¡ãŸãã¯è€æ°ã®ç°ãªãããŒãã«ãã¢ãããã¯ã«å€æŽããæ©èœã«ãã£ãŠåºå¥ãããŸãã
æãè¿ãé¡äŒŒç©ã®èŠ³ç¹ãããç§ãã¡ã®åçããŒãã«ã¯BigTableãšHBaseã®å€å žçãªã¢ã€ãã¢ã«è¿ãã§ããããã匷åãªãã©ã³ã¶ã¯ã·ã§ã³ã¢ãã«ããµããŒãããããã«é©åãããŠããŸãã åæã«ãåæ§ã®åºæ¬ååã«ãããããããããããã³ãããããŠæ¢åã®ãªãŒãã³ãœãŒã¹ã·ã¹ãã ïŒHBaseãªã©ïŒã«åæ§ã®æ©èœãè¿œå ããããšã¯çŸå®çã§ã¯ãããŸããã ïŒããšãã°ãFacebookã§éçºäžã®HydraBaseãããžã§ã¯ãã®ã³ãŒãã®äžéšãHBaseã«ç§»æ€ããããšã説æãããã±ãããåç §ããŠãã ãããäŸã¯ãå°åãµãŒããŒã®ãããã¬ããªã±ãŒã·ã§ã³ã«ããã·ã¹ãã ã®å¯çšæ§ãé«ããHydraBaseã®æ©èœãã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠéåžžã«éèŠã§ããããšãç¹ã«ç€ºããŠããŸãã YTå ã§åœŒå¥³ããµããŒãããŠããŸããïŒ
ãããã®ããŒãã«ã®äžã«ããã£ã«ã¿ãªã³ã°ãéèšãæãåçŽãªçš®é¡ã®çµåãªã©ã®ã€ã³ã¿ã©ã¯ãã£ããªã¯ãšãªãåæ£çã«å®è¡ããæ©èœããããŸãã ïŒå ¬çã«å©çšå¯èœãªã·ã¹ãã ã®äžã§ããã®ãããªæ©äŒã¯ãããšãã°ImpalaãPrestoã«ãã£ãŠæäŸãããŸããïŒYandexã§ã¯ãåçããŒãã«ã®æ倧ã®ãŠãŒã¶ãŒã¯ãããŒã·ã¹ãã ã§ãã é©åãªåæ£KVãªããžããªãšåæ§ã«ãYTã¯1ç§ãããæ°çŸäžã®èªã¿åãããã³æžã蟌ã¿æäœãåŠçã§ããŸãã
ç§ãã¡ã®èšç»ã¯äœã§ããïŒ
äžèšã®èª¬æããã§ããã·ã¹ãã ãç©æ¥µçã«éçºãããŠããããšã¯å®¹æã«ç解ã§ããŸãã 確ãã«ãç§ãã¡ãçŽé¢ããŠããã¿ã¹ã¯ã®èŠæš¡ãšéå¿ãèãããšãæ確ã§ååã«æž¬å®å¯èœãªå©çãåããŠãæ¹åã§ããªãã£ãã·ã¹ãã ã®å°ãªããšã1ã€ã®åŽé¢ãèãåºãããšã¯å°é£ã§ãã
æåŸã®éšåã§ã¯ãYTã®äžéšãšããŠåãçµãã§ããå€ãã®é·æéçºãããžã§ã¯ãã«æ³šç®ãã䟡å€ããããŸãã
ããŒã¿ã»ã³ã¿ãŒéã¬ããªã±ãŒã·ã§ã³
YandexèŠæš¡ã®äŒæ¥ã¯ãåäžã®ããŒã¿ã»ã³ã¿ãŒã«äŸåããäœè£ã¯ãããŸãããå®éãYTã¯ã©ã¹ã¿ãŒã¯äžåºŠã«ããã€ãå±éãããŸãã ãããã®éã§ããŒã¿ãåæããã¿ã¹ã¯ã¯è€éã§éèŠã§ãããªããªãããã©ãŒã«ããã¬ã©ã³ã¹ã«é¢ããæžå¿µã®äžéšãé«ã¬ãã«ã®ãµãŒãã¹ããã¡ã€ã³ã€ã³ãã©ã¹ãã©ã¯ãã£ã«ç§»è¡ã§ããããã§ãã
æ ŒçŽãããããŒã¿ããªã¥ãŒã ãå°ããå ŽåãåŸæ¥ãããŒã¿ã»ã³ã¿ãŒå šäœã®æ倱ã«èããããšãã§ããYTã¯ãã¹ããŒã¿ã»ã³ã¿ãŒã€ã³ã¹ããŒã«ãå±éããŸãã äžæ¹ããã®ã¢ãããŒãã«ã¯å€ãã®æ¬ ç¹ããããŸãã ç¹ã«ããã®ãããªããŒã¿ã»ã³ã¿ãŒéã€ã³ã¹ããŒã«ã®éçºãšæŽæ°ã¯éåžžã«éèŠãªã¿ã¹ã¯ã§ãã å®éã«ã¯ãå¯èœãªéã100ïŒ ã®ã¢ããã¿ã€ã ãæäŸããå¿ èŠããããŸãã
åããŒã¿ã»ã³ã¿ãŒã«1ã€ãã€ãããåç¬ç«ã¯ã©ã¹ã¿ãŒã®ã»ããããã®ã·ã¹ãã ã¯ãéçšã®èŠ³ç¹ããã¯ãã䟿å©ã«èŠããŸãã ãã®ãããå€ãã®å Žåãéçããã»ã¹éã§ããŒã¿ãè€è£œããããã®èªåããã»ã¹ãæ§æãããåå¥ã®ã¯ã©ã¹ã¿ãŒã䜿çšããŸãã
ãŸããåçããŒãã«ãè€è£œããããšãåŠç¿ããŸããããã«ãããããŸããŸãªè€è£œã¢ãŒãïŒåæãéåæïŒããã³å®è¶³æ°èšé²ãäžé£ã®ããŒã¿ã»ã³ã¿ãŒã«å®è£ ã§ããŸãã
ãã¹ã¿ãŒãµãŒããŒã®ãããªãã¹ã±ãŒãªã³ã°
ãã®ãããYTã§ã¯ããã£ã³ã¯ã«é¢é£ãããã¹ã¿ãŒãµãŒããŒã®ã¡ã¿ããŒã¿ã®äžéšãåå²ããæ¹æ³ãåŠã³ãŸããã ããããã»ãšãã©ã®å ŽåããŠãŒã¶ãŒã¯ãã£ã³ã¯ã§ã¯ãªãããã¡ã€ã«ãããŒãã«ããã£ã¬ã¯ããªã®ããªãŒãã€ãŸããµã€ãã¬ã¹ã§çŽæ¥äœæ¥ããŸãã ãã®ããªãŒã¯ãŸã 1ã€ã®ãã¹ã¿ãŒãµãŒããŒïŒã¬ããªã±ãŒã·ã§ã³ãèæ ®ã«å ¥ããŠ3ã€ïŒã®ã¡ã¢ãªã«æ ŒçŽãããŠãããåœç¶ãã®ããŒãã®æ°ã¯çŽ1åã®ã¬ãã«ã«å¶éãããŸãããŠãŒã¶ãŒæ°ãå¢å ããã¯ã©ã¹ã¿ãŒãæ¡å€§ããã«ã€ããŠãããããã·ã£ãŒãã£ã³ã°ã®åé¡ã解決ããå¿ èŠããããŸããã®ã¡ã¿ããŒã¿ã
éçããŒãã«ãšåçããŒãã«ã®çµ±å
æåã«åçããŒãã«ãMapReduceã¢ãã«ãšéçããŒãã«ãããé¢ããŠãäœæããããšããäºå®ã«ããããããããããã®ããŒã«ã1ã€ã®èšç®ã§çµã¿åãããããšãã§ãããšããå©ç¹ãããã«æããã«ãªããŸããã
ããšãã°ãMapReduceã®é·ããã§ãŒã³ãæ§ç¯ãããµãŒãã¹ã®ã€ã³ããã¯ã¹ã䜿çšããŠéçããŒãã«ãèšç®ãããã®åŸãå°ãæãåããã ãã§åçããŒãã«ã«å€æããã¡ã¢ãªã«ããŒãããŠãããªç§åäœã§æž¬å®ãããåŸ æ©æéã§ãµãŒãã¹ã®ããã³ããšã³ãã«å¯Ÿè±¡ããŒã¿ãåéããæ©èœãæäŸã§ããŸãã
ãŸãã¯ãè€éãªMapReduceèšç®ã®å®è¡äžã«ããããããããåŽçµåãå®è¡ããããšã«ãããåç §ããŒã¿ãåçããŒãã«ã«é©çšããããšãå¯èœã ãšããŸãããã
YTã®ãã¬ãŒã ã¯ãŒã¯å ã§ã®ãã€ããã¯ã¹ãšã¹ã¿ãã£ãã¯ã®çµ±åã¯ã倧èŠæš¡ã§è€éãªãããžã§ã¯ãã§ããããŸã å®æã«ã¯ã»ã©é ãã§ãããåŸæ¥ã¯å°é£ãšèããããŠããå€ãã®åé¡ã®è§£æ±ºãæ ¹æ¬çã«ç°¡çŽ åããã³æé©åã§ããŸãã
ã¯ã©ãŠããã¯ãŒ
YandexãµãŒããŒçŸ€ã®å€§éšåããæ€çŽ¢ã€ã³ããã¯ã¹ããŒã¿ãçŽæ¥ä¿åãããŠãŒã¶ãŒã®ãªã¯ãšã¹ãã«å¿çãããã·ã³ã§æ§æããããããããæ€çŽ¢ã¯ã©ã¹ã¿ãŒã§æ§æãããããšã¯åšç¥ã®äºå®ã§ãã ãã®ãããªãã·ã³ã®è² è·ãããã¡ã€ã«ã¯éåžžã«ç¹åŸŽçã§ãã ã¡ã€ã³ã®MapTeduceã¯ã©ã¹ã¿ãŒYTã®å ŽåãCPUãã»ãšãã©åžžã«ããã«ããã¯ïŒã»ãŒ100ïŒ ã®è² è·ã24æé幎äžç¡äŒã§è¡šç€ºïŒã§ããå Žåãæ€çŽ¢ã¯ã©ã¹ã¿ãŒã®CPUè² è·ã¯ãããšãã°æå»ã«å¿ããŠèããå€åããŸãã
ããã«ããã解æŸãããé»åã䜿çšããŠMapReduceèšç®ãå®è¡ã§ããå¯èœæ§ãåºãããŸãã ããã«ããããµã€ãºãåçã«å€åããæ€çŽ¢ã¯ã©ãŠãã«éšåçã«è»¢éãããŸãã ãã®ãããªè¿œå 容éã®å¹æçãªäœ¿çšã¯ãç§ãã¡ã«ãšã£ãŠãã1ã€ã®åªå ãããžã§ã¯ãã§ãã ãã®æåã®ããã«ã¯ãã¯ã©ã¹ã¿ãŒç®¡çã·ã¹ãã ãã³ã³ããåããããžã§ã¯ãéã§å ±æããããªãœãŒã¹ã®å ±æïŒã¡ã¢ãªãCPUããããã¯ãŒã¯ããã£ã¹ã¯ãªã©ïŒãéçºããå¿ èŠããããŸãã