معرفی
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
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
2fd0bf74852c797dc864f373ec82ffaa1e98706b309b30d1effa91ac399b477e1accc1ee74d4ccbb1db7da1c5c541b72e4a834f131a99f2814b030fbd043df66 hadoop-3.3.1.tar.gz
این مقدار را با مقدار SHA-512 در فایل .sha512 مقایسه کنید:
cat 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::”
/usr/lib/jvm/java-11-openjdk-amd64/
میتوانید این خروجی را برای تنظیم خانه جاوای Hadoop روی این نسخه خاص کپی کنید، که تضمین میکند اگر جاوا پیشفرض تغییر کند، این مقدار تغییر نخواهد کرد. همچنین، میتوانید از دستور readlink به صورت پویا در فایل استفاده کنید تا Hadoop بهطور خودکار از هر نسخه جاوا که بهعنوان پیشفرض سیستم تنظیم شده است استفاده کند.
برای شروع، hadoop-env.sh را باز کنید:
sudo nano /usr/local/hadoop/etc/hadoop/hadoop-env.sh
سپس با انتخاب یکی از گزینه های زیر فایل را تغییر دهید:
گزینه 1: یک مقدار استاتیک تنظیم کنید
. . .
#export JAVA_HOME=
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/
. . .
گزینه 2: از Readlink برای تنظیم ارزش به صورت پویا استفاده کنید
. . .
#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
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[.]* برای یافتن رخدادهای کلمه مجاز در داخل یا در انتهای یک جمله اعلانی داده می شود. این عبارت به حروف کوچک و بزرگ حساس است، بنابراین اگر در ابتدای جمله با حروف بزرگ نوشته می شد، کلمه ای را پیدا نمی کنید.
هنگامی که کار تکمیل می شود، خلاصه ای از آنچه پردازش شده و خطاهایی که با آن مواجه شده است ارائه می دهد، اما این شامل نتایج واقعی نیست.
. . .
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/*
22 allowed.
1 allowed
وظیفه MapReduce 19 مورد از کلمه مجاز را پیدا کرد و سپس یک نقطه و یک مورد در جایی که نبود. اجرای برنامه نمونه تأیید می کند که نصب مستقل ما به درستی کار می کند و کاربران غیرمجاز در سیستم می توانند Hadoop را برای کاوش یا اشکال زدایی اجرا کنند.
نتیجه
در این آموزش، Hadoop را در حالت مستقل نصب کرده اید و با اجرای یک برنامه نمونه ارائه شده آن را تأیید کرده اید.
https://vpsgol.net/product/vps-germany/
https://vpsgol.net/product/vps-usa/
https://vpsgol.net/product/vps-france/
https://vpsgol.net/product/vps-canada/
https://vpsgol.net/product/vps-poland/
https://vpsgol.net/product/vps-netherlands/
https://vpsgol.net/product/vps-england/