GNU/Linux >> Belajar Linux >  >> Linux

Cara memasang percikan di RHEL 8

Apache Spark adalah sistem komputasi terdistribusi. Ini terdiri dari master dan satu atau lebih budak, di mana master mendistribusikan pekerjaan di antara para budak, sehingga memberikan kemampuan untuk menggunakan banyak komputer kami untuk mengerjakan satu tugas. Orang bisa menebak bahwa ini memang alat yang ampuh di mana tugas-tugas membutuhkan perhitungan besar untuk diselesaikan, tetapi dapat dipecah menjadi potongan-potongan kecil dari langkah-langkah yang dapat didorong ke budak untuk dikerjakan. Setelah cluster kami aktif dan berjalan, kami dapat menulis program untuk dijalankan di dalamnya dengan Python, Java, dan Scala.

Dalam tutorial ini kita akan bekerja pada satu mesin yang menjalankan Red Hat Enterprise Linux 8, dan akan menginstal master dan slave Spark ke mesin yang sama, tetapi perlu diingat bahwa langkah-langkah yang menjelaskan pengaturan slave dapat diterapkan ke sejumlah komputer, sehingga menciptakan cluster nyata yang dapat memproses beban kerja yang berat. Kami juga akan menambahkan file unit yang diperlukan untuk pengelolaan, dan menjalankan contoh sederhana terhadap cluster yang dikirimkan dengan paket terdistribusi untuk memastikan sistem kami beroperasi.

Dalam tutorial ini Anda akan mempelajari:

  • Cara menginstal master dan slave Spark
  • Cara menambahkan file unit systemd
  • Cara memverifikasi koneksi master-slave yang berhasil
  • Cara menjalankan tugas contoh sederhana di cluster

Spark shell dengan pyspark.

Persyaratan dan Konvensi Perangkat Lunak yang Digunakan

Persyaratan Perangkat Lunak dan Konvensi Baris Perintah Linux
Kategori Persyaratan, Konvensi, atau Versi Perangkat Lunak yang Digunakan
Sistem Red Hat Enterprise Linux 8
Perangkat Lunak Apache Spark 2.4.0
Lainnya Akses istimewa ke sistem Linux Anda sebagai root atau melalui sudo perintah.
Konvensi # – membutuhkan perintah linux yang diberikan untuk dieksekusi dengan hak akses root baik secara langsung sebagai pengguna root atau dengan menggunakan sudo perintah
$ – membutuhkan perintah linux yang diberikan untuk dieksekusi sebagai pengguna biasa yang tidak memiliki hak istimewa

Cara memasang percikan di Redhat 8 petunjuk langkah demi langkah

Apache Spark berjalan pada JVM (Java Virtual Machine), jadi instalasi Java 8 yang berfungsi diperlukan agar aplikasi dapat berjalan. Selain itu, ada beberapa shell yang dikirimkan dalam paket, salah satunya adalah pyspark , shell berbasis python. Untuk mengatasinya, Anda juga perlu menginstal dan menyiapkan python 2.

  1. Untuk mendapatkan URL paket terbaru Spark, kita perlu mengunjungi situs unduhan Spark. Kita perlu memilih cermin yang paling dekat dengan lokasi kita, dan menyalin URL yang disediakan oleh situs unduhan. Ini juga berarti bahwa URL Anda mungkin berbeda dari contoh di bawah ini. Kami akan menginstal paket di bawah /opt/ , jadi kita masuk ke direktori sebagai root :
    # cd /opt

    Dan masukkan URL yang diperoleh ke wget untuk mendapatkan paketnya:

    # wget https://www-eu.apache.org/dist/spark/spark-2.4.0/spark-2.4.0-bin-hadoop2.7.tgz
  2. Kami akan membongkar tarball:
    # tar -xvf spark-2.4.0-bin-hadoop2.7.tgz
  3. Dan buat symlink untuk membuat jalur kita lebih mudah diingat di langkah selanjutnya:
    # ln -s /opt/spark-2.4.0-bin-hadoop2.7 /opt/spark
  4. Kami membuat pengguna yang tidak memiliki hak istimewa yang akan menjalankan aplikasi, master dan slave:
    # useradd spark

    Dan atur sebagai pemilik seluruh /opt/spark direktori, secara rekursif:

    # chown -R spark:spark /opt/spark*
  5. Kami membuat systemd file unit /etc/systemd/system/spark-master.service untuk layanan master dengan konten berikut:
    [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

    Dan juga satu untuk layanan budak yang akan menjadi /etc/systemd/system/spark-slave.service.service dengan isi di bawah ini:

    [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

    Perhatikan URL percikan yang disorot. Ini dibuat dengan spark://<hostname-or-ip-address-of-the-master>:7077 , dalam hal ini mesin lab yang akan menjalankan master memiliki hostname rhel8lab.linuxconfig.org . Nama tuanmu akan berbeda. Setiap slave harus dapat menyelesaikan hostname ini, dan mencapai master pada port yang ditentukan, yaitu port 7077 secara default.

  6. Dengan file layanan di tempat, kita perlu menanyakan systemd untuk membacanya kembali:
    # systemctl daemon-reload
  7. Kita dapat memulai master Spark kita dengan systemd :
    # systemctl start spark-master.service
  8. Untuk memverifikasi master kita berjalan dan berfungsi, kita dapat menggunakan status systemd:
    # 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[...]

    Baris terakhir juga menunjukkan file log utama master, yang ada di logs direktori di bawah direktori dasar Spark, /opt/spark dalam kasus kami. Dengan melihat ke file ini, kita akan melihat garis di akhir yang mirip dengan contoh di bawah ini:

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

    Kita juga harus menemukan baris yang memberi tahu kita di mana antarmuka Master mendengarkan:

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

    Jika kita mengarahkan browser ke port mesin host 8080 , kita akan melihat halaman status master, tanpa ada pekerja yang terpasang saat ini.

    Laman status master Spark tanpa pekerja yang dilampirkan.

    Perhatikan baris URL di halaman status master Spark. Ini adalah URL yang sama yang perlu kita gunakan untuk setiap file unit budak yang kita buat di step 5 .
    Jika kami menerima pesan kesalahan "koneksi ditolak" di browser, kami mungkin perlu membuka port di firewall:

    # firewall-cmd --zone=public --add-port=8080/tcp --permanent
    success
    # firewall-cmd --reload
    success
  9. Tuan kita sedang berjalan, kita akan memasang budak padanya. Kami memulai layanan budak:
    # systemctl start spark-slave.service
  10. Kami dapat memverifikasi bahwa slave kami berjalan dengan 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[...]

    Output ini juga menyediakan path ke logfile dari slave (atau worker), yang akan berada di direktori yang sama, dengan nama “worker” di dalamnya. Dengan memeriksa file ini, kita akan melihat sesuatu yang mirip dengan output di bawah ini:

    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

    Ini menunjukkan bahwa pekerja berhasil terhubung ke master. Dalam file log yang sama ini, kita akan menemukan baris yang memberi tahu kita URL yang didengarkan pekerja:

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

    Kami dapat mengarahkan browser kami ke halaman status pekerja, di mana masternya terdaftar.

    Laman status pekerja percikan, terhubung ke master.

    Di file log master, baris verifikasi akan muncul:

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

    Jika kita memuat ulang halaman status master sekarang, pekerja juga akan muncul di sana, dengan tautan ke halaman statusnya.

    Percikan halaman status master dengan satu pekerja terlampir.

    Sumber-sumber ini memverifikasi bahwa kluster kami terpasang dan siap bekerja.

  11. Untuk menjalankan tugas sederhana di cluster, kami menjalankan salah satu contoh yang dikirimkan bersama paket yang kami unduh. Perhatikan file teks sederhana berikut /opt/spark/test.file :
    line1 word1 word2 word3
    line2 word1
    line3 word1 word2 word3 word4

    Kami akan menjalankan wordcount.py contoh di atasnya yang akan menghitung kemunculan setiap kata dalam file. Kita dapat menggunakan spark pengguna, tanpa root hak istimewa yang dibutuhkan.

    $ /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
    [...]

    Saat tugas dijalankan, output panjang disediakan. Mendekati akhir output, hasilnya ditampilkan, cluster menghitung informasi yang dibutuhkan:

    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
    [...]

    Dengan ini kami telah melihat Apache Spark kami beraksi. Node slave tambahan dapat dipasang dan dilampirkan untuk menskalakan kekuatan komputasi cluster kami.


Linux
  1. Cara Menginstal Spark di Ubuntu

  2. Cara menginstal phpMyAdmin di RHEL 8 / CentOS 8

  3. cara menginstal gcc 4.9.2 di RHEL 7.4

  1. Cara Menginstal P7Zip di RHEL 8 / CentOS 8

  2. Cara menginstal ntfs-3g di RHEL 8 / CentOS 8

  3. Cara Menginstal PHP-mbstring di RHEL 8 / CentOS 8

  1. Cara menginstal phantomjs di RHEL 8 / CentOS 8

  2. Cara menginstal Dropbox di RHEL 8 / CentOS 8

  3. Cara memasang kompas di RHEL 8 / CentOS 8