خانه مهندسی داده نصب آپاچی کافکا مرحله به مرحله؛ از پیکربندی تا بهینهسازی مهندسی داده آپاچی کافکا نوشته شده توسط: تیم فنی نیک آموز تاریخ انتشار: ۱۳ مرداد ۱۴۰۳ آخرین بروزرسانی: ۱۴ مرداد ۱۴۰۳ زمان مطالعه: 19 دقیقه ۵ (۲) نصب آپاچی کافکا شامل چند مرحله اساسی است که از جمله آنها میتوان به پیکربندی ZooKeeper بهعنوان یک سرویس مدیریت و هماهنگکننده و درنهایت راهاندازی و پیکربندی سرور Kafka اشاره کرد. Apache Kafka یک پلتفرم پردازش جریانی توزیعشده و متنباز است که برای مدیریت جریانات بزرگ دادههای بلادرنگ و انتقال پیامها طراحی شده است. در این مقاله، چیستی و کاربردهای این پلتفرم بسیار پرکاربرد و مفید برای پردازش داده و افزایش مقیاسپذیری را خواهید خواند. با نحوه نصب و راهاندازی آن آشنا خواهید شد و درنهایت، میآموزید چطور به روش تیم آپاچی، از این ابزار استفاده کنید. آپاچی کافکا چطور کار می کند؟ کافکا دو مدل پیامرسانی، صفبندی و انتشار – اشتراک را باهم ترکیب میکند تا مزایای کلیدی هرکدام را برای مصرفکنندگان فراهم کند. نوبتدهی به پردازش داده در آپاچی کافکا باعث میشود دادهها در نمونههای مصرفکننده توزیع شده و بسیار مقیاسپذیرتر میکند. میدانیم که در صفبندیهای سنتی، خبری از چند اشتراک نیست و نمیشود تسکها را بین چند فرآیند ورکر تقسیم کرد؛ اما کافکا با استفاده از یک مدل لاگ پارتیشنبندی، میتواند میان این دو راه حل، پیوند ایجاد کند. روش این کار به این شکل است که هر لاگ، درواقع یک توالی مرتبشده از رکوردها است. کافکا این لاگ را به چند پارتیشن تقسیم میکند و هرکدام را به یک مشترک اختصاص میدهد. بنابراین، برای یک موضوع خاص، میتوانیم چندین مشترک داشته باشیم و به هرکدام پارتیشن اختصاص بدهیم و به این ترتیب، مقیاسپذیری را بالا ببریم. درنهایت، مدل کافکا قابلیت پخش مجدد را فراهم میکند که به چندین برنامه مستقل که از جریان داده میخوانند، اجازه میدهد تا بهطور مستقل با نرخ خاص خود کار کنند. کاربردها و مزایای استفاده از کافکا آپاچی کافکا از آن دسته پلتفرمهایی است که مثل کارمندان ژاپنی با بازدهی بالا و کاربردهای فراوان تا حداکثر به انجام وظیفه مشغول میشود. برخی از پررنگترین کاربردهای آپاچی کافکا عبارتند از: پیامرسانی Kafka بهعنوان جایگزینی برای یک پیامرسان سنتی، عملکرد خوبی دارد. پیامرسانها به دلایل مختلفی استفاده میشوند (برای جداکردن پردازش از تولیدکنندگان داده، برای بافر کردن پیامهای پردازشنشده و…). در مقایسه با اکثر سیستمهای پیامرسان، کافکا دارای توان عملیاتی بهتر، پارتیشنبندی داخلی، تکرارپذیری و تحمل خطا است که آن را به یک راه حل مناسب برای برنامههای پردازش پیامهای بزرگمقیاس تبدیل میکند. طبق تجربه ما، پیامرسانها معمولاً توان عملیاتی نسبتاً پایینی دارند، اما ممکن است به تأخیر انتها به انتها پایین و اغلب به تضمینهای دوام قوی Kafka نیاز داشته باشند. در این حوزه، Kafka قابل مقایسه با سیستمهای پیامرسان سنتی مانند ActiveMQ یا RabbitMQ است. ردیابی فعالیت وبسایت یا Website Activity Tracking در ابتدا، کاربرد اولیه آپاچی کافکا، شامل بازسازی یک خط لوله ردیابی فعالیت کاربران بهعنوان یک مجموعه از فیدهای انتشار – اشتراک در زمان واقعی میشد. به این معنا که فعالیت سایت (نمایش صفحات، جستجوها، یا سایر اقداماتی کاربران) به موضوعات مرکزی برای هر نوع فعالیت منتشر میشود. این فیدها برای موارد استفاده مختلف ازجمله پردازش زمان واقعی، نظارت زمان واقعی و بارگذاری به Hadoop یا سیستمهای انبار داده آفلاین برای پردازش و گزارشدهی آفلاین قابل اشتراک هستند. ردیابی فعالیت اغلب حجم بسیار بالایی دارد؛ زیرا پیامهای فعالیت زیادی برای هر بازدید صفحه کاربر تولید میشود. متریکها Kafka اغلب برای نظارت عملیاتی دادهها استفاده میشود. این شامل تجمیع آمار از برنامههای توزیعشده برای تولید فیدهای متمرکز از دادههای عملیاتی است. تجمیع لاگها یا Log Aggregation بسیاری از افراد از Kafka بهعنوان جایگزینی برای یک راه حل تجمیع لاگ استفاده میکنند. تجمیع لاگ معمولاً فایلهای لاگ فیزیکی را از سرورها جمعآوری کرده و آنها را در یک مکان مرکزی (شاید یک سرور فایل یا HDFS) برای پردازش قرار میدهد. Kafka جزئیات فایلها را انتزاع کرده و یک انتزاع پاکتر از دادههای لاگ یا رویداد بهعنوان یک جریان پیام ارائه میدهد. این اجازه میدهد تا پردازش با تأخیر کمتر و پشتیبانی آسانتر از منابع داده متعدد و مصرف داده توزیعشده صورت گیرد. در مقایسه با سیستمهای متمرکز بر لاگ، مانند Scribe یا Flume ،Kafka عملکرد به همان اندازه خوب، تضمینهای دوام قویتر بهدلیل تکرارپذیری و تأخیر انتها به انتها بسیار کمتر را ارائه میدهد. پردازش جریان یا Stream Processing بسیاری از کاربران Kafka دادهها را در خطوط لوله پردازش که شامل چندین مرحله هستند، پردازش میکنند؛ جایی که دادههای ورودی خام از موضوعات Kafka مصرف شده و سپس تجمیع، غنیسازی یا بهطور دیگری به موضوعات جدید برای مصرف بیشتر یا پردازش بعدی تبدیل میشوند. برای مثال، یک خط لوله پردازش برای پیشنهاد مقالههای خبری ممکن است محتوای مقاله را از فیدهای RSS جمعآوری کرده و آن را به یک موضوع “مقالات” منتشر کند. پردازش بیشتر ممکن است این محتوا را نرمالسازی یا تکراریزدایی کند و محتوای پاکسازیشده مقاله را به یک موضوع جدید منتشر کند. یک مرحله پردازش نهایی ممکن است این محتوا را به کاربران پیشنهاد دهد. چنین خطوط لوله پردازشی نمودارهای جریان داده زمان واقعی را براساس موضوعات فردی ایجاد میکنند. از نسخه ۰.۱۰.۰.۰ به بعد، یک کتابخانه پردازش جریان سبک اما قدرتمند به نام Kafka Streams در Apache Kafka موجود است تا چنین پردازش دادهای را که توضیح داده شد، انجام دهد. علاوهبر Kafka Streams، ابزارهای پردازش جریان منبع باز جایگزین شامل Apache Storm و Apache Samza هستند. منبع رویداد یا Event Sourcing منبع رویداد یک سبک طراحی برنامه است که در آن تغییرات حالت بهعنوان یک دنباله زمانی مرتب از رکوردها ثبت میشود. پشتیبانی Kafka از دادههای لاگ ذخیرهشده بسیار بزرگ، آن را به یک پشتیبان عالی برای برنامهای که به این سبک ساخته شده، تبدیل میکند. لاگ تعهد یا Commit Log Kafka میتواند بهعنوان نوعی لاگ تعهد خارجی برای یک سیستم توزیعشده عمل کند. لاگ کمک میکند دادهها را بین گرهها تکرار کرده و بهعنوان یک مکانیزم همگامسازی مجدد برای گرههای شکست خورده جهت بازیابی دادههایشان عمل میکند. ویژگی فشردهسازی لاگ در Kafka به پشتیبانی از این استفاده کمک میکند. در این استفاده، Kafka مشابه پروژه Apache BookKeeper است. پیش نیازهای نصب آپاچی کافکا اولین پیشنیاز نصب آپاچی کافکا ، یک توسعهدهنده یا مهندس داده است. اگر سروکارتان با توسعه یا تحلیل دادههای مقیاسبزرگ نمیافتد، احتمالاً نیازی به Kafka نخواهید داشت. در مرحله بعدی، نیاز دارید تا جاوا ۸+ و گیت Bash را نیز روی سیستم خود نصب داشته باشید. باقی مواردی که برای نصب به آنها نیاز دارید، عبارتند از: برای دانلود Apache Kafka، مراحل زیر را دنبال کنید: به صفحه دانلود Apache Kafka بروید. آخرین نسخه پایدار Kafka را انتخاب کنید. بسته باینری مربوط به نسخه Scala موردنظر خود را انتخاب و فایل ZIP یا TGZ را دانلود کنید. روش نصب و پیکربندی آپاچی کافکا با استفاده از Zookeeper ۲ روش کلی برای اجرای کافکا آپاچی تعریف شده است که در این بخش، با Zookeeper آشنا میشویم. در بخش بعدی نیز با روش KRaft کار خواهیم کرد. پس از دانلود Kafka، مراحل زیر را برای نصب و پیکربندی آن انجام دهید: ۱. اکسترکت فایل دانلودی باید در اولین مرحله، فایلی که دانلود کردید را از حالت فشرده خارج کنید. به نظر میآید بهترین کار، انتقال این پوشه به یک مسیر در درایو C ویندوز است. ما این مسیر را Kafka نامیده و پوشه نرمافزار اصلی را داخل آن کپی میکنیم: ۲. نصب و راه اندازی ZooKeeper Kafka برای هماهنگی نیاز به ZooKeeper دارد. در فایل تنظیمات ZooKeeper با نام config/zookeeper.properties میتوانید تنظیمات پیشفرض را تغییر دهید. تنظیمات تعریفشده در فایل zookeeper.properties بهصورت زیر است: ZooKeeper را با دستور SH زیر راهاندازی کنید: bin/zookeeper-server-start.sh config/zookeeper.properties درصورت نبود مشکل، خروجی زیر را در اختیار دارید: ۳. پیکربندی Kafka فایل تنظیمات Kafka، یعنی config/server.properties ، را مطابق با نیاز خود ویرایش کنید. تنظیمات مهم در این فایل شامل id ،log.dirs و zookeeper.connect است. ۴. راهاندازی Kafka به مسیر پوشه کافکا در ویندوز بروید و سپس Kafka را با دستور SH زیر راهاندازی کنید. در اسکرینشات، آدرس پوشه کافکا مشخص است: bin/kafka-server-start.sh config/server.properties درصورت نبود مشکل خروجی زیر را در اختیار دارید: درصورت نیاز، میتوانید دو مسیر bin را به بخش Environment Variables اضافه کنید تا در آینده نیازی به استفاده از پیشوند برای اجرای دستورات کافکا نباشد. در Environment Variables ویندوز، Path را انتخاب کرده و روی گزینه Edit کلیک کنید. با استفاده از گزینه New، دو مسیر زیر را به این بخش اضافه کرده و درنهایت، روی گزینه Ok کلیک کنید تا تغییرات ذخیره شوند: C:\Kafka\kafka_2.13-3.7.1\bin\windows C:\Kafka\kafka_2.13-3.7.1\bin اکنون بهصورت مستقیم میتوان دستورات کافکا را روی ویندوز اجرا کرد. بهتر است پس از اعمال تنظیمات روی ENV، یکبار سیستم خود را ریاستارت کنید: راه اندازی کافکا با استفاده از KRaft آپاچی کافکا را میتوان با حالت KRaft با استفاده از اسکریپتهای محلی و فایلهای دانلودشده یا داکر اجرا کرد. با این حساب، فقط یکی از بخشهای زیر را برای راهاندازی کافکا با استفاده از KRaft دنبال کنید و دیگری را درنظر نگیرید. راه اندازی با استفاده از فایل های دانلودشده ابتدا بایستی یک Cluster UUID تولید کنید. Git Bash را اجرا کرده و براساس اسکرینشات زیر، به مسیر کافکا بروید: در این مسیر، دستور زیر را اجرا کنید تا یک uuid تولید شود: export KAFKA_CLUSTER_ID=$(bin/kafka-storage.sh random-uuid) با دستور زیر میتوانید این uuid را مشاهده کنید: echo $KAFKA_CLUSTER_ID با دستور زیر نیاز است تا فرمتبندی دایرکتوری لاگ را انجام دهید: bin/kafka-storage.sh format -t $KAFKA_CLUSTER_ID -c config/kraft/server.properties درنهایت با دستور زیر میتوانید کافکا را اجرا کنید: bin/kafka-server-start.sh config/kraft/server.properties سرور بهصورت زیر اجرا شده است: ۲. راه اندازی با استفاده از فایل داکر در این روش، ابتدا با SH زیر فایل داکر را دریافت کنید: docker pull apache/kafka:3.7.1 سپس کانتینر داکر را استارت بزنید: docker run -p 9092:9092 apache/kafka:3.7.1 هنگامی که سرور آپاچی کافکا با موفقیت راهاندازی شد، یک محیط ابتدایی کافکا خواهید داشت که آماده استفاده است. ایجاد و مدیریت موضوعات (Topics) در کافکا آپاچی کافکا به شما امکان خواندن، نوشتن، ذخیره و پردازش رویدادها (که به آنها رکورد یا پیام هم گفته میشود) در بین ماشینهای مختلف را میدهد. بهعنوان مثال، رویدادها میتوانند شامل تراکنشهای پرداخت، بهروزرسانیهای مکانیابی از تلفنهای همراه، سفارشهای حملونقل، اندازهگیریهای سنسور از دستگاههای IoT یا تجهیزات پزشکی و… باشند. این رویدادها در موضوعات سازماندهی و ذخیره میشوند. به زبان خیلی ساده، یک موضوع مشابه یک پوشه در یک سیستم فایل است و رویدادها فایلهای داخل آن پوشه هستند. بنابراین، قبل از اینکه بتوانید اولین رویدادهای خود را بنویسید، باید یک موضوع ایجاد کنید. یک جلسه ترمینال جدید باز کنید و دستور زیر را اجرا کنید: bin/kafka-topics.sh --create --topic quickstart-events --bootstrap-server localhost:9092 تمامی ابزارهای خط فرمان کافکا، گزینههای اضافی دارند: دستور kafka-topics.sh را بدون هیچ آرگومانی اجرا کنید تا اطلاعات استفاده را نمایش دهد. برای مثال، میتوانید جزئیاتی مانند تعداد پارتیشنهای موضوع جدید را نشان دهد: bin/kafka-topics.sh --describe --topic quickstart-events --bootstrap-server localhost:9092 نحوه نوشتن چند رویداد در موضوع یک کلاینت کافکا ازطریق شبکه با بروکرهای کافکا برای نوشتن (یا خواندن) رویدادها ارتباط برقرار میکند. پس از دریافت، بروکرها رویدادها را به شکلی پایدار و تحملپذیر از خطا ذخیره میکنند، حتی برای همیشه. کلاینت تولیدکننده کنسول را اجرا کنید تا چند رویداد به موضوع خود بنویسید. بهطور پیشفرض، هر خطی که وارد میکنید، بهعنوان یک رویداد جداگانه به موضوع نوشته میشود. $ bin/kafka-console-producer.sh --topic quickstart-events --bootstrap-server localhost:9092 سپس پیامهای خود را وارد کنید: This is my first event This is my second event میتوانید کلاینت تولیدکننده را در هر زمان با فشار دادن Ctrl+C متوقف کنید. تولیدکنندگان (Producers) و مصرف کنندگان (Consumers) در کافکا بهطور خلاصه، Kafka Producer API به برنامهها اجازه میدهد تا جریانهای داده را به خوشه کافکا ارسال کنند. Kafka Consumer API به برنامههای کاربردی اجازه میدهد تا جریانهای داده را از خوشه بخوانند. اما بیایید کمی در تفاوت این دو عمیقتر شویم: تولیدکنندگان (Producers) تولیدکنندگان مسئول تولید و ارسال دادهها به موضوعات (topics) کافکا هستند. آنها دادهها را به بروکرهای آپاچی کافکا میفرستند که این دادهها را به شکلی پایدار و قابل تحمل برابر خطا ذخیره میکنند. تولیدکنندگان میتوانند انواع مختلف دادهها را شامل پیامها، رویدادها و لاگها به موضوعات ارسال کنند. تولیدکنندگان میتوانند تعیین کنند که پیامهایشان به کدام پارتیشن از موضوع ارسال شود، که این امکان را میدهد تا بار کاری بهصورت متعادل توزیع شود و عملکرد بالاتری حاصل گردد. مصرف کنندگان (Consumers) مصرفکنندگان دادهها را از موضوعات آپاچی کافکا میخوانند و پردازش میکنند. آنها میتوانند دادههای دریافتی را به هر شکلی که نیاز دارند، تجزیهوتحلیل و استفاده کنند. مثلاً برای ذخیرهسازی در پایگاه داده، نمایش در داشبوردهای نظارتی یا انجام تحلیلهای بلادرنگ. مصرفکنندگان میتوانند بهصورت جداگانه یا در گروههای مصرفکننده کار کنند. این گروهها این امکان را فراهم میکنند که چندین مصرفکننده بهطور همزمان، دادهها را از یک یا چند موضوع بخوانند و هر پارتیشن داده توسط یکی از اعضای گروه پردازش شود، که این کار باعث بهبود کارایی و تقسیم بار کاری میشود. این دو نقش باهم، یک سیستم مقیاسپذیر و انعطافپذیر برای مدیریت و پردازش دادههای بزرگ و بلادرنگ ایجاد میکنند. مهمترین نکات در بهینه سازی کافکا منظور ما از بهینهسازی آپاچی کافکا، اعمال مجموعهای از تکنیکها و تنظیمات است که به افزایش کارایی، پایداری و مقیاسپذیری این سیستم توزیعشده منجر میشوند. اگر بخواهیم به مهمترین نکات در استفاده از این تکنیکها اشاره کنیم، به دستهبندی زیر میرسیم: پارتیشن بندی مناسب تقسیمبندی دادهها: تعداد پارتیشنها را بهگونهای تنظیم کنید که با حجم دادهها و تعداد مصرفکنندگان متناسب باشد. این کار به تعادل بار و افزایش موازیسازی کمک میکند. انتخاب کلید مناسب: استفاده از کلیدهای مناسب برای پارتیشنبندی میتواند به توزیع یکنواخت دادهها در میان پارتیشنها کمک کند. تنظیمات حافظه و ذخیره سازی بافرهای حافظه: تنظیم اندازه بافرهای شبکه و I/O بهمنظور کاهش زمان انتظار و افزایش سرعت انتقال دادهها. فایلهای لاگ: پیکربندی مناسب اندازه و تعداد فایلهای لاگ و مدت زمان نگهداری آنها میتواند به کارایی و استفاده بهینه از فضای دیسک کمک کند. مدیریت منابع CPU و حافظه: تخصیص مناسب منابع پردازشی و حافظه به بروکرهای کافکا برای جلوگیری از اشباع منابع. شبکه: اطمینان حاصل کنید که پهنای باند شبکه کافی برای انتقال دادههای موردنیاز در اختیار است. تنظیمات پیکربندی پارامترهای بروکر: تنظیم پارامترهای مختلف بروکر، مانند network.threads ،num.io.threads ،queued.max.requests و… برای بهینهسازی عملکرد. فشردهسازی پیامها: استفاده از فشردهسازی مانند gzip یا snappy میتواند حجم دادههای انتقالی را کاهش داده و سرعت انتقال را افزایش دهد. مانیتورینگ و نگهداری مانیتورینگ: استفاده از ابزارهای مانیتورینگ مانند Prometheus و Grafana برای نظارت بر عملکرد کافکا و شناسایی مشکلات بهصورت بلادرنگ. بهروزرسانی: بهروزرسانی منظم کافکا به نسخههای جدیدتر که شامل بهبودهای عملکردی و امنیتی هستند. استفاده از چند کلاستر کلاسترهای متعدد: درصورت نیاز به مقیاسپذیری بیشتر، استفاده از چندین کلاستر کافکا و تقسیم بار بین آنها میتواند کارایی را افزایش دهد. جمع بندی: آموزش نصب آپاچی کافکا آپاچی کافکا به گونهای طراحی شده که میتواند بهصورت همزمان، تعداد زیادی از مشترکین را پشتیبانی کند و به هرکدام از آنها اجازه میدهد تا دادهها را با سرعت خاص خود بخوانند. این قابلیت باعث میشود که کافکا در محیطهایی که نیاز به پردازش بلادرنگ و تحلیل دادههای بزرگ دارند، عملکرد بسیار مؤثری داشته باشد. برای مثال، شرکتهای بزرگ فناوری نظیر Netflix و Uber از کافکا برای پردازش و تحلیل دادههای بلادرنگ خود استفاده میکنند. پس محدودیتی برای بهکارگیری این ابزار قائل نشوید و با درنظرگرفتن نکات بهینهسازی، کارایی، پایداری و مقیاسپذیری، از ظرفیت کامل آن بهرهمند شد. با پیادهسازی صحیح و مدیریت دقیق منابع، کافکا میتواند نیازهای پیچیده و متنوع دادهها در سازمانها و پروژههای مختلف را برآورده کند. چه رتبه ای میدهید؟ میانگین ۵ / ۵. از مجموع ۲ اولین نفر باش معرفی نویسنده مقالات 366 مقاله توسط این نویسنده محصولات 0 دوره توسط این نویسنده تیم فنی نیک آموز معرفی محصول مجتبی بنائی دوره آموزش مهندسی داده [Data Engineering] 2.380.000 تومان مقالات مرتبط ۱۰ شهریور مهندسی داده NoSQL چیست؟ هر آن چیزی که باید بدانید! تیم فنی نیک آموز ۰۱ مرداد مهندسی داده آموزش تصویری و مرحله به مرحله نصب و راه اندازی اسپارک (spark) تیم فنی نیک آموز ۲۶ تیر مهندسی داده آشنایی با انواع کاربرد لینوکس برای مهندسی داده تیم فنی نیک آموز ۲۵ اردیبهشت مهندسی داده دریاچه داده (Data Lake) چیست؟ مفاهیم، نحوه ساخت و مقایسه دریاچه داده و انبار داده تیم فنی نیک آموز دیدگاه کاربران لغو پاسخ دیدگاه نام و نام خانوادگی ایمیل ذخیره نام، ایمیل و وبسایت من در مرورگر برای زمانی که دوباره دیدگاهی مینویسم. موبایل برای اطلاع از پاسخ لطفاً مرا با خبر کن ثبت دیدگاه Δ