An Introduction to Big Data Concepts and Terminology
معرفی کلان دادهها (Big Data) :
به نظر میرسد در سال های اخیر همه در مورد اصطلاح "کلان داده" صحبت میکنند، اما کلان داده واقعاً چیست؟ این داده ها از کجا میآیند؟ چگونه پردازش میشوند؟ و نتایج چگونه استفاده میشوند؟ حوزه کلان داده در طی ده سال گذشته مورد توجه بسیاری از متخصصین قرار گرفته است. اگر میخواهید اطلاعات بیشتری در مورد کلان داده بیاموزید در ادامه با این مقاله همراه باشید.
کلان داده ها اصطلاحی کلی برای استراتژیها و فناوریهای جدید میباشد که در جمعآوری، سازماندهی، پردازش و استخراج بینش از مجموعه بزرگی از داده های، مورد نیاز هستند. در حالی که مشکل کار با داده هایی که بیش از توان محاسباتی یا ذخیرهسازی یک رایانه میباشند، مبحث جدیدی نمیباشد، فراگیر بودن، مقیاس و ارزش این نوع محاسبات در سال های اخیر بسیار گسترش یافته است.
حجم عظیمی از داده ها با سرعت زیادی توسط منابع مختلفی مانند دستگاههای تلفن همراه، رسانههای اجتماعی، لاگها و حسگرهای متعددی که در اطراف ما هستند، تولید میشوند. در سراسر جهان، ما حجم گستردهای از داده ها را تولید میکنیم و حجم داده های تولید شده با یک شیب نمایی و بیسابقه در حال رشد است. سرعت تولید داده ها حتی با رشد فناوری و پارادایمهای جدیدی مانند اینترنت اشیا (IOT) نیز سرعت گرفته است.
در این مقاله، ما در مورد کلان داده ها در سطحی بنیادی صحبت خواهیم کرد و مفاهیم مشترکی را که ممکن است هنگام تحقیق در مورد آنها پیدا کنید، تعریف میکنیم. شاید قبلاً در مورد الگوریتم MapReduce شنیده باشید، فیل Apache Hadoop را دیده باشید یا از سیستم پرونده توزیع شده Hadoop (HDFS) استفاده کرده باشید.
ما همچنین نگاهی سطح بالا به برخی از فرآیندها و فناوریهایی که در حال حاضر در این فضا استفاده میشوند، خواهیم داشت. قبل از اینکه به معرفی Big Data یا همان کلان داده بپردازیم، ابتدا باید بدانیم که اصلا داده چیست؟
داده به مقادیر، کاراکترها یا نمادهایی گفته میشود که بر روی آنها توسط رایانه پردازشی انجام میشود و ممکن است به صورت سیگنالهای الکتریکی ذخیره و منتقل شوند و در رسانههای مغناطیسی، نوری یا مکانیکی ثبت شوند.
مقیاس داده های تولید شده توسط تعاملات روزمره:
در مقیاس بزرگ، داده های حاصل از تعاملات روزمره حیرت انگیز است. بر اساس تحقیقات انجام شده توسط DOMO، برای هر دقیقه در سال 2018، گوگل 1408773 جستجو انجام داده است، کاربران YouTube، 4333560 ویدیو مشاهده کردهاند، کاربران توییتر 473،400 توییت ارسال کردهاند، کاربران اینستاگرام 49380 عکس ارسال کردهاند، کاربران نتفلیکس، 97222 ساعت ویدیو پخش کردهاند و آمازون 1111 بسته ارسال کرده است. این فقط یک نگاه اجمالی کوچک به یک تصویر بسیار بزرگتر است که شامل منابع دیگر کلان داده ها است. به نظر میرسد اینترنت بسیار شلوغ است، اینطور نیست؟
علاوه بر این، انتظار میرود که ترافیک تلفن همراه رشد چشمگیری نسبت به تعداد فعلی خود داشته باشد و جمعیت اینترنت جهان سال به سال بطور چشمگیری در حال رشد باشد. این گزارش پیشبینی میکند که تا سال 2020، حدود 1.7 مگابایت داده برای هر نفر در هر ثانیه ایجاد شود. کلان داده ها قرار است حتی حجیم تر از این هم بشوند.
در مقیاس کوچک، داده های تولید شده بصورت روزانه توسط یک کسب و کار کوچک، یک شرکت تازه تاسیس یا یک سنسور واحد مانند دوربین نظارت نیز بسیار زیاد است. به عنوان مثال، یک دوربین معمولی در سیستم نظارت در یک مرکز خرید یا یک پردیس دانشگاه 15 فریم در ثانیه تولید میکند و تقریباً به 100 گیگابایت فضای ذخیرهسازی در روز نیاز دارد. اگر این تعداد دوربین به ده ها یا صدها افزایش یابد، مقدار ذخیرهسازی و نیازهای محاسباتی را خودتان در نظر بگیرید!
Big Data یا کلان داده چیست؟
قبل از شروع بحث در مورد مبانی سیستم های کلان داده (Big Data Systems) و تجزیه و تحلیل کلان داده ها (Big Data Analytics)، نگاهی به تعریف Big Data میتواند بسیار مفید باشد. این امر به شما کمک میکند تا ماهیت کلان داده ها را درک کرده و ابزارهای صحیحی را برای موارد استفاده خود انتخاب کنید.
در حالی که اصطلاح Big Data اغلب به عنوان مترادف سیستمهای ذخیره و پردازش داده در مقیاس بزرگ استفاده میشود، اما تعریف دقیق "کلان داده" بسیار دشوار است. زیرا پروژهها، فروشندگان، محققان و مشاغل تجاری از آن در موارد کاملاً متفاوتی استفاده میکنند.
با توجه به این نکته، بطور کلی، کلان داده ها عبارتند از:
- مجموعه داده های بزرگ.
- دستهای از استراتژیها و فناوریهای محاسباتی که برای مدیریت مجموعههای داده بزرگ استفاده میشوند.
در این تعریف، "مجموعه داده بزرگ" به معنای مجموعه دادهای بسیار عظیمی است که نمیتوان آن را با ابزار های سنتی یا در یک رایانه پردازش یا ذخیره کرد. این بدان معنی است که مقیاس مشترک مجموعه داده های بزرگ دائماً در حال تغییر است و ممکن است از یک سازمان به سازمان دیگر به میزان قابل توجهی متفاوت باشد.
چرا سیستمهای کلان داده متفاوت هستند؟
الزامات ابتدایی و اساسی برای کار با کلان داده ها همان شرایط کار با مجموعه داده ها در هر اندازه دیگری است. با این حال، مقیاس عظیم، سرعت پردازش و خصوصیات داده هایی که باید در هر مرحله از فرآیند، با آنها سروکار داشت، چالشهای جدید و قابل توجهی را هنگام طراحی راهحل ها به میدان میآورند. هدف اکثر سیستمهای کلان داده، استخراج بینش و ارتباطات بین سطوح زیادی از داده های ناهمگن است که با استفاده از روشهای معمول امکان پذیر نیست.
در سال 2001، Doug Laney در اولین کنفرانس خود برای توصیف برخی از ویژگیهایی که پردازش کلان داده ها را از سایر انواع داده ها متفاوت میکند، آنچه را که به عنوان "سه بعد (V) کلان داده" شناخته میشوند، ارائه داد.
تعریف کلان داده ها در ابعاد داده ها پنهان است. مجموعه داده ها در صورتی که دارای درجه بالایی از سه بعد متمایز یعنی حجم، سرعت و تنوع باشند، "کلان داده" محسوب میشوند.
- حجم یا Volume: مقدار دادهای که تولید شده است.
مقیاس گسترده اطلاعات پردازش شده به تعریف سیستمهای کلان داده کمک میکند. این مجموعههای داده، میتوانند بزرگتر از مجموعههای داده سنتی بوده و در هر مرحله از چرخه عمر پردازش و ذخیرهسازی، تفکر بیشتری بطلبند.
غالباً، از آنجا که نیاز های کاری، بیش از تواناییهای یک رایانه است، این امر به چالشی برای جمعآوری، تخصیص و هماهنگی منابع گروهی از رایانهها تبدیل میشود. در نتیجه مدیریت خوشهبندی و الگوریتمهای تقسیم وظایف، اهمیت بیشتری مییابند. در سال 2020، این حجم از داده ها میتواند چیزی حدود چندین GB تا TB و حتی PBS باشند. این یک قاعده کلی است که اگر داده های شما حداقل چند گیگابایت در روز رشد میکنند، شما با Big Data یا کلان داده سر و کار دارید.
- سرعت یا Velocity: سرعتی که دادهها تولید میشوند.
روش دیگری که در آن کلان داده ها با سایر سیستمهای داده تفاوت قابل توجهی دارند، سرعت حرکت اطلاعات در سیستم است. داده ها بطور مکرر از چندین منبع به سیستم سرازیر میشوند و معمولاً انتظار میرود که برای بدست آوردن بینش و بروزرسانی درک فعلی سیستم، داده ها باید به صورت Real-Time پردازش شوند.
موضوع تمرکز بر بازخورد فوری، بسیاری از محققان کلان داده را از یک رویکرد دستهای دور کرده و به یک سیستم استریمینگ Real-Time نزدیک کرده است.
داده ها بطور مداوم اضافه میشوند، پردازش میشوند و تجزیه و تحلیل میشوند تا بتوانند با هجوم اطلاعات جدید همگام شوند و اطلاعات ارزشمند را زودتر از مواقع مربوط به سطح خود جستجو و استخراج کنند.
این ایدهها برای جلوگیری از خرابیهای خط لوله داده ها، به سیستمهای قوی و دارای اجزای کاملاً در دسترس نیاز دارند.
سرعت به معنای توان بالای داده برای ذخیره، پردازش یا تجزیه و تحلیل است. اغلب تعداد زیادی رکورد در مدت زمان کوتاهی وجود دارند. در سال 2020، اگر هزاران رکورد در ثانیه پردازش کنید، ممکن است از قبل با سرعت بالا یا High Velocity روبرو باشید.
- تنوع یا Variety: تنوع یا انواع مختلف دادهها
مشکلات کلان داده اغلب منحصر به فرد هستند زیرا طیف گستردهای از منابع در حال پردازش و کیفیت نسبی آنها هستند. داده ها را میتوان از سیستمهای داخلی مانند لاگهای مربوط به برنامهها و سرورها، از مطالب رسانههای اجتماعی و سایر APIهای خارجی، از حسگرهای دستگاه ها و سایر منابع دریافت کرد. کلان داده به دنبال این است که دادههای بالقوه مفید را بدون در نظر گرفتن اینکه از کجا میآید با تلفیق همه اطلاعات در یک سیستم واحد، مدیریت کند.
قالب دادهها و انواع رسانهها نیز میتوانند بطور قابل توجهی متفاوت باشند. رسانههای غنی مانند تصاویر، پروندههای ویدئویی و .. در کنار پروندههای متنی، لاگهای ساختار یافته و غیره پردازش میشوند. انواع مختلف دادهها از جمله باینری، متنی، ساختار یافته، غیر ساختار یافته، فشرده، فشرده نشده، تو در تو، تخت و غیره باید با همان سیستم پردازش و ذخیره شوند.
با این وجود، تنوع داده ها غالباً نتیجه پیامد های کلان داده است. در حالی که سیستمهای پردازش داده های قدیمی تر ممکن است انتظار داشته باشند که داده ها از قبل با برچسب، قالببندی و سازمان یافته وارد خط لوله شوند، سیستمهای کلان داده معمولاً داده ها را نزدیکتر به حالت خام آنها پذیرش و ذخیره میکنند. در حالت ایدهآل، هرگونه تغییر در داده های خام در زمان پردازش در حافظه اتفاق میافتد.
به طور خلاصه، سیستم های کلان داده، سیستمهایی برای مدیریت داده های با حجم بالا، سرعت بالا و تنوع بالا هستند. این سیستمها معمولاً سیستمهای توزیع شدهای هستند که به ما امکان ذخیره و پردازش داده هایی را میدهند که به انعطاف پذیری بالا، ظرفیت بالا و یا توان عملیاتی بالا نیاز دارند.
سایر مشخصات کلان داده ها:
افراد و سازمانهای مختلف پیشنهاد کردهاند که سه بعد اصلی را گسترش دهند، اگرچه این پیشنهادات بیشتر توصیف چالش ها است نه کیفیت کلان داده ها.
برخی موارد اضافه شده معمول عبارتند از:
- سرزندگی یا Veracity: کیفیت، صحت یا قابلیت اطمینان دادهها
تنوع منابع و پیچیدگی پردازش میتواند در ارزیابی کیفیت دادهها (و در نتیجه کیفیت تجزیه و تحلیل حاصل) به چالش هایی منجر شود.
- تنوع یا Variability: تنوع یا انواع مختلف دادهها
تنوع در دادهها منجر به تنوع گستردهای در کیفیت نیز میشود. برای شناسایی، پردازش یا فیلتر کردن دادههای بیکیفیت برای مفیدتر کردن آنها ممکن است منابع اضافی مورد نیاز باشد.
- ارزش یا Value: ارزشی که داده دارد
چالش نهایی کلان دادهها ارائه ارزش است. گاهی اوقات، سیستمها و فرآیندهای موجود به اندازه کافی پیچیده هستند که استفاده از داده ها و استخراج مقدار واقعی میتواند دشوار شود.
چرخه زندگی کلان داده ها چگونه به نظر میرسد؟
بنابراین هنگام برخورد با یک سیستم کلان داده، داده ها چگونه پردازش میشوند؟ در حالی که رویکردهای اجرایی متفاوت هستند، اما برخی از نقاط مشترک در استراتژیها و نرمافزار ها در این حوزه وجود دارند که میتوانیم بطور کلی درباره آنها صحبت کنیم.
اگرچه مراحل ارائه شده در زیر ممکن است در همه موارد درست نباشند، اما به شکل گستردهای مورد استفاده قرار میگیرند. دستههای کلی فعالیت های مرتبط با پردازش کلان داده ها عبارتند از:
- فروبری داده به سیستم یا Ingesting data into the system
- ذخیره داده ها در استوریج یا Persisting the data in storage
- پردازش و تجزیه و تحلیل داده ها یا Computing and Analysing data
- تجسم نتایج یا Visualizing the results
قبل از اینکه بطور دقیق به این چهار دسته گردش کار بپردازیم، لحظهای را به صحبت در مورد محاسبات خوشهای، یک استراتژی مهم که در اکثر راهحلهای سیستمهای کلان داده به کار رفته است، اختصاص خواهیم داد. راه اندازی یک خوشه محاسباتی اغلب پایه و اساس فناوری مورد استفاده در هر یک از مراحل چرخه زندگی کلان داده ها میباشد.
چرا ابزارهای کلان داده مورد نیاز هستند؟
مقیاس داده های تولید شده توسط شرکت های مشهور، سازمانهایی با مقیاس کوچک و پروژههای علمی در سطح بیسابقهای در حال رشد هستند. این امر را میتوان به وضوح با سناریو های فوق و با یادآوری مجدد اینكه مقیاس این داده ها حتی بیشتر هم میشود، مشاهده كرد.
از یک سو، کوه داده های تولید شده نیازمند پردازش، ذخیره سازی و چالش های تحلیلی فوق العادهای می باشد که باید به دقت مورد بررسی و رسیدگی قرار گیرند. از طرف دیگر، سیستمهای مدیریت پایگاه داده رابطهای (RDBMS) و ابزارهای پردازش داده برای مدیریت کارآمد این حجم عظیم داده ها وقتی مقیاس داده ها به ترابایت یا پتابایت میرسد، کافی نیستند.
این ابزارها توانایی مدیریت حجم زیادی از داده ها را به طور موثر در این مقیاس بالا ندارند. خوشبختانه ابزارهای بزرگ داده و پارادایمهایی مانند Hadoop و MapReduce برای حل این چالشهای کلان داده در دسترس هستند.
تجزیه و تحلیل کلان داده ها و به دست آوردن بینش از آنها میتواند به سازمانها در تصمیمگیری هوشمندانه در زمینه تجارت و بهبود عملکرد خود کمک کند. این امر میتواند با کشف الگوهای پنهان در داده ها و استفاده از آنها برای کاهش هزینههای عملیاتی و افزایش سود انجام شود. به همین دلیل، تجزیه و تحلیل کلان داده ها با حل چالشهای داده و امکان حرکت سریعتر آنها، برای بسیاری از حوزهها مانند بهداشت، تولید و بانکداری نقشی اساسی دارد.
محاسبات خوشهای یا Clustered Computing:
به دلیل کیفیت کلان داده ها، رایانههای منفرد اغلب در بیشتر مراحل برای مدیریت داده ها ناکافی هستند. برای پاسخگویی بهتر به ذخیره سازی زیاد و نیاز های محاسباتی کلان داده ها، ایده خوشهبندی رایانهها مناسبتر به نظر میرسد. نرمافزار های خوشهبندی کلان داده، منابع بسیاری از ماشین های کوچکتر را با هم ترکیب میکنند و به دنبال ارائه مزایای مختلفی هستند. مواردی مانند:
- اتصال منابع یا Resource Pooling: ترکیب فضای ذخیرهسازی موجود برای نگهداری داده ها یک مزیت واضح است، اما پردازنده و حافظه نیز بسیار مهم است. پردازش مجموعه کلان داده ها نیاز به مقادیر زیادی از هر سه این منابع دارد.
- دسترس پذیری بالا یا High Availability: خوشهها میتوانند سطوح متفاوتی از تحمل خطا و ضمانت در دسترس بودن را برای جلوگیری از تأثیر مشکلات سختافزاری یا نرمافزاری در دسترسی به داده ها و پردازش ارائه دهند. با ادامه تأکید بر اهمیت تجزیه و تحلیل های ریل تایم، این مسئله اهمیت فزایندهای پیدا میکند.
- مقیاسپذیری آسان یا Easy Scalability: خوشهها با افزودن ماشین های اضافی به گروه، مقیاسبندی افقی را بسیار آسان میکنند. این بدان معناست که سیستم میتواند بدون افزایش منابع فیزیکی دستگاه، در برابر تغییرات مورد نیاز منابع به خوبی واکنش نشان دهد.
استفاده از خوشهبندی به یک راه حل برای مدیریت عضویت در خوشهها، هماهنگی اشتراک منابع و برنامه ریزی کار روی گرههای منفرد نیاز دارد. عضویت در خوشه و تخصیص منابع را میتوان با نرم افزارهایی مانند Hadoop’s YARN (Yet Another Resource negotiator) یا Apache Mesos به خوبی اداره کرد.
خوشه محاسبات مونتاژ شده اغلب به عنوان پایهای عمل میکند که سایر نرمافزارها برای پردازش داده ها با آنها ارتباط میگیرند. ماشین های درگیر در خوشه محاسبات نیز بطور معمول با مدیریت یک سیستم ذخیرهسازی توزیع شده درگیر هستند، که در موضوع پایداری دادهها در مورد آنها صحبت خواهیم کرد.
- فروبری داده به سیستم:
مصرف داده ها یا Data Ingestion فرآیند گرفتن دادههای خام و افزودن آنها به سیستم است. پیچیدگی این عملیات بستگی زیادی به قالب و کیفیت منابع داده و میزان فاصله داده ها از حالت مطلوب قبل از پردازش دارد. یکی از راههای افزودن داده ها به یک سیستم کلان داده، ابزار اختصاصی برای Ingestion است.
فناوریهایی مانند Apache Sqoop میتوانند داده های موجود را از پایگاه داده های رابطهای گرفته و به یک سیستم داده بزرگ اضافه کنند. به همین ترتیب، Apache Flume و Apache Chukwa پروژه هایی هستند که برای جمع آوری و وارد کردن لاگهای برنامه و سرور طراحی شدهاند.
سیستم های نوبتدهی و صفبندی مانند Apache Kafka همچنین میتوانند به عنوان رابط بین مولدهای مختلف داده و یک سیستم کلان داده استفاده شوند. فریم ورک های فروبری دیگری مانند Gobblin میتوانند به جمعآوری و نرمال سازی خروجی این ابزار ها در انتهای خط لوله کمک کند.
در طی فرآیند فروبری، معمولاً برای برخی از سطوح، تجزیه و تحلیل، مرتبسازی و برچسب گذاری صورت میگیرد. این فرآیند گاهی ETL نیز نامیده میشود که مخفف عبارت استخراج (Extract)، تبدیل (Transform) و بار (Load) است.
در حالی که این اصطلاح بطور معمول به فرآیندهای انبار کردن داده های قدیمی اشاره دارد، برخی از مفاهیم مشابه در مورد داده هایی که به سیستم کلان داده وارد میشوند، نیز اعمال میشوند.
عملیات معمول ممکن است شامل تغییر داده های ورودی برای قالببندی، دستهبندی و برچسب گذاری داده ها، فیلتر کردن داده های غیرضروری یا خراب یا بررسی آنها باشد، که به برخی از الزامات پایبند است. با در نظر داشتن این قابلیت ها، در حالت ایدهآل، داده های گرفته شده باید تا حد ممکن خام نگه داشته شوند تا انعطاف پذیری بیشتری در خط لوله داشته باشند.
- ذخیره داده ها در استوریج:
فرایندهای فروبری داده ها را معمولاً به اجزایی که عملیات ذخیرهسازی را مدیریت میکنند، منتقل میکنند تا بطور قابل اعتمادی روی دیسک باقی بمانند. در حالی که به نظر میرسد این امر یک کار ساده باشد، اما حجم داده های ورودی، نیازهای موجود و لایه محاسباتی توزیع شده، سیستمهای ذخیرهسازی پیچیدهتری را ضروری میکند.
این موضوع معمولاً به معنای استفاده از سیستم پرونده توزیع شده برای ذخیره سازی داده های خام است. راهحل هایی مانند فایل سیستم Apache Hadoop's HDFS اجازه میدهد تا مقدار زیادی داده در چندین گره در خوشه نوشته شوند و تضمین میکند که با استفاده از منابع محاسبه میتوان به داده ها دسترسی پیدا کرد، آنها را در حافظه RAM خوشه بارگیری کرد و از بین بردن خرابیهای مولفهها را برطرف کرد. از سایر سیستمهای پرونده توزیع شده میتوان به جای HDFS به Ceph و GlusterFS اشاره کرد.
داده ها همچنین میتوانند برای دسترسی ساختار یافته به سیستمهای توزیع شده دیگری نیز وارد شوند. پایگاه های داده توزیع شده، به ویژه پایگاههای NoSQL، برای این نقش مناسب هستند زیرا اغلب با همان ملاحظات تحمل خطا طراحی میشوند و میتوانند داده های ناهمگن را به خوبی مدیریت کنند. بسته به نحوه سازماندهی و ارائه داده ها، انواع مختلفی از پایگاه داده توزیع شده برای انتخاب وجود دارند.
- پردازش و تجزیه و تحلیل داده ها:
پس از در دسترس قرار گرفتن داده ها، سیستم میتواند پردازش داده ها را برای دستیابی به اطلاعات واقعی آغاز کند. لایه محاسبات شاید متنوعترین قسمت سیستم باشد زیرا الزامات و بهترین روش میتواند بسته به نوع بینش مورد نظر به طور قابل توجهی متفاوت باشد. داده ها اغلب بطور مکرر پردازش یا بصورت تکراری توسط یک ابزار واحد یا با استفاده از تعدادی ابزار برای سطوح مختلف بینش ها پردازش میشوند.
پردازش دستهای یکی از روش های محاسبه بر روی یک مجموعه داده بزرگ است. این فرآیند شامل تقسیم کار به قطعات کوچکتر، زمان بندی هر قطعه بر روی یک ماشین جداگانه، تغییر شکل داده ها بر اساس نتایج متوسط و سپس محاسبه و جمعآوری نتیجه نهایی است.
این مراحل اغلب به صورت جداگانه به عنوان تقسیم، نقشه برداری، تغییر شکل، کاهش و مونتاژ یا در مجموع به عنوان الگوریتم کاهش نقشه توزیع شده است. این استراتژی استفاده شده توسط Apache Hadoop’s Map Reduce است. پردازش دستهای هنگام کار با مجموعه داده های بسیار بزرگ که به محاسبات زیادی احتیاج دارند، بیشتر کاربرد دارد.
در حالی که پردازش دستهای برای انواع خاصی از داده ها و محاسبات مناسب است، اما بار های کاری دیگر به پردازش در زمان واقعی یا ریل تایم بیشتری نیاز دارند. پردازش در زمان واقعی یا ریل تایم مستلزم این است که اطلاعات بلافاصله پردازش و آماده شوند و با در دسترس قرار گرفتن اطلاعات جدید، سیستم نیاز به واکنش دارد.
یکی از راههای دستیابی به این امر Stream Processing است که با یک جریان مداوم از داده ها تشکیل میشود که از موارد جداگانه تشکیل شدهاند. یکی دیگر از ویژگیهای مشترک پردازندههای ریلتایم، محاسبات درون حافظهای است که با نمایش داده های موجود در حافظه خوشه کار میکند تا از نوشتن دوباره روی دیسک جلوگیری کند.
ابزار هایی چون Apache Storm، Apache Flink و Apache Spark روش های مختلف دستیابی به پردازش در زمان واقعی یا نزدیک به زمان واقعی را ارائه میدهند. معاملات با هر یک از این فناوری ها وجود دارد، که می تواند تاثیر بگذارد که کدام روش برای هر مشکل فردی بهتر است. بطور کلی، پردازش در زمان واقعی برای تجزیه و تحلیل تکه های کوچکتر از داده هایی که به سرعت در حال تغییر یا اضافه شدن به سیستم هستند، مناسب است.
مثال های بالا فریمورکهای محاسباتی را نشان میدهد. با این حال، روش های زیادی برای محاسبه یا تجزیه و تحلیل داده ها در یک سیستم کلان داده وجود دارند. این ابزارها اغلب به فریمورکهای فوق متصل میشوند و رابطهای اضافی برای تعامل با لایه های زیرین فراهم میکنند. به عنوان مثال، Apache Hive یک رابط انبار داده برای Hadoop فراهم میکند، Apache Pig یک رابط کوئری در سطح بالا ارائه میدهد، در حالی که تعاملات SQL مانند داده ها را میتوان با پروژههایی مانندApache Drill ،Apache Impala ، Apache Spark SQL و Presto به دست آورد.
برای یادگیری ماشین، پروژههایی مانندApache SystemML ، Apache Mahoutو Apache Spark’s MLlib میتوانند مفید باشند. برای برنامهنویسی مستقیم تحلیل که از پشتیبانی گستردهای در اکوسیستم کلان داده برخوردار است، R و Python گزینههای محبوب هستند.
- تجسم نتایج:
با توجه به نوع اطلاعاتی که در سیستمهای کلان داده در حال پردازش هستند، شناخت روندها یا تغییرات داده ها در طول زمان، اغلب از خود مقادیر مهم تر است. تجسم داده ها یکی از روش های بسیار مفید برای ردیابی روندها است.
پردازش در زمان واقعی اغلب برای تجسم معیارهای برنامه و سرور مورد استفاده قرار میگیرد. داده ها بطور مکرر تغییر میکنند و دلتاهای بزرگ در معیارها بطور معمول تأثیرات قابل توجهی بر سلامت سیستم ها یا سازمان نشان میدهد. در این موارد، پروژههایی مانند Prometheus میتوانند برای پردازش جریان داده ها به عنوان یک پایگاه داده سری زمانی و تجسم آن اطلاعات مفید باشند.
یکی از روشهای معروف تجسم داده ها با Elastic Stack است که در گذشته به عنوان پشته ELK شناخته میشد. پشته الاستیک که از Logstash برای جمع آوری داده ها، Elasticsearch برای نمایه سازی داده ها و Kibana برای تجسم تشکیل شده است، میتواند با سیستمهای کلان داده استفاده شود تا از لحاظ بصری با نتایج محاسبات یا معیارهای خام ارتباط برقرار کند. پشته مشابهی را میتوان با استفاده از Apache Solrبرای نمایه سازی و یک پروژه مشابه Kibana به نام Banana برای تجسم بدست آورد. پشته ایجاد شده توسط اینها Silk نامیده میشود.
فناوری تجسم دیگری که بطور معمول برای کارهای علوم داده تعاملی مورد استفاده قرار میگیرد، "نوت بوک" داده است. این پروژهها امکان اکتشاف تعاملی و تجسم داده ها را در قالبی برای اشتراک، ارائه یا همکاری فراهم میکنند. نمونه های معروف این نوع رابط تجسم، Jupyter Notebook و Apache Zeppelin هستند.
ابزار تجزیه و تحلیل کلان داده:
از آنجا که محاسبات، ذخیره سازی و نیازهای شبکه برای کار با مجموعههای بزرگ داده فراتر از محدودیتهای یک رایانه است، نیاز به پارادایمها و ابزارهایی برای خرد کردن و پردازش داده ها از طریق خوشهبندی بصورت توزیع شده است. برای پردازش این داده های عظیم بصورت پیش فرض یا بطور معمول در مراکز داده ارائه دهندگان خدمات ابری، هر چه بیشتر قدرت محاسباتی و زیرساخت ذخیرهسازی گسترده مورد نیاز است.
علاوه بر زیرساخت های مورد نیاز، ابزار ها و اجزای مختلفی باید برای حل مشکلات کلان داده جمع شوند. اکوسیستم Hadoop تنها یکی از پلتفرمهایی است که به ما کمک میکند با حجم عظیمی از داده ها کار کنیم و الگوهای مفیدی را برای مشاغل کشف کنیم.
در ادامه می خواهیم به صورت خلاصه ابزار های نام برده شده در مطالب بالا را مرور کنیم. در زیر لیستی از برخی از ابزارهای موجود و شرح نقش آنها در پردازش کلان داده وجود دارد:
- MapReduce: یک الگوی محاسباتی توزیع شده است که برای پردازش حجم عظیمی از داده ها بطور موازی با تقسیم یک کار بزرگ به کارهای کوچکتر و کاهش وظایف، توسعه یافته است.
- HDFS: سیستم پرونده توزیع شده Hadoop، یک سیستم ذخیرهسازی و پرونده توزیع شده است که توسط برنامههای Hadoop استفاده میشود.
- YARN: کامپوننت مدیریت منابع و Job Scheduling در اکوسیستم Hadoop است.
- Spark: یک فریم ورک پردازش داده در حافظه به صورت Real-Time است.
- PIG / HIVE: ابزارهای اسکریپتی و کوئری مانند SQL برای پردازش داده ها و سادهسازی پیچیدگی برنامههای MapReduce.
- HBase ،MongoDB ، Elastic search: نمونههایی از چند پایگاه داده NoSQL.
- Mahout، Spark ML: ابزاری برای اجرای الگوریتمهای مقیاسپذیر یادگیری ماشین به روشی توزیع شده.
- Flume ،Sqoop ، Logstash: یکپارچه سازی داده ها و فروبری داده های ساخت یافته و غیر ساختاری.
- Kibana: ابزاری برای تجسم داده های Elastic search
واژهنامه کلان داده:
در حالی که ما سعی کردهایم مفاهیم را همانطور که از آنها در طول مقاله استفاده کردهایم تعریف کنیم، اما داشتن اصطلاحات تخصصی در یک مکان واحد مفید است:
- کلان داده یا Big Data: کلان داده عملا چتری بر روی مجموعه داده هایی است که به دلیل حجم، سرعت و تنوع، بطور منطقی توسط رایانه ها یا ابزارهای سنتی قابل کنترل نیستند. این اصطلاح بطور معمول در فناوریها و استراتژیهای کار با این نوع داده ها نیز به کار میرود.
- پردازش دستهای یا :Batch Processing: پردازش دستهای یک استراتژی محاسباتی است که شامل پردازش داده ها در مجموعههای بزرگ است و معمولاً برای کارهای غیر حساس به وقت که با مجموعه داده های بسیار گسترده کار میکنند، ایدهآل است. فرآیند آغاز شده و با گذشت مدت زمانی، نتایج توسط سیستم بازگردانده میشوند.
- محاسبات خوشهای یا Cluster Computing: محاسبات خوشهای به معنای تجمع منابع چندین ماشین و مدیریت قابلیتهای جمعی آنها برای انجام وظایف است. خوشههای رایانهای به یک لایه مدیریت خوشه نیاز دارند که ارتباط بین گره های منفرد را کنترل کرده و تعیین تکلیف را مختصات کند.
- دریاچه داده یا Data lake: دریاچه داده اصطلاحی برای مخزن بزرگ داده های جمعآوری شده در حالت نسبتاً خام است. این مفهوم اغلب برای اشاره به داده های جمعآوری شده در یک سیستم کلان داده استفاده میشود که ممکن است بدون ساختار باشند و مرتباً تغییر کنند و از نظر منطقی با انبارهای داده متفاوت است
- داده کاوی یا Data Mining: داده کاوی اصطلاحی گسترده در تلاش برای یافتن الگوها در مجموعه های بزرگ داده است. این فرآیند تلاش برای پالایش انبوهی از داده ها در یک مجموعه قابل درک و منسجم تر از اطلاعات است.
- انبار داده یا Data Warehouse: انبارهای داده مخازن بزرگ و مرتب دادهای هستند که میتوانند برای تجزیه و تحلیل و گزارشدهی استفاده شوند. بر خلاف یک دریاچه داده، یک انبار داده از داده هایی تشکیل شدهاست که تمیز شده، با منابع دیگر ادغام شده و بطور کلی از نظم خوبی برخوردار است. درباره انبارهای داده اغلب در رابطه با داده های بزرگ صحبت میشود.
- ETL: مخفف عبارت استخراج، تبدیل و لود است و به فرآیند گرفتن داده های خام و آمادهسازی آنها برای استفاده در سیستم اشاره دارد. ETL بطور سنتی یک فرآیند مرتبط با انبارهای داده است، اما ویژگیهای این فرآیند همچنین در خطوط لوله ورودی سیستمهای کلان داده وجود دارد.
- Hadoop: یکی از پروژههای متنباز Apache میباشد که مبحث در کلان داده خود را بسیار موفق نشان داده است. این برنامه از یک سیستم پرونده توزیع شده به نام HDFS تشکیل شده است که دارای یک مدیریت خوشه و برنامه ریز منابع در بالای آن به نام YARN (Yet Another Resource negotiator) است. قابلیتهای پردازش دستهای توسط موتور محاسباتی MapReduce ارائه شده است. سایر سیستم های محاسباتی و تجزیه و تحلیل را میتوان در کنار MapReduce در استقرار های مدرن Hadoop اجرا کرد.
- In-memory Computing: محاسبات در حافظه استراتژیای است که شامل انتقال مجموعه داده های کاری در حافظه جمعی خوشه است. محاسبات میانی روی دیسک نوشته نمیشوند و در عوض در حافظه نگهداری میشوند. این امر به سیستمهای محاسباتی در حافظه مانند Apache Spark یک سرعت فوق العاده نسبت به سیستمهایی مانند Hadoop’s MapReduce میدهد.
- Machine learning: یادگیری ماشین مطالعه و فعالیت طراحی سیستمهایی است که میتوانند بر اساس داده های داده شده به آنها یاد بگیرند، تنظیم و بهبود یابند. ML بطور معمول شامل پیادهسازی الگوریتمهای پیشبینی کننده و آماری است که میتواند بطور مداوم رفتار و بینش "صحیح" را به عنوان جریان دادههای بیشتر در سیستم صفر کند.
نتیجه گیری:
مبحث کلان داده موضوعی گسترده و در حال توسعه است. گرچه برای انواع محاسبات مناسب نیست، اما بسیاری از سازمانها برای انواع خاصی از بارهای کاری به کلان داده ها متوسل شدهاند و از آن برای تکمیل تجزیه و تحلیل موجود و ابزارهای تجاری خود استفاده میکنند. سیستم های کلان داده بطور منحصر به فرد برای نمایش الگوهای دشوار قابل تشخیص و ارائه بینش در مورد رفتارهایی که یافتن آنها از طرق متعارف غیرممکن است، مناسب هستند. با پیادهسازی صحیح سیستمهایی که با کلان داده سروکار دارند، سازمانها میتوانند از داده هایی که از قبل در دسترس هستند، ارزش باورنکردنی کسب کنند.
به طور خلاصه، ما در زندگی روزمره خود حجم عظیمی از داده ها را تولید میکنیم و این تعداد همچنان رو به افزایش است. داشتن داده ها به تنهایی بدون تجزیه و تحلیل و کشف ارزش آن برای هوش تجاری، یک سازمان را بهبود نمیبخشد. استخراج و پردازش این کوه از داده ها با ابزارهای سنتی امکان پذیر نیست، بنابراین ما از خطوط لوله کلان داده برای کمک به ما در جذب، پردازش، تجزیه و تحلیل و تجسم این حجم عظیم داده استفاده میکنیم.