آپاچی هدوپ چیست؟
هدوپ و داده های بزرگ
نام تجاری آپاچی هدوپ در پی نیاز به پردازش حجم عظیم داده های بزرگ متولد شد. دنیای وب، روزانه در حال تولید اطلاعات بیشتر و بیشتر بود به صورتی که شاخص گذاری بر روی بیش از یک میلیون صفحه محتوا، کار بسیار دشواری بود. برای مقابله، گوگل یک سبک جدید از پردازش داده ها که با نام MapReduce شناخته می شود را اختراع کرد. یک سال بعد، گوگل اوراق سفیدی[1] در توصیف فریم ورک MapReduce منتشر کرد. داگ کاتینگ و مایک کفرلا[2]، با الهام از این اوراق، هدوپ را برای اعمال این مفاهیم بر روی یک نرم افزار فریم ورک متن باز برای حمایت از توزیع در پروژه موتور جستجوی Nutch خلق کردند. با داشتن ریشه اصلی، هدوپ با یک زیرساخت ذخیره سازی یکبار نوشتنی[3] ساده، طراحی شد.
هدوپ در نمایه سازی وب، بسیار فراتر از آغاز خود حرکت کرده و هم اکنون در بسیاری از صنایع و برای طیف گسترده ای از فعالیت هایی که یک قالب مشترک از داده هایی با تنوع، حجم و سرعت های گوناگون را به اشتراک می گذارند، به کار می رود- چه داده های ساخت یافته و چه داده های غیر ساخت یافته. این برنامه در حال حاضر در بسیاری از صنعت ها از قبیل صنعت های اقتصادی، رسانه و سرگرمی، دولتی، بهداشت و درمان، خدمات اطلاعات، خرده فروشی و دیگر صنعت هایی که با داده های بزرگ سر و کار دارند مورد استفاده قرار می گیرد اما هنوز هم محدودیت های زیرساخت های زخیره سازی اصلی، پابرجا هستند. هدوپ به طرز رو به افزایشی در حال تبدیل شدن به یک فریم ورک go to [4] برای اطلاعات فشرده در مقیاس بزرگ، می باشد. هدوپ برای پردازش حجم عظیم داده ها، از ترابایت گرفته تا پتابایت و فراتر از آن ساخته شده است. در این حجم داده، بعید است که بتوان آن را در تنها یک هارد کامپیوتر جای داد، و به همین ترتیب احتمال بسیار کمتری وجود دارد که بتوان آن را بر روی حافظه قرار داد.[5] زیبایی هدوپ در این است که این برنامه، طراحی شده تا بتواند حجم عظیمی از داده ها را با استفاده از اتصال چندین کامپیوتر ساده در کنار هم به صورت موازی، به صورت موثر پردازش کند. هدوپ با استفاده از مدل MapReduce، می تواند یک جستجو در یک مجموعه داده را گرفته، آن را تفکیک کرده و به صورت موازی بر روی گره های متعدد اجرا کند. توزیع محاسبه، مشکل داشتن داده هایی که بسیار بزرگ تر از آن هستند که بر روی تنها یک ماشین جای گیرند را حل می کند.
نرم افزار هدوپ
پشته نرم افزار هدوپ، یک اقتصاد کاملا جدید را برای ذخیره سازی و پردازش داده ها در مقیاس[6]، معرفی می کند. این برنامه به سازمان ها اجازه می دهد تا انعطاف پذیری بی نظیری در توانایی خود برای استفاده حداکثری از تمامی اشکال و اندازه ها، برای کشف بینش و دیدگاه در مورد کسب و کار خود، داشته باشند. کاربران حالا می توانند از کل سخت افزار و پشته نرم افزار، شامل سیستم عامل و نرم افزار هدوپ، در کل خوشه[7] بهره گرفته، و آن را از طریق یک واسط مدیریتی، کنترل کنند. آپاچی هدوپ یک فایل سیستمی توزیع شده را نیز شامل می شود که داده های ورودی را تفکیک کرده و بر روی گره های محاسباتی ذخیره می کند. این کار به داده ها اجازه می دهد تا به صورت موازی و با استفاده از تمامی دستگاه های درون آن خوشه مورد پردازش قرار گیرند.
فایل سیستمی توزیع شده هدوپ [8] به زبان جاوا نوشته شده و بر روی سیستم عامل های گوناگونی اجرا می شود. هدوپ از ابتدا برای همساز کردن پیاده سازی های چندگانه فایل های سیستمی طراحی شد که در این جا برخی از آنان موجود هستند. فایل های سیستمی HDFS و S3 احتمالا از پر استفاده ترین این فایل ها بوده، اما بسیاری دیگر از قبیل فایل های سیستمی MapReduce نیز وجود دارند.
در حالی که گوگل MapReduce را اختراع کرده و نسخه داخلی آن را در اختیار دارد، هدوپ نیز باقی مانده دنیای فریم ورک MapReduce را تشکیل می دهد. پس این همان برنامه ای خواهد بود که ما از آن استفاده خواهیم کرد. بیشتر دوره های هدوپ با جاوا آغاز می شوند، اما متاسفانه 90 درصد کد را فایل های بیهوده ای تشکیل می دهند که ما را از مسیر اصلی دور می کنند. چیزی که قصد دارم در این کتاب به تقویت آن بپردازم، پایه های اصلی هستند، پس ما تنها زمانی به صمت جاوا می رویم که واقعا ضروری باشد.
هدوپ چیست؟
بسیاری از مردم، هدوپ را به عنوان مترادفی برای MapReduce می پندارند. این کار نوعی استفاده در هم ریخته از تکنولوژی است. هدوپ در واقع یک اکوسیستم کامل از فن آوری هایی است که فریم ورک MapReduce را به کار می گیرند. برای مثال، فایل سیستمی هدوپ(HDFS) یک فایل سیستمی است که از تکرار سازی و شاردینگ[9] برای کمینه کردن احتمال شکست استفاده می کند.
در هنگام کار با داده های بزرگ، از آنجایی که ماشین های بسیاری درگیر هستند، احتمال شکست بالاست. این مساله به پارادوکسی به نام “مشکل تولد” مربوط می شود ( این مساله واقعا یک پارادوکس نیست، بلکه مستقیما از ریاضیات پیروی می کند). یکی از نتایج “مشکل تولد”، این است که اگر شما 23 قفرد را در یک اتاق داشته باشید، احتمال این که روز تولد 2 نفر از آن ها مشترک باشد، 50 درصد است. حال اگر این تعداد به 57 نفر برسد، این احتمال، 99 درصد می شود!.
این مساله بر خلاف این واقعیت است که احتمال این که روز تولد دو نفر مشترک باشد، است.
[1] a white paper- به اسنادی گفته می شود که یک شرکت ارتقا یا نشان دادن وِژگی های یک محصول یا راه حی منتشر می کند.
[2] Doug Cutting and Mike Cafarella
[3] a simple write-once storage infrastructure
[4] دستوری در بسیاری از زبان های برنامه نویسی برای کنترل یک خط دستور دیگر
[5] هرچند در متن اصلی مشخص نکرده چه حافظه ای، اما با توجه به استفاده از واژه MEMORY، احتمالا منظور همان حافظه اصلی یا رم می باشد.
[6] در متن فقط از واژه at scale لستفاده شده است.
[7] Cluster- رایانش خوشه ای
[8] The Apache Hadoop Distributed File System
[9] نوعی پارتیشن بندی پایگاه داده که فایل های بسیار بزرگ را به فایل های کوچکتر، سریع تر و قابلیت مدیریت ساده تر تقسیم می کند.