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

Halo

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.

Memperkenalkan Layanan Web Amazon


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

1.2. 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." 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 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


1.3. Untuk kenyamanan, ganti nama node cluster dalam notasi Node01-04. Untuk terhubung ke node cluster dari komputer lokal melalui SSH, Anda perlu menentukan alamat IP dari node dan publik / private 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


2.1. 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.

2.2. 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 selama reboot, tambahkan baris ke file konfigurasi.

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

• Mengedit entri dalam file / etc / hosts untuk resolusi yang mudah dari nama simpul cluster kafka dan zookeeper ke alamat IP pribadi dari 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 terkini terkini (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 

2.3. 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 

• Aktifkan 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 

• Periksa kemampuan servis layanan Kafka dan Zookeeper.

 netcat -vz localhost 2181 netcat -vz localhost 9092 

• Periksa file log zookeeper.

 cat logs/zookeeper.out 

Sukacita pertama


2.4. 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 

• Lihat daftar topik kafka.

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

• Mengedit parameter 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 

• Mulai ulang server Kafka dan coba hubungkan lagi ohm konsumen

• 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:

3.1. 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 simbolis untuk memicu dan menghapus 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 

• Sambungkan 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 

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

Sedikit kreativitas


4.1. 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é .

4.2. 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/id443912/


All Articles