اکوسیستم کلان داده ها

در مطلب های پیشین سعی کردیم تا اندازه مناسبی در مورد کلان داده ها و چالش ها و زمینه های مورد بحث در آن صحبت کنیم. در این مطلب می خواهیم جنبه دیگری از معماری کلان داده ها، یعنی اکوسیستم آن و به خصوص ساختار و معماری هدوپ (Apache Hadoop) را بررسی کنیم. بنابراین پس از فهم و درک کلان داده ها، نخستین چیزی که باید در نظر داشت، انتخاب تکنولوژی هایی است که باید در ساختن معماری مورد نظر خودمان به کار ببریم.

در این لینک می توانید فهرست کاملی از تکنولوژی های موجود در زمینه کلان داده ها را به صورت دسته بندی شده بخوانید که از چیدمان و در کنار هم قرار گیری گزینه های مناسبی از این فهرست در نهایت با فراهم کردن نیازهای سخت افزاری، می توانیم معماری دلخواه را با توجه به نیازمان، طراحی و پیاده سازی کنیم.

پیاده سازی معماری کلان داده ها تنها بستگی به هدوپ و آماده سازی نیازهای سخت افزاری و نرم افزاری مانند پیاده سازی شبکه های قابل اعتماد و سریع، سرورهای مجازی به منظور پیاده سازی کلاسترهای کامپیوتری ندارد، بلکه باید موارد دیگری نیز در نظر گرفته شوند.

باید در نظر بگیریم کدام زبان شبه SQL را می خواهیم استفاده کنیم؟ باید در نظر داشته باشید که گاهی لازم است تا جدول های پایگاه داده های رابطه ای مانند اوراکل را به درون سیستم فایل توزیع شده هدوپ (Hadoop Distributed File System یا HDFS) بارگذاری کنید، تا درون محیط هدوپ پردازش شوند، برای این منظور ابزاری مانند Apache Sqoop یا Apache Hive وجود دارند.

یکی دیگر از جنبه هایی که باید به آن توجه کنید، به کارگیری پایگاه داده های NoSQL است. NoSQL اشاره به پایگاه داده های غیر رابطه ای دارد که به انواع متفاوتی دسته بندی می شوند. گوگل BigTable را توسعه داد و سپس بنیان آپاچی HBase را از روی آن توسعه داد که در حال حاظر جزیی از هدوپ است. ما در این دوره در مورد پایگاه داده NoSQL تا اندازه ای که محدود به بحث کلان داده بشود صحبت کرده ایم ولی به طور خاص در مورد پایگاه داده های NoSQL موجود مانند MongoDB در دوره جدا صحبت شده است.

تصمیم بگیریم از کدام زبان برای پیاده سازی یادگیری ماشین (Machine Learning) می خواهیم استفاده کنیم؟ شاید بهترین زبان پایتون باشد، ولی می توانیم از زبان های دیگری مانند R نیز استفاده کنیم. جاوا، اسکالا پایتون و R زبان هایی هستند که در زمینه کلان داده ها و به طور کلی تحلیل داده ها (Data Analysis) کاربرد فراوانی دارند.

باید توجه کنید که به دلیل وجود گوناگونی در داده ها و نرخ تولید انواع متفاوت داده ها از منبع هایی که اساسا ناهمگن (Heterogeneity) هستند، باعث می شود که مفاهیمی مانند داده کاوی (Data Mining)، یادگیری ماشین (Machine Learning)، هوش تجاری (Business Intelligence) و انبار داده ها (Data Warehouse) در کلان داده ها متفاوت از آن رویکردهای سنتی باشند.

مصور سازی داده ها (Data Visualization) یکی از مهمترین چالش ها در تحلیل داده ها است که در کلان داده ها نیز مطرح است. به طور کلی پلتفرمی که برای تحلیل داده ها در کلان داده ها مطرح است، رویکرد و ابزارهای متفاوتی را نیاز دارد.

در کلان داده ها به دلیل حجم انبوه داده ها، پردازش شدیدا موازی (Massively Parallel Processing یا MPP) مطرح است، به طوری که با کمک گیری از سیستم های توزیع شده و پیاده سازی شبکه ای از کامپیوترهای مصتل شده درون یک شبکه که آنرا کلاستر (Cluster) می نامند، می خواهیم پردازش داده ها را بر روی گره های (Node) متفاوت درون این کلاستر پخش یا توزیع (Distribute) کنیم، تا سرعت پردازش بالا رود، به طوری که هر تکه به صورت مجزا بر روی یک کامپیوتر انجام شود و در نهایت نتیجه نهایی از بهم پیوستن نتیجه های هر کدام از گره ها بدست آید.

به هر کامپیوتر یا ماشین درون کلاستر، یک گره گفته می شود.

در این میان هدوپ نقش کلیدی را ایفا می کند به این دلیل که هدوپ شامل یک سیستم فایل توزیع شده و چارچوب یا رویکرد نگاشت کاهش (MapReduce) است ولی برای ایجاد اکوسیستم هدوپ (یا همان اکوسیستم کلان داده ها) می توانیم مولفه های دیگری را به آن اضافه کنیم.

به طور مثال می توانیم برای پردازش بلادرنگ و حتی افزودن قابلیت یادگیری ماشین، از آپاچی اسپارک (Apache Spark) استفاده کنیم. لازم است تا برای پیاده سازی کلاستری از گره هایی که هر کدام نرم افزار هدوپ را اجرا می کنند، یک مدیر کلاستر مانند Apache Mesos یا Apache Ambari را استفاده کنیم. برای اطلاع بیشتر از اکوسیستم هدوپ، می توانید در کنار لینک ابتدای مطلب، این لینک را نیز مطالعه کنید.

متاسفانه به دلیل عدم وجود منابع و سرورهای کافی برای پیاده سازی کلاستری از گره های هدوپ، نمی توانیم کلاستر هدوپ را به صورت واقعی پیاده سازی کنیم. به عبارت دیگر ویژگی توزیع شدگی و پردازش شدیدا موازی را نمی توانیم به شما نشان دهید. حتی با وجود پلتفرم های متفاوت رایانش ابری مانند آمازون، گوگل و مایکروسافت و هزینه های مناسب آنها، بازهم نمی توانیم از آنها برای ایجاد یک کلاستر دست کم ۲ گره ای، استفاده کنیم.

طبق مستندات برخی از توزیع های لینوکسی مانند CloudEra و یا MapR که کاملا رایگان هستند، برای هر گره حداقل به ۸ گیگابایت حافظه اصلی نیاز داریم که خارج از توان ما است. اما سعی می کنیم تا حد ممکن جنبه های متفاوت اکوسیسیتم کلان داده ها را آموزش دهیم. در این لینک می توانید شکلی را از اکوسیستم کلان داده ها، مطابق با ویرایش سال ۲۰۱۸ ببینید.