BigData buatan rumah. Bagian 1. Praktek Spark Streaming pada gugus AWS

Halo

Ada banyak layanan di Internet yang menyediakan layanan cloud. Dengan bantuan mereka, Anda dapat mempelajari teknologi BigData.

Pada artikel ini, kita akan menginstal Apache Kafka, Apache Spark, Zookeeper, Spark-shell di platform EC2 AWS (Amazon Web Services) di rumah dan belajar cara menggunakannya.

gambar


Memperkenalkan Layanan Web Amazon


Anda harus mendaftar di aws.amazon.com/console . Masukkan nama dan ingat kata sandi.

Konfigurasikan instance simpul untuk layanan Zookeeper dan Kafka.

  • Pilih "Layanan-> EC2" dari menu. Selanjutnya, pilih versi sistem operasi gambar mesin virtual, pilih Ubuntu Server 16.04 LTS (HVM), tipe volume SSD, klik "Pilih." Kami melanjutkan untuk mengonfigurasi contoh server: ketik "t3.medium" dengan parameter 2vCPU, memori 4 GB, Tujuan Umum Klik "Selanjutnya: Mengkonfigurasi Detail Instance".
  • Tambahkan jumlah instance 1, klik "Next: Add Storage"
  • Kami menerima nilai default untuk ukuran disk 8 GB dan mengubah jenisnya menjadi Magnetik (dalam pengaturan Produksi berdasarkan volume data dan SSD Kinerja Tinggi)
  • Di bagian "Tag Instances" untuk "Name", masukkan nama instance dari simpul "Home1" (di mana 1 hanya nomor seri) dan klik "Next: ..."
  • Di bagian "Konfigurasikan Grup Keamanan", pilih opsi "Gunakan grup keamanan yang ada" dengan memilih nama grup keamanan ("Spark_Kafka_Zoo_Project") dan tetapkan aturan untuk lalu lintas masuk. Klik pada "Selanjutnya: ..."
  • Gulir melalui layar Tinjau untuk memverifikasi entri Anda dan meluncurkan Peluncuran.
  • Untuk terhubung ke node cluster, Anda harus membuat (dalam kasus kami, gunakan yang ada) sepasang kunci publik untuk identifikasi dan otorisasi. Untuk melakukan ini, pilih jenis operasi "Gunakan pasangan yang ada" dalam daftar.

Penciptaan Kunci


  • Unduh Putty (https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html) untuk klien atau gunakan koneksi SSH dari terminal.
  • File kunci .pem menggunakan format lama untuk kenyamanan, kami mengonversinya menjadi format ppk yang digunakan oleh Putty. Untuk melakukan ini, jalankan utilitas PuTTYgen, muat kunci dalam format .pem lama ke dalam utilitas. Kami mengonversi kunci dan menyimpan (Simpan Kunci Pribadi) untuk digunakan nanti di folder beranda dengan ekstensi .ppk.

Peluncuran cluster


Untuk kenyamanan, ganti nama node cluster dalam notasi Node01-04. Untuk menyambungkan ke node cluster dari komputer lokal melalui SSH, Anda perlu menentukan alamat IP dari node dan nama publik / privatnya DNS, pilih masing-masing node cluster satu per satu dan untuk contoh yang dipilih, tuliskan nama DNS publik / pribadi untuk menghubungkan melalui SSH dan untuk instalasi Perangkat lunak ke file teks HadoopAdm01.txt.

Contoh: ec2-35-162-169-76.us-west-2.compute.amazonaws.com

Instal Apache Kafka dalam Mode SingleNode pada AWS Cluster Node


Untuk menginstal perangkat lunak, pilih simpul kami (salin DNS Publik-nya) untuk terhubung melalui SSH. Kami mengkonfigurasi koneksi melalui SSH. Kami menggunakan nama simpanan simpul pertama untuk mengonfigurasi koneksi melalui SSH menggunakan pasangan kunci Privat / Publik “HadoopUser01.ppk” yang dibuat pada klausa 1.3. Kami pergi ke bagian Connection / Auth melalui tombol Browse dan mencari folder tempat kami sebelumnya menyimpan file "HadoopUserXX.ppk".

Kami menyimpan konfigurasi koneksi dalam pengaturan.

Kami terhubung ke node dan menggunakan login: ubuntu.

  • Menggunakan hak akses root, kami memperbarui paket dan menginstal paket tambahan yang diperlukan untuk instalasi lebih lanjut dan konfigurasi cluster.

    sudo apt-get update sudo apt-get -y install wget net-tools netcat tar 
  • Instal Java 8 jdk dan periksa versi Java.

     sudo apt-get -y install openjdk-8-jdk 
  • Untuk kinerja node cluster normal, Anda perlu menyesuaikan pengaturan pertukaran memori. VM swappines diatur ke 60% secara default, yang berarti ketika menggunakan memori dalam 60%, sistem akan secara aktif bertukar data dari RAM ke disk. Tergantung pada versi Linux, parameter swappines VM dapat diatur ke 0 atau 1:

     sudo sysctl vm.swappiness=1 

  • Untuk menyimpan pengaturan saat reboot, tambahkan baris ke file konfigurasi.

     echo 'vm.swappiness=1' | sudo tee --append /etc/sysctl.conf 

  • Mengedit entri dalam file / etc / hosts untuk memudahkan penyelesaian nama simpul dari cluster kafka dan
    zookeeper di alamat IP pribadi ke node cluster yang ditugaskan.

     echo "172.31.26.162 host01" | sudo tee --append /etc/hosts 

    Kami memeriksa pengakuan nama yang benar menggunakan ping salah satu entri.

  • Unduh versi terbaru saat ini (http://kafka.apache.org/downloads) dari distribusi kafka dan scala dan siapkan direktori dengan file instalasi.

     wget http://mirror.linux-ia64.org/apache/kafka/2.1.0/kafka_2.12-2.1.0.tgz tar -xvzf kafka_2.12-2.1.0.tgz ln -s kafka_2.12-2.1.0 kafka 

  • Hapus file arsip tgz, kita tidak lagi membutuhkannya

  • Mari kita coba untuk memulai layanan Zookeeper, untuk ini:

     ~/kafka/bin/zookeeper-server-start.sh -daemon ~/kafka/config/zookeeper.properties 

    Zookeeper memulai dengan opsi startup default. Anda dapat memeriksa log:

     tail -n 5 ~/kafka/logs/zookeeper.out 

    Untuk memastikan bahwa daemon Zookeeper dimulai, setelah reboot, kita perlu menjalankan Zookeper sebagai layanan latar belakang:

     bin/zookeeper-server-start.sh -daemon config/zookeeper.properties 

    Untuk memeriksa peluncuran Zookepper, periksa

     netcat -vz localhost 2181 

    Kami mengonfigurasi layanan Zookeeper dan Kafka untuk bekerja. Awalnya, edit / buat file /etc/systemd/system/zookeeper.service (isi file di bawah).

     [Unit] Description=Apache Zookeeper server Documentation=http://zookeeper.apache.org Requires=network.target remote-fs.target After=network.target remote-fs.target [Service] Type=simple ExecStart=/home/ubuntu/kafka/bin/zookeeper-server-start.sh /home/ubuntu/kafka/config/zookeeper.properties ExecStop=/home/ubuntu/kafka/bin/zookeeper-server-stop.sh [Install] WantedBy=multi-user.target 

    Selanjutnya, untuk Kafka, edit / buat file /etc/systemd/system/kafka.service (isi file di bawah).

     [Unit] Description=Apache Kafka server (broker) Documentation=http://kafka.apache.org/documentation.html Requires=zookeeper.service [Service] Type=simple ExecStart=/home/ubuntu/kafka/bin/kafka-server-start.sh /home/ubuntu/kafka/config/server.properties ExecStop=/home/ubuntu/kafka/bin/kafka-server-stop.sh [Install] WantedBy=multi-user.target 

  • Kami mengaktifkan skrip systemd untuk layanan Kafka dan Zookeeper.

     sudo systemctl enable zookeeper sudo systemctl enable kafka 

  • Periksa pengoperasian skrip systemd.

     sudo systemctl start zookeeper sudo systemctl start kafka sudo systemctl status zookeeper sudo systemctl status kafka sudo systemctl stop zookeeper sudo systemctl stop kafka 

  • Kami akan memeriksa fungsionalitas layanan Kafka dan Zookeeper.

     netcat -vz localhost 2181 netcat -vz localhost 9092 

  • Periksa file log zookeeper.

     cat logs/zookeeper.out 

Sukacita pertama


Kami membuat topik pertama kami di server kafka rakitan.

  • Penting untuk menggunakan koneksi ke "host01: 2181" seperti yang Anda tunjukkan dalam file konfigurasi server.properties.
  • Kami menulis beberapa data dalam topik.

     kafka-console-producer.sh --broker-list host01:9092 --topic first_topic     

    Ctrl-C - keluar dari konsol topik.

  • Sekarang coba baca data dari topik.

     kafka-console-consumer.sh --bootstrap-server host01:9092 --topic last_topic --from-beginning 

  • Mari kita lihat daftar topik kafka.

     bin/kafka-topics.sh --zookeeper spark01:2181 --list 

  • Mengedit pengaturan server kafka untuk tuning untuk pengaturan cluster tunggal
    # Anda perlu mengubah parameter ISR ke 1.

     bin/kafka-topics.sh --zookeeper spark01:2181 --config min.insync.replicas=1 --topic __consumer_offsets --alter 

  • Kami me-restart server Kafka dan mencoba menghubungkan konsumen ohm lagi

  • Mari kita lihat daftar topik.

     bin/kafka-topics.sh --zookeeper host01:2181 --list 

Konfigurasikan Apache Spark pada kluster node-tunggal


Kami menyiapkan instance node dengan layanan Zookeeper dan Kafka yang diinstal pada AWS, sekarang Anda perlu menginstal Apache Spark, untuk ini:

Unduh distribusi Apache Spark terbaru.

 wget https://archive.apache.org/dist/spark/spark-2.4.0/spark-2.4.0-bin-hadoop2.6.tgz 


  • Buka zip distribusi dan buat tautan simbolik untuk percikan dan hapus file arsip yang tidak perlu.

     tar -xvf spark-2.4.0-bin-hadoop2.6.tgz ln -s spark-2.4.0-bin-hadoop2.6 spark rm spark*.tgz 

  • Buka direktori sbin dan jalankan wizard spark.

     ./start-master.sh 

  • Kami terhubung menggunakan browser web ke server Spark pada port 8080.

  • Jalankan spark-slave pada node yang sama

     ./start-slave.sh spark://host01:7077 

  • Jalankan cangkang percikan dengan master pada host01.

     ./spark-shell --master spark://host01:7077 

  • Jika peluncuran tidak berhasil, tambahkan jalur ke Spark di bash.

     vi ~/.bashrc #      SPARK_HOME=/home/ubuntu/spark export PATH=$SPARK_HOME/bin:$PATH 

     source ~/.bashrc 

  • Jalankan cangkang percikan lagi dengan master pada host01.

     ./spark-shell --master spark://host01:7077 

    Cluster single-node dengan Kafka, Zookeeper dan Spark berfungsi. Hore!

Sedikit kreativitas


Unduh editor Scala-IDE (di scala-ide.org ). Kami mulai dan mulai menulis kode. Di sini saya tidak akan mengulangi lagi, karena ada artikel yang bagus tentang Habré .

Literatur dan kursus yang berguna untuk membantu:

courses.hadoopinrealworld.com/courses/enrolled/319237
data-flair.training/blogs/kafka-consumer
www.udemy.com/apache-spark-with-scala-hands-on-with-big-data

Source: https://habr.com/ru/post/id452752/


All Articles