A Hadoop-fürt beállítása a HDFS magas rendelkezésre állásával



Ez a blog áttekintést nyújt a HDFS magas rendelkezésre állású architektúrájáról, valamint arról, hogyan állíthatja be és konfigurálhatja a HDFS magas rendelkezésre állású fürtöt egyszerű lépésekben.

HDFS 2.x magas rendelkezésre állású fürt architektúra

Ebben a blogban a HDFS 2.x magas rendelkezésre állású fürt architektúráról és a HDFS magas rendelkezésre állású fürt létrehozásának eljárásáról fogok beszélni.Ez fontos része a . A blog témáinak sorrendje a következő:

  • HDFS HA ​​építészet
    • Bevezetés
    • NameNode Elérhetőség
    • A HA építészete
    • HA (JournalNode és megosztott tárhely) megvalósítása
  • Hogyan állítható be a HA (Quorum Journal Nodes) egy Hadoop-fürtben?

Bevezetés:

A magas rendelkezésre állású klaszter koncepcióját a Hadoop 2-ben vezették be.x a Hadoop 1.x hibapontjának egyetlen pontjának megoldásához. Mint az előző blogomból tudod, hogy a a Master / Slave topológiát követi, ahol a NameNode mester démonként működik, és felelős más DataNodes nevű szolga csomópontok kezeléséért. Ez az egyetlen Master Daemon vagy a NameNode szűk keresztmetszet lesz. Bár a másodlagos NameNode bevezetése megakadályozta az adatvesztést és a NameNode bizonyos terheinek leterhelését, de nem oldotta meg a NameNode elérhetőségét.





NameNode Elérhetőség:

Ha figyelembe vesszük a HDFS-fürt szokásos konfigurációját, akkor a NameNode a-val lesz egyetlen meghibásodási pont . Azért történik, mert abban a pillanatban, amikor a NameNode elérhetővé válik, az egész fürt elérhetetlenné válik, amíg valaki újra nem indítja a NameNode-ot, vagy nem hoz újat.

A NameNode elérhetetlenségének okai a következők lehetnek:



  • Egy olyan tervezett esemény, mint például a karbantartási munka, a szoftver vagy a hardver frissítésével jár.
  • Ennek oka lehet egy nem tervezett esemény is, amikor a NameNode bizonyos okok miatt összeomlik.

A fenti esetek bármelyikében leállási időnk van, amikor nem tudjuk használni a HDFS-fürtöt, ami kihívássá válik.

HDFS HA ​​architektúra:

Tisztázzuk, hogy a HDFS HA ​​Architecture hogyan oldotta meg a NameNode elérhetőségének ezt a kritikus problémáját:

A HA architektúra megoldotta a NameNode elérhetőségének ezt a problémáját, lehetővé téve számunkra, hogy két NameNode legyen aktív / passzív konfigurációban. Tehát egy magas rendelkezésre állású fürtben egyszerre két futó NameNode van:



  • Aktív NameNode
  • Készenléti / passzív név csomópont.

HDFS HA ​​Architecture - Magas rendelkezésre állású klaszter - Edureka

Ha az egyik Névcsomópont lemegy, akkor a másik Névcsomópont átvállalhatja a felelősséget, ezért lerövidítheti a fürt leállási idejét. A készenléti NameNode egy biztonsági másolat NameNode célját szolgálja (ellentétben a Secondary NameNode), amelyek a Hadoop-fürt feladatátvételi képességeit tartalmazzák. Ezért a StandbyNode segítségével automatikus feladatátvételt tehetünk, amikor egy NameNode összeomlik (nem tervezett esemény), vagy kecses (manuálisan elindított) feladatátvételt tehetünk a karbantartási időszak alatt.

A HDFS magas rendelkezésre állású fürt konzisztenciájának fenntartása két kérdéssel jár:

  • Az aktív és a készenléti névnévnek mindig szinkronban kell lenniük egymással, vagyis ugyanazokkal a metaadatokkal kell rendelkezniük. Ez lehetővé teszi számunkra, hogy visszaállítsuk a Hadoop-fürtöt ugyanabba a névtér-állapotba, ahol összeomlott, és ezért gyors feladatátvételt biztosít.
  • Egyszerre csak egy aktív NameNode lehet, mert két aktív NameNode az adatok sérüléséhez vezet. Ezt a fajta forgatókönyvet split-brain forgatókönyvnek nevezik, ahol a klaszter kisebb klaszterekre oszlik, és mindegyikük úgy gondolja, hogy ez az egyetlen aktív klaszter. Az ilyen esetek elkerülése érdekében a kerítés megtörténik. A vívás annak biztosítása, hogy csak egy NameNode maradjon aktív egy adott időpontban.

HA építészet megvalósítása:

Most már tudja, hogy a HDFS HA ​​Architecture alkalmazásban két NameNode fut egyszerre. Tehát az Active és a Standby NameNode konfigurációt a következő két módon valósíthatjuk meg:

  1. A Kvórum Napló csomópontok használata
  2. Megosztott tárhely az NFS használatával

Értsük meg a megvalósításnak ezt a két módját, külön-külön:

1. A Kvórum Napló csomópontok használata:

  • A készenléti NameNode és az aktív NameNode szinkronban marad egymással egy külön csomópont- vagy démoncsoporton keresztül JournalNodes .A JournalNodes a gyűrű topológiáját követi, ahol a csomópontok összekapcsolódnak egymással, és gyűrűt alkotnak.A JournalNode kiszolgálja a hozzá érkező kérést, és az információt a gyűrű más csomópontjaiba másolja.Ez biztosítja a hibatűrést a JournalNode meghibásodása esetén.
  • Az aktív NameNode felelős a JournalNodes-ben található EditLogs (metaadat-információk) frissítéséért.
  • A StandbyNode elolvassa az EditLogs módosításait a JournalNode-ban, és állandóan alkalmazza a saját névterére.
  • A feladatátvétel során a StandbyNode meggyőződik arról, hogy frissítette-e a metaadatokat a JournalNodes-ről, mielőtt új Active NameNode-vá vált. Ez szinkronizálja az aktuális névtér állapotot a feladatátvétel előtti állapottal.
  • Mindkét NameNode IP-címe elérhető az összes DataNode számára, és elküldik a szívdobbanásukat, és blokkolják a helyinformációkat mindkét NameNode-hoz. Ez gyors feladatátvételt (kevesebb leállási időt) biztosít, mivel a StandbyNode frissített információkkal rendelkezik a blokk blokkhelyéről a fürtben.

A NameNode kerítése:

Most, ahogy korábban említettük, nagyon fontos annak biztosítása, hogy egyszerre csak egy Active NameNode legyen. Tehát a kerítés olyan folyamat, amely biztosítja ezt a tulajdonságot egy klaszterben.

  • A JournalNodes ezt a kerítést úgy hajtja végre, hogy egyszerre csak egy NameNode lehet az író.
  • A Készenléti Névcsomó átveszi a JournalNodes írásának felelősségét, és megtiltja, hogy bármely más Névcsomópont aktív maradjon.
  • Végül az új Active NameNode biztonságosan elvégezheti tevékenységét.

2. Megosztott tárhely használata:

  • A StandbyNode és az aktív NameNode szinkronban marad egymással az a használatával megosztott tárolóeszköz .Az aktív NameNode naplózza a névtérben végrehajtott bármilyen módosítás rekordját a megosztott tárolóban található EditLog-ba.A Készenléti Csomópont elolvassa az ezen megosztott tárhelyen található EditLogs módosításait, és alkalmazza a saját névterére.
  • Most feladatátvétel esetén a StandbyNode először a megosztott tároló EditLogs segítségével frissíti metaadatait. Ezután az Active NameNode felelősségét vállalja. Ez szinkronizálja az aktuális névtér állapotot a feladatátvétel előtti állapottal.
  • A rendszergazdának konfigurálnia kell legalább egy kerítési módszert az osztott agyú forgatókönyv elkerülése érdekében.
  • A rendszer számos kerítésmechanizmust alkalmazhat. Ez magában foglalhatja a NameNode folyamatának megölését és a megosztott tárolási könyvtárhoz való hozzáférés visszavonását.
  • Végső megoldásként a korábban aktív NameNode-ot a STONITH néven ismert technikával keríthetjük el, vagy „fejbe lőhetjük a másik csomópontot”. A STONITH egy speciális áramelosztó egységet használ a NameNode gép erőszakos kikapcsolására.

Automatikus feladatátvétel:

A feladatátvétel olyan eljárás, amelynek során a rendszer automatikusan átadja a vezérlést a másodlagos rendszernek, ha hibát vagy hibát észlel. A feladatátvitelnek két típusa van:

Kecses feladatátvétel: Ebben az esetben manuálisan kezdeményezzük a feladatátvételt a rutin karbantartáshoz.

Automatikus feladatátvétel: Ebben az esetben a feladatátvételt automatikusan elindítja NameNode hiba (nem tervezett esemény) esetén.

Az Apache Zookeeper olyan szolgáltatás, amely biztosítja az automatikus feladatátvételi képességet a HDFS magas rendelkezésre állású fürtjében. Kis mennyiségű koordinációs adatot tart fenn, tájékoztatja az ügyfeleket az adatok változásairól, és figyeli az ügyfeleket a hibák szempontjából. A Zookeeper fenntart egy munkamenetet a NameNodes szolgáltatással. Meghibásodás esetén a munkamenet lejár, és a Zookeeper tájékoztatja a többi NameNode-ot a feladatátvételi folyamat elindításáról. A NameNode meghibásodása esetén egy másik passzív NameNode lezárhatja a Zookeeper programot, kijelentve, hogy a következő Active NameNode-ként akar lenni.

A ZookeerFailoverController (ZKFC) egy Zookeeper kliens, amely figyeli és kezeli a NameNode állapotot is. A NameNode mindegyikén fut egy ZKFC is. A ZKFC felelős a NameNodes állapotának időszakos ellenőrzéséért.

Most, hogy megértette, mi a magas rendelkezésre állás egy Hadoop-fürtben, ideje beállítani. A Hadoop-fürt magas rendelkezésre állásának beállításához a Zookeepert kell használnia az összes csomópontban.

Az Active NameNode démonjai a következők:

  • Állatgondozó
  • Zookeeper Fail Over vezérlő
  • JournalNode
  • NameNode

A Standby NameNode démonjai a következők:

  • Állatgondozó
  • Zookeeper Fail Over vezérlő
  • JournalNode
  • NameNode

A DataNode démonjai a következők:

  • Állatgondozó
  • JournalNode
  • DataNode

Ha el akarod sajátítani a HDFS-t és a Hadoop-ot, nézd meg az Edureka által speciálisan kurált Big Data and Hadoop tanfolyamot. A kezdéshez kattintson az alábbi gombra.

Magas rendelkezésre állású fürt beállítása és konfigurálása a Hadoopban:

Először be kell állítania az egyes csomópontok Java és host nevét.

Virtuális gép IP-cím Gazdanév
Aktív NameNode192.168.1.81nn1.cluster.com vagy nn1
Készenléti Név192.168.1.58nn2.cluster.com vagy nn2
DataNode192.168.1.82dn1.cluster.com vagy dn1

Töltse le a Hadoop és a Zookeeper bináris kátrányfájlt, és bontsa ki a fájlokat a konfigurációs fájlok szerkesztéséhez.

Parancs: wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz

Terjessze az állattartót-3.4.6.tar.gz

Parancs : tar –xvf állattartó-3.4.6.tar.gz

Töltse le a stabil Hadoop bináris kátrányt az Apache Hadoop webhelyről.

Parancs : wget https://archive.apache.org/dist/hadoop/core/hadoop-2.6.0/hadoop-2.6.0.tar.gz

Kivonjuk a Hadoop kátránygömböt.

Parancs : tar –xvf hadoop-2.6.0.tar.gz

Spread hadoop bináris.

Adja hozzá a Hadoop, a Zookeeper és az elérési utakat a .bashrc fájlhoz.

Nyissa meg a .bashrc fájlt.

Parancs : sudo gedit ~ / .bashrc

Adja hozzá az alábbi utakat:

export HADOOP_HOME = export HADOOP_MAPRED_HOME = $ HADOOP_HOME export HADOOP_COMMON_HOME = $ HADOOP_HOME export HADOOP_HDFS_HOME = $ HADOOP_HOME export YARN_HOME = $ HADOOP_HOME export HADOOP_CONF_DIR = $ HADOOP_HOME / etc / Hadoop export YARN_CONF_DIR = $ HADOOP_HOME / etc / Hadoop export JAVA_HOME = export ZOOKEEPER_HOME = export PATH = $ PATH: $ JAVA_HOME / bin: $ HADOOP_HOME / bin: $ HADOOP_HOME / sbin: $ ZOOKEEPER_HOME / bin

Szerkessze a .bashrc fájlt.

Engedélyezze az SSH-t az összes csomópontban.

Generálja az SSH kulcsot az összes csomópontban.

Parancs : ssh-keygen –t rsa (Ez a lépés az összes csomópontban)

Állítsa be az SSH kulcsot az összes csomópontban.

Ne adjon meg semmilyen elérési utat az Enter fájlnak a kulcs mentéséhez, és ne adjon meg jelszót. Nyomja meg az Enter gombot.

hogyan készítsünk tömb objektumot a java-ban

Generálja az ssh kulcsfolyamatot az összes csomópontban.

Az ssh kulcs előállítása után megkapja a nyilvános és a privát kulcsot.

A .ssh kulcskönyvtárnak tartalmaznia kell a 700 engedélyt, a .ssh könyvtár összes kulcsának pedig a 600 engedélyt.

Módosítsa az SSH könyvtár engedélyét.

Változtassa a könyvtárat .ssh-re, és változtassa meg a fájlok engedélyét 600-ra

A nyilvános és a privát kulcs engedélyének módosítása.

Az összes csomópontra át kell másolnia a Név csomópontok ssh nyilvános kulcsát.

Az Active Namenode fájlban másolja az id_rsa.pub macska paranccsal.

Parancs : macska ~ / .ssh / id_rsa.pub >> ~ / .ssh / jogosult_kulcsok

Másolja a Namenode ssh kulcsot az engedélyezett kulcsokba.

Másolja a NameNode nyilvános kulcsot az összes csomópontra a használatával ssh-copy-id parancs.

Parancs : ssh-copy-id –i .ssh / id_rsa.pub edureka@nn2.cluster.com

ms sql oktatóanyagok kezdőknek

Másolja a célkulcsot a Készenléti Név Csomópontba.

Másolja a NameNode nyilvános kulcsot az adatcsomópontba.

Parancs : ssh-copy-id –i .ssh / id_rsa.pub edureka@dn1.cluster.com

Másolja a Namenode nyilvános kulcsot az adatcsomópontba.

Indítsa újra az sshd szolgáltatást az összes csomópontban.

Parancs : sudo service sshd restart (Csináld az összes csomópontban)

Indítsa újra az SSH szolgáltatást.

Most hitelesítés nélkül bejelentkezhet a Namenode bármely csomópontjába.

Nyissa meg az aktív név csomópontból a core-site.xml fájlt, és adja hozzá az alábbi tulajdonságokat.

Szerkessze a core-site.xml fájlt az Active namenode fájlból

Nyissa meg a hdfs-site.xml fájlt az Active Namenode fájlban. Adja hozzá az alábbi tulajdonságokat.

dfs.namenode.name.dir / home / edureka / HA / data / namenode dfs.replication 1 dfs.permissions hamis dfs.nameservices ha-fürt dfs.ha.namenodes.ha-fürt nn1, nn2 dfs.namenode.rpc-cím .ha-cluster.nn1 nn1.cluster.com:9000 dfs.namenode.rpc-address.ha-cluster.nn2 nn2.cluster.com:9000 dfs.namenode.http-address.ha-cluster.nn1 nn1.fürt. com: 50070 dfs.namenode.http-address.ha-cluster.nn2 nn2.cluster.com:50070 dfs.namenode.shared.edits.dir qjournal: //nn1.cluster.com: 8485nn2.cluster.com: 8485dn1. cluster.com:8485/ha-cluster dfs.client.failover.proxy.provider.ha-cluster org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider dfs.ha.automatic-failover.enabled true ha.zookeeper .quorum nn1.cluster.com:2181,nn2.cluster.com:2181,dn1.cluster.com:2181 dfs.ha.fencing.methods sshfence dfs.ha.fencing.ssh.private-key-files / home / edureka /.ssh/id_rsa

Módosítsa a könyvtárat a zookeeper conf könyvtárára.

Parancs : cd állattartó-3.4.6 / konf

Zookeeper Conf könyvtár.

A conf könyvtárban van zoo_sample.cfg fájl, hozza létre a zoo.cfg fájlt a zoo_sample.cfg fájl segítségével.

Parancs : cp zoo_sample.cfg zoo.cfg

Hozzon létre zoo.cfg fájlt.

Hozza létre a könyvtárat bárhol, és használja ezt a könyvtárat az állattartó adatainak tárolásához.

Parancs : mkdir

Hozzon létre egy könyvtárat a zookeeper adatok tárolásához.

Nyissa meg a zoo.cfg fájlt.

Parancs : gedit zoo.cfg

Adja hozzá a fenti lépésben létrehozott könyvtár elérési utat a dataDir tulajdonsághoz, és adja hozzá az alábbi részleteket a fennmaradó csomópontra vonatkozóan a zoo.cfg fájlban.

Szerver.1 = nn1.cluster.com: 2888: 3888

Szerver.2 = nn2.cluster.com: 2888: 3888

Szerver.3 = dn1.cluster.com: 2888: 3888

Szerkessze a zoo.cfg fájlt.

Most másolja a Java és a Hadoop-2.6.0, a zookeeper-3.4.6 könyvtárakat és a .bashrc fájlt az összes csomópontra (Készenléti név csomópont, Adat csomópont) az scp parancs segítségével.

Parancs : scp –r edureka @:

Másolja a Hadoop, a Zookeeper és a .bashrc fájlt az összes csomópontba.

Hasonlóképpen másolja a .bashrc fájlt és a zookeeper könyvtárat az összes csomópontra, és mindegyikben változtassa meg a környezeti változókat az adott csomópontnak megfelelően.

Adatcsomópontban hozzon létre minden olyan könyvtárat, ahol tárolni kell a HDFS-blokkokat.

Egy adatcsomópontban hozzá kell adnia a dfs.datanode.data.dir tulajdonságokat.

Az én esetemben én alkottam datanode könyvtár a blokkok tárolásához.

Hozzon létre Datanode könyvtárat.

Módosítsa az adatcsomópont-könyvtár engedélyét.

Módosítsa a Datanode könyvtár engedélyét.

Nyissa meg a HDFS-site.xml fájlt, vegye fel a Datanode könyvtár elérési útját a dfs.datanode.data.dir tulajdonságba.

Megjegyzés: Az Active namenode-ból másolt összes tulajdonság megtartja a dfs.datanode.data.dir egyik kivonat tulajdonságát a namenode-ban.

dfs.datanode.data.dir / home / edureka / HA / data / datanode

Az Aktív névcsomópontban változtassa meg azt a könyvtárat, ahová a zookeeper konfigurációs fájlt szeretné tárolni (dataDir tulajdonság elérési útja).

Hozza létre a myid fájlt a könyvtárban, és adjon hozzá 1-es számot a fájlhoz, és mentse a fájlt.

Parancs : vi myid

Hozzon létre myid fájlt.

Készenléti névnódban változtassa meg azt a könyvtárat, ahová tárolni szeretné a zookeeper konfigurációs fájlt (dataDir tulajdonság elérési útja).

Hozza létre a myid fájlt a könyvtárban, és adja hozzá a 2-es számot a fájlhoz, és mentse a fájlt.

Adatcsomópontban változtassa meg azt a könyvtárat, ahová a zookeeper konfigurációs fájlt szeretné tárolni (dataDir tulajdonság elérési útja).

Hozza létre a myid fájlt a könyvtárban, és adjon hozzá 3-as számot a fájlhoz, és mentse a fájlt.

Indítsa el a Journalnode-ot mindhárom csomópontban.

Parancs : hadoop-daemon.sh start journalnode

Indítsa el a Journalnode alkalmazást.

A jps parancs megadásakor az összes csomópontban megjelenik a JournalNode démon.

Formázza aAktív cél.

Parancs : HDFS-formátum

Aktív NameNode formátum.

Indítsa el a Namenode és az Active Namedode démonokat.

Parancs : hadoop-daemon.sh kezdési cél

Indítsa el a Namenode alkalmazást.

Másolja a HDFS metaadatokat az aktív névcsomópontról a készenléti névcsomópontra.

Parancs : HDFS szánt -bootstrapStandby

Másolja a HDFS Meta adatokat az Aktív név csomópontról a Készenléti Namenode-ra.

Miután futtatta ezt a parancsot, megkapja az információt, hogy a metaadatokat mely csomópontból és helyről másolja, és hogy sikeresen másol-e vagy sem.

Az aktív célra vonatkozó információk.

Miután a metaadatokat átmásolta az Active namenode-ról a standby namenode-ra, megkapja az alábbi üzenetet a képernyőképen.

Információ a HDFS-ről a készenléti Namenode-ban.

Indítsa el a namenode démont a Készenléti namenode gépben.

Parancs : hadoop-daemon.sh kezdési cél

Most indítsa el a Zookeeper szolgáltatást mindhárom csomópontban.

Parancs : zkServer.sh start (Futtassa ezt a parancsot az összes csomópontban)

Aktív célra:

Indítsa el a zookeepert az Active NameNode-ban.

Készenléti Namenode-ban:

Indítsa el a zookeepert készenléti NameNode-ban.

Az Adat csomópontban:

Indítsa el a zookeepert a DataNode-ban.

A Zookeeper szerver futtatása után írja be a JPS parancsot. Az összes csomópontban látni fogja a QuorumPeerMain szolgáltatást.

Indítsa el a Data node démonot az Data node gépben.

Parancs : hadoop-daemon.sh start datanode

Indítsa el a Zookeeper fail over vezérlőt az Aktív név csomópontban és a készenléti név csomópontban.

Formázza a zookeeper fail over vezérlőjét az Active namenode-ban.

Parancs: HDFS zkfc –formZZK

Formázza a ZKFC-t.

Indítsa el a ZKFC-t az Active namenode-ban.

Parancs : hadoop-daemon.sh start zkfc

Írja be a jps parancsot a DFSZkFailoverController démonok ellenőrzéséhez.

Indítsa el a ZKFC-t.

Formázza a zookeeper fail over vezérlőjét a Készenléti névnévben.

Parancs : hdfs zkfc –formatZK

Indítsa el a ZKFC-t készenléti néven.

Parancs : hadoop-daemon.sh start zkfc

Írja be a jps parancsot a DFSZkFailoverController démonok ellenőrzéséhez.

Most ellenőrizze az egyes Namenode állapotát, melyik csomópont aktív vagy melyik készenléti állapotban van az alábbi paranccsal.

Parancs : hdfs haadmin –getServiceState nn1

Ellenőrizze az egyes NameNode állapotokat.

Most ellenőrizze az egyes Namenode állapotokat a webböngészővel.

Nyissa meg a webböngészőt, és írja be az alábbi URL-t.

: 50070

Megmutatja, hogy a névcsomópont aktív vagy készenléti állapotban van-e.

Aktív NameNode.

Nyisson meg egy másik névcsomópont adatait a webböngészővel.

Készenléti Név.

c ++ -ba egyesül

Az Aktív névcsomópontban ölje meg a névcsomópont démont, hogy a Készenléti név csomópont aktív névre változzon.

Írja be az jps-t az Active namenode-ba, és ölje meg a démont.

Parancs: sudo kill -9

Démonok folyamatazonosítója.

A Namenode folyamatazonosító 7606, ölje meg a namenode-ot.

Parancs : Sudo kill -9 7606

Öld meg a Node Node folyamatot

Nyissa meg a két csomópontot a webböngészőn keresztül, és ellenőrizze az állapotot.

Namenode részletek.

NameNode állapot.

Gratulálunk, sikeresen beállította a HDFS magas rendelkezésre állású fürtöt a Hadoopban.

Most, hogy megértette a Hadoop magas rendelkezésre állású fürt architektúráját, nézze meg a az Edureka, egy megbízható online tanulási vállalat, amelynek több mint 250 000 elégedett tanulóval rendelkező hálózata elterjedt az egész világon. Az Edureka Big Data Hadoop tanúsító tanfolyam segít a tanulóknak a HDFS, a fonal, a MapReduce, a Pig, a Hive, a HBase, az Oozie, a Flume és a Sqoop szakértőivé válni, valós idejű felhasználási esetek felhasználásával a kiskereskedelem, a szociális média, a repülés, az idegenforgalom és a pénzügy területén.

Van egy kérdésünk? Kérjük, említse meg a megjegyzések részben, és mi kapcsolatba lépünk Önnel.

ablak._LQ_ = ablak._LQ_ || {}

lqQuizModal (ablak, dokumentum, {quizId: ’XAIVp8 ′, baseUrl:’ https: //quiz.leadquizzes.com/’,trigger: ’exit’}, _LQ_)