Apache Spark یک فریمورک محاسباتی توزیعشده است که برای پردازش دادههای بزرگ و پیچیده طراحی شده است. PySpark یک رابط کاربری برای برنامهنویسی با Apache Spark در زبان پایتون است که امکاناتی را برای انجام پردازش دادههای توزیعشده، تحلیل دادهها، یادگیری ماشین و برنامهنویسی شبکههای عصبی ارائه میدهد. PySpark شامل یک مجموعه کامل از کتابخانهها و ابزارهای پردازش داده، مانند Spark SQL، Spark Streaming و MLlib است. با استفاده از PySpark میتوانید از قابلیتهای Apache Spark برای پردازش دادههای بزرگ استفاده کنید و از قدرت پردازش توزیعشده و سرعت بالا آن بهرهمند شوید.
Hadoop Distributed File System (HDFS)، در Apache Hadoop پیاده سازی شده است و به عنوان یک فضای ذخیره سازی توزیع شده برای داده های ساختارمند و نا ساختارمند استفاده می شود. HDFS، فایل ها را به بخش های کوچکتر تقسیم می کند و این بخش ها را روی چندین سرور توزیع می کند تا امکان انتقال و پردازش داده ها به صورت موازی فراهم شود.
YARN (Yet Another Resource Negotiator) یک مدیر منابع در Apache Hadoop است که برای مدیریت منابع سیستم پوشش داده مورد استفاده قرار میگیرد. YARN به عنوان یک سلسله مراتبی از قابلیتهای مدیریت منابع عمل میکند و در شبکههای بزرگ توزیعشده اجرا میشود. یکی از ویژگیهای کلیدی YARN قابلیت اجرای برنامههای توزیع شده است. Spark برای اجرای پردازش داده در یک محیط توزیعشده از همان ساختار YARN برای مدیریت منابع استفاده میکند. با استفاده از Spark، میتوانید برنامههای پردازش داده خود را برای پردازش دادههای بزرگ و پیچیده طراحی کنید. بنابراین، Spark میتواند به عنوان یک محاسبات توزیعشده برای انجام پردازش داده بر روی Hadoop و برخی سایر پلتفرمهای توزیعشده مورد استفاده قرار گیرد و از YARN برای مدیریت منابع استفاده میکند. در این روش، Spark به صورت بیشتر برای پردازش داده در حافظه (in-memory) و پردازش دادههای پیچیده، مانند پردازش گرافها، به کار میرود.
دادههای رابطهای (Relational Data)، دادههایی هستند که به صورت جداول مرتبط با یکدیگر، با نام ستونها و ردیفها ذخیره میشوند و اطلاعات مهمی را در مورد ارتباطات بین اجزای مختلف داده ارائه میدهند. در این نوع دادهها، توجه به روابط و ارتباطات بین دادهها و اطلاعاتی که ممکن است به صورت مشترک در دادهها تکرار شوند، بسیار مهم است. دادههای رابطهای معمولاً در پایگاهدادههای رابطهای مانند MySQL، Oracle و SQL Server ذخیره میشوند.
دادههای غیررابطهای (Non-Relational Data) یا همان دادههای NoSQL، دادههایی هستند که در قالب مختلفی ذخیره میشوند و روابط بین دادهها به صورت سلسلهمراتبی، شبکهای و یا سندمحور است. این نوع دادهها برای پردازش دادههای بزرگ و پیچیده کارآمدترند. در دادههای غیررابطهای، تمرکز بیشتر بر روی سرعت و کارایی است و بیشتر در مواردی مانند وبسایتها، بانکهای اطلاعاتی ابری و سیستمهای توزیعشده استفاده میشوند. مثالهایی از دادههای غیررابطهای شامل MongoDB، Cassandra، Couchbase و Redis میشوند.
Pipeline پردازش کلان داده به معنای طراحی و پیادهسازی یک سری عملیات پردازشی متوالی است که برای تبدیل دادههای بزرگ و پیچیده به اطلاعات مفید و قابل استفاده استفاده میشود.
Python و Pyspark به عنوان زبان برنامهنویسی بسیار قدرتمند و محبوب در زمینه پردازش کلان داده مورد استفاده قرار میگیرند. با استفاده از این دو زبان، میتوان عملیات مختلفی را روی دادههای بزرگ انجام داد و از پتانسیل پردازشی و قابلیتهای بالای این زبانها در این زمینه بهره برد.
Pipeline پردازش کلان داده شامل مراحلی مانند:
- جمعآوری دادهها
- پیشپردازش دادهها (ازجمله تبدیل دادههای رابطهای و غیررابطهای)
- اعمال عملیات و تحلیلهای مختلف بر روی دادهها (مانند شبکههای پیچیده، پردازش تصویر و صوت، مدلهای یادگیری ماشین و ...)
- ذخیرهسازی دادههای پردازش شده و تحویل به مراحل بعدی
در هر مرحله از Pipeline پردازش کلان داده، از ابزارهای متفاوتی برای انجام این عملیات استفاده میشود. برای مثال، برای جمعآوری دادهها میتوان از ابزارهایی مانند Apache Kafka، RabbitMQ و یا Redis استفاده کرد. برای پیشپردازش دادهها، میتوان از کتابخانههای مختلفی مانند NumPy، Pandas و یا Scikit-learn استفاده کرد.