نصب و راهاندازی هدوپ – بخش اول
با توجه به رهیافت سایت مهندسی داده در نشر و تولید مطالب تخصصی در حوزه کلانداده، تصمیم گرفتیم بخش جدیدی را با عنوان “کلانداده به زبان ساده” راهاندازی کنیم که مشابه با سری آموزشی “دست به کد”، با نگاهی کاربردی و عملی، راهنمای علاقهمندان به کار در این حوزه باشد.
مقدمه
هدف از این آموزش، آشنایی عملی با نحوه نصب و راهاندازی هدوپ نسخه ۳.۲ در یک سیستم مجازی برای مقاصد آموزشی است. برای این منظور و با توجه به اینکه ممکن است بسیاری از خوانندگان، با لینوکس چندان آشنا نباشند، از نگارش اوبونتوی ۲۰۱۸ نسخه سرور استفاده کردیم که تنظیمات خاصی برای راهاندازی نیاز نداشته باشد و مستندات فراوانی راجع به آن در اینترنت وجود دارد. برای نصب اوبونتو هم از نرم افزار مجازی سازی معروف VirtualBox
استفاده خواهیم کرد. اوبونتو سرور را بر روی این نرمافزار نصب نموده و با نحوه اتصال به این سرور و کار با آن، آشنا خواهیم شد و در ادامه (بخش دوم مقاله)، به صورت گام به گام، کتابخانه هدوپ را نصب کرده و تنظیمات اولیه و ضروری آنرا انجام خواهیم داد.
پیشنیازها
- نصب ورچوال باکس
- فعال سازی قابلیت مجازیسازی در بایوس
- داشتن حداقل یک گیگابایت رم و ده گیگابایت فضای هارد
- دانلود نسخه سرور اوبونتو (ترجیحاً ۲۰۱۸)
- ایجاد یک ماشین مجازی و گذاشتن فایل دانلود شده اوبونتو در سی دی رام مجازی آن
تنظیمات شبکه قبل از شروع به نصب اوبونتو
قبل از هر چیز، پیشنیازهای ذکر شده در بخش فوق را حتماً انجام دهید تا یک ماشین مجازی آماده نصب اوبونتو داشته باشید. با توجه به اینکه ما از نسخهی مجازی سیستم عامل لینوکس سرور برای کار با هدوپ و سایر نرمافزارهای پردازش کلانداده استفاده خواهیم کرد، نیاز داریم تا پیش از نصب آن، تنظیماتی را برای برقراری اتصال میان سیستم عامل میزبان (ویندوز) و مهمان (لینوکس) و به تبع آن، ارتباط لینوکس مجازی با اینترنت انجام دهیم. لذا قبل از شروع به نصب لینوکس مجازی، میبایست در حالتی که ماشین مجازی خاموش است، در بخش تنظیمات شبکه، آداپتور اول را مطابق شکل ۱، به Host-only Adaptor
و آداپتور دوم را مطابق شکل ۲، به NAT
تغییر دهیم. در واقع با آداپتور اولی اتصال میان سیستم عامل میزبان (در اینجا ویندوز) و سیستم عامل مهمان در یک شبکهی محلی مجازی ایجاد میگردد، و با آداپتور دومی هم امکان اتصال به اینترنت برای سیستم عامل مجازی و البته ساخت یک کلاستر از سیستمهای مجازی میسر خواهد شد.
البته یک راه دیگر هم برای تنظیمات شبکه این سیستم مجازی بخصوص هنگامی که با تنظیمات فوق امکان اتصال به سیستم میهمان یا اینترنت را نداشتید، این است که تنها آداپتور اول را به Bridged Adaptor
تنظیم نمائیم و در قسمت Name
، آداپتوری از سیستم عامل میزبان را انتخاب نمائیم که به اینترنت متصل است و قرار است که مانند یک پل عمل نماید. در اینصورت امکان ارتباط میان سیستم عاملهای میزبان و مهمان، ارتباط میان سیستم عاملهای مهمان (کلاستر) و نیز ارتباط میان سیستم عاملهای مهمان با شبکههای خارجی (مانند اینترنت) برقرار میگردد.
جدول ۱ انواع گزینههای در دسترس برای تنظیمات شبکه در مورد سیستم عاملهای مجازی را به همراه میزان سطح دسترسی آنها نشان میدهد.
بعد از این مرحله و تنظیم کارت شبکههای سیستم میهمان، کافی است فایل ISO
اوبونتو سرور ۲۰۱۸را بعد از دانلود[۱]، درون درایو نوری این سیستم عامل مجازی قرار دهید و ماشین را روشن کنید تا فرآیند نصب آغاز شود. تکمیل فرآیند نصب نیاز به دانش چندانی ندارد و با یک جستجوی ساده در اینترنت خواهید توانست آنرا با چند کلیک به پایان برسانید. لازم به ذکر است که ما در این محتوای آموزشی، مطابق شکل ۳، نام مالک سیستم را HadoopTrain
، نام سرور یا همان hostname
را userver18
، نام کاربری را hduser
و رمز عبور را هم ۱۲۳۴۵۶
تنظیم نمودهایم.
اجرای دستورات با امتیاز اَدمین
پس از اتمام نصب و با روشن کردن ماشین مجازی، صفحه لاگین به سرور اوبونتو را مشاهده خواهید کرد که کافی است با نام کاربری hduser
و رمز ۱۲۳۴۵۶
وارد سیستم شوید. بعد از ورود به سیستم، همواره نام کاربر را در کنار نام سرور در خط فرمان مشاهده خواهید کرد.
کاربر hduser
که هنگام نصب اوبونتو ساخته شده است، به صورت خودکار عضو گروه کاربران اصلی سیستم (super users
) است و تمامی دستوراتی که نیاز به مجوز کاربران اصلی دارد با همین کاربر قابل اجراست؛ کافی است قبل از این نوع دستورات که در ادامه به آنها خواهیم رسید، عبارت sudo
را به کار بریم که معرف عبارت "super user do!"
میباشد که با این کار، قبل از اجرای دستور مورد نظر، رمز عبور کاربر جاری (در اینجا hduser
) باید وارد شود.
راه دوم برای اجرای دستوراتی با امتیاز اَدمین، این است که از همان ابتدا به کاربر root
که کاربر اصلی لینوکس است و به صورت پیشفرض قابل دسترسی نمیباشد، تغییر کاربری دهیم. در مورد تغییر کاربری به کاربر روت باید از دستور su
که مخفف Switch User
میباشد استفاده نمائیم که چون این دستور هم نیاز به مجوز کاربران اصلی دارد، باید آنرا به صورت sudo su
اجرا کنیم. پس از اجرای این دستور و وارد کردن رمز کاربر جاری که خود عضو گروه کاربران اصلی سیستم است، اختیارات تام کاربر روت به شما داده خواهد شد. علاوه بر این، نماد $ که همواره در ابتدای خط فرمان دیده میشود، پس از اجرای این دستور به نماد # تغییر پیدا خواهد کرد که در واقع هشداردهندهی آن است که شما در حالت اجرائی تام یا همان روت قرار دارید و باید در مورد دستورات وارده محتاط باشید! جهت بازگشت به کاربر عادی سابق، باز هم میتوان از همان دستور su و به صورت su username
استفاده کرد، که در اینجا username
معادل با hduser
میباشد.
نکتهی مهم اینجاست که بهتر است جهت حفظ امنیت سیستم و جلوگیری از آسیبدیدن فایلهای حیاتی آن به صورت سهوی، از استفادهی دائم از کاربر روت خودداری نمائیم و هر زمان که نیاز بود تا دستوری را با اختیارات روت اجرا کنیم، از همان دستور sudo
و به صورتی که قید گردید استفاده نمائیم. نکتهی دیگر در مورد لینوکس سرور آن است که کاربر روت پس از نصب سیستم عامل، به صورت پیشفرض دارای رمز عبور نمیباشد و باید با استفاده از دستور sudo passwd
برای آن یک رمز عبور دلخواه تعیین نمود.
بررسی تنظیمات کارتهای شبکه
در ادامه مسیر نیاز خواهیم داشت که با نرمافزارهایی مانند Putty
به این سرور متصل شویم. به همین منظور بهتر است در این مرحله، تنظیمات کارتهای شبکه سیستم بخصوص آدرس IP
آنها را بررسی کنیم. برای این منظور از دستور ifconfig
استفاده میکنیم. شکل ۴ خروجی این دستور را نشان میدهد:
بسته به تعداد کارت شبکهای که برای این سیستم مجازی انتخاب کردهایم، اطلاعات دو یا سه کارت شبکه را به صورت فوق مشاهده خواهیم کرد. یکی از این کارتها که با نام lo در شکل فوق دیده میشود، کارت شبکه محلی سیستم یا همان آدرس loopback
با آدرس ثابت ۱۲۷٫۰٫۰٫۱
میباشد که در هر سیستمعاملی، چه مجازی و چه واقعی وجود دارد. آدرس IP اختصاص یافته به سایر کارتهای شبکه به همراه اطلاعات تخصصی هر یک، با این دستور نمایش داده خواهد شد که از این اطلاعات برای اتصال به این سرور استفاده خواهیم کرد. در شکل فوق، آدرس آی پی کارت شبکه اول ( Host Only Adapter
) عبارت است از ۱۹۲٫۱۶۸٫۵۶٫۱۱۲
و آدرس آیپی کارت شبکه دوم ( NAT Adapter
) هم ۱۰٫۰٫۳٫۱۵
است. آدرس آیپی کارت شبکه اول را به خاطر بسپارید و یا آنرا برای خودتان یادداشت کنید.
نصب نرمافزارهای لازم برای اتصال به سرور هدوپ
برای اینکه راحتتر با سرور هدوپ کار کنیم و ویرایش فایلها یا کپی از ویندوز به سرور لینوکس و بالعکس را سریعتر انجام دهیم، نیاز به دو ابزار بسیار کاربردی داریم: WinSCP و PuTTY. اولی برای مدیریت فایلها بین سیستم عامل ویندوز و سیستم عامل مجازی و دومی برای اتصال به سیستم عامل مجازی از راه دور و اجرای دستورات لینوکس به کار میرود. نسخه نصبی این دو نرم افزار را که حجم کمی هم دارند، دانلود کرده و آنها را در ویندوز یا همان سیستم عامل میزبان نصب کنید. حال WinSCP
را باز کرده و یک اتصال جدید با آدرس آیپی کارت شبکهای که در بالا یادداشت کردهاید و نام کاربری و رمز عبوری که چند مرحله قبل تنظیم کردهاید بسازید، آن را ذخیره کرده و دکمه Login
را بزنید. با این کار باید به سرور هدوپ وصل شده و در یک پنل دو قسمتی، هم فایلهای ویندوز و هم فایلهای لینوکس را مشاهده کنید .
به این ترتیب و به کمک این نرمافزار ساده و کاربردی، میتوانید فایلها را بین دو سیستمعامل به سهولت جابجا کنید. از طرفی برای ویرایش سریع یک فایل در سرور هدوپ، کافی است آنرا انتخاب کرده و بر روی آن دابلکلیک کنید تا ویرایشگر متنی WinSCP
درون ویندوز باز شود؛ بعد از ویرایش و ذخیره فایل، به صورت خودکار، تغییرات به سرور اصلی منتقل خواهد شد. هنگامی که گفته می شود فایلی را به فلان پوشه لینوکس منتقل کنید و یا فایل خاصی را درون لینوکس ویرایش کنید، پیشنهاد میکنیم از این روش استفاده کنید.
دقت کنید که تنها مجاز به کپی فایلها از ویندوز به پوشه مخصوص کاربر هستید یعنی پوشه /home/hduser
. بنابراین فایلهای موردنیاز برای انتقال به لینوکس را ابتدا در این پوشه کپی کنید و سپس درون خط فرمان لینوکس و با امتیاز ادمین، فایلها را به پوشه مد نظر خود منتقل نمایید.
ویرایش فایلهای سیستمی اوبونتو درون WinSCP
، در حالت عادی امکانپذیر نیست چون برای این کار، نیاز به مجوزهای کاربر ادمین داریم؛ با توجه به سیاستهای امنیتی پیشفرض اوبونتو که ورود رمز عبور برای اجرای دستور sudo
را منوط به ورود مستقیم آن در ترمینال توسط کاربر کرده و ارسال آن از طریق نرمافزارهای واسط مانند WinSCP
را مجاز نمیشمارد، این کار امکانپذیر نخواهد بود. هر چند میتوان این سیاستها را تغییر داد اما در ادامه آموزش، برای ویرایش فایلهای سیستمی سرور هدوپ از ویرایشگرهای خط فرمان آن با استفاده از دستور sudo
بهره خواهیم برد.
هنگامی که WinSCP
باز است و به سرور لینوکس متصل هستید، با زدن کلیدهای ترکیبی ctrl+p
، ابزار PuTTY
باز خواهد شد و از شما رمز عبور کاربر فعلی را خواهد خواست، به این ترتیب وارد خط فرمان لینوکس شده و دستورات بعدی را در این محیط وارد خواهید کرد. شکل ۶ نمائی از اولین اجرای نرمافزار PuTTY
را با استفاده از یوزر hduser
نشان میدهد.
مزیّت PuTTY
نسبت به اجرای مستقیم دستورات از طریق VirtualBox
این است که همزمان چندین پنجره از آن میتوانید باز کنید و دستورات مختلف لینوکس را همزمان اجرا کنید. امکان کپی کردن متن بین دوسیستم عامل هم در این نرمافزار راحتتر است.
برای کپی کردن یک قطعه متن از درون PuTTY
و انتقال آن به حافظه، با موس متن مورد نظر را انتخاب کنید و سپس دکمهی Enter
را فشار دهید تا محتوای آن به درون حافظهی ClipBoard
منتقل شود. این حافظه بین ویندوز و سرور هدوپ مشترک است و بنابراین متن کپی شده به راحتی درون ویندوز قابل استفاده است. برای بازنشانیکردن هر متنی که در ClipBoard
مشترک قرار دارد هم کافیست از راستکلیک در PuTTY
استفاده نمائید.
به جای WinScp
و Putty
میتوانید از نرم افزار Bitvise SSH Client
که در همان سایت رسمی Putty
معرفی شده است هم استفاده کنید که ابزاری به نسبت مدرنتر و جمع و جورتر است.
پیش نیازهای نصب هدوپ بر روی سرور لینوکس
پیشنیازهای نصب هدوپ طبق مستندات سایت رسمی[۲] آن، دو مورد زیر است :
- نصب نسخه JDK جاوا و تنظیمات مربوطه که برخی کتابخانههای هدوپ به آنها نیاز خواهند داشت.
- نصب و پیکربندی SSH به عنوان پیشنیاز ضروری اجرای سرویسهای پایه هدوپ
در ادامه تکتک این مراحل را با هم انجام میدهیم.
نصب کتابخانه توسعه جاوا (JDK)
همانطور که احتمالاً میدانید، جاوا یکی از رایجترین زبانهای توسعه نرمافزارهای حرفهای متنباز دنیاست که بسیاری از پروژههای کلانداده هم با این زبان توسعه داده شده است و به همین دلیل، نیازمند کتابخانه اصلی توسعه و تولید برنامههای جاوا[۳] برای نصب و راهاندازی هدوپ هستیم. بر روی اوبونتو به صورت پیشفرض، این کتابخانه نصب نیست اما بهتر است ابتدا با دستور زیر، وجود آنرا در سیستم بررسی کنید : (علامت $ نشانگر خط فرمان لینوکس است و آنرا وارد نکنید):
$ java -version
اگر خروجی “Command 'java' not found”
را مشاهده کردید، به معنی این است که کتابخانه توسعه جاوا نصب نشده است. اطمینان حاصل کنید که اینترنت شما وصل باشد و سپس دستور زیر را برای نصب جاوا و کتابخانههای مرتبط درون خط فرمان لینوکس اجرا کنید:
$ sudo apt-get install openjdk-8-jdk
حدود ۴۵۰ مگابایت برای نسخه ۸ جاوا نیاز به دانلود خواهید داشت. برای نسخه ۳ هدوپ، توصیه میکنیم که از همین نسخه جاوا استفاده کنید چون اکوسیستم هدوپ حاوی کتابخانههای بسیار زیادی است و ممکن است برخی از آنها با نسخههای جدید جاوا مشکل داشته باشند.
اگر برای اولین بار است که دستور apt-get
را برای نصب یک بسته نرمافزاری در اوبونتو اجرا میکنید، ابتدا باید آدرس مخازن دانلود بستهها را به روز رسانی کنید و گرنه با پیغامی مبنی بر یافت نشدن بسته مورد نظر، مواجه خواهید شد. برای انجام این امر، در ابتدای کار دستور زیر را اجرا کنید و سپس به نصب بستههای نرمافزاری مورد نیاز بپردازید : $ sudo apt-get update
بعد از نصب جاوا، نیاز به تنظیم متغیر محیطی $JAVA_HOME
خواهید داشت. توضیح اینکه متغیرهای محیطی[۴]، متغیرهایی هستند که در سطح سیستمعامل مقداردهی میشوند و در اختیار تمامی برنامهها قرار میگیرند. متغیر محیطی $JAVA_HOME
حاوی آدرس محل نصب کتابخانه جاوا در سیستم است که نرمافزارهای مختلف برای کار با جاوا به آن نیاز دارند. برای مقداردهی به این متغیر ابتدا باید آدرس پوشه حاوی فایلهای اجرایی جاوا را پیدا کنید. میتوانید از WinSCP
کمک گرفته و پوشه /usr/lib/jvm
را بررسی کنید. این آدرس میتواند به صورت زیر باشد:
/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre
میتوانید با دستور زیر هم آدرس جاوای سیستم خود را به دست آورید:
readlink -f /usr/bin/java | sed "s:bin/java::"
بعد از یافتن آدرس محل نصب جاوا در سیستم، یک راه ساده برای تنظیم متغیر محیطی $JAVA_HOME
استفاده از دستور export
در فایل /etc/profile
است؛ فایلی که هنگام لاگین کاربر به سیستم به صورت خودکار اجرا میشود. فایل /etc/profile
را به صورت زیر ویرایش کنید :
$ sudo nano /etc/profile
مقادیر زیر را در انتهای فایل وارد کرده، فایل را ذخیره کنید :
export JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre"
export PATH=$JAVA_HOME/bin:$PATH
دستور فوق، ویرایشگر nano
را برای ویرایش فایل ذکر شده باز میکند. برای افزودن دو خط فوق به انتهای این فایل هم کافی است با کلیدهای جهتی به انتهای فایل بروید و دستورات فوق را تایپ کرده، با زدن کلید ترکیبی Ctrl+O
، تغییرات را ذخیره کنید. با فشردن Ctrl+X
از محیط ویرایشگر خارج شوید.
میتوانید به صورت زیر هم نسخه متغیر $JAVA_HOME
را مقداردهی کنید که اگر احیاناً جاوای جدیدی نصب کردید، نیاز به تنظیم دستی این متغیر نباشد و خود سیستم، همیشه آدرس جدیدترین جاوای نصب شده را در این متغیر بریزد : export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")
export PATH=$JAVA_HOME/bin:$PATH.
با توجه به اینکه قبلاً لاگین کردهاید، برای اعمال این تغییرات از دستور زیر استفاده کنید :
$ source /etc/profile
با دستور زیر بررسی کنید که متغیر محیطی $JAVA_HOME
مقدار درست به خود گرفته است :
$ echo $JAVA_HOME
حال مجددا دستور ابتدای این بخش را برای به دست آوردن نسخه جاوای سیستم اجرا کنید که این دفعه اگر همه چیز درست انجام شده باشد، باید نسخهی ۱٫۸ را مشاهده کنید.
نصب SSH
برای نصب ssh و پیشنیازهای آن که هدوپ برای اجرای سرویسهای اصلی خود به آن نیاز دارد،کافی است دستور زیر را اجرا کنید :
$ sudo apt-get install ssh
SSH چیست ؟
سرویس Secure Shell یا به اختصار SSH، یک پروتکل رمزنگاری شبکه است که برای عملکرد سرویسهای شبکه به صورت امن در یک شبکهی غیرامن مورد استفاده قرار میگیرد. از جمله کاربردهای معمول SSH، ورود به سیستم از راه دور و از طریق خطفرمان و نیز اجرای فرامین از راه دور میباشد، اما هر سرویس شبکهای دیگری نیز میتواند از طریق SSH رمزگذاری و اجرا شود.
تولید و تنظیم کلیدهای رمز برای سهولت اتصال به سرور هدوپ
برای اینکه جهت لاگین به سرور هدوپ در ویندوز از طریق WinSCP
و PuTTY
نیاز به ورود مداوم نام کاربری و رمز عبور نداشته باشیم، از سرویس SSH
که پیش از این توضیح داده شد بهره میبریم. لذا باید ابتدا یک جفت کلید عمومی-خصوصی را به صورت دستی تولید کنیم و کلید عمومی را بر روی سرور هدوپ قرار داده و کلید خصوصی را در سمت کاربر حفظ کنیم. بدینترتیب در ابتدا یک پنجرهی PuTTY
را باز کرده و با دستور cd ~
به پوشهی هوم کاربر فعلی میرویم. حال در این پوشه دستور زیر را اجرا میکنیم:
$ ssh-keygen
این سادهترین شکل استفاده از دستور ssh-keygen
بدون هیچ آرگومان ورودی میباشد. در ادامه این ابزار از شما خواهد پرسید تا نام کامل (آدرس + نام) فایلی را که میخواهید کلید خصوصی رمز در آن ذخیره شود، وارد کنید. محل ذخیرهسازی کلیدها به صورت پیشفرض، مسیر ~/.ssh
و نام فایل حاوی کلید خصوصی هم id_rsa
میباشد که به همین مقادیر بسنده میکنیم.
کاراکتر ~ در لینوکس نشانگر آدرس پوشه home یا پوشه اختصاصی کاربر جاری است که برای کاربر hduser این آدرس برابر /home/hduser است.
در ادامه از شما پرسیده خواهد شد تا یک عبارت رمز را برای رمزنگاری کلید تولیدی وارد نمائید تا در صورت لو رفتن کلید خصوصی، کسی نتواند از آنها سوءاستفاده نماید. لازم به ذکر است که این عبارت رمز میبایست که به لحاظ اصول رمزنگاری قوی باشد. ما در این محتوای آموزشی از ارائهی این رمز خودداری کرده و آن را به صورت پیشفرض خالی رها مینمائیم. با اجرای این دستور، کلید رمز عمومی با نام id_rsa.pub
و کلید رمز خصوصی با نام id_rsa
در پوشه ~/.ssh
تولید خواهد شد. شکل ۷ نمائی از خروجی دستور ssh-keygen
را نشان میدهد.
برای اینکه بتوانیم از سیستم تأیید با استفاده از کلید عمومی بهره ببریم، باید کلید عمومی را بر روی سرور کپی کرده و آنرا به فایل authorized_keys
اضافه نماییم. این امر با استفاده از دستور ssh-copy-id
به راحتی قابل انجام است. مانند زیر:
$ sudo ssh-copy-id hduser@userver18
البته دستور فوق با پیش فرض اینکه کلیدها در پوشه ~/.ssh
و با نامهای id_rsa
و id_rsa.pub
موجود هستند، اجرا خواهد شد و برای تنظیمات پیشرفتهتر آن باید به مستندات آن، رجوع کنید.
این دستور به سرور میزبان لاگین کرده و کلیدها را به درون سرور کپی مینماید و با اضافهکردن آنها به فایل authorized_keys
اجازهی دسترسی لازم به کاربران مربوطه را خواهد داد. شکل زیر خروجی این دستور را نشان میدهد. دقت کنید که در جواب پیام ظاهر شده در هنگام اجرای این دستور، حتماً گزینه yes
را تایپ کنید :
اکنون همه چیز آماده نصب و اجرای هدوپ در این سرور است. در بخش دوم این آموزش به نصب و پیکربندی هدوپ بر روی این سرور خواهیم پرداخت.
توضیحات
[۱] https://www.ubuntu.com/download/server
[۲] https://hadoop.apache.org/docs/r3.2.0/
[۳] Java Development Kit
[۴] Environmental Variables
بی صبرانه منتظر قسمت بعدی هستیم…
تا آخر هفته منتشر می شه. ممنون از نظر دلگرم کننده شما .
خیلی خیلی ممنون
منتظر قسمت بعدی هستیم
ممنون از شما. روی سایت قرار گرفت