Hadoop: راهاندازی یک خوشه تکگرهای
هدف
این سند توضیح میدهد چگونه یک نصب Hadoop تکگرهای را راهاندازی و پیکربندی کنید تا بتوانید به سرعت عملیات سادهای با استفاده از MapReduce Hadoop و سیستم فایل توزیعشده Hadoop (HDFS) انجام دهید.
توجه: تمام خوشههای Hadoop تولیدی از Kerberos برای احراز هویت تماسگیران و دسترسی امن به دادههای HDFS استفاده میکنند، همچنین دسترسی محدود به خدمات محاسباتی (YARN و غیره) را محدود میکنند.این دستورالعملها شامل ادغام با هیچ سرویس Kerberos نمیشوند، همه کسانی که یک خوشه تولیدی را ایجاد میکنند باید اتصال به زیرساخت Kerberos سازمان خود را به عنوان بخش کلیدی از پیادهسازی در نظر بگیرند.
پیشنیازها
پلتفرمهای پشتیبانی شده
GNU/Linux به عنوان یک پلتفرم توسعه و تولید پشتیبانی میشود. Hadoop در خوشههای GNU/Linux با 2000 گره نشان داده شده است.
نرمافزارهای مورد نیاز
– باید Java™ نصب باشد. نسخههای پیشنهادی Java در HadoopJavaVersions توصیف شده است.
– ssh باید نصب شده و sshd باید در حال اجرا باشد تا از اسکریپتهای Hadoop استفاده شود که دیمونهای Hadoop را از راه دور مدیریت میکنند، در صورت استفاده از اسکریپتهای start و stop اختیاری. علاوه بر این، توصیه میشود که pdsh نیز نصب شود تا مدیریت بهتری از منابع ssh انجام شود.
نصب نرمافزار
اگر خوشه شما دارای نرمافزارهای لازم نباشد، باید آنها را نصب کنید.
برای مثال در لینوکس اوبونتو:
$ sudo apt-get install ssh
$ sudo apt-get install pdsh
دانلود
برای دریافت یک توزیع Hadoop، یک نسخه پایدار اخیر را از یکی از آینههای دانلود Apache بارگیری کنید.
آمادهسازی برای شروع خوشه Hadoop
بستهی Hadoop دانلود شده را باز کنید. در توزیع، فایل etc/hadoop/hadoop-env.sh را ویرایش کنید و برخی پارامترها را به شکل زیر تعریف کنید:
# مقدار دهی به ریشه نصب جاوا
export JAVA_HOME=/usr/java/latest
امتحان دستور زیر را انجام دهید:
$ bin/hadoop
این دستور مستندات استفاده از اسکریپت hadoop را نمایش میدهد.
اکنون شما آماده شروع خوشه Hadoop خود در یکی از سه حالت پشتیبانی شده هستید:
– حالت محلی (Standalone)
– حالت نیمه-توزیعشده
– حالت کاملاً توزیعشده
عملیات مستقل
به طور پیشفرض، Hadoop برای اجرا در حالت غیرتوزیعشده تنظیم شده است، به عنوان یک فرآیند جاوا تکی این برای اشکالزدایی مفید است.
مثال زیر دایرکتوری conf را کپی میکند تا برای ورود به استفاده شود و سپس هر تطابق با عبارت منظم داده شده را پیدا و نمایش میدهد. خروجی به دایرکتوری خروجی داده میشود.
$ mkdir input
$ cp etc/hadoop/*.xml input
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar grep input output ‘dfs[a-z.]+’
$ cat output/*
عملیات نیمه-توزیعشده
Hadoop همچنین میتواند در حالت نیمه-توزیعشده بر روی یک گره تکی اجرا شود که در آن هر دیمون Hadoop در یک پردازش جاوا جداگانه اجرا میشود.
پیکربندی
از موارد زیر استفاده کنید:
etc/hadoop/core-site.xml:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
etc/hadoop/hdfs-site.xml:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
راهاندازی اتصال SSH بدون نیاز به گذرواژه
اکنون بررسی کنید که بتوانید به localhost بدون نیاز به گذرواژه متصل شوید:
$ ssh localhost
اگر نتوانید بدون نیاز به گذرواژه به localhost متصل شوید، دستورات زیر را اجرا کنید:
$ ssh-keygen -t rsa -P ” -f ~/.ssh/id_rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys
اجرا
دستورات زیر برای اجرای یک کار MapReduce به صورت محلی استفاده میشوند. اگر میخواهید یک کار را بر روی YARN اجرا کنید، راهنمای YARN در یک گره تک را ببینید.
فرمت دادهسازی فایل سیستم:
$ bin/hdfs namenode -format
شروع دیمون NameNode و دیمون DataNode:
$ sbin/start-dfs.sh
خروجی لاگ دیمون Hadoop در دایرکتوری $HADOOP_LOG_DIR نوشته میشود (به صورت پیشفرض در $HADOOP_HOME/logs).
صفحه وب NameNode را مشاهده کنید؛ به طور پیشفرض در دسترس است:
NameNode – http://localhost:9870/
پوشههای HDFS لازم برای اجرای کارهای MapReduce را ایجاد کنید:
$ bin/hdfs dfs -mkdir -p /user/<username>
فایلهای ورودی را به فایلسیستم توزیعشده کپی کنید:
$ bin/hdfs dfs -mkdir input
$ bin/hdfs dfs -put etc/hadoop/*.xml input
چندین نمونه از مثالهای ارائه شده را اجرا کنید:
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar grep input output ‘dfs[a-z.]+’
فایلهای خروجی را بررسی کنید: فایلهای خروجی را از فایلسیستم توزیعشده به فایلسیستم محلی کپی کرده و آنها را بررسی کنید:
$ bin/hdfs dfs -get output output
$ cat output/*
یا
فایلهای خروجی را در فایلسیستم توزیعشده مشاهده کنید:
$ bin/hdfs dfs -cat output/*
وقتی کار تمام شد، دیمونها را با دستور زیر متوقف کنید:
$ sbin/stop-dfs.sh
YARN در یک گره تک
میتوانید یک کار MapReduce را در YARN به حالت نیمه-توزیعشده اجرا کنید با تنظیم چندین پارامتر و اجرای دیمون ResourceManager و دیمون NodeManager به علاوه.
دستورات زیر فرض میکنند که مراحل ۱ تا ۴ از دستورات فوق از قبل انجام شده است.
پارامترها را به صورت زیر پیکربندی کنید:
etc/hadoop/mapred-site.xml:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.application.classpath</name>
<value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
</property>
</configuration>
etc/hadoop/yarn-site.xml:
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,
HADOOP_YARN_HOME,HADOOP_HOME,PATH,LANG,TZ,HADOOP_MAPRED_HOME</value>
</property>
</configuration>
دیمون ResourceManager و دیمون NodeManager را راهاندازی کنید:
$ sbin/start-yarn.sh
صفحه وب ResourceManager را مشاهده کنید؛ به طور پیشفرض در دسترس است:
ResourceManager – http://localhost:8088/
یک کار MapReduce را اجرا کنید.
وقتی کار تمام شد، دیمونها را با دستور زیر متوقف کنید:
$ sbin/stop-yarn.sh