Как ΠΌΡ‹ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ высокоэффСктивноС ΠΈ Π½Π΅Π΄ΠΎΡ€ΠΎΠ³ΠΎΠ΅ DataLake ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ

ΠœΡ‹ ΠΆΠΈΠ²Π΅ΠΌ Π² ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ врСмя, ΠΊΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ быстро ΠΈ просто ΡΠΎΡΡ‚Ρ‹ΠΊΠΎΠ²Π°Ρ‚ΡŒ нСсколько Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… инструмСнтов, Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΈΡ… с Β«ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌ сознаниСм» ΠΏΠΎ совСтам stackoverflow, Π½Π΅ вникая Π² Β«ΠΌΠ½ΠΎΠ³ΠΎΠ±ΡƒΠΊΠ²Β», Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π² ΠΊΠΎΠΌΠΌΠ΅Ρ€Ρ‡Π΅ΡΠΊΡƒΡŽ ΡΠΊΡΠΏΠ»ΡƒΠ°Ρ‚Π°Ρ†ΠΈΡŽ. А ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒΡΡ/Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒΡΡ ΠΈΠ»ΠΈ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ случайно ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ ΠΏΠ°Ρ€Ρƒ машин β€” ΠΎΡΠΎΠ·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ начался ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ навязчивый Π΄ΡƒΡ€Π½ΠΎΠΉ сон наяву, всС Ρ€Π΅Π·ΠΊΠΎ ΡƒΡΠ»ΠΎΠΆΠ½ΠΈΠ»ΠΎΡΡŒ Π΄ΠΎ нСузнаваСмости, ΠΏΡƒΡ‚ΠΈ Π½Π°Π·Π°Π΄ Π½Π΅Ρ‚, Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅ Ρ‚ΡƒΠΌΠ°Π½Π½ΠΎ ΠΈ бСзопаснСС, вмСсто программирования, Ρ€Π°Π·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΡ‡Π΅Π» ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ сыр.

НС зря ΠΆΠ΅, Π±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ ΠΊΠΎΠ»Π»Π΅Π³ΠΈ, с посыпанной Π±Π°Π³Π°ΠΌΠΈ ΠΈ ΠΎΡ‚ этого ΡƒΠΆΠ΅ сСдой Π³ΠΎΠ»ΠΎΠ²ΠΎΠΉ, созСрцая Π½Π΅ΠΏΡ€Π°Π²Π΄ΠΎΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ быстроС Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΏΠ°Ρ‡Π΅ΠΊ Β«ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ²Β» Π² Β«ΠΊΡƒΠ±ΠΈΠΊΠ°Ρ…Β» Π½Π° дСсятках сСрвСров Π½Π° Β«ΠΌΠΎΠ΄Π½Ρ‹Ρ… языках» со встроСнной ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ асинхронно-Π½Π΅Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° β€” скромно ΡƒΠ»Ρ‹Π±Π°ΡŽΡ‚ΡΡ. И ΠΌΠΎΠ»Ρ‡Π° ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‚ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Β«man psΒ», Π²Π½ΠΈΠΊΠ°ΡŽΡ‚ Π΄ΠΎ кровоточСния ΠΈΠ· Π³Π»Π°Π· Π² исходники Β«nginxΒ» ΠΈ ΠΏΠΈΡˆΡƒΡ‚-ΠΏΠΈΡˆΡƒΡ‚-ΠΏΠΈΡˆΡƒΡ‚ ΡŽΠ½ΠΈΡ‚-тСсты. КоллСги Π·Π½Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ самоС интСрСсноС Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΏΠ΅Ρ€Π΅Π΄ΠΈ, ΠΊΠΎΠ³Π΄Π° «всё это» ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ‹ станСт Π½ΠΎΡ‡ΡŒΡŽ ΠΊΠΎΠ»ΠΎΠΌ ΠΏΠΎΠ΄ Новый Π³ΠΎΠ΄. И ΠΈΠΌ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρ‹ unix, Π·Π°ΡƒΡ‡Π΅Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ состояний TCP/IP ΠΈ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² сортировки-поиска. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄ Π±ΠΎΠΉ ΠΊΡƒΡ€Π°Π½Ρ‚ΠΎΠ² Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ систСму ΠΊ ΠΆΠΈΠ·Π½ΠΈ.

Ах Π΄Π°, Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ отвлСкся, Π½ΠΎ состояниС ΠΏΡ€Π΅Π΄Π²ΠΊΡƒΡˆΠ΅Π½ΠΈΡ, надСюсь, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ.
БСгодня я Ρ…ΠΎΡ‡Ρƒ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ нашим ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ развСртывания ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΈ Π½Π΅Π΄ΠΎΡ€ΠΎΠ³ΠΎΠ³ΠΎ стСка для DataLake, Ρ€Π΅ΡˆΠ°ΡŽΡ‰Π΅Π³ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ аналитичСских Π·Π°Π΄Π°Ρ‡ Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ для ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Ρ€Π°Π·Π½Ρ‹Ρ… структурных ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠΉ.

НСкотороС врСмя Π½Π°Π·Π°Π΄ ΠΌΡ‹ ΠΏΡ€ΠΈΡˆΠ»ΠΈ ΠΊ пониманию, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ всС сильнСС ΠΈ сильнСС Π½ΡƒΠΆΠ½Ρ‹ ΠΏΠ»ΠΎΠ΄Ρ‹ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ²ΠΎΠΉ, Ρ‚Π°ΠΊ ΠΈ тСхничСской Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΈ (Π½Π΅ говоря ΡƒΠΆΠ΅ ΠΎ Π²ΠΈΡˆΠ΅Π½ΠΊΠ°Ρ… Π½Π° Ρ‚ΠΎΡ€Ρ‚Π΅ Π² Π²ΠΈΠ΄Π΅ machine learning) ΠΈ для понимания Ρ‚Ρ€Π΅Π½Π΄ΠΎΠ² ΠΈ рисков β€” Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС большС ΠΈ большС ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ.

Базовая тСхничСская Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠ° Π² «Битрикс24Β»

НСсколько Π»Π΅Ρ‚ Π½Π°Π·Π°Π΄, ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ с запуском сСрвиса «Битрикс24Β», ΠΌΡ‹ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ инвСстировали врСмя ΠΈ рСсурсы Π² созданиС простой ΠΈ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠΉ аналитичСской ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, которая Π±Ρ‹ ΠΏΠΎΠΌΠΎΠ³Π°Π»Π° быстро ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π² инфраструктурС ΠΈ ΡΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ блиТайший шаг. РазумССтся, инструмСнты ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π²Π·ΡΡ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ ΠΈ максимально простыС ΠΈ понятныС. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π±Ρ‹Π» Π²Ρ‹Π±Ρ€Π°Π½ nagios для ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΈ munin для Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΈ ΠΈ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ нас тысячи ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ Π² nagios, сотни Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² Π² munin ΠΈ ΠΊΠΎΠ»Π»Π΅Π³ΠΈ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΈΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ. ΠœΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ понятны, Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ ясны, систСма Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π°Π΄Π΅ΠΆΠ½ΠΎ ΡƒΠΆΠ΅ нСсколько Π»Π΅Ρ‚ ΠΈ Π² Π½Π΅Π΅ рСгулярно Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ Π½ΠΎΠ²Ρ‹Π΅ тСсты ΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ: Π²Π²ΠΎΠ΄ΠΈΠΌ Π½ΠΎΠ²Ρ‹ΠΉ сСрвис Π² ΡΠΊΡΠΏΠ»ΡƒΠ°Ρ‚Π°Ρ†ΠΈΡŽ β€” добавляСм нСсколько тСстов ΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ². Π’ Π΄ΠΎΠ±Ρ€Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ.

Π ΡƒΠΊΠ° Π½Π° ΠΏΡƒΠ»ΡŒΡΠ΅ β€” Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Π°Ρ тСхничСская Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠ°

Π–Π΅Π»Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ… Β«ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ быстрСС» ΠΏΡ€ΠΈΠ²Π΅Π»ΠΎ нас ΠΊ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ экспСримСнтам с простыми ΠΈ понятными инструмСнтами β€” pinba ΠΈ xhprof.

Pinba отправляла Π½Π°ΠΌ Π² UDP-ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΠΊΠ°Ρ… статистику ΠΎ скорости Ρ€Π°Π±ΠΎΡ‚Ρ‹ частСй Π²Π΅Π±-страниц Π½Π° PHP ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΎΠ½Π»Π°ΠΉΠ½ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ MySQL (c pinba ΠΈΠ΄Π΅Ρ‚ свой Π΄Π²ΠΈΠΆΠΎΠΊ MySQL для быстрой Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΈ событий) ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ список ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΈ Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Π½ΠΈΡ…. А xhprof Π² автоматичСском Ρ€Π΅ΠΆΠΈΠΌΠ΅ позволял ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ Π³Ρ€Π°Ρ„Ρ‹ выполнСния Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹Ρ… PHP-страниц Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊ этому ΠΌΠΎΠ³Π»ΠΎ привСсти β€” спокойно, Π½Π°Π»ΠΈΠ² Ρ‡Π°ΠΉ ΠΈΠ»ΠΈ Ρ‡Π΅Π³ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΏΠΎΠΊΡ€Π΅ΠΏΡ‡Π΅.

НСкотороС врСмя Π½Π°Π·Π°Π΄ инструмСнтарий Π±Ρ‹Π» ΠΏΠΎΠΏΠΎΠ»Π½Π΅Π½ Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΈΠΌ довольно простым ΠΈ понятным Π΄Π²ΠΈΠΆΠΊΠΎΠΌ Π½Π° основС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ индСксации, ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΌ Π² Π»Π΅Π³Π΅Π½Π΄Π°Ρ€Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Lucene β€” Elastic/Kibana. ΠŸΡ€ΠΎΡΡ‚Π°Ρ идСя ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠΉ записи Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² инвСрсный индСкс Lucene Π½Π° Π±Π°Π·Π΅ событий Π² Π»ΠΎΠ³Π°Ρ… ΠΈ быстрый поиск ΠΏΠΎ Π½ΠΈΠΌ с использованиСм фасСтного дСлСния β€” оказалась, ΠΈ ΠΏΡ€Π°Π²Π΄Π°, ΠΏΠΎΠ»Π΅Π·Π½Π°.

НСсмотря Π½Π° довольно тСхничСский Π²ΠΈΠ΄ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ Π² Kibana с Β«ΠΏΡ€ΠΎΡ‚Π΅ΠΊΠ°ΡŽΡ‰ΠΈΠΌΠΈ Π²Π²Π΅Ρ€Ρ…Β» Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΌΠΈ концСпциями Ρ‚ΠΈΠΏΠ° Β«bucketΒ» ΠΈ Π·Π°Π½ΠΎΠ²ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Π΅Π½Π½Ρ‹ΠΉ язык совсСм Π΅Ρ‰Π΅ Π½Π΅ Π·Π°Π±Ρ‹Ρ‚ΠΎΠΉ рСляционной Π°Π»Π³Π΅Π±Ρ€Ρ‹ β€” инструмСнт стал Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π½Π°ΠΌ ΠΏΠΎΠΌΠΎΠ³Π°Ρ‚ΡŒ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π·Π°Π΄Π°Ρ‡Π°Ρ…:

  • Бколько Π±Ρ‹Π»ΠΎ ошибок PHP Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Битрикс24 Π½Π° ΠΏΠΎΡ€Ρ‚Π°Π»Π΅ p1 Π·Π° послСдний час ΠΈ ΠΊΠ°ΠΊΠΈΡ…? ΠŸΠΎΠ½ΡΡ‚ΡŒ, ΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΠΈ быстро ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ.
  • Бколько Π±Ρ‹Π»ΠΎ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΎ Π²ΠΈΠ΄Π΅ΠΎ-Π·Π²ΠΎΠ½ΠΊΠΎΠ² Π½Π° ΠΏΠΎΡ€Ρ‚Π°Π»Π°Ρ… Π² Π“Π΅Ρ€ΠΌΠ°Π½ΠΈΠΈ Π·Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ 24 часа, с ΠΊΠ°ΠΊΠΈΠΌ качСством ΠΈ Π±Ρ‹Π»ΠΈ Π»ΠΈ слоТности с ΠΊΠ°Π½Π°Π»ΠΎΠΌ/ΡΠ΅Ρ‚ΡŒΡŽ?
  • Насколько Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ систСмный Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» (нашС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Π½Π° C для PHP), скомпилированный ΠΈΠ· исходников Π² послСднСм ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ сСрвиса ΠΈ раскатанный ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ? НСт Π»ΠΈ segfaults?
  • ΠŸΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π»ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ PHP? НСт Π»ΠΈ ошибок ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ΠΈΡ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ процСссам памяти: Β«out of memoryΒ»? Найти ΠΈ ΠΎΠ±Π΅Π·Π²Ρ€Π΅Π΄ΠΈΡ‚ΡŒ.

Π’ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€. НСсмотря Π½Π° Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ тСстированиС, Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, ΠΏΡ€ΠΈ ΠΎΡ‡Π΅Π½ΡŒ нСстандартном кСйсС ΠΈ ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½Π½Ρ‹Ρ… Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… появилась досадная ΠΈ нСоТиданная ошибка, Π·Π°Π·Π²ΡƒΡ‡Π°Π»Π° сирСна ΠΈ начался процСсс Π΅Π΅ быстрого исправлСния:

Как ΠΌΡ‹ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ высокоэффСктивноС ΠΈ Π½Π΅Π΄ΠΎΡ€ΠΎΠ³ΠΎΠ΅ DataLake ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, kibana позволяСт ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠΎΠ²Π΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ событиям ΠΈ Π·Π° ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ΅ врСмя инструмСнтом Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ стали ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ дСсятки сотрудников ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠΉ β€” ΠΎΡ‚ Ρ‚Π΅Ρ…ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄ΠΎ QA.

ΠΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ любого подраздСлСния Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ стало ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈ ΠΈΠ·ΠΌΠ΅Ρ€ΡΡ‚ΡŒ β€” вмСсто Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° Π»ΠΎΠ³ΠΎΠ² Π½Π° сСрвСрах, достаточно ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ парсинг Π»ΠΎΠ³ΠΎΠ² ΠΈ ΠΈΡ… ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ Π² кластСр elastic, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΡΠ»Π°ΠΆΠ΄Π°Ρ‚ΡŒΡΡ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, созСрцаниСм Π² Π΄Π°ΡˆΠ±ΠΎΡ€Π΄Π΅ kibana числа ΠΏΡ€ΠΎΠ΄Π°Π½Π½Ρ‹Ρ… Π΄Π²ΡƒΡ…Π³ΠΎΠ»ΠΎΠ²Ρ‹Ρ… котят, Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π½Π½Ρ‹Ρ… Π½Π° 3-d ΠΏΡ€ΠΈΠ½Ρ‚Π΅Ρ€Π΅ Π·Π° ΠΏΡ€ΠΎΡˆΠ»Ρ‹ΠΉ Π»ΡƒΠ½Π½Ρ‹ΠΉ мСсяц.

Базовая бизнСс-Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠ°

ВсС Π·Π½Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ часто бизнСс-Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠ° Π² компаниях начинаСтся с ΡΠΊΡΡ‚Ρ€Π΅ΠΌΠ°Π»ΡŒΠ½ΠΎ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ использования, Π΄Π°, Π΄Π°, Excel. Но, Π³Π»Π°Π²Π½ΠΎΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° Π² Π½Π΅ΠΌ Π½Π΅ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Π»Π°ΡΡŒ. Масло Π² огонь Π΅Ρ‰Π΅ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠ΄Π»ΠΈΠ²Π°Π΅Ρ‚ ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹ΠΉ Google Analytics β€” ΠΊ Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΌΡƒ Π½Π°Ρ‡ΠΈΠ½Π°Π΅ΡˆΡŒ быстро ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ°Ρ‚ΡŒ.

Π’ нашСй, Π³Π°Ρ€ΠΌΠΎΠ½ΠΈΡ‡Π½ΠΎ Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‰Π΅ΠΉΡΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, стали Ρ‚ΠΎ Ρ‚ΡƒΡ‚, Ρ‚ΠΎ Ρ‚Π°ΠΌ, ΠΏΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ Β«ΠΏΡ€ΠΎΡ€ΠΎΠΊΠΈΒ» Π±ΠΎΠ»Π΅Π΅ интСнсивной Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±ΠΎΠ»Π΅Π΅ ΠΊΡ€ΡƒΠΏΠ½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. РСгулярно стали ΠΏΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ потрСбности Π² Π±ΠΎΠ»Π΅Π΅ Π³Π»ΡƒΠ±ΠΎΠΊΠΈΡ… ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ³Ρ€Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚Ρ‡Π΅Ρ‚Π°Ρ… ΠΈ усилиями рСбят ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠΉ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя Π½Π°Π·Π°Π΄ Π±Ρ‹Π»ΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ простоС ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ β€” связка ClickHouse ΠΈ PowerBI.

Π”ΠΎΠ²ΠΎΠ»ΡŒΠ½ΠΎ Π΄ΠΎΠ»Π³ΠΎΠ΅ врСмя это Π³ΠΈΠ±ΠΊΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π»ΠΎ, Π½ΠΎ постСпСнно стало ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ClickHouse β€” Π½Π΅ Ρ€Π΅Π·ΠΈΠ½ΠΎΠ²Ρ‹ΠΉ ΠΈ нСльзя Π½Π°Π΄ Π½ΠΈΠΌ Ρ‚Π°ΠΊ ΠΈΠ·Π΄Π΅Π²Π°Ρ‚ΡŒΡΡ.

Π’ΡƒΡ‚ Π²Π°ΠΆΠ½ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ClickHouse, ΠΊΠ°ΠΊ ΠΈ Druid, ΠΊΠ°ΠΊ ΠΈ Vertica, ΠΊΠ°ΠΊ ΠΈ Amazon RedShift (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π° Π±Π°Π·Π΅ postgres), это аналитичСскиС Π΄Π²ΠΈΠΆΠΊΠΈ, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π½Π° довольно ΡƒΠ΄ΠΎΠ±Π½ΡƒΡŽ Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΡƒ (суммы, Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΈ, ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ-максимум ΠΏΠΎ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ ΠΈ Π½Π΅ΠΌΠ½ΠΎΠΆΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΆΠΎΠΉΠ½ΠΎΠ²), Ρ‚.ΠΊ. ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ для эффСктивного хранСния ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ рСляционных Ρ‚Π°Π±Π»ΠΈΡ†, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ извСстного Π½Π°ΠΌ MySQL ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… (row-oriented) Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ….

По сути, ClickHouse лишь Π±ΠΎΠ»Π΅Π΅ вмСстимая Β«Π±Π°Π·ΠΊΠ°Β» Π΄Π°Π½Π½Ρ‹Ρ…, с Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ Ρ‚ΠΎΡ‡Π΅Ρ‡Π½ΠΎΠΉ вставкой (Ρ‚Π°ΠΊ Π·Π°Π΄ΡƒΠΌΠ°Π½ΠΎ, всС ΠΎΠΊ), Π½ΠΎ приятной Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΎΠΉ ΠΈ Π½Π°Π±ΠΎΡ€ΠΎΠΌ интСрСсных ΠΌΠΎΡ‰Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Π”Π°, ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°ΠΆΠ΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ кластСр β€” Π½ΠΎ, Π²Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Π·Π°Π±ΠΈΠ²Π°Ρ‚ΡŒ Π³Π²ΠΎΠ·Π΄ΠΈ микроскопом Π½Π΅ совсСм ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΈ ΠΌΡ‹ Π½Π°Ρ‡Π°Π»ΠΈ ΠΈΡΠΊΠ°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.

Бпрос Π½Π° python ΠΈ Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΎΠ²

Π’ нашСй ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΈΡˆΡƒΡ‚ ΠΊΠΎΠ΄ ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ дСнь Π½Π° протяТСнии 10-20 Π»Π΅Ρ‚ Π½Π° PHP, JavaScript, C#, C/Π‘++, Java, Go, Rust, Python, Bash. Π’Π°ΠΊΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Ρ… систСмных администраторов, ΠΏΠ΅Ρ€Π΅ΠΆΠΈΠ²ΡˆΠΈΡ… Π½Π΅ ΠΎΠ΄Π½Ρƒ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅Π²Π΅Ρ€ΠΎΡΡ‚Π½ΡƒΡŽ катастрофу, Π½Π΅ Π²ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΡƒΡŽΡΡ Π² Π·Π°ΠΊΠΎΠ½Ρ‹ статистики (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ³Π΄Π° уничтоТаСтся Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ дисков Π² raid-10 ΠΏΡ€ΠΈ сильном ΡƒΠ΄Π°Ρ€Π΅ ΠΌΠΎΠ»Π½ΠΈΠΈ). Π’ Ρ‚Π°ΠΊΠΈΡ… условиях Π΄ΠΎΠ»Π³ΠΎΠ΅ врСмя Π±Ρ‹Π»ΠΎ нСпонятно, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Β«Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊ Π½Π° pythonΒ». Python ΠΆΠ΅ ΠΊΠ°ΠΊ PHP, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ‡ΡƒΡ‚ΡŒ Π΄Π»ΠΈΠ½Π½Π΅Π΅ ΠΈ слСдов вСщСств, ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΡ… сознаниС, Π² исходном ΠΊΠΎΠ΄Π΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ помСньшС. Однако, ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ создания всС Π½ΠΎΠ²Ρ‹Ρ… ΠΈ Π½ΠΎΠ²Ρ‹Ρ… аналитичСских ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ² ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ всС Π³Π»ΡƒΠ±ΠΆΠ΅ стали ΠΎΡΠΎΠ·Π½Π°Π²Π°Ρ‚ΡŒ Π²Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΠ·ΠΊΠΎΠΉ спСциализации Π² инструмСнтах Ρ‚ΠΈΠΏΠ° numpy, pandas, matplotlib, seaborn.
Π Π΅ΡˆΠ°ΡŽΡ‰ΡƒΡŽ Ρ€ΠΎΠ»ΡŒ, скорСС всСго, сыграли Π²Π½Π΅Π·Π°ΠΏΠ½Ρ‹Π΅ ΠΎΠ±ΠΌΠΎΡ€ΠΎΠΊΠΈ сотрудников ΠΎΡ‚ сочСтания слов «логистичСская рСгрСссия» ΠΈ дСмонстрация эффСктивного построСния ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ² Π½Π° ΠΎΠ±ΡŠΠ΅ΠΌΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π°, Π΄Π°, pyspark.

Apache Spark, Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ лоТится рСляционная Π°Π»Π³Π΅Π±Ρ€Π° ΠΈ возмоТности ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π»ΠΈ Ρ‚Π°ΠΊΠΎΠ΅ Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»Π΅Π½ΠΈΠ΅ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΡˆΠΈΡ… ΠΊ MySQL, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ укрСплСния Π±ΠΎΠ΅Π²Ρ‹Ρ… рядов ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΌΠΈ Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠ°ΠΌΠΈ стала ясной, ΠΊΠ°ΠΊ дСнь.

Π”Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΠ΅ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ Apache Spark/Hadoop Π²Π·Π»Π΅Ρ‚Π΅Ρ‚ΡŒ ΠΈ Ρ‡Ρ‚ΠΎ пошло Π½Π΅ совсСм ΠΏΠΎ ΡΡ†Π΅Π½Π°Ρ€ΠΈΡŽ

Однако, вскорС стало понятно, Ρ‡Ρ‚ΠΎ со Spark, Π²ΠΈΠ΄ΠΈΠΌΠΎ, Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ систСмно Π½Π΅ совсСм Ρ‚Π°ΠΊ ΠΈΠ»ΠΈ Π½ΡƒΠΆΠ½ΠΎ просто Π»ΡƒΡ‡ΡˆΠ΅ ΠΌΡ‹Ρ‚ΡŒ Ρ€ΡƒΠΊΠΈ. Если стСк Hadoop/MapReduce/Lucene Π΄Π΅Π»Π°Π»ΠΈ достаточно ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ программисты, Ρ‡Ρ‚ΠΎ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ссли с пристрастиСм ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ исходники Π½Π° Java ΠΈΠ»ΠΈ ΠΈΠ΄Π΅ΠΈ Π”ΡƒΠ³Π° ΠšΠ°Ρ‚Ρ‚ΠΈΠ½Π³Π° Π² Lucene, Ρ‚ΠΎ Spark, Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ, написан Π½Π° ΠΎΡ‡Π΅Π½ΡŒ спорном с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния практичности ΠΈ сСйчас Π½Π΅ Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‰Π΅ΠΌΡΡ экзотичСском языкС Scala. А рСгулярноС ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ вычислСний Π½Π° кластСрС Spark ΠΈΠ·-Π·Π° Π½Π΅Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠΉ ΠΈ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ памяти ΠΏΠΎΠ΄ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ reduce (ΠΏΡ€ΠΈΠ»Π΅Ρ‚Π°Π΅Ρ‚ сразу ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ) β€” создало Π²ΠΎΠΊΡ€ΡƒΠ³ Π½Π΅Π³ΠΎ ΠΎΡ€Π΅ΠΎΠ» Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π΅ΡΡ‚ΡŒ ΠΊΡƒΠ΄Π° расти. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ усугубляло большоС количСство странных ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… ΠΏΠΎΡ€Ρ‚ΠΎΠ², Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², растущих Π² самых нСпонятных мСстах ΠΈ Π°Π΄ jar-зависимостСй β€” Ρ‡Ρ‚ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π»ΠΎ Ρƒ систСмных администраторов ΠΎΠ΄Π½ΠΎ ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π·Π½Π°ΠΊΠΎΠΌΠΎΠ΅ с дСтства чувство: Π»ΡŽΡ‚ΡƒΡŽ Π½Π΅Π½Π°Π²ΠΈΡΡ‚ΡŒ (Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΌΡ‹Ρ‚ΡŒ Ρ€ΡƒΠΊΠΈ с ΠΌΡ‹Π»ΠΎΠΌ).

ΠœΡ‹, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅, Β«ΠΏΠ΅Ρ€Π΅ΠΆΠΈΠ»ΠΈΒ» нСсколько Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… аналитичСских ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… Apache Spark (Π² Ρ‚.Ρ‡. Spark Streaming, Spark SQL) ΠΈ экосистСму Hadoop (ΠΈ прочая ΠΈ прочая). НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ Π½Π°ΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ «это» Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ ΠΈ Β«ΠΎΠ½ΠΎΒ» практичСски пСрСстало Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ ΠΏΠ°Π΄Π°Ρ‚ΡŒ ΠΈΠ·-Π·Π° измСнСния Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ дизбалансировки Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ Ρ…ΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ RDD, ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ Π²Π·ΡΡ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΡƒΠΆΠ΅ Π³ΠΎΡ‚ΠΎΠ²ΠΎΠ΅, обновляСмоС ΠΈ администрируСмоС Π³Π΄Π΅-Ρ‚ΠΎ Π² ΠΎΠ±Π»Π°ΠΊΠ΅ ΡƒΡΠΈΠ»ΠΈΠ²Π°Π»ΠΎΡΡŒ всС сильнСС ΠΈ сильнСС. ИмСнно Π² это врСмя ΠΌΡ‹ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²ΡƒΡŽ ΠΎΠ±Π»Π°Ρ‡Π½ΡƒΡŽ сборку Amazon Web Services β€” EMR ΠΈ, Π² послСдствии, ΡΡ‚Π°Ρ€Π°Π»ΠΈΡΡŒ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΈ ΡƒΠΆΠ΅ Π½Π° Π½Π΅ΠΉ. EMR это ΠΏΡ€ΠΈΠ³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹ΠΉ Π°ΠΌΠ°Π·ΠΎΠ½ΠΎΠΌ Apache Spark с Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ софтом ΠΈΠ· экосистСмы, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΠΊΠ°ΠΊ Cloudera/Hortonworks сборки.

Β«Π Π΅Π·ΠΈΠ½ΠΎΠ²ΠΎΠ΅Β» Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ для Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΈ β€” острая ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ

ΠžΠΏΡ‹Ρ‚ «приготовлСния» Hadoop/Spark с ΠΎΠΆΠΎΠ³Π°ΠΌΠΈ Ρ€Π°Π·Π½Ρ‹Ρ… частСй Ρ‚Π΅Π»Π° Π½Π΅ ΠΏΡ€ΠΎΡˆΠ΅Π» Π΄Π°Ρ€ΠΎΠΌ. Π‘Ρ‚Π°Π»Π° всС Ρ‡Π΅Ρ‚Ρ‡Π΅ Π²Ρ‹Ρ€ΠΈΡΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ создания Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ Π½Π΅Π΄ΠΎΡ€ΠΎΠ³ΠΎΠ³ΠΎ ΠΈ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠ³ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±Ρ‹Π»ΠΎ Π±Ρ‹ устойчиво ΠΊ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΌ авариям ΠΈ Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ Π² Ρ€Π°Π·Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… систСм ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠΎ этим Π΄Π°Π½Π½Ρ‹ΠΌ эффСктивныС ΠΈ Π² Ρ€Π°Π·ΡƒΠΌΠ½ΠΎΠ΅ врСмя выполняСмыС Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ для ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ².

Π’Π°ΠΊΠΆΠ΅ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ софта этой ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Π½Π΅ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°Π»ΠΎΡΡŒ Π² Π½ΠΎΠ²ΠΎΠ³ΠΎΠ΄Π½ΠΈΠΉ Π½ΠΎΡ‡Π½ΠΎΠΉ ΠΊΠΎΡˆΠΌΠ°Ρ€ с Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ΠΌ 20-страничных Java трСйсов ΠΈ Π°Π½Π°Π»ΠΈΠ· ΠΊΠΈΠ»ΠΎΠΌΠ΅Ρ‚Ρ€ΠΎΠ²Ρ‹Ρ… ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹Ρ… Π»ΠΎΠ³ΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Ρ‹ кластСра с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Spark History Server ΠΈ Π»ΡƒΠΏΡ‹ с подсвСткой. Π₯ΠΎΡ‚Π΅Π»ΠΎΡΡŒ ΠΈΠΌΠ΅Ρ‚ΡŒ простой ΠΈ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹ΠΉ инструмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ рСгулярного ныряния ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡ‚, Ссли Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° пСрСстал Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ стандартный MapReduce запрос ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠ°Π΄Π΅Π½ΠΈΠΈ ΠΈΠ· памяти Π²ΠΎΡ€ΠΊΠ΅Ρ€Π° reduce-Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄Π°Ρ‡Π½ΠΎ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ партиционирования исходных Π΄Π°Π½Π½Ρ‹Ρ….

Amazon S3 β€” ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ Π½Π° DataLake?

ΠžΠΏΡ‹Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Hadoop/MapReduce Π½Π°ΡƒΡ‡ΠΈΠ» Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½Π° ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠ°Ρ надСТная файловая систСма ΠΈ Π½Π°Π΄ Π½Π΅ΠΉ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ Π²ΠΎΡ€ΠΊΠ΅Ρ€Ρ‹, «приходящиС» ΠΏΠΎΠ±Π»ΠΈΠΆΠ΅ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π³ΠΎΠ½ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ сСти. Π’ΠΎΡ€ΠΊΠ΅Ρ€Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠΌΠ΅Ρ‚ΡŒ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ€Π°Π·Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°Ρ…, Π½ΠΎ, ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π½Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ лишнюю ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π·Π°Ρ€Π°Π½Π΅Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² ΡƒΠ΄ΠΎΠ±Π½Ρ‹Ρ… для Π²ΠΎΡ€ΠΊΠ΅Ρ€ΠΎΠ² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°Ρ….

Π•Ρ‰Π΅ Ρ€Π°Π· β€” основная идСя. НСт ТСлания Β«Π·Π°Π»ΠΈΠ²Π°Ρ‚ΡŒΒ» большиС Π΄Π°Π½Π½Ρ‹Π΅ Π² Π΅Π΄ΠΈΠ½Ρ‹ΠΉ кластСрный аналитичСский Π΄Π²ΠΈΠΆΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ всС Ρ€Π°Π²Π½ΠΎ Ρ€Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ захлСбнСтся ΠΈ придСтся Π΅Π³ΠΎ нСкрасиво ΡˆΠ°Ρ€Π΄ΠΈΡ‚ΡŒ. Π₯очСтся Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹, просто Ρ„Π°ΠΉΠ»Ρ‹, Π² понятном Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΠΎ Π½ΠΈΠΌ эффСктивныС аналитичСскиС запросы Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ, Π½ΠΎ понятными инструмСнтами. И Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Ρ€Π°Π·Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°Ρ… Π±ΡƒΠ΄Π΅Ρ‚ всС большС ΠΈ большС. И Π»ΡƒΡ‡ΡˆΠ΅ ΡˆΠ°Ρ€Π΄ΠΈΡ‚ΡŒ Π½Π΅ Π΄Π²ΠΈΠΆΠΎΠΊ, Π° исходныС Π΄Π°Π½Π½Ρ‹Π΅. Нам Π½ΡƒΠΆΠ΅Π½ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΡ‹ΠΉ ΠΈ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ DataLake, Ρ€Π΅ΡˆΠΈΠ»ΠΈ мы…

А Ρ‡Ρ‚ΠΎ Ссли Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ Π² ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½ΠΎΠΌ ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠΌ извСстном ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΌ ΠΎΠ±Π»Π°Ρ‡Π½ΠΎΠΌ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Amazon S3, Π½Π΅ занимаясь собствСнным ΠΏΡ€ΠΈΠ³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΎΡ‚Π±ΠΈΠ²Π½Ρ‹Ρ… ΠΈΠ· Hadoop?

ΠŸΠΎΠ½ΡΡ‚Π½ΠΎ, пСрсданныС «низя», Π½ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ Ссли Ρ‚ΡƒΠ΄Π° вынСсти ΠΈ «эффСктивно ΠΏΠΎΠ³ΠΎΠ½ΡΡ‚ΡŒΒ»?

ΠšΠ»Π°ΡΡ‚Π΅Ρ€Π½ΠΎ-Π±ΠΈΠ³Π΄Π°Ρ‚Π°-аналитичСская экосистСма Amazon Web Services β€” ΠΎΡ‡Π΅Π½ΡŒ простыми словами

Будя ΠΏΠΎ Π½Π°ΡˆΠ΅ΠΌΡƒ ΠΎΠΏΡ‹Ρ‚Ρƒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с AWS, Ρ‚Π°ΠΌ Π΄Π°Π²Π½ΠΎ ΠΈ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠΎΠ΄ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ соусами Apache Hadoop/MapReduce, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² сСрвисС DataPipeline (Π·Π°Π²ΠΈΠ΄ΡƒΡŽ ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌ, Π²ΠΎΡ‚ Π½Π°ΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ ΠΆΠ΅ Π΅Π³ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ). Π’ΠΎΡ‚ Ρ‚ΡƒΡ‚ ΠΌΡ‹ настроили бэкапы ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… сСрвисов ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ† DynamoDB:
Как ΠΌΡ‹ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ высокоэффСктивноС ΠΈ Π½Π΅Π΄ΠΎΡ€ΠΎΠ³ΠΎΠ΅ DataLake ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ

И ΠΎΠ½ΠΈ рСгулярно Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π½Π° встроСнных кластСрах Hadoop/MapReduce ΠΊΠ°ΠΊ часы ΡƒΠΆΠ΅ нСсколько Π»Π΅Ρ‚. «Настроил ΠΈ Π·Π°Π±Ρ‹Π»Β»:

Как ΠΌΡ‹ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ высокоэффСктивноС ΠΈ Π½Π΅Π΄ΠΎΡ€ΠΎΠ³ΠΎΠ΅ DataLake ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ

Π’Π°ΠΊΠΆΠ΅, ΠΌΠΎΠΆΠ½ΠΎ эффСктивно Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ датасатанизмом, подняв для Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΎΠ² Jupiter-Π½ΠΎΡƒΡ‚Π±ΡƒΠΊΠΈ Π² ΠΎΠ±Π»Π°ΠΊΠ΅ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для обучСния ΠΈ Π΄Π΅ΠΏΠ»ΠΎΠΈΠ½Π³Π° AI-ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π² Π±ΠΎΠΉ сСрвис AWS SageMaker. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ это выглядит Ρƒ нас:

Как ΠΌΡ‹ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ высокоэффСктивноС ΠΈ Π½Π΅Π΄ΠΎΡ€ΠΎΠ³ΠΎΠ΅ DataLake ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ

И Π΄Π°, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒ сСбС ΠΈΠ»ΠΈ Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΡƒ Π½ΠΎΡƒΡ‚Π±ΡƒΠΊ Π² ΠΎΠ±Π»Π°ΠΊΠ΅ ΠΈ ΠΏΡ€ΠΈΡ†Π΅ΠΏΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΊ Hadoop/Spark кластСру, ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ всС ΠΏΠΎΡ‚ΠΎΠΌ Β«ΠΏΡ€ΠΈΠ±ΠΈΡ‚ΡŒΒ»:

Как ΠΌΡ‹ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ высокоэффСктивноС ΠΈ Π½Π΅Π΄ΠΎΡ€ΠΎΠ³ΠΎΠ΅ DataLake ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ

Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ для ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… аналитичСских ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΡ‹ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ использовали сСрвис EMR для ΠΌΠ°ΡΡˆΡ‚Π°Π±Π½Ρ‹Ρ… обсчСтов ΠΈ Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΈ. А Ρ‡Ρ‚ΠΎ насчСт систСмного Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для DataLake, получится Π»ΠΈ? Π’ этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΌΡ‹ Π±Ρ‹Π»ΠΈ Π½Π° Π³Ρ€Π°Π½ΠΈ Π½Π°Π΄Π΅ΠΆΠ΄Ρ‹ ΠΈ отчаяния ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π»ΠΈ поиск.

AWS Glue β€” Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½ΠΎ ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Apache Spark Β«Π½Π° стСроидах»

Оказалось, Ρ‡Ρ‚ΠΎ Π² AWS Π΅ΡΡ‚ΡŒ «своя» вСрсия стСка Β«Hive/Pig/SparkΒ». Роль Hive, Ρ‚.Π΅. ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² Π² DataLake выполняСт сСрвис Β«Data catalogΒ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈ Π½Π΅ скрываСт ΠΎ своСй совмСстимости с Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ Apache Hive. Π’ этот сСрвис Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠΌ, Π³Π΄Π΅ Π»Π΅ΠΆΠ°Ρ‚ ваши Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ Π² ΠΊΠ°ΠΊΠΎΠΌ ΠΎΠ½ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅. Π”Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² s3, Π½ΠΎ ΠΈ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ ΠΎΠ± этом Π½Π΅ Π² этом постС. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π΄Π°Π½Π½Ρ‹Ρ… DataLake ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½ Ρƒ нас:

Как ΠΌΡ‹ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ высокоэффСктивноС ΠΈ Π½Π΅Π΄ΠΎΡ€ΠΎΠ³ΠΎΠ΅ DataLake ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ

Π€Π°ΠΉΠ»Ρ‹ зарСгистрированы, ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ. Если Ρ„Π°ΠΉΠ»Ρ‹ обновились β€” запускаСм Π»ΠΈΠ±ΠΎ Ρ€ΡƒΠΊΠ°ΠΌΠΈ Π»ΠΈΠ±ΠΎ ΠΏΠΎ Ρ€Π°ΡΠΏΠΈΡΠ°Π½ΠΈΡŽ crawlers, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ обновят ΠΎ Π½ΠΈΡ… ΠΈΠ· ΠΎΠ·Π΅Ρ€Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈ сохранят. Π”Π°Π»ΡŒΡˆΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· ΠΎΠ·Π΅Ρ€Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΊΡƒΠ΄Π°-Ρ‚ΠΎ Π²Ρ‹Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ. Π’ самом простом случаС β€” Π²Ρ‹Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ Ρ‚ΠΎΠΆΠ΅ Π² s3. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Π³Π΄Π΅ ΡƒΠ³ΠΎΠ΄Π½ΠΎ, Π½ΠΎ прСдлагаСтся Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ процСсс ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π° кластСрС Apache Spark с использованиСм Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Ρ… возмоТностСй Ρ‡Π΅Ρ€Π΅Π· API AWS Glue. По сути, ΠΌΠΎΠΆΠ½ΠΎ Π²Π·ΡΡ‚ΡŒ старый Π΄ΠΎΠ±Ρ€Ρ‹ΠΉ ΠΈ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π½Π° python с использованиСм Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡ΠΊΠΈ pyspark ΠΈ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° N Π½ΠΎΠ΄Π°Ρ… кластСра ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ мощности с ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ΠΎΠΌ, Π±Π΅Π· копания Π² ΠΏΠΎΡ‚Ρ€ΠΎΡ…Π°Ρ… Hadoop ΠΈ таскания Π΄ΠΎΠΊΠ΅Ρ€-ΠΌΠΎΠΊΠ΅Ρ€ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² ΠΈ устранСния ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² зависимостСй.

Π•Ρ‰Π΅ Ρ€Π°Π· β€” простая идСя. НС Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ Apache Spark, Π½ΡƒΠΆΠ½ΠΎ лишь Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π½Π° python для pyspark, ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ локально Π½Π° Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ столС ΠΈ Π·Π°Ρ‚Π΅ΠΌ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π½Π° большом кластСрС Π² ΠΎΠ±Π»Π°ΠΊΠ΅, ΡƒΠΊΠ°Π·Π°Π² Π³Π΄Π΅ Π»Π΅ΠΆΠ°Ρ‚ исходныС Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΊΡƒΠ΄Π° ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. Иногда это Π½ΡƒΠΆΠ½ΠΎ ΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΈ Π²ΠΎΡ‚ ΠΊΠ°ΠΊ это настроСно Ρƒ нас:

Как ΠΌΡ‹ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ высокоэффСктивноС ΠΈ Π½Π΅Π΄ΠΎΡ€ΠΎΠ³ΠΎΠ΅ DataLake ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ссли Π½ΡƒΠΆΠ½ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΎΠ±ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π½Π° Spark-кластСрС Π½Π° Π΄Π°Π½Π½Ρ‹Ρ… Π² s3 β€” пишСм Π½Π° python/pyspark ΠΊΠΎΠ΄, тСстируСм ΠΈ Π² Π΄ΠΎΠ±Ρ€Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ Π² ΠΎΠ±Π»Π°ΠΊΠΎ.

А Ρ‡Ρ‚ΠΎ с оркСстровкой? А Ссли Π·Π°Π΄Π°Π½ΠΈΠ΅ ΡƒΠΏΠ°Π»ΠΎ ΠΈ ΠΏΡ€ΠΎΠΏΠ°Π»ΠΎ? Π”Π°, прСдлагаСтся ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ красивый ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ Π² стилС Apache Pig ΠΈ ΠΌΡ‹ Π΄Π°ΠΆΠ΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π»ΠΈ ΠΈΡ…, Π½ΠΎ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΏΠΎΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ свою Π³Π»ΡƒΠ±ΠΎΠΊΠΎ ΠΊΠ°ΡΡ‚ΠΎΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ оркСстровку Π½Π° PHP ΠΈ JavaScript (я понимаю, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΊΠΎΠ³Π½ΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΉ диссонанс, Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Π³ΠΎΠ΄Π°ΠΌΠΈ ΠΈ Π±Π΅Π· ошибок).

Как ΠΌΡ‹ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ высокоэффСктивноС ΠΈ Π½Π΅Π΄ΠΎΡ€ΠΎΠ³ΠΎΠ΅ DataLake ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ

Π€ΠΎΡ€ΠΌΠ°Ρ‚ Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Ρ… Π² ΠΎΠ·Π΅Ρ€Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ² β€” ΠΊΠ»ΡŽΡ‡ ΠΊ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ

ΠžΡ‡Π΅Π½ΡŒ, ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ Π΅Ρ‰Π΅ Π΄Π²Π° ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°. Π§Ρ‚ΠΎΠ±Ρ‹ запросы ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΎΠ·Π΅Ρ€Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ»ΠΈΡΡŒ максимально быстро ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π΅ Π΄Π΅Π³Ρ€Π°Π΄ΠΈΡ€ΠΎΠ²Π°Π»Π° ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Π½ΡƒΠΆΠ½ΠΎ:

  • Колонки Ρ„Π°ΠΉΠ»ΠΎΠ² Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ (Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ всС строки, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°Ρ…). Для этого ΠΌΡ‹ взяли Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ parquet с сТатиСм
  • ΠžΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ ΡˆΠ°Ρ€Π΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠΎ ΠΏΠ°ΠΏΠΎΡ‡ΠΊΠ°ΠΌ Π² Π΄ΡƒΡ…Π΅: язык, Π³ΠΎΠ΄, мСсяц, дСнь, нСдСля. Π”Π²ΠΈΠΆΠΊΠΈ, ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠ΅ этот Ρ‚ΠΈΠΏ ΡˆΠ°Ρ€Π΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ, Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΏΠ°ΠΏΠΎΡ‡ΠΊΠΈ, Π½Π΅ пСрСлопачивая Ρ‡Π΅Ρ€Π΅Π· сСбя всС Π΄Π°Π½Π½Ρ‹Π΅ подряд.

По сути, Ρ‚Π°ΠΊΠΈΠΌ способом, Π²Ρ‹ Π²Ρ‹ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚Π΅ Π² Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ эффСктивном Π²ΠΈΠ΄Π΅ исходныС Π΄Π°Π½Π½Ρ‹Π΅ для Π½Π°Π²Π΅ΡˆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… свСрху аналитичСских Π΄Π²ΠΈΠΆΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈ Π² ΡˆΠ°Ρ€Π΄ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΏΠ°ΠΏΠΎΡ‡ΠΊΠΈ ΡƒΠΌΠ΅ΡŽΡ‚ ΠΈΠ·Π±ΠΈΡ€Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ² Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ. НС Π½ΡƒΠΆΠ½ΠΎ Π½ΠΈΠΊΡƒΠ΄Π°, получатся, Β«Π·Π°Π»ΠΈΠ²Π°Ρ‚ΡŒΒ» Π΄Π°Π½Π½Ρ‹Π΅ (Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΆΠ΅ просто Π»ΠΎΠΏΠ½Π΅Ρ‚) β€” просто сразу Ρ€Π°Π·ΡƒΠΌΠ½ΠΎ ΠΈΡ… ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅ Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅. РазумССтся, Ρ‚ΡƒΡ‚ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ понятно, Ρ‡Ρ‚ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² DataLake ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΉ csv-Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΡƒΠΆΠ½ΠΎ сначала вСсь построчно ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ кластСром, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ β€” Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ цСлСсообразно. ΠŸΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅ Π½Π°Π΄ двумя Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΡƒΠ½ΠΊΡ‚Π°ΠΌΠΈ Π΅Ρ‰Π΅ Ρ€Π°Π·, Ссли ΠΏΠΎΠΊΠ° нСпонятно Π·Π°Ρ‡Π΅ΠΌ всС это.

AWS Athena β€” Β«Ρ‡Π΅Ρ€Ρ‚Β» ΠΈΠ· Ρ‚Π°Π±Π°ΠΊΠ΅Ρ€ΠΊΠΈ

И Ρ‚ΡƒΡ‚, создавая ΠΎΠ·Π΅Ρ€ΠΎ, ΠΌΡ‹, ΠΊΠ°ΠΊ-Ρ‚ΠΎ ΠΌΠΈΠΌΠΎΡ…ΠΎΠ΄ΠΎΠΌ, Π½Π°Ρ‚ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ Π½Π° Amazon Athena. Π’Π½Π΅Π·Π°ΠΏΠ½ΠΎ оказалось, Ρ‡Ρ‚ΠΎ Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½ΠΎ слоТив ΠΏΠΎ ΡˆΠ°Ρ€Π΄Π°ΠΌ-ΠΏΠ°ΠΏΠΎΡ‡ΠΊΠ°ΠΌ Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ (parquet) ΠΊΠΎΠ»ΠΎΠ½ΠΎΡ‡Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ наши Ρ„Π°ΠΉΠ»Ρ‹ ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹Ρ… Π»ΠΎΠ³ΠΎΠ² β€” ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ быстро ΠΏΠΎ Π½ΠΈΠΌ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΡ€Π°ΠΉΠ½Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ ΠΈ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΎΡ‚Ρ‡Π΅Ρ‚Ρ‹ Π‘Π•Π—, Π±Π΅Π· Apache Spark/Glue кластСра.

Π”Π²ΠΈΠΆΠΎΠΊ Athena, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ Π½Π° Π΄Π°Π½Π½Ρ‹Ρ… Π² s3, основан Π½Π° Π»Π΅Π³Π΅Π½Π΄Π°Ρ€Π½ΠΎΠΌ Presto β€” прСдставитСлС сСмСйства MPP (massive parallel processing) ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² ΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…, Π±Π΅Ρ€ΡƒΡ‰ΠΈΠΉ Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚Π°ΠΌ, Π³Π΄Π΅ ΠΎΠ½ΠΈ Π»Π΅ΠΆΠ°Ρ‚, ΠΎΡ‚ s3 ΠΈ Hadoop Π΄ΠΎ Cassandra ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… тСкстовых Ρ„Π°ΠΉΠ»ΠΈΠΊΠΎΠ². НуТно просто ΠΏΠΎΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Athena Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ SQL-запрос, Π° дальшС всС Β«Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ быстро ΠΈ само». Π’Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Athena «умная», Ρ…ΠΎΠ΄ΠΈΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π½ΡƒΠΆΠ½Ρ‹Π΅ ΡˆΠ°Ρ€Π΄ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΏΠ°ΠΏΠΎΡ‡ΠΊΠΈ ΠΈ считываСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½ΡƒΠΆΠ½Ρ‹Π΅ Π² запросС ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ.

Π’Π°Ρ€ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‚ΡΡ запросы ΠΊ Athena Ρ‚ΠΎΠΆΠ΅ интСрСсно. ΠœΡ‹ ΠΏΠ»Π°Ρ‚ΠΈΠΌ Π·Π° объСм просканированных Π΄Π°Π½Π½Ρ‹Ρ…. Π’.Π΅. Π½Π΅ Π·Π° число машин Π² кластСрС ΠΏΠΎΠΌΠΈΠ½ΡƒΡ‚Π½ΠΎ, а… Π·Π° Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ просканированныС Π½Π° 100-500 ΠΌΠ°ΡˆΠΈΠ½Π°Ρ… Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для выполнСния запроса Π΄Π°Π½Π½Ρ‹Π΅.

А Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ ΠΈΠ· ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΡˆΠ°Ρ€Π΄ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΠ°ΠΏΠΎΡ‡Π΅ΠΊ, оказалось, Ρ‡Ρ‚ΠΎ сСрвис Athena Π½Π°ΠΌ обходится Π² дСсятки Π΄ΠΎΠ»Π»Π°Ρ€ΠΎΠ² мСсяц. Ну прСкрасно ΠΆΠ΅, ΠΏΠΎΡ‡Ρ‚ΠΈ бСсплатно, ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΎΠΉ Π½Π° кластСрах!

Π’ΠΎΡ‚, кстати, ΠΊΠ°ΠΊ ΠΌΡ‹ ΡˆΠ°Ρ€Π΄ΠΈΡ€ΡƒΠ΅ΠΌ свои Π΄Π°Π½Π½Ρ‹Π΅ Π² s3:

Как ΠΌΡ‹ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ высокоэффСктивноС ΠΈ Π½Π΅Π΄ΠΎΡ€ΠΎΠ³ΠΎΠ΅ DataLake ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅, Π·Π° ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ΅ врСмя, Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Ρ€Π°Π·Π½Ρ‹Π΅ подраздСлСния, ΠΎΡ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ бСзопасности Π΄ΠΎ Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΈ, стали Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ запросы ΠΊ Athena ΠΈ быстро, Π·Π° сСкунды, ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ ΠΈΠ· Β«Π±ΠΎΠ»ΡŒΡˆΠΈΡ…Β» Π΄Π°Π½Π½Ρ‹Ρ… Π·Π° довольно большиС ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Ρ‹: мСсяцы, ΠΏΠΎΠ»ΡƒΠ³ΠΎΠ΄ΠΈΠ΅ ΠΈ Ρ‚.ΠΏ.

Но ΠΌΡ‹ пошли дальшС ΠΈ стали Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π·Π° ΠΎΡ‚Π²Π΅Ρ‚Π°ΠΌΠΈ Π² ΠΎΠ±Π»Π°ΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· ODBC-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€: Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊ Π² ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½ΠΎΠΉ консоли ΠΏΠΈΡˆΠ΅Ρ‚ SQL-запрос, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π° 100-500 ΠΌΠ°ΡˆΠΈΠ½Π°Ρ… Β«Π·Π° ΠΊΠΎΠΏΠ΅ΠΉΠΊΠΈΒ» ΡˆΠ΅Ρ€ΡΡ‚ΠΈΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ Π² s3 ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‚ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π·Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ сСкунд. Π£Π΄ΠΎΠ±Π½ΠΎ. И быстро. Π”ΠΎ сих ΠΏΠΎΡ€ Π½Π΅ вСрится.

Π’ ΠΈΡ‚ΠΎΠ³Π΅, приняв Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² s3, Π² эффСктивном ΠΊΠΎΠ»ΠΎΠ½ΠΎΡ‡Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ΠΈ с Ρ€Π°Π·ΡƒΠΌΠ½Ρ‹ΠΌ ΡˆΠ°Ρ€Π΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ папочкам… ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ DataLake ΠΈ быстрый ΠΈ Π΄Π΅ΡˆΠ΅Π²Ρ‹ΠΉ аналитичСский Π΄Π²ΠΈΠΆΠΎΠΊ β€” бСсплатно. И ΠΎΠ½ стал ΠΎΡ‡Π΅Π½ΡŒ популярным Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, Ρ‚.ΠΊ. ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚ SQL ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° порядки быстрСС, Ρ‡Π΅ΠΌ Ρ‡Π΅Ρ€Π΅Π· запуски/остановки/настройки кластСров. «А Ссли Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ, Π·Π°Ρ‡Π΅ΠΌ ΠΏΠ»Π°Ρ‚ΠΈΡ‚ΡŒ большС?Β»

Запрос ΠΊ Athena выглядит ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ. ΠŸΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ достаточно слоТный ΠΈ многостраничный SQL-запрос, Π½ΠΎ ΠΌΡ‹ ограничимся простой Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠ΄Ρ‹ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² Π±Ρ‹Π»ΠΈ Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° нСсколько нСдСль Π½Π°Π·Π°Π΄ Π² Π»ΠΎΠ³Π°Ρ… Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π²Π΅Π±-сСрвСра ΠΈ убСдимся, Ρ‡Ρ‚ΠΎ ошибок Π½Π΅Ρ‚:

Как ΠΌΡ‹ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ высокоэффСктивноС ΠΈ Π½Π΅Π΄ΠΎΡ€ΠΎΠ³ΠΎΠ΅ DataLake ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ

Π’Ρ‹Π²ΠΎΠ΄Ρ‹

ΠŸΡ€ΠΎΠΉΠ΄Ρ, Π½Π΅ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»Π³ΠΈΠΉ, Π½ΠΎ Π±ΠΎΠ»Π΅Π·Π½Π΅Π½Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ, постоянно Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π½ΠΎ оцСнивая риски ΠΈ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ слоТности ΠΈ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ, ΠΌΡ‹ нашли Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для DataLake ΠΈ Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ нас Π½Π΅ пСрСстаСт Ρ€Π°Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ, Ρ‚Π°ΠΊ ΠΈ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΡŽ владСния.

Оказалось, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ эффСктивноС, быстроС ΠΈ дСшСвоС Π² эксплуатации DataLake для Π½ΡƒΠΆΠ΄ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ β€” ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΠΏΠΎ силам Π΄Π°ΠΆΠ΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ, Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΌ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ ΠΈ Π½Π΅ ΡƒΠΌΠ΅ΡŽΡ‰ΠΈΠΌ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΈΠΊΠΈ Π½Π° ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΈΠΊΠ°Ρ… со стрСлочками ΠΈ Π·Π½Π°ΡŽΡ‰ΠΈΠΌ 50 Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ² ΠΈΠ· экосистСмы Hadoop.

Π’ Π½Π°Ρ‡Π°Π»Π΅ ΠΏΡƒΡ‚ΠΈ Π³ΠΎΠ»ΠΎΠ²Π° Ρ€Π°ΡΠΊΠ°Π»Ρ‹Π²Π°Π»Π°ΡΡŒ ΠΎΡ‚ мноТСства Π΄ΠΈΡ‡Π°ΠΉΡˆΠΈΡ… Π·ΠΎΠΎΠΏΠ°Ρ€ΠΊΠΎΠ² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ софта ΠΈ понимания Π³Ρ€ΡƒΠ·Π° отвСтствСнности ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ°ΠΌΠΈ. ΠŸΡ€ΠΎΡΡ‚ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°ΠΉΡ‚Π΅ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ свой DataLake ΠΎΡ‚ простых инструмСнтов: nagios/munin -> elastic/kibana -> Hadoop/Spark/s3 …, собирая ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ связь ΠΈ Π³Π»ΡƒΠ±ΠΎΠΊΠΎ понимая Ρ„ΠΈΠ·ΠΈΠΊΡƒ происходящих процСссов. ВсС слоТноС ΠΈ ΠΌΡƒΡ‚Π½ΠΎΠ΅ β€” ΠΎΡ‚Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π²Ρ€Π°Π³Π°ΠΌ ΠΈ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π°ΠΌ.

Если Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π² ΠΎΠ±Π»Π°ΠΊΠΎ ΠΈ Π»ΡŽΠ±ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ, ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ ΠΈ ΠΏΠ°Ρ‚Ρ‡ΠΈΡ‚ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΡƒΡŽ нашСй схСму локально, Π½Π° офисных Π½Π΅Π΄ΠΎΡ€ΠΎΠ³ΠΈΡ… ΠΌΠ°ΡˆΠΈΠ½ΠΊΠ°Ρ… с Hadoop ΠΈ Presto свСрху. Π“Π»Π°Π²Π½ΠΎΠ΅ β€” Π½Π΅ ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΈ ΠΈΠ΄Ρ‚ΠΈ Π²ΠΏΠ΅Ρ€Π΅Π΄, ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, ΠΈΡΠΊΠ°Ρ‚ΡŒ простыС ΠΈ ясныС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈ всС ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ получится! Π£Π΄Π°Ρ‡ΠΈ всСм ΠΈ Π΄ΠΎ Π½ΠΎΠ²Ρ‹Ρ… встрСч!

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ