Big Data: MapReduce

Elérhető

3.1 A BigData kifejezés megjelenésének története

A Big Data kifejezés viszonylag nemrég jelent meg. A Google Trends a kifejezés használatának aktív növekedésének kezdetét mutatja 2011 óta:

Ugyanakkor most csak a lusta nem használja a kifejezést. Különösen gyakran a marketingszakemberek helytelenül használják a kifejezést. Tehát mi is valójában a Big Data? Mivel úgy döntöttem, hogy szisztematikusan megfogalmazom és kiemelem a kérdést, szükséges a fogalom meghatározása.

A gyakorlatom során különböző definíciókkal találkoztam:

  • Big Data az, amikor több mint 100 GB adat van (500 GB, 1 TB, amit akarsz).
  • A Big Data olyan adat, amelyet nem lehet Excelben feldolgozni.
  • A Big Data olyan adat, amelyet nem lehet egyetlen számítógépen feldolgozni.

És még ezek is:

  • A Big Data általában bármilyen adat.
  • A Big Data nem létezik, marketingesek találták ki.

Maradok a wikipédiából származó definíciónál:

A Big Data olyan megközelítések, eszközök és módszerek sorozata hatalmas volumenű és jelentős változatosságú strukturált és strukturálatlan adatok feldolgozására annak érdekében, hogy az ember számára is érzékelhető eredményeket kapjunk, amelyek hatékonyak a folyamatos növekedés, a számítógépes hálózat számos csomópontján való elosztása, kialakulása mellett. a 2000-es évek végén a hagyományos adatbázis-kezelő rendszerek és üzleti intelligencia osztályú megoldások alternatívája.

Így a Big Data alatt nem egy konkrét adatmennyiséget és nem is magát az adatot fogom érteni, hanem azok feldolgozási módjait, amelyek lehetővé teszik az információ megosztott feldolgozását. Ezek a módszerek alkalmazhatók nagy adathalmazokra (például az Internet összes oldalának tartalma), valamint kis adathalmazokra (például jelen előadás tartalma).

Íme néhány példa arra, hogy mi lehet olyan adatforrás, amely big data technikákat igényel:

  • A felhasználói viselkedés naplói az interneten
  • GPS jelek autókból egy közlekedési vállalat számára
  • A Large Hadron Collider érzékelőiből vett adatok
  • Digitalizált könyvek az Orosz Állami Könyvtárban
  • Információ az összes banki ügyfél tranzakcióiról
  • Tájékoztatás minden vásárlásról egy nagy kereskedelmi láncban stb.

Az adatforrások száma rohamosan növekszik, ami azt jelenti, hogy az adatfeldolgozási technológiákra egyre nagyobb a kereslet.

3.2 A Big Data alapelvei

A Big Data definíciója alapján megfogalmazhatjuk az ilyen adatokkal való munkavégzés alapelveit:

1. Vízszintes skálázhatóság. Mivel tetszőlegesen nagy mennyiségű adat lehet, minden nagy adat feldolgozását igénylő rendszernek bővíthetőnek kell lennie. Az adatok mennyisége kétszeresére nőtt - a klaszterben lévő vas mennyisége kétszeresére nőtt, és minden tovább működött.

2. Hibatűrés. A vízszintes skálázhatóság elve azt jelenti, hogy egy klaszterben sok gép lehet. Például a Yahoo Hadoop-fürtje több mint 42 000 géppel rendelkezik (a szervezetek közötti fürtméreteket ezen a linken tekintheti meg). Ez azt jelenti, hogy ezeknek a gépeknek egy része garantáltan meghibásodik. A big data gyakorlatoknak tisztában kell lenniük ezekkel a zavarokkal, és jelentős következmények nélkül túl kell élniük azokat.

3. Adatok helye. A nagy elosztott rendszerekben az adatok nagyszámú gép között vannak elosztva. Ha az adatok fizikailag az egyik szerveren találhatók, és egy másikon dolgozzák fel, az adatátvitel költségei meghaladhatják magának a feldolgozásnak a költségeit. Ezért a BigData megoldások tervezésének egyik legfontosabb alapelve az adatlokalitás elve - lehetőség szerint ugyanazon a gépen dolgozzuk fel az adatokat, amelyen tároljuk.

Minden modern big data eszköz ezt a három elvet követi így vagy úgy. Ezek követéséhez szükséges néhány módszer, módszer, paradigma kidolgozása az adatfejlesztő eszközök fejlesztésére. Az egyik legklasszikusabb módszert elemzem a mai előadásban.

3.3 MapReduce

A MapReduce egy elosztott adatfeldolgozási modell, amelyet a Google javasolt nagy mennyiségű adat feldolgozására számítógépes klasztereken. A MapReduce-t jól illusztrálja a következő kép:

A MapReduce feltételezi, hogy az adatok bizonyos rekordokba vannak rendezve. Az adatfeldolgozás 3 lépésben történik:

1. Térképi szakasz . Ebben a szakaszban az adatok előfeldolgozása a map() függvény segítségével történik, amelyet a felhasználó határoz meg. Ennek a szakasznak a feladata az adatok előfeldolgozása és szűrése. A művelet nagyon hasonlít a funkcionális programozási nyelvek térképműveletéhez - minden bemeneti rekordra egyedi funkció kerül alkalmazásra.

Az egyetlen bemeneti rekordra alkalmazott map() függvény sok kulcs-érték párt hoz létre. Set - azaz csak egy rekordot tud visszaadni, lehet, hogy semmit, vagy több kulcs-érték párat. Hogy mi lesz a kulcsban és az értékben, azt a felhasználó dönti el, de a kulcs nagyon fontos dolog, hiszen az egykulcsos adatok a jövőben a redukciós függvény egy példányába kerülnek.

2. Stage Shuffle. A felhasználó észrevétlen marad. Ebben a szakaszban a térképfunkció kimenete „bindált” – minden tár a térképszakasz egy kimeneti kulcsának felel meg. A jövőben ezek a kosarak a csökkentés inputjaként szolgálnak majd.

3. Stage Reduce. Minden "kosár" a keverési szakaszban generált értékekkel a redukció() függvény bemenetére kerül.

A csökkentő funkciót a felhasználó adja meg, és egyetlen "kosárra" számítja ki a végeredményt . A Reduction() függvény által visszaadott összes érték halmaza a MapReduce feladat végeredménye.

Néhány további tény a MapReduce-ról:

  1. A térképfunkció minden futtatása önállóan működik, és párhuzamosan is futhat, beleértve a különböző fürtgépeken is.
  2. A redukciós funkció minden futtatása önállóan működik, és párhuzamosan is futhat, beleértve a különböző fürtgépeket is.
  3. A keverés belsőleg párhuzamos rendezést jelent, így különböző fürtgépeken is működhet. Az 1-3. pont lehetővé teszi a horizontális méretezhetőség elvének megvalósítását .
  4. A térkép funkciót általában ugyanazon a gépen használják, ahol az adatokat tárolják – ez csökkenti az adatátvitelt a hálózaton (az adatlokalitás elve).
  5. A MapReduce mindig teljes adatszkennelés, nincsenek indexek. Ez azt jelenti, hogy a MapReduce rosszul alkalmazható, ha nagyon gyors válaszra van szükség.

3.4 Példák a MapReduce segítségével hatékonyan megoldott feladatokra

Szavak száma

Kezdjük a klasszikus feladattal - a szószámlálással. A feladat a következőképpen fogalmazódik meg: van egy nagy iratanyag. A feladat az, hogy minden olyan szó esetében, amely legalább egyszer előfordul a korpuszban, kiszámítsuk, hányszor fordul elő összesen a korpuszban.

Megoldás:

Mivel nagy dokumentumtárral rendelkezünk, legyen egy dokumentum egy bemeneti rekord a MapRreduce feladathoz. A MapReduce-ban csak felhasználó által definiált függvényeket tudunk definiálni, amit meg is fogunk tenni (python-szerű pszeudokódot fogunk használni):

def map(doc): 
for word in doc: 
yield word, 1 
def reduce(word, values): 
yield word, sum(values) 

A térkép funkció a bevitt dokumentumot párok halmazává alakítja (szó, 1), a shuffle számunkra átláthatóan párokká alakítja (szó, [1,1,1,1,1,1]), csökkenti ezeket az összegeket, visszaadva a végső válasz a szóra.

A hirdetési rendszer naplóinak feldolgozása

A második példa a Data-Centric Alliance valós gyakorlatából származik.

Feladat: van egy csv-napló az űrlap hirdetési rendszeréről:

<user_id>,<country>,<city>,<campaign_id>,<creative_id>,<payment></p> 
 
11111,RU,Moscow,2,4,0.3 
22222,RU,Voronezh,2,3,0.2 
13413,UA,Kyiv,4,11,0.7 
… 

Ki kell számítani a hirdetések megjelenítésének átlagos költségét Oroszország városaiban.

Megoldás:

def map(record): 
user_id, country, city, campaign_id, creative_id, payment = record.split(",") 
payment=float(payment) 
if country == "RU": 
yield city, payment 
def reduce(city, payments): 
yield city, sum(payments)/len(payments) 

A térkép funkció ellenőrzi, hogy szükségünk van-e erre a bejegyzésre - és ha igen, akkor csak a szükséges információkat hagyja meg (város és fizetési összeg). A redukciós függvény kiszámítja a végső választ egy városra, amely tartalmazza az adott városban folyó összes fizetést.

Hozzászólások
  • Népszerű
  • Új
  • Régi
Hozzászólás írásához be kell jelentkeznie
Ennek az oldalnak még nincsenek megjegyzései