Sprout Social je, u svojoj srži, tvrtka vođena podacima. Sprout obrađuje milijarde poruka s više društvenih mreža svaki dan. Zbog toga se inženjeri Sprouta suočavaju s jedinstvenim izazovom — kako pohraniti i ažurirati više verzija iste poruke (tj. retvitova, komentara itd.) koje dolaze na našu platformu u vrlo velikom broju.




1251 broj anđela

Budući da pohranjujemo više verzija poruka, inženjeri Sprouta imaju zadatak 'ponovno stvoriti svijet' nekoliko puta dnevno - bitan proces koji zahtijeva ponavljanje kroz cijeli skup podataka kako bi se svaki dio društvene poruke konsolidirao u jedan 'izvor istine'.



Na primjer, praćenje lajkova, komentara i retvitova jedne objave na Twitteru. Povijesno gledano, oslanjali smo se na samoupravljane Hadoop klastere za održavanje i rad s tako velikim količinama podataka. Svaki Hadoop klaster bio bi odgovoran za različite dijelove Sprout platforme — praksa na koju se oslanja cijeli Sprout inženjerski tim za upravljanje velikim podatkovnim projektima, na razini.

Ključevi Sproutovog pristupa velikim podacima

Naš Hadoop ekosustav ovisio je o Apache Hbase, skalabilnoj i distribuiranoj NoSQL bazi podataka. Ono što Hbase čini ključnim za naš pristup obradi velikih podataka je njegova sposobnost ne samo da radi brza skeniranja čitavih skupova podataka, već i da radi brza, nasumična pretraživanja pojedinačnih zapisa.

Hbase nam također omogućuje skupno učitavanje podataka i ažuriranje nasumičnih podataka kako bismo lakše rješavali poruke koje stižu pogrešnim redoslijedom ili s djelomičnim ažuriranjima te druge izazove koji dolaze s podacima društvenih medija. Međutim, samoupravljivi Hadoop klasteri opterećuju naše inženjere infrastrukture visokim operativnim troškovima, uključujući ručno upravljanje oporavkom od katastrofe, širenje klastera i upravljanje čvorovima.


anđeoski brojevi 101

Kako bi se smanjila količina vremena koja proizlazi iz upravljanja ovim sustavima sa stotinama terabajta podataka, Sproutovi timovi za infrastrukturu i razvoj okupili su se kako bi pronašli bolje rješenje od pokretanja Hadoop klastera koji se sami upravljaju. Naši ciljevi su bili:

  • Dopustite inženjerima Sprouta da bolje izgrade, upravljaju i upravljaju velikim skupovima podataka
  • Smanjite vremensku investiciju inženjera za ručno posjedovanje i održavanje sustava
  • Smanjite nepotrebne troškove prekomjerne nabave zbog širenja klastera
  • Osigurati bolje metode oporavka od katastrofe i pouzdanost

Dok smo procjenjivali alternative našem trenutnom sustavu velikih podataka, nastojali smo pronaći rješenje koje se lako integrira s našom trenutnom obradom i obrascima i koje bi oslobodilo operativni napor koji dolazi s ručnim upravljanjem klasterom.



Procjena novih alternativnih obrazaca podataka

Jedno od rješenja koje su naši timovi razmatrali bila su skladišta podataka. Skladišta podataka djeluju kao centralizirana pohrana za analizu i agregaciju podataka, ali više nalikuju tradicionalnim relacijskim bazama podataka u usporedbi s Hbase. Njihovi su podaci strukturirani, filtrirani i imaju strogi podatkovni model (tj. imaju jedan redak za jedan objekt).

Za naš slučaj upotrebe pohranjivanja i obrade društvenih poruka koje imaju mnogo verzija poruke koje žive jedna uz drugu, skladišta podataka imala su neučinkovit model za naše potrebe. Nismo uspjeli učinkovito prilagoditi naš postojeći model skladištima podataka, a performanse su bile mnogo sporije nego što smo očekivali. Ponovno formatiranje naših podataka kako bi se prilagodili modelu skladišta podataka zahtijevalo bi velike troškove za preradu u vremenskom okviru koji smo imali.


4 što znači numerologija

Još jedno rješenje koje smo razmatrali bile su baze podataka. Data lakehouses proširuju koncepte skladišta podataka kako bi omogućili manje strukturirane podatke, jeftiniju pohranu i dodatni sloj sigurnosti oko osjetljivih podataka. Dok su skladišta podataka nudila više od onoga što su skladišta podataka mogla, nisu bila tako učinkovita kao naše trenutno rješenje Hbase. Kroz testiranje našeg zapisa spajanja i obrazaca obrade umetanja i brisanja, nismo uspjeli generirati prihvatljive latencije pisanja za naše skupne poslove.



Smanjenje režijskih troškova i održavanja uz AWS EMR

S obzirom na ono što smo naučili o skladištenju podataka i lakehouse rješenjima, počeli smo tražiti alternativne alate koji pokreću upravljani Hbase. Iako smo odlučili da je naša trenutna upotreba Hbase-a učinkovita za ono što radimo u Sproutu, zapitali smo se: 'Kako možemo bolje pokrenuti Hbase da smanjimo naše operativno opterećenje, a da pritom zadržimo naše glavne obrasce korištenja?'

Tada smo počeli ocjenjivati ​​Amazonovu uslugu upravljanja Elastic Map Reduce (EMR) za Hbase. Procjena EMR-a zahtijevala je procjenu njegove izvedbe na isti način na koji smo testirali skladišta podataka i lakehouses, kao što je testiranje gutanja podataka kako bismo vidjeli može li ispuniti naše zahtjeve izvedbe. Također smo morali testirati pohranu podataka, visoku dostupnost i oporavak od katastrofe kako bismo osigurali da EMR odgovara našim potrebama iz infrastrukturne/administrativne perspektive.

Značajke EMR-a poboljšale su naše trenutačno samoupravljano rješenje i omogućile nam da ponovno koristimo trenutne obrasce za čitanje, pisanje i izvršavanje poslova na isti način na koji smo to učinili s Hbaseom. Jedna od najvećih prednosti EMR-a je korištenje EMR datotečnog sustava (EMRFS), koji pohranjuje podatke u S3, a ne na samim čvorovima.


anđeo broj 12

Izazov koji smo otkrili bio je da je EMR imao ograničene mogućnosti visoke dostupnosti, što nas je ograničavalo na pokretanje više glavnih čvorova u jednoj zoni dostupnosti ili jednog glavnog čvora u više zona dostupnosti. Taj je rizik ublažen korištenjem EMRFS-a jer je pružio dodatnu toleranciju na greške za oporavak od katastrofe i odvajanje pohrane podataka od računalnih funkcija. Korištenjem EMR-a kao našeg rješenja za Hbase, u mogućnosti smo poboljšati našu skalabilnost i oporavak od kvara te minimizirati ručnu intervenciju potrebnu za održavanje klastera. Na kraju smo odlučili da EMR najbolje odgovara našim potrebama.

Proces migracije je jednostavno prethodno testiran i izvršen za migriranje milijardi zapisa u nove EMR klastere bez zastoja korisnika. Novi klasteri pokazali su poboljšanu izvedbu i smanjili troškove za gotovo 40%. Da biste pročitali više o tome kako je prelazak na EMR pomogao smanjiti troškove infrastrukture i poboljšati našu izvedbu, pogledajte Studija slučaja tvrtke Sprout Social s AWS-om.

Što smo naučili

Veličina i opseg ovog projekta dali su nama, timu Infrastructure Database Reliability Engineering, priliku za međufunkcionalni rad s više inženjerskih timova. Iako je bilo izazovno, pokazalo se nevjerojatnim primjerom velikih projekata s kojima se možemo pozabaviti u Sproutu kao suradničkoj inženjerskoj organizaciji. Kroz ovaj projekt, naš tim za infrastrukturu stekao je dublje razumijevanje načina na koji se Sproutovi podaci koriste, pohranjuju i obrađuju te smo bolje opremljeni za pomoć u rješavanju budućih problema. Stvorili smo zajedničku bazu znanja u više timova koja nam može pomoći da izgradimo sljedeću generaciju korisničkih značajki.

Ako ste zainteresirani za ono što gradimo, pridružite se našem timu i prijavite se za jednu od naših današnjih otvorenih inženjerskih uloga.

Podijelite Sa Svojim Prijateljima: