Mi az Apache Spark? A big data platform, amely zúzott Hadoop

Apache Szikra meghatározott

az Apache Szikra adatfeldolgozási keret, hogy gyorsan végezzen feldolgozási feladatok nagyon nagy adathalmazok is terjeszteni adatfeldolgozási feladatok szerte több számítógépen, vagy önmagában, vagy párhuzamosan más elosztott számítástechnikai eszközök. Ez a két tulajdonság kulcsfontosságú a big data és a gépi tanulás világához, amelyek a hatalmas számítási teljesítmény rendezését igénylik a nagy adattárolókon keresztül., A Spark ezen feladatok programozási terheinek egy részét leveszi a fejlesztők válláról egy könnyen használható API-val, amely kivonja az elosztott számítástechnika és a nagy adatfeldolgozás nagy részét.

az Apache Spark a 2009-es U. C. Berkeley-i AMPLab kezdetétől kezdve a világ egyik legfontosabb big data distributed feldolgozási keretrendszerévé vált. Spark lehet telepíteni a különböző módokon, biztosítja a natív kötések a Java, Scala, Python, R programozási nyelvek, és támogatja az SQL, streaming adatok, gépi tanulás, gráf feldolgozás., Ezt bankok, távközlési cégek, játékcégek, kormányok és az összes nagy tech óriás, például az Apple, a Facebook, az IBM és a Microsoft is használja.

Apache Szikra építészet

alapvető szinten, egy Apacs Szikra alkalmazás áll két fő részből áll: egy sofőr, amely átalakítja a felhasználói kódot több feladatot lehet szétosztani munkás csomópontok, valamint a végrehajtók, amely futni azokat a csomópontokat, majd végrehajtani a rájuk bízott feladatokat. A klaszterkezelő valamilyen formája szükséges a kettő közötti közvetítéshez.,

a dobozból a Spark önálló klaszter módban is futtatható, amely egyszerűen az Apache Spark framework-et és a JVM-et igényli a fürt minden gépén. Azonban valószínűbb, hogy ki akarja használni egy robusztusabb erőforrás-vagy klaszterkezelő rendszert, hogy gondoskodjon a munkavállalók igény szerinti elosztásáról. Az enterprise-ban ez általában azt jelenti, hogy Hadoop FONALON fut (így fut a Cloudera és a Hortonworks disztribúciója), de az Apache Spark az Apache Mesos, Kubernetes és Docker Swarm rendszereken is futhat.,

ha menedzselt megoldást keres, akkor az Apache Spark az Amazon EMR, a Google Cloud Dataproc és a Microsoft Azure HDInsight részeként található. A Databricks, az Apache Spark alapítóit foglalkoztató cég a Databricks Unified Analytics platformot is kínálja, amely egy átfogó felügyelt szolgáltatás, amely Apache Spark klasztereket, streaming támogatást, integrált webalapú notebook fejlesztést, valamint optimalizált cloud I / O teljesítményt kínál egy szabványos Apache Spark disztribúcióval szemben.

az Apache Spark a felhasználó adatfeldolgozási parancsait egy irányított aciklikus grafikonra vagy DAG-ra építi., A DAG az Apache Spark ütemezési rétege; meghatározza, hogy milyen feladatokat hajtanak végre a csomópontokon, illetve milyen sorrendben.

Spark vs Hadoop: miért használja az Apache Spark?

érdemes rámutatni, hogy az Apache Spark vs. Apache Hadoop egy kicsit téves elnevezés. A legtöbb Hadoop disztribúcióban megtalálható a Spark. De két nagy előny miatt a Spark a nagy adatok feldolgozásának keretévé vált, megelőzve a régi MapReduce paradigmát, amely a Hadoopot előtérbe helyezte.

az első előny a sebesség., Spark in-memory data engine azt jelenti, hogy képes feladatokat akár százszor gyorsabb, mint MapReduce bizonyos helyzetekben, különösen, ha összehasonlítjuk a többlépcsős feladatok, amelyek megkövetelik az írás az állam vissza a lemezre szakaszok között. A MapReduce lényegében egy kétlépcsős végrehajtási gráfot hoz létre, amely adat leképezésből és redukálásból áll, míg az Apache Spark DAG-jának több fokozata van, amelyek hatékonyabban oszthatók el. Még az Apache Spark jobs is, ahol az adatokat nem lehet teljesen a memóriában tárolni, általában körülbelül 10-szer gyorsabb, mint a MapReduce megfelelőjük.,

a második előny a fejlesztőbarát Spark API. Ugyanolyan fontos, mint a Spark gyorsítása, azzal érvelhetünk, hogy a Spark API barátságossága még fontosabb.

Spark Core

a MapReduce-hoz és más Apache Hadoop komponensekhez képest az Apache Spark API nagyon barátságos a fejlesztők számára, elrejtve az elosztott feldolgozó motor összetettségét az egyszerű módszerhívások mögött., A canonical példa erre, hogy majdnem 50 vonalak a MapReduce kód szám szöveg a dokumentum csökkenteni lehet, hogy csak egy pár sort az Apache Szikra (itt látható a Scala):

Azáltal, kötések, hogy népszerű nyelven az adatok elemzését, mint a Python, R, valamint a több vállalkozás-barát Java pedig Scala, Apache Szikra lehetővé teszi, hogy mindenki alkalmazás fejlesztők számára, hogy az adatok a tudósok, hogy felhasználjam az skálázhatóság, sebesség számára elérhető módon.,

Spark RDD

az Apache Spark középpontjában a rugalmas elosztott adatkészlet (RDD) fogalma áll, egy programozási absztrakció, amely olyan objektumok megváltoztathatatlan gyűjteményét képviseli, amelyek feloszthatók egy számítástechnikai klaszteren. Műveletek a RDDs is tördeli a klaszter, majd kivégezték egy párhuzamos szakaszos folyamat, ami gyors, skálázható párhuzamos feldolgozás.

az RDD-k egyszerű szöveges fájlokból, SQL adatbázisokból, NoSQL tárolókból (például Cassandra és MongoDB), Amazon S3 vödrökből, és még sok másból is létrehozhatók., A Szikra Core API épül ez a RDD koncepció, amely lehetővé teszi a hagyományos térkép, valamint csökkenti a funkcionalitást, hanem nyújtó beépített támogatása csatlakozott adatsorok, szűrés, mintavétel, illetve összesítés.

A Spark elosztott módon fut egy olyan illesztőprogram-alapfolyamat kombinálásával, amely a Spark alkalmazást feladatokra osztja, és azokat a munkát végző számos végrehajtó folyamat között elosztja. Ezeket a végrehajtókat az alkalmazás igényeihez igazítva fel-le lehet méretezni.,

Spark SQL

eredetileg Shark néven ismert, a Spark SQL egyre fontosabbá vált az Apache Spark projekt számára. Valószínűleg a mai fejlesztők által leggyakrabban használt felület az alkalmazások létrehozásakor. A Spark SQL a strukturált adatok feldolgozására összpontosít, az R-től és a Python-tól (Pandákban) kölcsönzött dataframe megközelítéssel. De ahogy a neve is sugallja, a Spark SQL egy SQL2003-kompatibilis felületet is biztosít az adatok lekérdezéséhez, így az Apache Spark ereje az elemzőknek, valamint a fejlesztőknek.,

a standard SQL támogatás mellett a Spark SQL egy szabványos interfészt biztosít más adatállományok olvasásához és írásához, beleértve a JSON-t, HDFS-t, Apache Hive-t, JDBC-t, Apache ORC-t és Apache parkettát, amelyek mindegyike támogatott a dobozból. Más népszerű üzletek-Apache Cassandra, MongoDB, Apache HBase, és még sokan mások-a Spark csomagok ökoszisztémájából külön csatlakozók húzásával használhatók.,

Kiválasztása egyes oszlopok a dataframe olyan egyszerű, mint ezt a sort:

citiesDF.select("name”, "pop”)

az SQL felületen rögzítjük a dataframe, mint egy ideiglenes táblázat, amely után tudjuk kiadni SQL lekérdezések ellene:

citiesDF.createOrReplaceTempView("cities”)
spark.sql("SELECT name, pop FROM cities”)

a színfalak Mögött, Apache Szikra használ egy lekérdezés optimalizáló úgynevezett Katalizátor, amely azt vizsgálja, hogy az adatok, illetve lekérdezések annak érdekében, hogy készítsen egy hatékony lekérdezési terv adatok településen, illetve számítás, amely elvégzi a szükséges számításokat át a klaszter. Az Apache Spark 2.,az x era, a Spark SQL interface of dataframes and datasets (lényegében egy gépelt dataframe, amely fordításkor ellenőrizhető a helyesség szempontjából, valamint kihasználhatja a további memória-és számítási optimalizálást futásidőben) az ajánlott megközelítés a fejlesztéshez. Az RDD felület továbbra is elérhető, de csak akkor ajánlott, ha az Ön igényeit nem lehet kezelni a Spark SQL paradigmán belül.

Spark 2.4 bevezetett egy sor beépített magasabb rendű funkciók manipulálására tömbök és más magasabb rendű adattípusok közvetlenül.,

Spark MLlib

az Apache Spark könyvtárakat is köt a gépi tanulási és gráfelemzési technikák skálán történő alkalmazásához. Spark MLlib tartalmaz egy keretet létrehozására gépi tanulási csővezetékek, amely lehetővé teszi a könnyű végrehajtását funkció kitermelése, választás, valamint átalakítások bármely strukturált adathalmaz. MLlib jön elosztott implementációk klaszterezés és osztályozási algoritmusok, mint a k-azt jelenti, klaszterezés és véletlenszerű erdők, hogy lehet cserélni, illetve ki az egyéni csővezetékek könnyedén., A modelleket az Apache Spark adattudósai képezhetik az R vagy Python használatával, az MLlib használatával mentve, majd a Java-alapú vagy Scala-alapú csővezetékbe importálhatók termelési célokra.

Megjegyezzük, hogy míg a Szikra MLlib kiterjed, gépi tanulás, beleértve a besorolás, regresszió, klaszterezés, majd szűrés, nem tartalmazza létesítmények modellezés, valamint a képzés mély neurális hálózatok (részletesen lásd az Elődje van Szikra MLlib felülvizsgálat). A mély tanulási csővezetékek azonban a munkákban vannak.,

Spark GraphX

Spark GraphX jön egy válogatott elosztott algoritmusok feldolgozására gráf struktúrák, beleértve a végrehajtását a Google PageRank. Ezek az algoritmusok a Spark Core RDD-megközelítését használják az adatok modellezésére; a GraphFrames csomag lehetővé teszi grafikon műveletek elvégzését az adatfájlokon, beleértve a Catalyst optimizer előnyeit a gráf lekérdezésekhez.

Spark Streaming

A Spark Streaming az Apache Spark korai kiegészítése volt, amely elősegítette a tapadást olyan környezetben, amely valós idejű vagy közel valós idejű feldolgozást igényelt., Korábban a batch and stream processing az Apache Hadoop világában külön dolog volt. Írnál MapReduce kódot a kötegelt feldolgozási igényeidhez, és használnál valami Apache Stormot a valós idejű streamelési igényeidhez. Ez nyilvánvalóan eltérő kódbázisokat eredményez, amelyeket szinkronban kell tartani az alkalmazás domainhez, annak ellenére, hogy teljesen más keretrendszereken alapulnak, különböző erőforrásokat igényelnek, és különböző működési aggályokat tartalmaznak azok futtatásához.,

A Spark Streaming kiterjesztette a kötegelt feldolgozás Apache Spark koncepcióját streaming-re azáltal, hogy az adatfolyamot folyamatos mikrobatchekké bontotta, amelyeket ezután az Apache Spark API segítségével manipulálhatott. Ily módon a kötegelt és streaming műveletek kódja megoszthatja (többnyire) ugyanazt a kódot, ugyanazon a keretrendszeren futva, ezáltal csökkentve mind a fejlesztő, mind az operátor költségeit. Mindenki nyer.,

a Spark Streaming megközelítés kritikája az, hogy a mikrobatching olyan forgatókönyvekben, ahol a bejövő adatokra alacsony késleltetésű válasz szükséges, nem feltétlenül felel meg más streaming-képes keretek, például az Apache Storm, az Apache Flink és az Apache Apex teljesítményének, amelyek mindegyike tiszta streaming módszert használ a mikrobatches helyett.

strukturált Streaming

strukturált Streaming (hozzáadott Spark 2.x) az, hogy szikra Streaming mi Spark SQL volt, hogy a Spark Core API-k: egy magasabb szintű API könnyebb absztrakció alkalmazások írására., A Structure Streaming esetében a magasabb szintű API lényegében lehetővé teszi a fejlesztők számára, hogy végtelen adatfolyamokat és adatkészleteket hozzanak létre. Ez is megoldja néhány nagyon igazi fájdalom pont, hogy a felhasználók küzdöttek a korábbi keret, különösen foglalkozik esemény-idő aggregációk, késedelmes kézbesítés üzenetek. A strukturált adatfolyamok összes lekérdezése a Catalyst query optimizer-en megy keresztül, sőt interaktív módon is futtatható, lehetővé téve a felhasználók számára, hogy SQL lekérdezéseket hajtsanak végre az élő streaming adatokkal szemben.,

strukturált Streaming eredetileg támaszkodott Spark Streaming microbatching rendszer kezelése streaming adatok. De a Spark 2.3-ban az Apache Spark csapata alacsony késleltetésű folyamatos feldolgozási módot adott a strukturált streaminghez, lehetővé téve, hogy az 1ms-nél kisebb késleltetésű válaszokat kezelje, ami nagyon lenyűgöző. A Spark 2.4-től a folyamatos feldolgozás továbbra is kísérleti jellegű. Míg a strukturált Streaming a Spark SQL motor tetejére épül, a folyamatos Streaming csak korlátozott lekérdezéskészletet támogat.,

A strukturált Streaming a platformmal rendelkező streaming alkalmazások jövője, tehát ha új streaming alkalmazást épít, akkor strukturált Streaming-et kell használnia. A régi Spark Streaming API-k továbbra is támogatottak lesznek, de a projekt azt javasolja, hogy a strukturált streamingre továbbítsák, mivel az új módszer sokkal elviselhetőbbé teszi a streaming kód írását és fenntartását.

mély tanulási csővezetékek

az Apache Spark mély tanulási csővezetékeken keresztül támogatja a mély tanulást., Az MLlib meglévő csővezeték-struktúrájával alacsonyabb szintű mély tanulási könyvtárakba hívhat, osztályozókat építhet csak néhány sornyi kódban, valamint egyéni TensorFlow grafikonokat vagy Keras modelleket alkalmazhat a bejövő adatokra. Ezek a Grafikonok, modellek akár egyéni Spark SQL UDFs (felhasználó által definiált funkciók) néven is regisztrálhatók, így a deep learning modellek az SQL utasítások részeként alkalmazhatók az adatokra.

Apache Spark tutorials

Ready to dive in and learn Apache Spark?, Nagyon ajánljuk Evan Heitman a neandervölgyi útmutató Apache Spark in Python, amely nem csak meghatározza az alapokat, hogyan Apache Spark működik viszonylag egyszerű szavakkal, hanem végigvezeti Önt a folyamat az írás egy egyszerű Python alkalmazás, amely kihasználja a keret. A cikk egy adattudós szemszögéből íródott, aminek van értelme, mivel az Adattudomány olyan világ, amelyben a nagy adatok és a gépi tanulás egyre kritikusabbak.,

ha néhány Apache Spark példát keres, hogy megértse, mit tehet a platform, és hogyan csinálja, nézze meg a Spark by {Examples} – t. Rengeteg mintakód van itt számos alapvető feladathoz, amelyek a Spark programozás építőköveit alkotják, így láthatja azokat a komponenseket, amelyek az Apache Spark által készített nagyobb feladatokat alkotják.

mélyebbre kell mennie? DZone van, amit szerényen utal, mint a teljes Apache Spark Collection, amely egy rakás hasznos útmutatók sok Apache Spark témák. Boldog tanulás!

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük

Tovább az eszköztárra