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

1606683296_1_0.gif

علم داده‌ها یکی از حوزه‌های گسترده علوم کامپیوتر است و زیر شاخه‌های مختلفی مثل جمع‌آوری داده‌ها (Data Collection)، پاک‌سازی داده‌ها (Data Cleaning)، استانداردسازی داده‌ها (Standardization)، تحلیل داده‌ها (Data Analysis) و گزارش‌گیری (Reporting) را شامل می‌شوند. تمامی شرکت‌های فعال در حوزه فناوری از تکنیک‌های علم داده‌ و پردازش بزرگ داده‌ها برای استخراج دانش از داده‌های غیر‌ساخت‌یافته، ساخت‌یافته و نیمه‌ساخت‌یافته سازمانی استفاده می‌کنند. 

پردازش بزرگ داده‌ها

تحلیل و پردازش بزرگ داده‌ها به یکی از بزرگ‌ترین روندهای تحقیقاتی در جهان تبدیل شده است. به همین دلیل است که بازار کار خوبی برای توسعه‌دهندگان و برنامه‌نویسانی که با تکنیک‌های پردازش بزرگ داده‌ها آشنا هستند پدید آمده است. به‌طور مثال، یک دانشمند علم داده‌ها یا یک برنامه‌نویس مسلط به پردازش و تحلیل بزرگ داده‌ها قادر است از ابزارهای موجود در این حوزه برای پردازش بزرگ داده‌ها با هدف تحلیل زبان (پردازش زبان طبیعی) یا پیشنهادهای ویدیویی (Recommending Videos) یا پیشنهاد مصحولات جدید با توجه به داده‌های بازاریابی یا داده‌های به‌دست آمده از مشتریان استفاده کند. بیشتر مسائل تحلیل داده‌ها که برای حل آن‌ها نیازمند پروژ‌های برنامه‌نویسی هستیم توسط راه‌حل‌هایی که Conventional نام دارند در تعامل با روش‌های یادگیری ماشین قابل حل هستند. به بیان دقیق‌تر، هنگامی که داده‌های استفاده شده برای مدل‌سازی یا آموزش مدل یادگیری به اندازه‌ای باشند که بتوان از سامانه‌های محاسباتی رایج نظیر کامپیوترهای شخصی برای پردازش آن‌ها استفاده کرد بدون مراجعه به روش‌های پردازش بزرگ داده‌ها قابل حل هستند. به همین دلیل روش‌های تحلیل و پردازش بزرگ داده‌ها بیشتر در ارتباط با حل مسائل تحلیلی استفاده می‌شوند. به‌طور کلی، هنگامی از تکنیک‌های پردازش بزرگ داده‌ها برای حل مسائل استفاده می‌شود که نیازمند پردازش حجم عظیمی از داده‌ها باشیم و سامانه‌های محاسباتی توان پردازشی لازم برای تجزیه و تحلیل بزرگ داده‌ها را نداشته باشند. 

چه ابزارهایی برای پردازش بزرگ داده‌ها در دسترس قرار دارد؟

یکی از مهم‌ترین مدل‌های ذخیره‌سازی و پردازش بزرگ داده‌ها که رویکرد توزیعی دارد و توسط دانشمندان علم داده‌ها استفاده می‌شود، مدل برنامه‌نویسی نگاشت-کاهش (MapReduce) است. مدل مذکور راهکاری بهینه برای مدیریت و پردازش بزرگ داده‌ها است که به دانشمندان علم داده و توسعه‌دهندگان الگوریتم‌های هوشمند اجازه می‌دهد ابتدا داده‌ها را با استفاده از یک برچسب یا به عبارت دقیق‌تر یک صفت دسته‌بندی کنند و در ادامه از یک مکانیزم تبدیل یا تجمیع برای پالایش و کم کردن داده‌های نگاشت شده استفاده کنند. به‌طور مثال، اگر داده‌های جمع‌آوری شده مرتبط با مجموعه‌ای از اشیا مثل میز باشند، ابتدا میزها با استفاده از صفتی مثل رنگ نگاشت می‌شوند. در ادامه، داده‌ها از طریق تکنیک تجمیع گروه‌بندی می‌شوند تا اطلاعات غیر‌ضروری حذف شده و حجم داده‌ها کم شود. در انتها فرآیند MapReduce فهرست یا مجموعه‌ای از رنگ میزها و تعداد میزهای موجود در هر کدام از گروه‌بندی‌های رنگی خاص را در اختیار برنامه‌نویس یا دانشمند داده قرار می‌دهند. تقریبا تمامی کتابخانه‌های برنامه‌نویسی توسعه داده شده برای پردازش بزرگ داده‌ها و علم داده‌ها از رویکرد برنامه‌نویسی MapReduce پشتیبانی می‌کنند.

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

کتابخانه هدوپ

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

کتابخانه اسپارک

به‌طور معمول کتابخانه اسپارک (Spark) برای پردازش داده‌هایی که در قالب داد‌ه‌های جریانی  به‌‌دست می‌آیند (مثل داده‌های بلادرنگ (real-Time)، داده‌های گزارش (Log Data) و داده‌های جمع‌آوری شده توسط رابط‌های برنامه‌نویسی کاربردی) استفاده می‌شود، زیرا کتابخانه اسپارک در ارتباط با این مدل داده‌ها عملکرد بهتری دارد. کتابخانه اسپارک مثل کتابخانه هدوپ توسط بنیاد نرم‌افزار آپاچی توسعه داده شده است.

 پایتون و پردازش بزرگ داده‌ها

تقریبا بیشتر برنامه‌نویسان تازه وارد به دنیای هوش مصنوعی و بزرگ‌ داده‌ها این پرسش را مطرح می‌کنند که زبان پایتون برای پردازش بزرگ داده‌ها و تحلیل آن‌ها چه قابلیتی در اختیار آن‌ها قرار می‌دهد؟ در چند سال گذشته، پایتون در کنار زبان‌های دیگری مثل آر، جولیا و مطلب یکی از مهم‌ترین ابزارهای دانشمندان علم داده‌ها در ارتباط با کدنویسی پروژه‌های علم داده‌ها به شمار می‌رود و علاوه بر این در ارتباط با تحلیل و پردازش بزرگ داده‌ها قابلیت‌های گسترده‌ای در اختیار برنامه‌نویسان قرار می‌دهد. در حالی که برخی از دانشمندان علم داده‌ها و برنامه‌نویسان شاغل در حوزه هوش مصنوعی از زبان‌های برنامه‌نویسی مثل جاوا، آر، جولیا و ابزارهایی مثل SPSS و SAS برای تحلیل داده‌ها و استخراج بینش از دل داده‌ها استفاده می‌کنند، اما پایتون به واسط کتابخانه‌های برنامه‌نویسی متنوع و پر کاربردی که از آن پشتیبانی می‌کنند جایگاه خاصی دارد. کتابخانه‌ها و چارچوب‌هایی که برای پردازش داده‌ها برای پایتون نوشته شده‌اند به اندازه‌ای تکامل پیدا کرده و قدرتمند شده‌اند که دانشمندان علم داده‌ها ترجیح می‌دهند برای تحلیل و پردازش بزرگ داده‌ها ابتدا به سراغ پایتون بروند. تقریبا برای چند سال متوالی است که زبان پایتون به عنوان محبوب‌ترین زبان برنامه‌نویسی شناخته می‌شود.

اگر به آگهی‌های استخدامی در حوزه برنامه‌نویسی وب، یادگیری ماشین و کاربردهای مشابه نگاهی داشته باشید مشاهده می‌کنید که پایتون بخش ثابت این آگهی‌ها است. به همین دلیل است که بیشتر مهندسان داده پایتون را به عنوان زبان اصلی برای تحلیل و پردازش بزرگ داده‌ها انتخاب می‌کنند. همان‌گونه که اشاره شد یکی از مهم‌ترین ابزارهای پردازش بزرگ داده‌ها که توسط دانشمندان داده استفاده می‌شود کتابخانه هدوپ است. ابزارهای متن‌باز هدوپ که توسط بنیاد نرم‌افزاری آپاچی و با هدف ارائه زیرساخت نرم‌افزاری لازم برای محاسبات توزیع شده و پردازش بزرگ داده‌ها آماده شده توسط زبان برنامه‌نویسی جاوا نگارش شده‌اند. این ابزارهای کاربردی به برنامه‌نویسان اجازه می‌دهند شبکه‌ای متشکل از کامپیوترها که بر مبنای معماری توزیع شده به یکدیگر متصل هستند را برای حل مسائلی که نیازمند حجم عظیمی از داده‌ها و محاسبات می‌شوند به کار گیرند. برای پردازش بزرگ داده‌ها و تحلیل آن‌ها، هدوپ چارچوب نرم‌افزار قدرتمندی برای ذخیره‌سازی توزیع شده و پردازش بزرگ داده‌ها معرفی کرده که مبتنی بر مدل برنامه‌نویسی نگاشت-کاهش است. 

پایتون به دو دلیل زیر در زمینه برنامه‌نویسی علم داده و پردازش بزرگ داده‌ها مورد توجه برنامه‌نویسان قرار گرفته است:

  • کتابخانه‌ها، ابزارها و بسته‌های نرم‌افزاری قدرتمندی برای پردازش، ذخیره‌سازی، نمایش، شکل‌دهی و مصورسازی داده‌ها در اختیار دارد. 
  • استقبال برنامه‌نویسان از پایتون در حوزه علم داده بارو نکردنی است، به‌طوری که بنیاد نرم‌افزاری آپاچی را متقاعد کرد تا امکان استفاده از اکوسیستم هدوپ را برای دانشمندان علم داده‌ها و برنامه‌نویسان یادگیری ماشین گسترش دهد.
  • امروزه دانشمندان علم داده‌ها و برنامه‌نویسان مسلط به این زبان می‌توانند از ابزارهایی مثل Hadoop Streaming، افزونه Hadoopy، کتابخانه Pydoop و بسته Pydopp برای این منظور استفاده کنند.

 به‌کارگیری هدوپ در پایتون به جای جاوا

یکی از مهم‌ترین پرسش‌هایی که هنگام به‌کارگیری هدوپ در پایتون با هدف پردازش بزرگ داده‌ها و تحلیل آن‌ها مطرح می‌شود این است که چرا باید از پایتون به جای جاوا برای پردازش بزرگ داده‌ها و تحلیل آن‌ها استفاده کرد در حالی که هدوپ و اسپارک به زبان جاوا نوشته شده‌اند و تقریبا بیشتر برنامه‌های بزرگ به ویژه در مقیاس سازمانی توسط جاوا نوشته می‌شوند؟ در پاسخ باید بگوییم این دو زبان در ارتباط با ویژگی‌های ساختاری تفاوت‌هایی با یکدیگر دارند و در حالت کلی پایتون ترکیب نحوی ساده‌تری در ارتباط با پردازش داده‌ها در اختیار برنامه‌نویسان قرار می‌دهد. از مهم‌ترین تفاوت‌های این دو زبان به موارد زیر باید اشاره کرد:

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

کتابخانه‌های مدیریت و پردازش داده‌ها در پایتون

همان‌گونه که اشاره شد، کتابخانه‌ها، ابزارها و بسته‌های برنامه‌نویسی قدرتمندی با هدف ذخیره‌سازی، نمایش، شکل‌دهی، مصورسازی، واکاوی و تحلیل دقیق داده‌ها در زبان پایتون نوشته شده است. از کتابخانه‌های قدرتمندی که قابل استفاده به زبان پایتون هستند به موارد زیر باید اشاره کرد:

کتابخانه پانداس

بدون تردید، یکی از محبوب‌ترین کتابخانه‌ها برای پیاده‌سازی گذرگاه‌های انتقال داده و پردازش داده‌ها در پایتون کتابخانه پانداس (Pandas) است. کتابخانه مذکور توسط گروهی متشکل از دانشمندان علم داده‌ها به زبان‌های پایتون و آر توسعه داده شده است. اکنون جامعه بزرگی از برنامه‌نویسان، دانشمندان علم داده‌ها و تحلیل‌گران بر فرآیند توسعه پانداس، برطرف کردن مشکلات احتمالی و اضافه کردن قابلیت‌های جدید به این کتابخانه نظارت می‌کنند. کتابخانه پانداس ویژگی‌های کاملا کاربردی برای خواندن داده‌ها از منابع مختلف، ساخت دیتافریم‌ها (Dataframe)، جداول متناظر با داده‌های خوانده شده و محاسبه تجزیه و تحلیل تجمیعی بر مبنای نوع برنامه کاربردی در حال توسعه در اختیار برنامه‌نویسان قرار می‌دهد. علاوه بر این، کتابخانه پانداس از قابلیت‌های مصورسازی داده‌ها به بهترین شکل پشتیبانی می‌کند. با استفاده از قابلیت‌های مصورسازی جایگذاری شده در کتابخانه مذکور، قابلیت ساخت گراف و نمودار از نتایج تولید شده برای دانشمندان علم داده‌ها فراهم است. علاوه بر این، مجموعه‌ای از توابع داخلی در کتابخانه پانداس قرار گرفته‌اند که قابلیت صادر کردن (Export) تجزیه و تحلیل‌های انجام شده روی داده‌ها در قالب یک فایل صفحه گسترده اکسل را می‌دهند. 

کتابخانه Agate

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

کتابخانه Bokeh

اگر به دنبال مصورسازی داده‌ها در یک مجموعه ساخت یافته هستید، Bokeh کتابخانه مناسبی است. کتابخانه مذکور را می‌توان با کتابخانه‌های تحلیل داده مثل پانداس، اگیت و نمونه‌های مشابه استفاده کرد. کتابخانه فوق به برنامه‌نویسان اجازه می‌دهد با کمترین کدنویسی، نمودارهای گرافیکی و مصورسازی‌های کارآمدی از داده‌ها تولید کنند. 

کتابخانه‌ PySpark

کتابخانه PySpark که رابط برنامه‌نویسی کاربردی اسپارک در پایتون است به دانشمندان علم داده کمک می‌کند زیرساخت‌های موردنیاز برای نگاهشت و کاهش مجموعه داده‌ها را با سرعت زیادی پیاده‌سازی کنند. علاوه بر این، به دلیل این‌که در کتابخانه اسپارک مجموعه‌ای از الگوریتم‌های یادگیری ماشین قرار گرفته، ضمن پردازش بزرگ داد‌ه‌ها و مدیریت آن‌ها، برای حل مسائل یادگیری ماشین نیز کاربرد دارد. 

ابزار جریان‌سازی هدوپ

ابزار جریان‌سازی هدوپ (Hadoop Streaming) یکی از پر کاربردترین روش‌های استفاده از هدوپ در پایتون است. جریان‌سازی یکی از ویژگی‌های شاخص کتابخانه هدوپ است. ویژگی فوق به برنامه‌نویسان اجازه می‌دهد کدهای نوشته شده به زبان پایتون یا سایر زبان‌های برنامه‌نویسی را برای انجام عملیات نگاشت و به شکل آرگومان برای تابع stdin ارسال کنند. به بیان دقیق‌تر، توسعه‌دهندگان می‌توانند از جاوا به عنوان پوشش‌دهنده (Wrapper) استفاده کنند و کدهای پایتون را به تابع stdin هدایت کنند تا در زمان اجرا عملیات نگاشت در زبان جاوا و توسط کتابخانه هدوپ انجام شود. 

افزونه Hadoopy

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

بسته Pydoop

بسته مذکور به توسعه‌دهندگان اجازه می‌دهد برنامه‌های مرتبط با پردازش بزرگ داده‌ها در پایتون را کدنویسی کنند و در ادامه با استفاده از کدهای پیاده‌سازی شده به شکل مستقیم با داده‌های ذخیره شده در خوشه هدوپ ارتباط برقرار کنند و عملیات نگاشت-کاهش را انجام دهند. این‌کار از طریق رابط برنامه‌نویسی کاربردی HDFS API که درون بسته Pydoop قرار دارد انجام می‌شود. رابط مذکور به برنامه‌نویسان این قابلیت را می‌دهد تا در محیط پایتون عملیات خواندن و نوشتن داده‌ها را بر مبنای معماری فایل سیستمی HDFS انجام دهند. 

کتابخانه MRJob

MRJob کتابخانه دیگری است که برای انجام عملیات نگاشت-کاهش در پایتون و پردازش بزرگ داده‌ها در دسترس دانشمندان علم داده‌ها قرار دارد. کتابخانه فوق پر کاربردترین بسته برنامه‌نویسی برای پردازش بزرگ داده‌ها در پایتون است که توسط شرکت Yelp طراحی شده است. کتابخانه فوق از هدوپ، سرویس Cloud Dataproc گوگل و سرویس Elastic MapReduce آمازون پشتیبانی می‌کند. سرویسEMR  یک وب‌سرویس طراحی شده توسط آمازون برای تحلیل و پردازش بزرگ داده‌ها از طریق هدوپ و اسپارک است. مستندات و راهنمای خوبی برای این کتابخانه آماده شده تا برنامه‌نویسان بدون مشکل خاصی از توابع این کتابخانه استفاده کنند.
 

ماهنامه شبکه را از کجا تهیه کنیم؟
ماهنامه شبکه را می‌توانید از کتابخانه‌های عمومی سراسر کشور و نیز از دکه‌های روزنامه‌فروشی تهیه نمائید.

ثبت اشتراک نسخه کاغذی ماهنامه شبکه     
ثبت اشتراک نسخه آنلاین

 

کتاب الکترونیک +Network راهنمای شبکه‌ها

  • برای دانلود تنها کتاب کامل ترجمه فارسی +Network  اینجا  کلیک کنید.

کتاب الکترونیک دوره مقدماتی آموزش پایتون

  • اگر قصد یادگیری برنامه‌نویسی را دارید ولی هیچ پیش‌زمینه‌ای ندارید اینجا کلیک کنید.

ایسوس

نظر شما چیست؟