مقدمه ای بر سیستم پردازشی Apache Storm
storm یک سیستم با قابلیت پردازش داده ها به صورت جریان داده ، قابل اعتماد، تلورانس خطا، و همچنین توزیع خطا می باشد. در storm کارها به اجزاء مختلف واگذار می شوند و هر جزء مسئولیت پردازش وظیفه خاص خود را دارد.
spout یک جزء ازstorm است که وظیفه آن دریافت ورودیهای stream و کنترل آن می باشد. spout دادها را به وسیله قسمتی که آن را bolt می نامیم انتقال دهد. یک bolt وظیفه دارد که داده ها را ذخیره کند یا آن را به bolt دیگر انتقال دهد. شما می توانید storm cluster را شبیه یک زنجیره ای از boltها تصور کنید که هر کدام در حال انتقال اطلاعات هستند تا به وسیله spout ظاهر شوند.
برای نشان دادن این مفهوم بهتر است با یک مثال ساده شروع کنیم . شب گذشته من درحال تماشای تلویزیون بودم وقتی که گویندگان شروع به صحبت در مورد سیاستمداران کردند و موضعشان در مورد موضوعات مختلف را ابراز کردند. آنها شروع کردند به تکرار نامهای مختلف و من متعجب شدم وقتی دیدم آنها نامها را در زمانهای مساوی تکرار می کنند.
زیرنویس صحبتهای گویندگان را مانند داده های ورودی تصور کنید، شما می توانید یک spout داشته باشید که همانطور که زیرنویسی می رسد آن را تحویل بگیرد سپس تحویل Bolt ها دهد، Boltها جملات را به کلمات جداگانه تبدیل کنند و درون Boltهای دیگر عبور دهد در حین عبور کلمات ، عملیات مقایسه انجام می گیرد تا تعداد تکرار آنها ثبت شود. هر Bolt می تواند کلمه ای را در خود نگهداری کند اگر مقدار دو Bolt با هم یکسان بود مقدار counter داخل database که به Bolt مورد نظر اشاره دارد به مقدار 1 واحد افزایش می یابد. در این صورت هر موقع که ما نیاز به گزارش داشته باشیم می توانیم به Database دسترسی داشته باشیم و نتیجه را مشاهده کنیم و نکته اینکه Database در هر لحظه تغییر می کند و درحال Update شدن است.
به نحوه قرارگرفتن Boltها و Spoutها و ارتباطشان با یکدیگر توپولوژی می گوییم.
حالا تصور کنید ما به راحتی می توانیم موازی سازی را برای این Boltها و Spoutها در کلاستر تعریف و پیاده سازی کنیم و سپس قدرت Storm را در این ساختار بهتر می توان درک نمود.
در یک کلاسترstorm نودها در داخل یک Master node که همیشه در حال اجراست مدیریت می شود. در storm cluster دو نوع نود وجود دارد :
1- Master Node 2-Worker Node
Master node دیمونی را اجرا می کند که آن را Nimbus می نامد که مسئولیت توزیع کدها در کلاستر، تخصیص دادن وظایف به نودهای Worker و مشاهده و زیرنظر گرفتن خطاها و معایب سیستم را بر عهده دارد.
Worker Node دیمونی را اجرا می کند که آن را Supervisor می نامد که مسئولیت اجرای توپولوژی را بر عهده دارد. یک توپولوژی در درون مشینهای متفاوت و تعداد زیادی از نودهای Worker اجرا می شود.
Storm می تواند تمام کلاسترها را بصورت یکجا در Zookeeper یا در دیسک محلی نگهداری کند. دیمونها بدون مکان هستند و می توانند به حالت خطا بروند یا حتی Reset شوند بدون اینکه برای سیستم مخرب باشند.
با تمام این تعاریف و توصیفها Storm دارای یک سری خصوصیتهای ویژه می باشد که آن را از بقیه تکنولوژی های موجود متمایز کرده است :
1- بسیار ساده برای برنامه نویسی 2- پشتیبانی از زبانهای Multi programming 3- Fault tolerant 4- مقیاس پذیر
5- قابلیت اطمینان 6- سریع 7-Transactional
نحوه نصب هدوپ به صورت Multi-Node
سیستم عامل: گنو/لینوکس
نوع نصب: Multi Node Cluster
در این آموزش به نصب هدوپ به صورت چند گره یا Multi Node پرداخته می شود. اگرچه که نمی توانیم کلاستر را به صورت کامل در این آموزش پیاده سازی کنیم ولی به صورت شبیه سازی شده ، محیط چند گره ای هدوپ را پیکربندی و نصب میکنیم که همین مراحل برای محیط واقعی هم صدق می کند.
همانطور که در شکل بالا مشاهده می کنید بر خلاف محیط تک گره ای یا Single Node که همه گره ها نقش مدیر یا Master را بازی می کنند در کلاستر چند گره ای می بایست یکی از گره ها نقش مدیر را بازی کند و بقیه گره ها نقش فرعی یا Slave را می کنند.
برای شروع ما می خواهیم هدوپ را با سه گره در کلاستر راه اندازی کنیم. در ابتدا می بایست دو سیستم عامل مجازی سازی شده در هر کدام از نرم افزار های مجازی سازی مثل VMware و Cisco را ایجاد کنیم.(آموزش راه اندازی سیستم عامل مجازی خارج از موضوع این مقاله می باشد.). پس از ایجاد یک سیستم عامل در نرم افزار مجازی سازی می توان این سیستم عامل را با استفاده از ابزار Clone نمونه سازی کرد تا از نصب دوباره و طی مراحل نصب سیستم عامل جلوگیری شود.
آدرس ها و اسامی این سه گره به شرح زیر است:
Hadoop Master: 192.168.1.15 (hadoop-master(
Hadoop Slave: 192.168.1.16 (hadoop-slave-1(
Hadoop Slave: 192.168.1.17 (hadoop-slave-2(
سیستم مدیر یا Master سیستم فیزیکی حاضر شما می باشد و دو گره فرعی یا Slave مجازی سازی می شود.
مراحل نصب:
ابتدا مطمئن شوید که بسته JDK بر روی سیستم شما نصب می باشد. زیرا که هدوپ برای کارکردن نیاز به جاوا دارد. می توانید با دستور "java –version" در خط فرمان از نصب آن اطمینان حاصل کنید. پس از نصب جاوا می بایست مطمئن شوید که فایل های جاوا از طریق متغیر JAVA_HOME در خط فرمان قابل دسترس است. در غیر اینصورت هدوپ پیغام خطای عدم وجود جاوا را صادر می کند.
برای افزودن مسیر جاوا به متغیر JAVA_HOME ، از طریق خط فرمان فایل .bashrc را که در مسیر ~/.bashrc قرار دارد را با یکی از ویرایشگرهای متنی باز کنید و دو خط زیر را به آن اضافه کنید:
1
2
|
export JAVA_HOME= /usr/local/jdk1 .7.0_71 export PATH=PATH:$JAVA_HOME /bin |
*/usr/local/jdk1.7.0_71 مسیر نصب جاوا است
پس از آن می بایست یک حساب کاربری سیستمی بسازید. با دو دستور زیر در خط فرمان حسابی با نام hadoop و کلمه عبورhadoop می سازیم:
1
2
|
useradd hadoop passwd hadoop |
در مرحله بعدی می بایست فایل مربوط به میزبان های شبکه ای را بر روی تمامی گره ها به صورت زیر ویرایش و آدرس های زیر را به آن اضافه کنید(این فایل در مسیر /etc/hosts قرار دارد):
1
2
3
4
|
# vi /etc/hosts 192.168.1.109 hadoop-master 192.168.1.145 hadoop-slave-1 192.168.56.1 hadoop-slave-2
|