رکوردهای داده های جریانی معمولاً کوچک هستند و تنها در کیلوبایت اندازه گیری می شوند، اما جریان اغلب بدون توقف ادامه می یابد.
دادههای جریانی، که پردازش جریان رویداد نیز نامیده میشود، معمولاً در زمینه دادههای بزرگ مورد بحث قرار میگیرد. داده هایی هستند که به طور مداوم، اغلب توسط هزاران منبع داده، مانند سنسورها یا گزارش های سرور، تولید می شوند. رکوردهای داده های جریانی اغلب کوچک هستند، هر کدام شاید چند کیلوبایت باشد، اما تعداد زیادی از آنها وجود دارد و در بسیاری از موارد جریان بدون توقف ادامه دارد.
دادههای تاریخی، از سوی دیگر، معمولاً قبل از رفتن به پایگاه داده تجزیه و تحلیل، مانند انبار داده، داده، از طریق یک فرآیند ETL دستهای (استخراج، تبدیل، و بارگذاری) میگذرند. lake یا data lakehouse. اگر عجله ندارید خوب است. از سوی دیگر، معمول است که نیاز به پردازش سریع دادههای جریانی داشته باشید تا بتوانیم روی نتایج در زمان واقعی عمل کنید.
نرم افزار پردازش داده های جریانی معمولاً داده ها را به صورت تدریجی تجزیه و تحلیل می کند و تجمیع و همبستگی، فیلتر کردن یا نمونه برداری را در زمان واقعی انجام می دهد. این جریان اغلب نیز ذخیره میشود تا بتواند به ثبت تاریخی کمک کند. پردازش افزایشی می تواند بر اساس رکورد به رکورد یا در پنجره های زمانی کشویی انجام شود.
با تجزیه و تحلیل دادههای جریان در زمان واقعی، میتوانید رویدادهای غیرمعمول، انحرافات قابل توجه از مقادیر عادی و روندهای در حال توسعه را شناسایی کنید. سپس میتواند پاسخهای بیدرنگ را نشان دهد، مانند روشن کردن آبیاری زمانی که مزرعه در حال خشک شدن است، یا خرید سهام زمانی که معاملات آن به زیر مقدار هدف کاهش یافته است. منابع داده های جریانی شامل موارد زیر است:
- حسگرها، مانند حسگرهای موجود در ماشینهای صنعتی، وسایل نقلیه، و ماشینهای کشاورزی
- دادههای قیمتگذاری معاملات سهام از بورسها
- داده های موقعیت مکانی دستگاه همراه
- روی ویژگی های وب کلیک می کند
- تعاملات بازی
- گزارشهای سرور
- معاملات پایگاه داده
رویکردهایی برای پردازش داده های جریانی
سه راه برای مقابله با جریان دادهها وجود دارد: پردازش دستهای آنها در فواصل زمانی متفاوت از ساعتها تا روزها، پردازش جریان در زمان واقعی، یا انجام هر دو در یک فرآیند ترکیبی.
پردازش دستهای این مزیت را دارد که میتواند تجزیه و تحلیل عمیق را انجام دهد، از جمله یادگیری ماشینی، و مضرات تأخیر بالا را دارد. پردازش جریانی مزیت تأخیر کم و مضرات آن را دارد که تنها قادر به انجام تجزیه و تحلیل ساده است، مانند محاسبه مقادیر میانگین در یک پنجره زمانی و پرچم گذاری انحرافات از مقادیر مورد انتظار.
پردازش ترکیبی هر دو روش را ترکیب می کند و از مزایای هر دو بهره می برد. به طور کلی، داده ها به عنوان یک جریان پردازش می شوند و به طور همزمان برای پردازش دسته ای بعدی به ذخیره سازی منشعب می شوند. برای مثال، یک مانیتور آکوستیک متصل به یک ماشین صنعتی را در نظر بگیرید. پردازنده استریم می تواند یک صدای جیر جیر غیرعادی را تشخیص دهد و یک هشدار صادر کند. پردازنده دسته ای می تواند مدلی را برای پیش بینی زمان خرابی بر اساس صدای جیر جیر در حین پیشرفت، فراخوانی کند و مدت زمان زیادی قبل از از کار افتادن دستگاه، تعمیر و نگهداری را برای دستگاه برنامه ریزی کند.
نرم افزاری برای پردازش داده های جریان
Amazon Kinesis به شما امکان میدهد دادههای جریانی را در زمان واقعی جمعآوری، پردازش و تجزیه و تحلیل کنید. Kinesis دارای سه سرویس برای داده (جریانهای داده، Data Firehose و تجزیه و تحلیل داده) و یک سرویس برای رسانه (جریانهای ویدیویی) است.
Kinesis Data Streams یک سرویس جذب است که می تواند به طور مداوم گیگابایت داده در ثانیه از صدها هزار منبع دریافت کند. Kinesis Data Analytics میتواند جریانهای داده را در زمان واقعی با SQL یا Apache Flink پردازش کند. Kinesis Data Firehose میتواند با ابزارهای هوش تجاری موجود، جریانهای داده را در فروشگاههای داده AWS برای تجزیه و تحلیل تقریباً بیدرنگ، ضبط، تبدیل و بارگذاری کند. اگر میخواهید به جای استفاده از SQL یا Flink، جریان را با یک برنامه پردازش کنید، میتوانید از توابع بدون سرور AWS Lambda به جای Kinesis Data Analytics استفاده کنید.
Apache Flink یک فریمورک منبع باز، Java/Scala/Python و موتور پردازش توزیع شده برای محاسبات حالت است. بیش از جریان داده های نامحدود و محدود. Flink برای اجرا در تمام محیطهای خوشهای رایج و انجام محاسبات با سرعت درون حافظه و در هر مقیاسی طراحی شده است. با همه مدیران منابع خوشهای رایج، مانند Hadoop YARN، Apache Mesos و Kubernetes ادغام میشود، اما میتواند بهعنوان یک خوشه مستقل نیز اجرا شود.
Apache Kafka یک پلتفرم پخش رویداد جاوا/اسکالا منبع باز، توزیعشده برای دادههای با کارایی بالا است. خطوط لوله، تجزیه و تحلیل جریان، یکپارچه سازی داده ها، و برنامه های کاربردی حیاتی. رویدادهای کافکا سازماندهی می شوند و به طور پایدار در موضوعات ذخیره می شوند. کافکا در ابتدا در لینکدین توسعه یافت. دارای پنج API اصلی است:
- Admin API برای مدیریت و بازرسی موضوعات، کارگزاران، و سایر اشیاء کافکا.
- API تولیدکننده برای انتشار (نوشتن) جریانی از رویدادها برای یک یا چند مورد موضوعات کافکا.
- Consumer API برای اشتراک (خواندن) یک یا چند موضوع و پردازش جریان رویدادهایی که برای آنها ایجاد می شود.
- Kafka Streams API برای پیادهسازی برنامههای پردازش جریانی و میکروسرویسها. Streams API عملکردهای سطح بالاتری را برای پردازش جریانهای رویداد ارائه میکند، از جمله تبدیلها، عملیات حالتدار مانند تجمعها و پیوستنها، پنجرهسازی، پردازش بر اساس زمان رویداد و موارد دیگر. ورودی از یک یا چند مبحث خوانده می شود تا خروجی به یک یا چند مبحث تولید شود و به طور موثر جریان های ورودی را به جریان های خروجی تبدیل کند.
- Kafka Connect API برای ساخت و اجرای اتصالدهندههای واردات/صادرات قابل استفاده مجدد که مصرف میکنند (خواندن) یا تولید (نوشتن) جریان رویدادها از و به سیستم ها و برنامه های کاربردی خارجی تا بتوانند با کافکا یکپارچه شوند. به عنوان مثال، یک اتصال دهنده به یک پایگاه داده رابطه ای مانند PostgreSQL ممکن است هر تغییری را در مجموعه ای از جداول ثبت کند. با این حال، در عمل، شما معمولاً نیازی به پیادهسازی رابطهای خود ندارید، زیرا جامعه کافکا در حال حاضر صدها کانکتور آماده برای استفاده را ارائه میکند.
Apache Pulsar یک منبع باز، توزیع شده، Java/C++/Python، انتشار-و-اشتراک است. پلتفرم پیام رسانی و پخش جریانی Pulsar در ابتدا در یاهو توسعه داده شد. ویژگی های آن عبارتند از:
- پشتیبانی بومی از چندین خوشه در یک نمونه Pulsar، با یکپارچه تکثیر جغرافیایی پیامها در میان خوشهها.
- تأخیر انتشار بسیار کم و پایان به انتها.
- مقیاسپذیری یکپارچه برای بیش از یک میلیون موضوع.
- یک API مشتری با اتصالهایی برای جاوا، برو، Python< /a>، و C++.
- چند حالتهای اشتراک (انحصاری، به اشتراک گذاشته شده، و fail-over) برای موضوعات.
- تحویل تضمین شده پیام با ارائه ذخیرهسازی دائمی پیام توسط Apache BookKeeper.
- یک چارچوب محاسباتی بدون سرور توابع Pulsar قابلیت دادههای بومی جریانی را ارائه میدهد پردازش.
- یک چارچوب اتصال دهنده بدون سرور Pulsar IO، که بر اساس توابع Pulsar ساخته شده است، انتقال داده ها به داخل و خارج از Apache Pulsar را آسان تر می کند.
- ذخیرهسازی طبقهای دادهها را از فضای ذخیرهسازی گرم/گرم به فضای طولانی بارگیری میکند. ذخیره سازی مدت دار (مانند Amazon S3 و Google Cloud Storage) زمانی که داده ها در حال قدیمی شدن هستند.
Apache Samza یک چارچوب پردازش جریانی Scala/Java منبع باز، توزیع شده است که در ابتدا در لینکدین، همراه با آپاچی کافکا. Samza به شما اجازه می دهد تا برنامه های حالت دار بسازید که داده ها را در زمان واقعی از چندین منبع از جمله آپاچی کافکا پردازش می کنند. ویژگی های Samza عبارتند از:
- یک API یکپارچه که به شما امکان می دهد منطق برنامه خود را به روشی مستقل از منبع داده خود توصیف کنید. یک API یکسان میتواند دادههای دستهای و جریانی را پردازش کند.
- قابلیت پردازش و تبدیل داده ها از منابع ابری و اولیه. Samza ادغام های داخلی را با Apache Kafka، < ارائه می دهد. a href="https://samza.apache.org/learn/documentation/1.6.0/connectors/kinesis.html" rel="nofollow">AWS Kinesis، مرکز رویداد Azure (کافکا بومی Azure به عنوان یک سرویس)، Elasticsearch، و Apache Hadoop.
- ادغام بیدردسر با برنامههای کاربردی موجود که نیاز به چرخش و راهاندازی یک خوشه جداگانه برای پردازش جریان را از بین میبرد. Samza را می توان به عنوان یک کتابخانه سرویس گیرنده سبک وزن جاسازی شده در برنامه های جاوا/اسکالا.
- گزینههای استقرار انعطافپذیر که به شما امکان میدهد برای اجرای برنامهها در هر جایی، از ابرهای عمومی گرفته تا محیطهای محفظهای گرفته تا سختافزارهای فلزی خالی.
- امکان اجرای پردازش جریان به عنوان یک سرویس مدیریت شده با ادغام با مدیران خوشه محبوب مانند آپاچی YARN.
- تحمل خطا که به طور شفاف وظایف و وضعیت مرتبط با آنها را در صورت خرابی انتقال می دهد. Samza از host-affinity پشتیبانی می کند و ایستهای بازرسی افزایشی که فعال میکنند بازیابی سریع از شکست.
- مقیاس پذیری عظیم. Samza بر روی برنامه هایی که از چندین ترابایت حالت استفاده می کنند و بر روی هزاران هسته اجرا می شوند، آزمایش شده است. این قدرت دارد به چندین شرکت بزرگ از جمله LinkedIn، Uber، TripAdvisor، و Slack.
Apache Spark یک موتور چند زبانه و منبع باز است که عمدتاً در اسکالا برای اجرای داده نوشته شده است. مهندسی، علم داده و یادگیری ماشین در ماشینها یا خوشههای تک گره. هم داده های دسته ای و هم داده های جریان لحظه ای را مدیریت می کند. Spark در UC Berkeley سرچشمه گرفت و نویسندگان Spark Databricks را تأسیس کردند.
طوفان آپاچی یک چارچوب محاسباتی پردازش جریانی منبع باز و توزیع شده است که عمدتاً در Clojure نوشته شده است. در طوفان، یک جریان یک دنباله نامحدود از تاپل ها است که به صورت موازی به صورت توزیع شده پردازش و ایجاد می شود. یک توپولوژی نموداری از فشارها و پیچ و مهرهها است که با گروهبندی جریان مرتبط هستند. توپولوژی ها منطقی را تعریف می کنند که جریان ها را پردازش می کند. یک فشار منبع جریان در یک توپولوژی است. تمام پردازش ها در توپولوژی ها در پیچ و مهره انجام می شود. Storm با بسیاری از سیستمها و کتابخانههای دیگر از جمله Kafka، Cassandra، Redis و Kinesis یکپارچه میشود.
Azure Stream Analytics واقعی است -تحلیل زمان و موتور پردازش رویداد پیچیده که برای تجزیه و تحلیل و پردازش حجم بالای داده های جریان سریع از چندین منبع به طور همزمان طراحی شده است. الگوها و روابط را می توان در اطلاعات استخراج شده از تعدادی از منابع ورودی از جمله دستگاه ها، حسگرها، جریان های کلیک، فید رسانه های اجتماعی و برنامه ها شناسایی کرد. این الگوها را میتوان برای راهاندازی اقدامات و شروع جریانهای کاری مانند ایجاد هشدار، تغذیه اطلاعات به ابزار گزارشدهی، یا ذخیره دادههای تبدیلشده برای استفاده بعدی استفاده کرد.
Confluent یک اقتباس تجاری از آپاچی کافکا توسط سازندگان اصلی کافکا است که برای داخل ساختمان یا ارائه شده است. استقرار ابر Confluent Cloud از ابتدا به عنوان یک سرویس بدون سرور، الاستیک، مقرون به صرفه و کاملاً مدیریت شده بومی ابری بازسازی شد و بر روی AWS، Microsoft Azure و Google Cloud Platform اجرا میشود.
Google Cloud Dataflow یک سرویس پردازش جریانی و دسته ای داده با مدیریت کامل، بدون سرور، یکپارچه و دسته ای است پرتو آپاچی. Apache Beam یک SDK یکپارچه است که در اصل از Google برای Dataflow، Flink، Spark و Hazelcast Jet است.
Ververica یک پلت فرم پردازش جریان سازمانی توسط سازندگان اصلی Apache Flink است. این قابلیت چند اجارهای، احراز هویت، کنترل دسترسی مبتنی بر نقش و مقیاسبندی خودکار را برای Apache Flink فراهم میکند.
به طور خلاصه، جریان داده به طور مداوم، اغلب توسط هزاران منبع داده تولید می شود. اغلب، هر رکورد فقط چند کیلوبایت داده است. یک طرح ترکیبی برای تجزیه و تحلیل سریع رکوردها در زمان واقعی و همچنین ذخیره داده ها برای تجزیه و تحلیل عمیق اغلب ترجیح داده می شود. گزینههای خوبی برای پلتفرمهای پخش رویداد وجود دارد، که تعدادی از آنها رایگان، منبع باز، پروژههای آپاچی، و چندین مورد دیگر پیشرفتهای تجاری پروژههای آپاچی هستند.
پست های مرتبط
جریان داده چیست؟ پردازش جریان رویداد توضیح داده شده است
جریان داده چیست؟ پردازش جریان رویداد توضیح داده شده است
جریان داده چیست؟ پردازش جریان رویداد توضیح داده شده است