مرحبا
في هذه المقالة ، سنقوم بتثبيت Apache Kafka و Apache Spark و Zookeeper و Spark-shell على منصة EC2 AWS (Amazon Web Services) في المنزل ومعرفة كيفية استخدامها كلها.
تقديم خدمات الويب الأمازون
1.1. سيكون عليك التسجيل في
aws.amazon.com/console . أدخل اسمًا وتذكر كلمة المرور.
1.2. تكوين مثيلات العقدة لخدمات Zookeeper و Kafka.
- اختر "خدمات-> EC2" من القائمة. بعد ذلك ، حدد إصدار نظام التشغيل لصورة الجهاز الظاهري ، حدد Ubuntu Server 16.04 LTS (HVM) ، نوع وحدة تخزين SSD ، انقر فوق "تحديد". ننتقل إلى تكوين مثيل الخادم: اكتب "t3.medium" مع المعلمات 2vCPU ، ذاكرة 4 جيجابايت ، للأغراض العامة انقر فوق "التالي: تكوين تفاصيل مثيل".
- إضافة عدد الحالات 1 ، انقر فوق "التالي: إضافة التخزين"
- نحن نقبل القيمة الافتراضية لحجم القرص 8 جيجا بايت ونغير النوع إلى مغناطيسي (في إعدادات الإنتاج استنادًا إلى حجم البيانات و SSD عالي الأداء)
- في قسم "مثيلات العلامة" في "الاسم" ، أدخل اسم مثيل العقدة "Home1" (حيث 1 هو مجرد رقم تسلسلي) وانقر فوق "التالي: ..."
- في قسم "تكوين مجموعات الأمان" ، حدد خيار "استخدام مجموعة الأمان الحالية" من خلال تحديد اسم مجموعة الأمان ("Spark_Kafka_Zoo_Project") وتعيين قواعد حركة المرور الواردة. انقر فوق "التالي: ..."
- قم بالتمرير خلال شاشة المراجعة للتحقق من إدخالاتك وبدء التشغيل.
- للاتصال بعقد نظام المجموعة ، يجب عليك إنشاء (في حالتنا ، استخدام القائمة) زوج من المفاتيح العامة لتحديد الهوية والترخيص. للقيام بذلك ، حدد نوع العملية "استخدام الزوج الحالي" في القائمة.
مفتاح الخلق
- قم بتنزيل المعجون للعميل أو استخدم اتصال SSH من الجهاز.
- يستخدم ملف مفتاح .pem التنسيق القديم للراحة ، ونحوله إلى تنسيق ppk المستخدم بواسطة المعجون. للقيام بذلك ، قم بتشغيل الأداة المساعدة PuTTYgen ، قم بتحميل المفتاح بتنسيق .pem القديم في الأداة المساعدة. نقوم بتحويل المفتاح وحفظه (حفظ المفتاح الخاص) لاستخدامه لاحقًا في المجلد الرئيسي بالملحق .ppk.
إطلاق الكتلة
1.3. للراحة ، إعادة تسمية العقد الكتلة في تدوين Node01-04. للاتصال بعُقد نظام المجموعة من الكمبيوتر المحلي عبر SSH ، تحتاج إلى تحديد عنوان IP للعقدة واسم DNS العام / الخاص ، وحدد كل من عقد نظام المجموعة واحدة تلو الأخرى وللمثيل المحدد ، اكتب اسم DNS العام / الخاص للاتصال عبر SSH وللتثبيت برنامج إلى ملف نصي HadoopAdm01.txt.
مثال: ec2-35-162-169-76.us-west-2.compute.amazonaws.com
تثبيت Apache Kafka في وضع SingleNode على عقدة الكتلة AWS
2.1. لتثبيت البرنامج ، حدد العقدة الخاصة بنا (انسخ نظام DNS العام الخاص بها) للاتصال عبر SSH. نحن تكوين الاتصال من خلال SSH. نستخدم الاسم المحفوظ للعقدة الأولى لتكوين الاتصال عبر SSH باستخدام زوج المفاتيح الخاص / العام "HadoopUser01.ppk" الذي تم إنشاؤه في الفقرة 1.3. ننتقل إلى قسم "الاتصال / المصادقة" من خلال الزر "استعراض" وابحث عن المجلد الذي سبق أن حفظنا فيه الملف "HadoopUserXX.ppk".
نحن نحفظ تكوين الاتصال في الإعدادات.
2.2. نحن متصلون بالعقدة ونستخدم تسجيل الدخول: أوبونتو.
• باستخدام امتيازات الجذر ، نقوم بتحديث الحزم وتثبيت الحزم الإضافية المطلوبة لمزيد من التثبيت والتكوين للكتلة.
sudo apt-get update sudo apt-get -y install wget net-tools netcat tar
• قم بتثبيت Java 8 jdk وتحقق من إصدار Java.
sudo apt-get -y install openjdk-8-jdk
• للحصول على أداء عقدة نظام عادي ، تحتاج إلى ضبط إعدادات تبديل الذاكرة. يتم ضبط مبادلات VM على 60٪ افتراضيًا ، مما يعني أنه عند استخدام الذاكرة بنسبة 60٪ ، سيقوم النظام بتبديل البيانات من ذاكرة الوصول العشوائي إلى القرص. بناءً على إصدار Linux ، يمكن ضبط معلمة swappines VM على 0 أو 1:
sudo sysctl vm.swappiness=1
• لحفظ الإعدادات أثناء إعادة التشغيل ، أضف خطًا إلى ملف التكوين.
echo 'vm.swappiness=1' | sudo tee --append /etc/sysctl.conf
• تحرير الإدخالات في ملف / etc / hosts من أجل حل مناسب لأسماء عقدة الكافا kafka و zookeeper لعناوين IP الخاصة لعُقد الكتلة المعينة.
echo "172.31.26.162 host01" | sudo tee --append /etc/hosts
نتحقق من الاعتراف الصحيح للأسماء باستخدام اختبار ping لأي من الإدخالات.
• قم بتنزيل أحدث الإصدارات الحالية (http://kafka.apache.org/downloads) لتوزيعات kafka و scala وإعداد دليل به ملفات التثبيت.
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
• احذف ملف أرشيف tgz ، لن نحتاج إليه بعد الآن
• دعونا نحاول بدء خدمة Zookeeper ، لهذا:
~/kafka/bin/zookeeper-server-start.sh -daemon ~/kafka/config/zookeeper.properties
يبدأ Zookeeper بخيارات بدء التشغيل الافتراضية. يمكنك التحقق من السجل:
tail -n 5 ~/kafka/logs/zookeeper.out
لضمان بدء تشغيل البرنامج الخفي Zookeeper ، بعد إعادة التشغيل ، نحتاج إلى بدء تشغيل Zookeper كخدمة خلفية:
bin/zookeeper-server-start.sh -daemon config/zookeeper.properties
للتحقق من إطلاق Zookepper ، تحقق
netcat -vz localhost 2181
2.3. نحن نقوم بتهيئة خدمة Zookeeper و Kafka للعمل. في البداية ، قم بتحرير / إنشاء الملف /etc/systemd/system/zookeeper.service (محتويات الملف أدناه).
[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
بعد ذلك ، بالنسبة إلى Kafka ، قم بتحرير / إنشاء الملف /etc/systemd/system/kafka.service (محتويات الملف أدناه).
[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
• تنشيط البرامج النصية systemd لخدمات كافكا و Zookeeper.
sudo systemctl enable zookeeper sudo systemctl enable kafka
• التحقق من تشغيل البرامج النصية 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
• التحقق من إمكانية الخدمة من خدمات كافكا و Zookeeper.
netcat -vz localhost 2181 netcat -vz localhost 9092
• التحقق من ملف سجل حارس الحديقة.
cat logs/zookeeper.out
الفرح الأول
2.4. نخلق موضوعنا الأول على خادم الكافكا المجمع.
- من المهم استخدام الاتصال بـ "host01: 2181" كما أشرت في ملف تكوين server.properties.
- نكتب بعض البيانات في الموضوع.
kafka-console-producer.sh --broker-list host01:9092 --topic first_topic
Ctrl-C - الخروج من وحدة تحكم الموضوع.
• حاول الآن قراءة البيانات من الموضوع.
kafka-console-consumer.sh --bootstrap-server host01:9092 --topic last_topic --from-beginning
• عرض قائمة من المواضيع كافكا.
bin/kafka-topics.sh --zookeeper spark01:2181 --list
• تحرير معلمات خادم kafka من أجل الضبط لإعداد كتلة واحدة
# تحتاج إلى تغيير المعلمة ISR إلى 1.
bin/kafka-topics.sh --zookeeper spark01:2181 --config min.insync.replicas=1 --topic __consumer_offsets --alter
• أعد تشغيل خادم كافكا وحاول توصيل أوم المستهلك مرة أخرى
• دعونا نرى قائمة من المواضيع.
bin/kafka-topics.sh --zookeeper host01:2181 --list
تكوين Apache Spark على كتلة أحادية العقدة
لقد أعددنا مثيلًا للعقدة باستخدام خدمات Zookeeper و Kafka المثبتة على AWS ، والآن تحتاج إلى تثبيت Apache Spark ، لهذا:
3.1. قم بتنزيل أحدث توزيع لـ Apache Spark.
wget https://archive.apache.org/dist/spark/spark-2.4.0/spark-2.4.0-bin-hadoop2.6.tgz
• قم بفك ضغط التوزيع وإنشاء رابط رمزي لإطلاق الشرط وحذف ملفات الأرشيف غير الضرورية.
tar -xvf spark-2.4.0-bin-hadoop2.6.tgz ln -s spark-2.4.0-bin-hadoop2.6 spark rm spark*.tgz
• انتقل إلى دليل sbin وقم بتشغيل معالج الشرارة.
./start-master.sh
• الاتصال باستخدام مستعرض ويب إلى خادم Spark على المنفذ 8080.
• تشغيل الشرارة العبيد على العقدة نفسها
./start-slave.sh spark://host01:7077
• قم بتشغيل صدفة الشرارة مع المعلم على host01.
./spark-shell --master spark://host01:7077
• إذا لم يعمل الإطلاق ، فأضف المسار إلى Spark in bash.
vi ~/.bashrc # SPARK_HOME=/home/ubuntu/spark export PATH=$SPARK_HOME/bin:$PATH
source ~/.bashrc
• تشغيل قذيفة الشرارة مرة أخرى مع سيد على host01.
./spark-shell --master spark://host01:7077
3.2. تعمل مجموعة أحادية العقدة مع أعمال Kafka و Zookeeper و Spark. الصيحة!
قليلا من الإبداع
4.1. قم بتنزيل محرر Scala-IDE (على
scala-ide.org ). نبدأ ونبدأ كتابة التعليمات البرمجية. هنا لن أكرر نفسي بعد الآن ، فهناك
مقال جيد عن حبري .
4.2. الأدب والدورات المفيدة للمساعدة في:
courses.hadoopinrealworld.com/courses/enrolled/319237data- flair.training/blogs/kafka-consumerwww.udemy.com/apache-spark-with-scala-hands-on-with-big-data