Ohjelmointi

Palaa suurten tietojen käsittelyyn Apache Igniten avulla

Apache Ignite on muistin sisällä oleva tietojenkäsittelyalusta, joka voidaan lisätä saumattomasti käyttäjän sovelluskerroksen ja tietokerroksen väliin. Apache Ignite lataa tiedot olemassa olevasta levypohjaisesta tallennuskerroksesta RAM-muistiin, mikä parantaa suorituskykyä jopa kuusi suuruusluokkaa (miljoona kertaa).

Muistin sisäinen datakapasiteetti voidaan helposti skaalata käsittelemään petatavuja dataa yksinkertaisesti lisäämällä klusteriin lisää solmuja. Lisäksi sekä ACID-tapahtumia että SQL-kyselyitä tuetaan. Ignite tarjoaa suorituskykyä, mittakaavaa ja kattavia ominaisuuksia paljon enemmän kuin perinteiset muistin sisäiset tietokannat, muistin sisäiset tietoruudukot ja muut muistiin perustuvat pisteiden ratkaisut itsessään tarjoavat.

Apache Ignite ei vaadi käyttäjiä kopioimaan ja korvaamaan olemassa olevia tietokantoja. Se toimii RDBMS-, NoSQL- ja Hadoop-tietovarastojen kanssa. Apache Ignite mahdollistaa tehokkaat tapahtumat, reaaliaikaisen suoratoiston ja nopean analyysin yhdellä, kattavalla tiedonsiirto- ja käsittelykerroksella. Se käyttää hajautettua, massiivisesti rinnakkaisarkkitehtuuria kohtuuhintaisella hyödykelaitteistolla nykyisten tai uusien sovellusten virran saamiseksi. Apache Ignite voi toimia tiloissa, pilvialustoilla, kuten AWS ja Microsoft Azure, tai hybridiympäristössä.

Apache Ignite -sovellusliittymä tukee SQL: ää, C ++, .Net, Java, Scala, Groovy, PHP ja Node.js. Yhdistetty sovellusliittymä yhdistää pilvimittasovellukset useisiin tietovarastoihin, jotka sisältävät strukturoitua, puolistrukturoitua ja jäsentämätöntä tietoa. Se tarjoaa korkean suorituskyvyn dataympäristön, jonka avulla yritykset voivat käsitellä täydellisiä ACID-tapahtumia ja tuottaa arvokasta tietoa reaaliaikaisista, vuorovaikutteisista ja eräkyselyistä.

Käyttäjät voivat pitää olemassa olevan RDBMS: n paikallaan ja ottaa Apache Ignite -levyn käyttöön kerroksena sen ja sovelluskerroksen välillä. Apache Ignite integroituu automaattisesti Oracle-, MySQL-, Postgres-, DB2-, Microsoft SQL Server- ja muihin RDBMS-tiedostoihin. Järjestelmä luo automaattisesti sovellusalueen mallin perustana olevan tietokannan kaavamäärittelyn perusteella ja lataa sitten tiedot. Muistitietokannat tarjoavat tyypillisesti vain SQL-käyttöliittymän, kun taas Ignite tukee laajempaa pääsy- ja prosessointiparadigmien ryhmää ANSI SQL: n lisäksi. Apache Ignite tukee avain- / arvovarastoja, SQL-käyttöä, MapReducea, HPC / MPP-käsittelyä, suoratoisto- / CEP-käsittelyä, klustereita ja Hadoop-kiihdytystä yhdessä integroidussa muistin sisäisessä tietokonealustassa.

GridGain Systems lahjoitti Apache Igniten alkuperäisen koodin Apache Software Foundationille vuoden 2014 toisella puoliskolla. Apache Ignite ylennettiin nopeasti inkubaatioprojektista huipputason Apache-projektiin vuonna 2015. Vuoden 2016 toisella neljänneksellä Apache Ignite ladattu lähes 200 000 kertaa. Sitä käyttävät organisaatiot ympäri maailmaa.

Arkkitehtuuri

Apache Ignite on JVM-pohjainen hajautettu väliohjelmisto, joka perustuu homogeeniseen klusteritopologian toteutukseen, joka ei vaadi erillisiä palvelin- ja asiakassolmuja. Kaikki Ignite-klusterin solmut ovat samanarvoisia, ja niillä voi olla mikä tahansa looginen rooli ajonaikaisen sovelluksen vaatimusta kohden.

Palveluntarjoajan käyttöliittymän (SPI) suunnittelu on Apache Igniten ydin. SPI-pohjainen muotoilu tekee Ignite-laitteen jokaisesta sisäisestä komponentista täysin muokattavissa ja liitettävissä. Tämä mahdollistaa järjestelmän valtavan konfiguroitavuuden ja sopeutuvuuden olemassa olevaan tai tulevaan palvelininfrastruktuuriin.

Apache Ignite tarjoaa myös suoran tuen haarukkaliitäntään, MapReduceen tai MPP-tyyliseen käsittelyyn perustuvien hajautettujen laskelmien rinnakkaistamiseen. Ignite käyttää laajasti jaettuja rinnakkaislaskelmia, ja ne ovat täysin alttiina API-tasolla käyttäjän määrittelemälle toiminnallisuudelle.

Avainominaisuudet

Muistissa oleva tietoruudukko. Apache Ignite sisältää muistin sisäisen dataruudukon, joka hoitaa hajautettua muistin sisäistä tiedonhallintaa, mukaan lukien ACID-tapahtumat, vikasietoisuus, edistynyt kuormituksen tasapainotus ja laaja SQL-tuki. Ignite-tietoruudukko on hajautettu, objektipohjainen, ACID-tapahtuma, muistissa oleva avainarvosäilö. Toisin kuin perinteiset tietokannan hallintajärjestelmät, joissa levyä käytetään ensisijaisena tallennusmekanismina, Ignite tallentaa tietoja muistiin. Hyödyntämällä muistia levyn sijaan Apache Ignite on jopa miljoona kertaa nopeampi kuin perinteiset tietokannat.

SQL-tuki. Apache Ignite tukee vapaamuotoisia ANSI SQL-99 -yhteensopivia kyselyjä käytännössä ilman rajoituksia. Ignite voi käyttää mitä tahansa SQL-toimintoa, yhdistämistä tai ryhmittelyä, ja se tukee hajautettuja, sijoittamattomia SQL-liittymiä ja välimuistiliitoksia. Ignite tukee myös kenttäkyselyjen käsitettä, joka auttaa minimoimaan verkko- ja sarjaliitännät.

Muistissa oleva laskentaruudukko. Apache Ignite sisältää laskentaruudukon, joka mahdollistaa prosessorien tai muiden resursseja kuluttavien tehtävien, kuten perinteisen HPC-, MPP-, haarukka-liittymis- ja MapReduce-prosessoinnin, rinnakkaisen, muistin sisäisen käsittelyn. Tukea annetaan myös tavalliselle Java ExecutorService -asynkroniselle käsittelylle.

Muistipalveluruudukko. Apache Ignite -palveluruudukko tarjoaa täydellisen hallinnan klusteriin asennetuista palveluista. Käyttäjät voivat hallita, kuinka monta palvelun esiintymää tulisi ottaa käyttöön kussakin klusterisolmussa varmistaen asianmukainen käyttöönotto ja vikasietoisuus. Palveluruudukko takaa kaikkien käyttöönotettujen palveluiden jatkuvan saatavuuden solmuvikojen varalta. Se tukee myös palvelun useiden esiintymien, yksittäisen palvelun ja palvelujen automaattista käyttöönottoa solmun käynnistyksessä.

Suoratoisto muistissa. Muistivirran käsittely käsittelee suurta joukkoa sovelluksia, joille perinteiset käsittelymenetelmät ja levypohjainen tallennus, kuten levypohjaiset tietokannat tai tiedostojärjestelmät, eivät ole riittäviä. Nämä sovellukset laajentavat perinteisten tietojenkäsittelyinfrastruktuurien rajoja.

Suoratoiston tuki antaa käyttäjille mahdollisuuden kysyä saapuvien tietojen rullaavia ikkunoita. Tämän avulla käyttäjät voivat vastata kysymyksiin, kuten "Mitkä ovat 10 suosituinta tuotetta viimeisen tunnin aikana?" tai "Mikä on keskimääräinen hinta tietyssä tuoteryhmässä viimeisten 12 tunnin aikana?"

Toinen yleinen suoratoiston käsittelytapaus on hajautettujen tapahtumien työnkulun johtaminen. Kun tapahtumat ovat tulossa järjestelmään suurilla nopeuksilla, tapahtumien käsittely jaetaan useisiin vaiheisiin, joista kukin on reititettävä klusterin sisällä käsittelyä varten. Nämä mukautettavat tapahtumien työnkulut tukevat monimutkaisia ​​tapahtumankäsittelysovelluksia (CEP).

Hadoop-kiihtyvyys muistissa. Apache Ignite Accelerator for Hadoop mahdollistaa nopean tietojen käsittelyn olemassa olevissa Hadoop-ympäristöissä organisaation jo käyttämien työkalujen ja tekniikan avulla.

Sytytä muistin sisäinen Hadoop-kiihdytys perustuu ensimmäiseen kaksitilaiseen, tehokkaaseen muistin sisäiseen tiedostojärjestelmään, joka on täysin yhteensopiva Hadoop HDFS: n kanssa, ja muistiin optimoituun MapReduce-toteutukseen. Jopa 100 kertaa nopeampi suorituskyky, muistin sisäiset HDFS ja muistin MapReduce tarjoavat helppokäyttöiset laajennukset levypohjaisille HDFS: lle ja perinteisille MapReduce-tiedostoille. Tämä plug-and-play-ominaisuus vaatii vain vähän tai ei lainkaan integrointia. Se toimii minkä tahansa avoimen lähdekoodin tai kaupallisen Hadoop 1.x- tai Hadoop 2.x-version kanssa, mukaan lukien Cloudera, Hortonworks, MapR, Apache, Intel ja AWS. Tuloksena on jopa 100 kertaa nopeampi suorituskyky MapReduce- ja Hive-töissä.

Hajautettu muistitiedostojärjestelmä. Apache Igniten ainutlaatuinen piirre on Ignite File System (IGFS), joka on tiedostojärjestelmän liitäntä muistin sisäiseen dataan. IGFS tarjoaa samanlaisia ​​toimintoja kuin Hadoop HDFS. Se sisältää kyvyn luoda täysin toimiva tiedostojärjestelmä muistiin. IGFS on Apache Ignite In-Memory Accelerator for Hadoop -yrityksen ydin.

Kunkin tiedoston tiedot jaetaan erillisiin tietolohkoihin ja tallennetaan välimuistiin. Jokaisen tiedoston tietoja voidaan käyttää tavallisella Java-suoratoistosovellusliittymällä. Kehittäjä voi laskea kunkin tiedoston osan suhteen ja käsitellä tiedoston sisältöä vastaavissa solmuissa tarpeettoman verkkoyhteyden välttämiseksi.

Yhtenäinen sovellusliittymä. Apache Ignite -sovelluksen yhtenäinen sovellusliittymä tukee monia erilaisia ​​yleisiä protokollia sovelluskerrokselle tietojen käyttämiseen. Tuettuja protokollia ovat SQL, Java, C ++, .Net, PHP, MapReduce, Scala, Groovy ja Node.js. Ignite tukee useita yhteyskäytäntöjä asiakasyhteydelle Ignite-klustereihin, mukaan lukien alkuperäiset asiakkaat, REST / HTTP, SSL / TLS ja Memcached.SQL.

Edistynyt klusterointi. Apache Ignite tarjoaa yhden JVM: ien kehittyneimmistä klusterointitekniikoista. Sytytetyt solmut voivat automaattisesti löytää toisensa, mikä auttaa klusteria tarvittaessa skaalattuna ilman, että koko klusteria on käynnistettävä uudelleen. Kehittäjät voivat myös hyödyntää Igniten hybridipilvetukea, jonka avulla käyttäjät voivat muodostaa yhteyksiä yksityisten pilvien ja julkisten pilvien, kuten AWS: n tai Microsoft Azuren, välille.

Lisäominaisuuksia. Apache Ignite tarjoaa korkean suorituskyvyn, klusterinlaajuisen viestitoiminnon. Sen avulla käyttäjät voivat vaihtaa tietoja julkaisu-, tilaus- ja suorien pisteestä pisteeseen viestintämallien kautta.

Ignite-sovelluksen hajautettujen tapahtumien avulla sovellukset voivat vastaanottaa ilmoituksia välimuistitapahtumista hajautetussa ruudukkoympäristössä. Kehittäjät voivat käyttää tätä toimintoa ilmoittaakseen etätehtävien suorittamisesta tai kaikista klusterin välimuistitietojen muutoksista. Tapahtuma-ilmoitukset voidaan ryhmitellä ja lähettää erissä ja ajoittain. Eräilmoitukset auttavat saavuttamaan välimuistin korkean suorituskyvyn ja matalan viiveen.

Ignite sallii suurimman osan java.util.concurrent-kehyksen tietorakenteista käyttää hajautetusti. Voit esimerkiksi lisätä yhden solmun kaksipäiseen jonoon (java.util.concurrent.BlockingDeque) ja kysellä sitä toisesta solmusta. Tai sinulla voi olla hajautettu ensisijaisen avaimen generaattori, joka takaa ainutlaatuisuuden kaikissa solmuissa.

Ignite-hajautetut tietorakenteet tukevat näitä tavallisia Java-sovellusliittymiä: Samanaikainen kartta, hajautetut jonot ja joukot, AtomicLong, AtomicSequence, AtomicReference ja CountDownLatch.

Keskeiset integraatiot

Apache Spark. Apache Spark on nopea, yleiskäyttöinen moottori laajamittaiseen tietojenkäsittelyyn. Ignite ja Spark ovat täydentäviä muistin sisäisiä tietojenkäsittelyratkaisuja. Niitä voidaan käyttää yhdessä monissa tapauksissa erinomaisen suorituskyvyn ja toiminnallisuuden saavuttamiseksi.

Apache Spark ja Apache Ignite osoittavat jonkin verran erilaisia ​​käyttötapauksia ja kilpailevat harvoin samasta tehtävästä. Alla olevassa taulukossa hahmotellaan joitain keskeisiä eroja.

 
 Apache SparkApache Ignite
Tietojen säilyttäminenLataa tiedot käsiteltäväksi ulkoisesta tallennustilasta, yleensä levypohjaisesta, ja hylkää tiedot, kun käsittely on valmis. Ei tallennustilaa.Tarjoaa hajautetun muistin avaimen arvon tallennuksen (hajautettu välimuisti tai tietoruudukko) ACID-tapahtumien ja SQL-kyselyominaisuuksien kanssa. Säilyttää tiedot muistissa ja voi kirjoittaa läpi taustalla olevaan tietokantaan.
OLAP / OLTPEi-transaktiotonta, vain luku -tietoa varten, joten sitä käytetään OLAP: lle. Kipinänkestävät hajautetut tietojoukot (RDD) eivät tue paikallisia mutaatioita.Tukee ei-transaktiivisia (OLAP) hyötykuormia sekä täysin ACID-yhteensopivia tapahtumia (OLTP).
TietotyypitPerustuu RDD: hin. Toimii vain datapohjaisilla hyötykuormilla.Tukee täysin puhtaita laskennallisia hyötykuormia (HPC / MPP), jotka voivat olla "datattomia".

Apache Spark ei tarjoa jaettua tallennustilaa, joten HDFS: n tai muun levytilan tiedot on ladattava Sparkiin käsittelyä varten. Tila voidaan siirtää Spark-työstä työhön vain tallentamalla käsitellyt tiedot takaisin ulkoiseen tallennustilaan. Ignite voi jakaa Spark-tilan suoraan muistiin tallentamatta tilaa levylle.

Yksi Ignite ja Sparkin tärkeimmistä integraatioista on Apache Ignite Shared RDD API. Ignite RDD: t ovat lähinnä kääreitä Ignite-välimuistien ympärille, jotka voidaan ottaa käyttöön suoraan Spark-töiden suorittamisen sisällä. Ignite RDD -levyjä voidaan käyttää myös välimuistin ohjatun mallin kanssa, jossa Ignite-klusterit otetaan käyttöön erillään Sparkista, mutta silti muistissa. Tietoja käytetään edelleen Spark RDD -sovellusliittymien avulla.

Spark tukee melko runsasta SQL-syntaksia, mutta se ei tue tietojen indeksointia, joten sen on suoritettava koko tarkistus. Kipinäkyselyt voivat viedä minuutteja jopa kohtalaisen pienillä tietojoukoilla. Ignite tukee SQL-hakemistoja, mikä johtaa paljon nopeampiin kyselyihin, joten Sparkin käyttö Igniten kanssa voi kiihdyttää Spark SQL: ää yli 1000-kertaiseksi. Ignite Shared RDD: n palauttama tulosjoukko on myös Spark Dataframe -sovellusliittymän mukainen, joten sitä voidaan analysoida edelleen käyttämällä tavallisia Spark-tietokehyksiä. Sekä Spark että Ignite integroituvat luonnollisesti Apache YARNin ja Apache Mesosin kanssa, joten on helpompaa käyttää niitä yhdessä.

Kun työskentelet tiedostojen kanssa RDD-tiedostojen sijaan, tilan jakaminen Spark-töiden ja sovellusten välillä on silti mahdollista Ignite In-Memory File System (IGFS) -toiminnon avulla. IGFS toteuttaa Hadoop FileSystem -sovellusliittymän, ja se voidaan ottaa käyttöön alkuperäisenä Hadoop-tiedostojärjestelmänä, aivan kuten HDFS. Sytytä tulpat luonnollisesti mihin tahansa Hadoop- tai Spark-ympäristöön. IGFS: ää voidaan käyttää ilman koodimuutoksia plug-and-play-tavalla.

Apache Cassandra. Apache Cassandra voi toimia tehokkaana ratkaisuna jäsenneltyihin kyselyihin. Cassandran tiedot tulisi kuitenkin mallintaa siten, että kukin ennalta määritetty kysely johtaa yhden rivin hakuun. Siksi sinun on tiedettävä, mitä kyselyitä tarvitaan ennen tietojen mallintamista.

$config[zx-auto] not found$config[zx-overlay] not found