معرفی

Hadoop یک چارچوب برنامه نویسی مبتنی بر جاوا است که از پردازش و ذخیره مجموعه داده های بسیار بزرگ در مجموعه ای از ماشین های ارزان قیمت پشتیبانی می کند. این اولین پروژه بزرگ منبع باز در زمینه بازی کلان داده بود و توسط بنیاد نرم افزار آپاچی حمایت می شود.

Hadoop از چهار لایه اصلی تشکیل شده است:

Hadoop Common مجموعه ای از ابزارها و کتابخانه هایی است که از ماژول های دیگر Hadoop پشتیبانی می کند.
HDFS که مخفف Hadoop Distributed File System است، مسئول ماندگاری داده ها روی دیسک است.
YARN، مخفف Yet Another Resource Negotiator، «سیستم عامل» برای HDFS است.
MapReduce مدل پردازش اصلی برای خوشه‌های Hadoop است. کار را در خوشه یا نقشه توزیع می کند، سپس نتایج را از گره ها به یک پاسخ به یک پرس و جو سازماندهی و کاهش می دهد. بسیاری از مدل‌های پردازشی دیگر برای نسخه 3.x Hadoop در دسترس هستند.
راه اندازی خوشه های Hadoop نسبتاً پیچیده است، بنابراین پروژه شامل یک حالت مستقل است که برای یادگیری در مورد Hadoop، انجام عملیات ساده و اشکال زدایی مناسب است.

در این آموزش، Hadoop را در حالت مستقل نصب می‌کنید و یکی از نمونه‌های برنامه MapReduce را اجرا می‌کنید تا نصب را تأیید کنید.

پیش نیازها

برای دنبال کردن این آموزش، شما نیاز دارید:

سرور اوبونتو 20.04 با کاربر غیر ریشه با امتیازات sudo: می‌توانید در راهنمای راه‌اندازی سرور اولیه با اوبونتو 20.04 درباره نحوه راه‌اندازی کاربری با این امتیازات بیشتر بدانید.
همچنین ممکن است دوست داشته باشید نگاهی به مقدمه ای بر مفاهیم و اصطلاحات کلان داده یا مقدمه ای بر هادوپ بیندازید.

پس از تکمیل پیش نیازها، برای شروع به عنوان کاربر sudo خود وارد شوید.

مرحله 1 – نصب جاوا

برای شروع، لیست بسته ما را به روز می کنید و OpenJDK، کیت توسعه پیش فرض جاوا را در اوبونتو 20.04 نصب می کنید:

sudo apt update
sudo apt install default-jdk

پس از اتمام نصب، بیایید نسخه را بررسی کنیم.

java -version

Output
openjdk version "11.0.13" 2021-10-19
OpenJDK Runtime Environment (build 11.0.13+8-Ubuntu-0ubuntu1.20.04)
OpenJDK 64-Bit Server VM (build 11.0.13+8-Ubuntu-0ubuntu1.20.04, mixed mode, sharing)

این خروجی تأیید می کند که OpenJDK با موفقیت نصب شده است.

مرحله 2 – نصب Hadoop

با جاوا در جای خود، از صفحه انتشارات Apache Hadoop دیدن خواهید کرد تا آخرین نسخه پایدار را بیابید.

برای نسخه ای که می خواهید نصب کنید به باینری بروید. در این راهنما شما Hadoop 3.3.1 را نصب خواهید کرد، اما می توانید شماره نسخه های موجود در این راهنما را با یکی از دلخواه خود جایگزین کنید.

در صفحه بعد، کلیک راست کرده و پیوند را به باینری انتشار کپی کنید.

در سرور، از wget برای واکشی آن استفاده خواهید کرد:

wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz

برای اینکه مطمئن شوید فایلی که دانلود کرده اید تغییر نکرده است، یک بررسی سریع با استفاده از SHA-512 یا الگوریتم هش ایمن 512 انجام خواهید داد. به صفحه انتشار بازگردید، سپس کلیک راست کرده و پیوند را در کپی کنید. فایل چک‌سوم برای نسخه باینری که دانلود کرده‌اید:

باز هم از wget در سرور ما برای دانلود فایل استفاده خواهید کرد:

wget https://downloads.apache.org/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz.sha512

سپس تأیید را اجرا کنید:

shasum -a 512 hadoop-3.3.1.tar.gz

Output
2fd0bf74852c797dc864f373ec82ffaa1e98706b309b30d1effa91ac399b477e1accc1ee74d4ccbb1db7da1c5c541b72e4a834f131a99f2814b030fbd043df66  hadoop-3.3.1.tar.gz

این مقدار را با مقدار SHA-512 در فایل .sha512 مقایسه کنید:

cat hadoop-3.3.1.tar.gz.sha512

~/hadoop-3.3.1.tar.gz.sha512
...
SHA512 (hadoop-3.3.1.tar.gz) = 2fd0bf74852c797dc864f373ec82ffaa1e98706b309b30d1effa91ac399b477e1accc1ee74d4ccbb1db7da1c5c541b72e4a834f131a99f2814b030fbd043df66
...

خروجی دستوری که در برابر فایلی که از mirror دانلود کرده اید اجرا می کنید باید با مقدار فایلی که از apache.org دانلود کرده اید مطابقت داشته باشد.

اکنون که تأیید کرده اید که فایل خراب یا تغییر نکرده است، می توانید آن را استخراج کنید:

tar -xzvf hadoop-3.3.1.tar.gz

خروجی دستوری که در برابر فایلی که از mirror دانلود کرده اید اجرا می کنید باید با مقدار فایلی که از apache.org دانلود کرده اید مطابقت داشته باشد.

اکنون که تأیید کرده اید که فایل خراب یا تغییر نکرده است، می توانید آن را استخراج کنید:

sudo mv hadoop-3.3.1 /usr/local/hadoop

با نصب نرم افزار، آماده پیکربندی محیط آن هستید.

مرحله 3 – پیکربندی جاوا خانه Hadoop

Hadoop نیاز دارد که مسیر جاوا را به عنوان یک متغیر محیطی یا در فایل پیکربندی Hadoop تنظیم کنید.

مسیر جاوا /usr/bin/java یک پیوند نمادین به /etc/alternatives/java است که به نوبه خود یک پیوند نمادین به باینری پیش فرض جاوا است. شما از readlink با پرچم -f برای دنبال کردن هر پیوند نمادین در هر قسمت از مسیر، به صورت بازگشتی استفاده خواهید کرد. سپس، از sed برای برش bin/java از خروجی استفاده خواهید کرد تا مقدار صحیح JAVA_HOME را به ما بدهید.

برای یافتن مسیر پیش فرض جاوا

readlink -f /usr/bin/java | sed “s:bin/java::”

Output
/usr/lib/jvm/java-11-openjdk-amd64/

می‌توانید این خروجی را برای تنظیم خانه جاوای Hadoop روی این نسخه خاص کپی کنید، که تضمین می‌کند اگر جاوا پیش‌فرض تغییر کند، این مقدار تغییر نخواهد کرد. همچنین، می‌توانید از دستور readlink به صورت پویا در فایل استفاده کنید تا Hadoop به‌طور خودکار از هر نسخه جاوا که به‌عنوان پیش‌فرض سیستم تنظیم شده است استفاده کند.

برای شروع، hadoop-env.sh را باز کنید:

sudo nano /usr/local/hadoop/etc/hadoop/hadoop-env.sh

سپس با انتخاب یکی از گزینه های زیر فایل را تغییر دهید:

گزینه 1: یک مقدار استاتیک تنظیم کنید

/usr/local/hadoop/etc/hadoop/hadoop-env.sh
 . . .
#export JAVA_HOME=
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/
 . . .

گزینه 2: از Readlink برای تنظیم ارزش به صورت پویا استفاده کنید

/usr/local/hadoop/etc/hadoop/hadoop-env.sh
 . . .
#export JAVA_HOME=
export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")
 . . .

اگر در یافتن این خطوط مشکل دارید، از CTRL+W برای جستجوی سریع متن استفاده کنید. پس از اتمام کار، با CTRL+X خارج شوید و فایل خود را ذخیره کنید.

مرحله 4 – اجرای Hadoop

اکنون باید بتوانید Hadoop را اجرا کنید:

/usr/local/hadoop/bin/hadoop

Output
Usage: hadoop [OPTIONS] SUBCOMMAND [SUBCOMMAND OPTIONS]
 or    hadoop [OPTIONS] CLASSNAME [CLASSNAME OPTIONS]
  where CLASSNAME is a user-provided Java class

  OPTIONS is none or any of:

--config dir                     Hadoop config directory
--debug                          turn on shell script debug mode
--help                           usage information
buildpaths                       attempt to add class files from build tree
hostnames list[,of,host,names]   hosts to use in slave mode
hosts filename                   list of hosts to use in slave mode
loglevel level                   set the log4j level for this command
workers                          turn on worker mode

  SUBCOMMAND is one of:
. . .

این خروجی به این معنی است که Hadoop را با موفقیت پیکربندی کرده اید تا در حالت مستقل اجرا شود.

با اجرای نمونه برنامه MapReduce که با آن ارسال می شود، مطمئن خواهید شد که Hadoop به درستی کار می کند. برای انجام این کار، یک دایرکتوری به نام input در فهرست اصلی خود ایجاد کنید و فایل های پیکربندی Hadoop را در آن کپی کنید تا از آن فایل ها به عنوان داده استفاده کنید.

mkdir ~/input
cp /usr/local/hadoop/etc/hadoop/*.xml ~/input

در مرحله بعد، می توانید از دستور زیر برای اجرای برنامه MapReduce hadoop-mapreduce-examples، یک بایگانی جاوا با چندین گزینه استفاده کنید:

/usr/local/hadoop/bin/hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar grep ~/input ~/grep_example ‘allowed[.]*’

این برنامه grep را فراخوانی می کند، یکی از نمونه های متعدد موجود در نمونه های hadoop-mapreduce، و به دنبال آن دایرکتوری ورودی، ورودی و دایرکتوری خروجی grep_example. برنامه MapReduce grep مطابقت های یک کلمه تحت اللفظی یا عبارت منظم را می شمارد. در نهایت، عبارت منظم allow[.]* برای یافتن رخدادهای کلمه مجاز در داخل یا در انتهای یک جمله اعلانی داده می شود. این عبارت به حروف کوچک و بزرگ حساس است، بنابراین اگر در ابتدای جمله با حروف بزرگ نوشته می شد، کلمه ای را پیدا نمی کنید.

هنگامی که کار تکمیل می شود، خلاصه ای از آنچه پردازش شده و خطاهایی که با آن مواجه شده است ارائه می دهد، اما این شامل نتایج واقعی نیست.

Output
 . . .
   File System Counters
        FILE: Number of bytes read=1200956
        FILE: Number of bytes written=3656025
        FILE: Number of read operations=0
        FILE: Number of large read operations=0
        FILE: Number of write operations=0
    Map-Reduce Framework
        Map input records=2
        Map output records=2
        Map output bytes=33
        Map output materialized bytes=43
        Input split bytes=114
        Combine input records=0
        Combine output records=0
        Reduce input groups=2
        Reduce shuffle bytes=43
        Reduce input records=2
        Reduce output records=2
        Spilled Records=4
        Shuffled Maps =1
        Failed Shuffles=0
        Merged Map outputs=1
        GC time elapsed (ms)=41
        Total committed heap usage (bytes)=403800064
    Shuffle Errors
        BAD_ID=0
        CONNECTION=0
        IO_ERROR=0
        WRONG_LENGTH=0
        WRONG_MAP=0
        WRONG_REDUCE=0
    File Input Format Counters
        Bytes Read=147
    File Output Format Counters
        Bytes Written=34

نتایج در دایرکتوری خروجی ذخیره می شوند و با اجرای cat در فهرست خروجی قابل بررسی هستند:

cat ~/grep_example/*

Output
22    allowed.
1    allowed

وظیفه MapReduce 19 مورد از کلمه مجاز را پیدا کرد و سپس یک نقطه و یک مورد در جایی که نبود. اجرای برنامه نمونه تأیید می کند که نصب مستقل ما به درستی کار می کند و کاربران غیرمجاز در سیستم می توانند Hadoop را برای کاوش یا اشکال زدایی اجرا کنند.

نتیجه

در این آموزش، Hadoop را در حالت مستقل نصب کرده اید و با اجرای یک برنامه نمونه ارائه شده آن را تأیید کرده اید.


سرور مجازی آلمان

سرور مجازی آمریکا

سرور مجازی فرانسه

سرور مجازی کانادا

سرور مجازی لهستان

سرور مجازی هلند

سرور مجازی انگلیس

برچسب‌ها:, , , , , , , ,