Sprout Social в основата си е компания, управлявана от данни. Sprout обработва милиарди съобщения от множество социални мрежи всеки ден. Поради това инженерите на Sprout са изправени пред уникално предизвикателство – как да съхраняват и актуализират множество версии на едно и също съобщение (т.е. ретуитове, коментари и т.н.), които идват в нашата платформа с много голям обем.




числото 888

Тъй като съхраняваме множество версии на съобщения, инженерите на Sprout имат за задача да „пресъздават света“ няколко пъти на ден – основен процес, който изисква итерация през целия набор от данни, за да консолидира всяка част от социално съобщение в един „източник на истина“.



Например, следене на харесванията, коментарите и ретуитовете на една публикация в Twitter. Исторически сме разчитали на самоуправляващи се Hadoop клъстери, за да поддържаме и работим с такива големи количества данни. Всеки Hadoop клъстер ще отговаря за различни части на платформата Sprout – практика, на която се разчита целият инженерен екип на Sprout за управление на проекти с големи данни в мащаб.

Ключове към подхода на Sprout към големите данни

Нашата екосистема Hadoop зависеше от Apache Hbase, мащабируема и разпределена NoSQL база данни. Това, което прави Hbase от решаващо значение за нашия подход към обработката на големи данни, е способността му не само да прави бързи сканирания на цели набори от данни, но и да прави бързи, произволни търсения на единичен запис.

Hbase също така ни позволява да зареждаме групово данни и да актуализираме произволни данни, така че да можем по-лесно да се справяме със съобщения, които пристигат не по ред или с частични актуализации, и други предизвикателства, които идват с данните от социалните медии. Въпреки това, самоуправляващите се Hadoop клъстери натоварват нашите инфраструктурни инженери с високи оперативни разходи, включително ръчно управление на възстановяване след бедствие, разширяване на клъстера и управление на възли.

За да помогнат за намаляване на времето, което идва от управлението на тези системи със стотици терабайти данни, екипите на Sprout за инфраструктура и развитие се събраха, за да намерят по-добро решение от това да управляват самоуправляващи се Hadoop клъстери. Нашите цели бяха:

  • Позволете на инженерите на Sprout да изграждат, управляват и управляват по-добре големи набори от данни
  • Намалете до минимум инвестицията на време от инженерите за ръчно притежаване и поддръжка на системата
  • Намалете ненужните разходи за свръхобезпечаване поради разширяване на клъстера
  • Осигурете по-добри методи за възстановяване след бедствие и надеждност

Докато оценявахме алтернативите на нашата текуща система за големи данни, ние се стремихме да намерим решение, което лесно да се интегрира с нашата текуща обработка и модели и да облекчи оперативната работа, която идва с ръчното управление на клъстер.



Оценяване на нови алтернативи за модел на данни

Едно от решенията, които нашите екипи разгледаха, бяха хранилища за данни. Складовете за данни действат като централизирано хранилище за анализ и агрегиране на данни, но приличат повече на традиционните релационни бази данни в сравнение с Hbase. Техните данни са структурирани, филтрирани и имат строг модел на данни (т.е. имат един ред за един обект).


какво означава 1616г

За нашия случай на използване на съхраняване и обработка на социални съобщения, които имат много версии на едно съобщение, живеещи едно до друго, хранилищата за данни имаха неефективен модел за нашите нужди. Не успяхме да адаптираме ефективно нашия съществуващ модел към хранилища за данни и производителността беше много по-бавна, отколкото очаквахме. Преформатирането на нашите данни, за да се адаптират към модела на хранилището на данни, би изисквало значителни разходи за преработване в графика, който имахме.

Друго решение, което разгледахме, бяха хранилища за данни. Data lakehouses разширяват концепциите за хранилище на данни, за да позволят по-малко структурирани данни, по-евтино съхранение и допълнителен слой на сигурност около чувствителните данни. Докато хранилищата за данни предлагаха повече от това, което хранилищата за данни можеха, те не бяха толкова ефективни, колкото настоящото ни решение Hbase. Чрез тестване на нашия запис за сливане и нашите модели за обработка на вмъкване и изтриване не успяхме да генерираме приемливи закъснения при запис за нашите пакетни задачи.



Намаляване на режийните разходи и поддръжката с AWS EMR

Като се има предвид това, което научихме за решенията за съхранение на данни и lakehouse, започнахме да търсим алтернативни инструменти, работещи с управлявана Hbase. Въпреки че решихме, че текущата ни употреба на Hbase е ефективна за това, което правим в Sprout, ние се запитахме: „Как можем да управляваме Hbase по-добре, за да намалим оперативната си тежест, като същевременно запазим нашите основни модели на използване?“


7 11 нумерология

Тогава започнахме да оценяваме управляваната услуга Elastic Map Reduce (EMR) на Amazon за Hbase. Оценяването на EMR изисква оценка на неговата производителност по същия начин, по който тествахме хранилища за данни и езера, като например тестване на поглъщането на данни, за да видим дали може да отговори на нашите изисквания за производителност. Трябваше също така да тестваме съхранение на данни, висока наличност и възстановяване след бедствие, за да гарантираме, че EMR отговаря на нашите нужди от инфраструктурна/административна гледна точка.

Функциите на EMR подобриха текущото ни самоуправляващо се решение и ни позволиха да използваме повторно текущите си модели за четене, писане и изпълнение на задания по същия начин, както направихме с Hbase. Едно от най-големите предимства на EMR е използването на файловата система EMR (EMRFS), която съхранява данни в S3, а не в самите възли.


144 ангелско число, което означава

Предизвикателство, което открихме, беше, че EMR имаше ограничени опции за висока наличност, което ни ограничаваше да изпълняваме множество основни възли в една зона на наличност или един основен възел в множество зони на наличност. Този риск беше смекчен чрез използване на EMRFS, тъй като осигури допълнителна устойчивост на грешки за възстановяване след бедствие и отделяне на съхранението на данни от изчислителните функции. Използвайки EMR като наше решение за Hbase, ние сме в състояние да подобрим нашата скалируемост и възстановяване при повреда и минимизираме ръчната намеса, необходима за поддържане на клъстерите. В крайна сметка решихме, че EMR е най-подходящият за нашите нужди.

Процесът на миграция беше лесно тестван предварително и изпълнен за мигриране на милиарди записи към новите EMR клъстери без престой на клиентите. Новите клъстери показаха подобрена производителност и намалени разходи с близо 40%. За да прочетете повече за това как преминаването към EMR помогна за намаляване на разходите за инфраструктура и за подобряване на нашата производителност, вижте Казус на Sprout Social с AWS.

Какво научихме

Размерът и обхватът на този проект дадоха на нас, инженерния екип за надеждност на базата данни на инфраструктурата, възможност да работим междуфункционално с множество инженерни екипи. Въпреки че беше предизвикателство, то се оказа невероятен пример за мащабните проекти, с които можем да се справим в Sprout като съвместна инженерна организация. Чрез този проект нашият екип по инфраструктура придоби по-задълбочено разбиране за това как се използват, съхраняват и обработват данните на Sprout и ние сме по-подготвени да помагаме при отстраняване на бъдещи проблеми. Създадохме обща база от знания в множество екипи, която може да ни помогне да изградим следващото поколение клиентски функции.

Ако се интересувате от това, което изграждаме, присъединете се към нашия екип и кандидатствайте за една от нашите отворени инженерни позиции днес.

Споделете С Приятелите Си: