GNU/Linux >> Znalost Linux >  >> Linux

Jak nainstalovat spark na RHEL 8

Apache Spark je distribuovaný výpočetní systém. Skládá se z hlavního a jednoho nebo více slave, kde master rozděluje práci mezi slave, čímž dává možnost využít naše mnoho počítačů k práci na jednom úkolu. Dalo by se hádat, že se skutečně jedná o mocný nástroj, kde úkoly vyžadují velké výpočty, ale lze je rozdělit na menší části kroků, které lze podřídit otrokům, aby na nich pracovali. Jakmile je náš cluster v provozu, můžeme psát programy, které na něm běží v Pythonu, Javě a Scale.

V tomto tutoriálu budeme pracovat na jednom počítači se systémem Red Hat Enterprise Linux 8 a nainstalujeme Spark master a slave na stejný počítač, ale mějte na paměti, že kroky popisující nastavení slave lze použít na libovolný počet počítačů, čímž se vytvoří skutečný cluster, který dokáže zpracovat velké pracovní zatížení. Přidáme také potřebné soubory jednotek pro správu a spustíme jednoduchý příklad na clusteru dodaném s distribuovaným balíčkem, abychom zajistili, že náš systém bude funkční.

V tomto tutoriálu se naučíte:

  • Jak nainstalovat Spark master a slave
  • Jak přidat soubory systemd unit
  • Jak ověřit úspěšné připojení master-slave
  • Jak spustit jednoduchou ukázkovou úlohu v clusteru

Spark shell s pyspark.

Požadavky na software a použité konvence

Softwarové požadavky a konvence příkazového řádku systému Linux
Kategorie Požadavky, konvence nebo použitá verze softwaru
Systém Red Hat Enterprise Linux 8
Software Apache Spark 2.4.0
Jiné Privilegovaný přístup k vašemu systému Linux jako root nebo prostřednictvím sudo příkaz.
Konvence # – vyžaduje, aby dané linuxové příkazy byly spouštěny s právy root buď přímo jako uživatel root, nebo pomocí sudo příkaz
$ – vyžaduje, aby dané linuxové příkazy byly spouštěny jako běžný neprivilegovaný uživatel

Jak nainstalovat spark na Redhat 8 krok za krokem

Apache Spark běží na JVM (Java Virtual Machine), takže ke spuštění aplikací je vyžadována funkční instalace Java 8. Kromě toho je v balení dodáváno několik skořápek, jedna z nich je pyspark , shell založený na pythonu. Abyste s tím mohli pracovat, budete také potřebovat nainstalovaný a nastavený python 2.

  1. Chceme-li získat adresu URL nejnovějšího balíčku Spark, musíme navštívit web pro stahování Spark. Musíme vybrat zrcadlo, které je nejblíže našemu umístění, a zkopírovat adresu URL poskytnutou webem pro stahování. To také znamená, že vaše adresa URL se může lišit od níže uvedeného příkladu. Balíček nainstalujeme pod /opt/ , takže adresář zadáme jako root :
    # cd /opt

    A vložte získanou adresu URL do wget získat balíček:

    # wget https://www-eu.apache.org/dist/spark/spark-2.4.0/spark-2.4.0-bin-hadoop2.7.tgz
  2. Rozbalíme tarball:
    # tar -xvf spark-2.4.0-bin-hadoop2.7.tgz
  3. A v následujících krocích vytvořte symbolický odkaz, abyste si naše cesty lépe zapamatovali:
    # ln -s /opt/spark-2.4.0-bin-hadoop2.7 /opt/spark
  4. Vytváříme neprivilegovaného uživatele, který bude spouštět obě aplikace, hlavní i podřízenou:
    # useradd spark

    A nastavte jej jako vlastníka celého /opt/spark adresář, rekurzivně:

    # chown -R spark:spark /opt/spark*
  5. Vytváříme systemd soubor jednotky /etc/systemd/system/spark-master.service pro hlavní službu s následujícím obsahem:
    [Unit]
    Description=Apache Spark Master
    After=network.target
    
    [Service]
    Type=forking
    User=spark
    Group=spark
    ExecStart=/opt/spark/sbin/start-master.sh
    ExecStop=/opt/spark/sbin/stop-master.sh
    
    [Install]
    WantedBy=multi-user.target

    A také jeden pro podřízenou službu, která bude /etc/systemd/system/spark-slave.service.service s níže uvedeným obsahem:

    [Unit]
    Description=Apache Spark Slave
    After=network.target
    
    [Service]
    Type=forking
    User=spark
    Group=spark
    ExecStart=/opt/spark/sbin/start-slave.sh spark://rhel8lab.linuxconfig.org:7077
    ExecStop=/opt/spark/sbin/stop-slave.sh
    
    [Install]
    WantedBy=multi-user.target

    Všimněte si zvýrazněné adresy URL. Toto je vytvořeno pomocí spark://<hostname-or-ip-address-of-the-master>:7077 , v tomto případě má laboratorní stroj, který poběží master, název hostitele rhel8lab.linuxconfig.org . Jméno vašeho pána bude jiné. Každý slave musí být schopen přeložit tento název hostitele a dostat se k master na zadaném portu, což je port 7077 ve výchozím nastavení.

  6. Když máme soubory služeb na svém místě, musíme se zeptat systemd pro opětovné přečtení:
    # systemctl daemon-reload
  7. Můžeme spustit náš Spark master pomocí systemd :
    # systemctl start spark-master.service
  8. Pro ověření, že náš master běží a je funkční, můžeme použít systemd status:
    # systemctl status spark-master.service
      spark-master.service - Apache Spark Master
       Loaded: loaded (/etc/systemd/system/spark-master.service; disabled; vendor preset: disabled)
       Active: active (running) since Fri 2019-01-11 16:30:03 CET; 53min ago
      Process: 3308 ExecStop=/opt/spark/sbin/stop-master.sh (code=exited, status=0/SUCCESS)
      Process: 3339 ExecStart=/opt/spark/sbin/start-master.sh (code=exited, status=0/SUCCESS)
     Main PID: 3359 (java)
        Tasks: 27 (limit: 12544)
       Memory: 219.3M
       CGroup: /system.slice/spark-master.service
                 3359 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181.b13-9.el8.x86_64/jre/bin/java -cp /opt/spark/conf/:/opt/spark/jars/* -Xmx1g org.apache.spark.deploy.master.Master --host [...]
    
    Jan 11 16:30:00 rhel8lab.linuxconfig.org systemd[1]: Starting Apache Spark Master...
    Jan 11 16:30:00 rhel8lab.linuxconfig.org start-master.sh[3339]: starting org.apache.spark.deploy.master.Master, logging to /opt/spark/logs/spark-spark-org.apache.spark.deploy.master.Master-1[...]

    Poslední řádek také označuje hlavní soubor protokolu master, který je v logs adresář v základním adresáři Spark, /opt/spark v našem případě. Když se podíváme do tohoto souboru, měli bychom na konci vidět řádek podobný níže uvedenému příkladu:

    2019-01-11 14:45:28 INFO  Master:54 - I have been elected leader! New state: ALIVE

    Měli bychom také najít řádek, který nám říká, kde hlavní rozhraní naslouchá:

    2019-01-11 16:30:03 INFO  Utils:54 - Successfully started service 'MasterUI' on port 8080

    Pokud nasměrujeme prohlížeč na port hostitelského počítače 8080 , měli bychom vidět stavovou stránku hlavního serveru, v tuto chvíli nejsou připojeni žádní pracovníci.

    Stránka s hlavním stavem Sparku bez připojených pracovníků.

    Všimněte si řádku URL na stavové stránce Spark master. Toto je stejná adresa URL, kterou musíme použít pro každý soubor podřízených jednotek, který jsme vytvořili v step 5 .
    Pokud se v prohlížeči zobrazí chybová zpráva „připojení odmítnuto“, pravděpodobně budeme muset otevřít port na bráně firewall:

    # firewall-cmd --zone=public --add-port=8080/tcp --permanent
    success
    # firewall-cmd --reload
    success
  9. Náš pán běží, připojíme k němu otroka. Spustíme podřízenou službu:
    # systemctl start spark-slave.service
  10. Můžeme ověřit, že náš slave běží pomocí systemd:
    # systemctl status spark-slave.service
      spark-slave.service - Apache Spark Slave
       Loaded: loaded (/etc/systemd/system/spark-slave.service; disabled; vendor preset: disabled)
       Active: active (running) since Fri 2019-01-11 16:31:41 CET; 1h 3min ago
      Process: 3515 ExecStop=/opt/spark/sbin/stop-slave.sh (code=exited, status=0/SUCCESS)
      Process: 3537 ExecStart=/opt/spark/sbin/start-slave.sh spark://rhel8lab.linuxconfig.org:7077 (code=exited, status=0/SUCCESS)
     Main PID: 3554 (java)
        Tasks: 26 (limit: 12544)
       Memory: 176.1M
       CGroup: /system.slice/spark-slave.service
                 3554 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181.b13-9.el8.x86_64/jre/bin/java -cp /opt/spark/conf/:/opt/spark/jars/* -Xmx1g org.apache.spark.deploy.worker.Worker [...]
    
    Jan 11 16:31:39 rhel8lab.linuxconfig.org systemd[1]: Starting Apache Spark Slave...
    Jan 11 16:31:39 rhel8lab.linuxconfig.org start-slave.sh[3537]: starting org.apache.spark.deploy.worker.Worker, logging to /opt/spark/logs/spark-spar[...]

    Tento výstup také poskytuje cestu k souboru protokolu slave (nebo pracovníka), který bude ve stejném adresáři s „pracovníkem“ ve svém názvu. Kontrolou tohoto souboru bychom měli vidět něco podobného níže uvedenému výstupu:

    2019-01-11 14:52:23 INFO  Worker:54 - Connecting to master rhel8lab.linuxconfig.org:7077...
    2019-01-11 14:52:23 INFO  ContextHandler:781 - Started o.s.j.s.ServletContextHandler@62059f4a{/metrics/json,null,AVAILABLE,@Spark}
    2019-01-11 14:52:23 INFO  TransportClientFactory:267 - Successfully created connection to rhel8lab.linuxconfig.org/10.0.2.15:7077 after 58 ms (0 ms spent in bootstraps)
    2019-01-11 14:52:24 INFO  Worker:54 - Successfully registered with master spark://rhel8lab.linuxconfig.org:7077

    To znamená, že pracovník je úspěšně připojen k hlavnímu zařízení. Ve stejném souboru protokolu najdeme řádek, který nám říká adresu URL, na které pracovník poslouchá:

    2019-01-11 14:52:23 INFO  WorkerWebUI:54 - Bound WorkerWebUI to 0.0.0.0, and started at http://rhel8lab.linuxconfig.org:8081

    Náš prohlížeč můžeme nasměrovat na stránku stavu pracovníka, kde je uveden její hlavní server.

    Stránka stavu pracovníka Spark, připojená k hlavnímu serveru.

    V souboru protokolu hlavního serveru by se měl objevit ověřovací řádek:

    2019-01-11 14:52:24 INFO  Master:54 - Registering worker 10.0.2.15:40815 with 2 cores, 1024.0 MB RAM

    Pokud nyní znovu načteme stavovou stránku předlohy, měl by se tam objevit také pracovník s odkazem na její stavovou stránku.

    Stránka s hlavním stavem Spark s jedním připojeným pracovníkem.

    Tyto zdroje ověřují, že je náš cluster připojený a připravený k práci.

  11. Chceme-li na clusteru spustit jednoduchou úlohu, provedeme jeden z příkladů dodaných s balíčkem, který jsme si stáhli. Zvažte následující jednoduchý textový soubor /opt/spark/test.file :
    line1 word1 word2 word3
    line2 word1
    line3 word1 word2 word3 word4

    Spustíme wordcount.py příklad na něm, který bude počítat výskyt každého slova v souboru. Můžeme použít spark uživatel, žádný root potřebná oprávnění.

    $ /opt/spark/bin/spark-submit /opt/spark/examples/src/main/python/wordcount.py /opt/spark/test.file
    2019-01-11 15:56:57 INFO  SparkContext:54 - Submitted application: PythonWordCount
    2019-01-11 15:56:57 INFO  SecurityManager:54 - Changing view acls to: spark
    2019-01-11 15:56:57 INFO  SecurityManager:54 - Changing modify acls to: spark
    [...]

    Při provádění úlohy je poskytován dlouhý výstup. Na konci výstupu se zobrazí výsledek, shluk vypočítá potřebné informace:

    2019-01-11 15:57:05 INFO  DAGScheduler:54 - Job 0 finished: collect at /opt/spark/examples/src/main/python/wordcount.py:40, took 1.619928 s
    line3: 1
    line2: 1
    line1: 1
    word4: 1
    word1: 3
    word3: 2
    word2: 2
    [...]

    Díky tomu jsme viděli náš Apache Spark v akci. Lze nainstalovat a připojit další podřízené uzly, aby se škáloval výpočetní výkon našeho clusteru.


Linux
  1. Jak nainstalovat Spark na Ubuntu

  2. Jak nainstalovat phpMyAdmin na RHEL 8 / CentOS 8

  3. jak nainstalovat gcc 4.9.2 na RHEL 7.4

  1. Jak nainstalovat P7Zip na RHEL 8 / CentOS 8

  2. Jak nainstalovat ntfs-3g na RHEL 8 / CentOS 8

  3. Jak nainstalovat PHP-mbstring na RHEL 8 / CentOS 8

  1. Jak nainstalovat phantomjs na RHEL 8 / CentOS 8

  2. Jak nainstalovat Dropbox na RHEL 8 / CentOS 8

  3. Jak nainstalovat kompas na RHEL 8 / CentOS 8