<

عصر هدوپ

آشنایی با Big Data و کار با Hadoop

عصر هدوپ

آشنایی با Big Data و کار با Hadoop

عصر هدوپ
بایگانی

مطلب ۷ : آموزش نصب و راه اندازی هدوپ

چهارشنبه, ۱۹ آذر ۱۳۹۳، ۱۰:۲۱ ق.ظ

نصب و اجرای هدوپ بروی یک ماشین به منظور تست و بررسی اولیه، کار بسیار ساده ای می باشد.

هدوپ به سه حالت نصب می شود:

•  Standalone

در این حالت هیچ یک از Server Role ها (Daemons) نصب نمی شوند (در قسمت های بعدی به آنها خواهیم پرداخت) و تنها یک JVM وظیفه اجرا را به عهده می گیرد. این حالت برای تست و بررسی اولیه برنامه های نوشته شده در MapReduce کاربرد دارد.

•  Pseudo-distributed

در این حالت تمامی Server Role ها (Daemons) بروی یک ماشین نصب می شوند، بنابراین امکان ایجاد یک کلاستر شبیه سازی شده در ابعاد کوچکتر را فراهم می سازد.

•  Fully distributed

در این حالت تمامی Server Role ها (Daemons)  بروی کلاستری از ماشین ها نصب می شوند. این حالت در محیط های عملیاتی مورد استفاده قرار می گیرد.

برای اجرای هدوپ در یکی از سه حالت ذکر شده می بایست به دو نکته دقت شود: Property های مورد نیاز هر حالت مقداردهی شوند، Server Role های (Daemons) هدوپ Start شوند. در حالت Standalone یا Local، فایل سیستم محلی و MapReduce محلی مورد استفاده قرار می گیرد، درمقابل برای دیگر حالت ها HDFS و Server Role های (Daemons) مربوط به MapReduce شروع به کار می کنند.

پیش نیاز ها:

هدوپ با زبان برنامه نویسی Java نوشته شده است، بنابراین یک نسخه (6 و یا بالاتر) از Java می بایست روی سیستم (های) مورد نظر نصب گردد. 

هدوپ روی Unix و Windows نصب و اجرا می شود. Linux تنها بستری است که به منظور نصب و راه اندازی عملیاتی مورد استفاده قرار می گیرد، اما دیگر سیستم عامل های Unix (مانند Max OS X) تنها می توانند به منظور اجرای هدوپ در محیط Development مورد استفاده قرار گیرند. Windows هم امکان استفاده از هدوپ را تنها در محیط Development دارد، که برای این کار نیاز به نصب Cygwin می باشد.

 سیستم عامل مورد نظر ما Linux می باشد.


مراحل نصب هدوپ (Standalone) :

ابتدا یک ترمینال در محیط Linux باز نموده و مراحل زیر را به ترتیب اجرا نمایید.

مرحله اول : نصب Java (نسخه 6 و یا بالاتر)

Linux command => sudo apt-get install openjdk-6-jdk

برای تست صحت نصب، فرمان زیر را وارد نمایید.

Linux command => java -version

خروجی :

"java version 1.6.0_33"

OpenJDK Runtime Environment (IcedTea6 1.13.5) (6b33-1.13.5-1ubuntu0.10.04)

OpenJDK Server VM (build 23.25-b01, mixed mode)

مرحله دوم : می بایست یک نسخه Stable از هدوپ را از Apache Hadoop release page دانلود نموده و Extract نماییم. بعد آن را به یک مکان دلخواه انتقال می دهیم.

Linux command => wget http://apache.claz.org/hadoop/common/stable/hadoop-2.6.0.tar.gz

Linux command => tar -zxvf hadoop-2.6.0.tar.gz

Linux command => sudo cp -r hadoop-2.6.0 /usr/local/hadoop

مرحله سوم : به منظور دسترسی آسانتر به دایرکتوری های Java و هدوپ، به ازای هر کدام یک متغیر محیطی تعریف می نماییم. لازم به ذکر است که متغیرهای محیطی در اینجا به گونه ای تعریف می شوند که درصورت بسته شدن ترمینال از بین خواهند رفت.

Linux command => export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk

Linux command => export HADOOP_PREFIX=/usr/local/hadoop

Linux command => export PATH=$PATH:$HADOOP_PREFIX/bin

مرحله چهارم: اجرا و تست هدوپ

Linux command => hadoop version  

خروجی:

Hadoop 2.6.0

Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r e3496499ecb8d220fba99dc5ed4c99c8f9e33bb1

Compiled by jenkins on 2014-11-13T21:10Z

Compiled with protoc 2.5.0

From source with checksum 18e43357c8f927c0695f1e9522859d6a

This command was run using /usr/local/hadoop/share/hadoop/common/hadoop-common-2.6.0.jar

حال می توان مثال آورده شده در مطلب شماره 6 را با یک مجموعه داده کوچک اجرا و تست نمود. برای این کار ابتدا کدهای نوشته شده در آن مطلب را با استفاده از یکی از محیط های برنامه نویسی جاوا تبدیل به یک JAR فایل می کنیم. 


MaxTemperature.jar      Sample.txt


سپس مراحل زیر را به ترتیب انجام می دهیم:

Linux command => export HADOOP_CLASSPATH=MaxTemperature.jar

Linux command => hadoop MaxTemperature Sample.txt output

خروجی :

….

14/12/09 13:00:15 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_local223793241_0001

….

14/12/09 13:00:16 INFO mapred.LocalJobRunner: Starting task: attempt_local223793241_0001_m_000000_0

….

14/12/09 13:00:16 INFO mapred.LocalJobRunner: Starting task: attempt_local223793241_0001_r_000000_0

….

File System Counters

FILE: Number of bytes read=14990

FILE: Number of bytes written=510737

FILE: Number of read operations=0

FILE: Number of large read operations=0

FILE: Number of write operations=0

….

وقتی فرمان هدوپ با استفاده از نام یک کلاس MaxTemperature به عنوان اولین پارامتر فراخوانی می شود، باعث بالا آمدن JVM به منظور اجرای آن کلاس می شود. بعد با استفاده از JAR فایل معرفی شده در متغیر محیطی HADOOP_CLASSPATH کلاس های مربوط به Map و Reduce استخراج می شوند. Sample.txt به عنوان ورودی معرفی می شود که مسیر آن دایرکتوری جاری است. output به عنوان دایرکتوری خروجی معرفی می شود که مسیر آن نیز دایرکتوری جاری خواهد بود. نکته مهم این که در هر بار اجرا می بایست دایرکتوری output حذف شده در غیر اینصورت هدوپ به منظور جلوگیری از Data Loss از اجرای مجدد جلوگیری می نماید.

خروجی بدست آمده از اجرای یک Job حاوی اطلاعات مفیدی می باشد. برای مثال، می توان دید که به Job یک شناسه (ID: job_local223793241_0001) تخصیص داده شده است، و یک map task و یک reduce task اجرا شده است (با ID های attempt_local223793241_0001_m_000000_0 و attempt_local223793241_0001_r_000000_0). دانستن این اطلاعات در زمانی که نیاز به دیباگ Job های MapRedcue می باشد بسیار مهم خواهد بود.

قسمت آخر خروجی که با عنوان "Counters" مشخص شده است، آمار و ارقامی است که هدوپ به ازای هر Job در حال اجرا تولید می نماید. آنها اطلاعاتی مفیدی هستند که به واسطه آن می‌توان تشخیص داد که میزان داده پردازش شده همان مقداری است که شما انتظار داشته‌اید یا خیر. برای مثال، می‌توان تعداد رکوردهایی که وارد سیستم می‌شوند را دنبال نمود: تعداد رکوردهایی که به map ها و یا reducer ها وارد و یا از آنها خارج می‌شوند در اینجا قابل بررسی می باشند.

در دایرکتوری output به ازای هر reducer یک فایل output به وجود می آید. از آنجایی که Job اجرا شده تنها یک reducer دارد، لذا ما یک فایل خروجی با نامpart-r-00000 خواهیم داشت.

Linux command => cat output/part-r-00000

خروجی :

1950  138

1951  138

1952  138

1953  138

1954  138


Hadoop: The Definitive Guide by Tom White

استفاده از این مطلب با ذکر منبع بلامانع می باشد.

نظرات  (۸)

سلام؛ خدا قوت، دست شما درد نکنه. حتما امتحان می کنم.
پاسخ:
سلام، خواهش می کنم.
موفق باشید.
سلام خیلی خوب بود...
پاسخ:
سلام. تشکر.
باسلام
من مطابق با دستورات عمل کردم اما وقتی که دستور hadoop version رو نوشتم پیغام زیر را نوشت:
/usr/local/hadoop/bin/hadoop: line 144: /usr/lib/jvm/java-1.6.0-openjdk/bin/java: No such file or directory
علت چیست؟
متشکرم
پاسخ:
سلام. 
جاوا در مسیر دیگری نصب شده است. مطمئن شوید که مسیر جاوا شما درست است در غیر این صورت مسیر جاوا خودتان را در نصب هدوپ معرفی نمایید.

موفق باشید.
باسلام
ممنون به جای این دستور
export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk
اینو نوشتم درست شد
export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-i386
پاسخ:
سلام. خواهش می کنم.
موفق باشید.
عالی بود دستت درد نکنه
salam
$:hadoop version
hadoop: command not found


پاسخ:
سلام،
اگر مراحل نصب و راه اندازی را به ترتیبی که وجود دارد اجرا کنید، به این خطا بر نخواهید خورد.

موفق باشید.
ممکنه نحوه ی نصب هادوپ با استفاده از VM ware رو روی ویندوز هم اموزش بدین 
ممنون میشم
سلام وخسته نباشید
من با شبیه ساز روی ویندوز لینوکس نصب کردم و میخاستم هادوپ را نصب کنم طبق آموزشتون ولی نمیشه میخاستم راهنماییم کنید چیکار باید کرد؟؟
ممنون میشم پاسخ بدید
پاسخ:
سلام

سوال شما خیلی کلی است. اگر ممکن کمی جزئی تر موضوع خود را بیان کنید.

باتشکر.

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی