راه اندازیHADOOP

جلسه سوم: 1400/04/27


چند نکته:

- منظور از At Scale همان Large Scale  است.

- در بانک های اطلاعاتی، معمولا دیتا  در قالب Data Block های 8 کیلوبایتی نگهداری می شوند. در DWH ها با هدف کاهش تعداد دفعات مراجعه به دیسک سایز Data Block ها را بیشتر درنظر می گیرند تا در یک نوبت خواندن اطلاعات، حجم بیشتری از داده در حافظه منتقل شده و I/O که بخشی پرهزینه درسیستم ها به شمار می رود کاهش خواهد یافت. 

- مثال: یک گیگابایت داده 1024*1024*1024 = 1,073,741,824 بایت می باشد.

*در صورتیکه Data Block = 8KB باشد تعداد دفعات مراجعه به دیسک برای خواندن این حجم اطلاعات 131,072 بار می باشد (حاصل تقسیم عدد بالا به 8*1024)

* درصورتیکه Data Block = 128 MB باشد تعداد دفعات مراجعه به دیسک برای خواندن این حجم اطلاعات 8 بار می باشد (حاصل تقسیم عدد یک گیگ به 1024*1024*128)

*البته افزایش سایز Data Block تبعاتی مانند نیاز به جستجو در حجم اطلاعات زیاد Fetch  شده در حافظه نیز خواهد داشت و بطور مثال update کردن اطلاعات کند خواهند شد.

چند دستور در لینوکس

- cd /opt   برای تغییر مسیر

- env | grep SHELL      نمیدونم برای چی ؟!

-sudo   که مخفف super user do هست را سر دستور اجرا می کنیم؛ یه چیزی تو مایه های run as administrator در ویندز

- source /etc/bashrc بدون نیاز به ریست شدن سیستم عامل، تغییراتی که در فایل کانفیگ داده شده است را اعمال می کند

sudo  scp -r /opt/java node1:/opt/

- با اجرای دستور بالا فایل یا فایل ها از مبدا به مقصد سرور جدید (که در مثال نام آن node1 است) کپی می شود

- mv  برای تغییر نام فایل؛ در مثال زیر فایل به java تغییر نام خواهد داد

- mv jdk1.8.0_202 java

راه اندازی JAVA و  HADOOP 

- بعد از ورود با لاگین hadoop با دستور زیر به مسیر opt بروید (کار را با سرور node-master شروع می کنیم)

cd /opt

- اعطای حقوق دسترسی owner ی به لاگین hadoop به مسیر opt؛ این دستور را باید برروی سرورهای node1 و node2 نیز انجام داد. درصورتیکه تمایل دارید تا به صورت recursive زیرشاخه ها نیز تغییر owner ی اتفاق بیوفتد کافی است تا از r- در دستور استفاده کنید.

sudo chown hadoop:hadoop /opt

- فایل های jdk-8u202-linux-x64.tar.gz و  hadoop-3.1.2.tar.gz را در مسیر opt کپی کنید

- با اجرای 2 دستور زیر، فایل های کپی شده را extract کنید، تغییر نام مسیر هم با دستور mv صورت می گیرد

tar -xzf hadoop-3.1.2.tar.gz

mv hadoop-3.1.2 hadoop

***************************

tar -xzf jdk-8u202-linux-x64.tar.gz

mv jdk1.8.0_202 java

- قراردادن جاوا و هادوپ در مسیر path فایل bashrc؛ 
sudo vim /etc/bashrc
پس از اجرای دستور بالا فایل bashrc در حالت ویرایش قرار گرفته (انتخاب edit) و پس از آن مقادیر زیر درانتهای فایل اضافه شده و به wq: ذخیره سازی و خروج انجام می شود
export JAVA_HOME=/opt/java
export HADOOP_HOME=/opt/hadoop
PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$JAVA_HOME/bin:$PATH
export PATH
- برای آنکه بدون ریست شدن سیستم عامل، تغییرات بالا اثر داشته باشد باید دستور زیر را اجرا کنید
source /etc/bashrc
- برای تست صحت تغییرات انجام شده در bashrc می توان دستورات زیر را اجرا کرد؛ اگر دستور توسط سیستم عامل شناخته شد، به این معنی است که فایل bashrc به درستی تغییر یافته است
java -version
hadoop version
- حال نوبت انجام یکسری تغییرات در فایل های پیکربندی هادوپ رسیده است. به این منظور به مسیر زیر بروید:
/opt/hadoop/etc/hadoop/
* تغییر در core-site.xml
<configuration>
        <property>   
            <name>fs.default.name</name>
            <value>hdfs://node-master:9000</value>
        </property>
</configuration>
* تغییر در hdfs-site.xml
نکته: مقدار value باید به مسیر /opt/ اشاره می کند؛ مسیری که هاوپ و جاوا در آن نصب شده اند. 
نکته: مقدار 1 در بخش dfs.replication به این معناست که فایل های توزیع شده فقط برروی یک node زیر مجموعه کپی شود.
نکته: اگر مقدار 2 در بخش dfs.replication باشد به این معناست که فایل های توزیع شده برروی هر دو node زیر مجموعه کپی شود.
<configuration>
    <property>
            <name>dfs.namenode.name.dir</name>
            <value>/opt/data/nameNode</value>
    </property>
    <property>
            <name>dfs.datanode.data.dir</name>
            <value>/opt/data/dataNode</value>
    </property>
    <property>
            <name>dfs.replication</name>
            <value>1</value>
    </property>
</configuration>
*تغییر در workers
node1
node2
*تغییر در hadoop-env.sh
export JAVA_HOME=/opt/java/

- بعد از انجام پیکربندی برروی سرور node-master لازم است تا این تغییرات برروی سایر نودها نیز صورت گیرد. به این منظور و برای انتقال فولدرهای java و hadoop از روی سرور node-master به ترتیب زیر عمل کنید
scp -r  /opt/java    node1:/opt/
scp -r  /opt/java   node2:/opt/
scp -r  /opt/hadoop  node1:/opt/
scp -r  /opt/hadoop    node2:/opt/
sudo scp  /etc/bashrc    node1:/etc/bashrc
sudo scp  /etc/bashrc    node2:/etc/bashrc

- به هر دو نود متصل شده و فرمان source /etc/bashrc را اجرا کنید تا تغییرات برروی آنها فعال شود
- با اجرای دستور زیر دیسک برای اجرای عملیات هادوپ آماده می شود، این فرمان برروی سرور master انجام می پذیرد:
hdfs namenode -format
- برای شروع سرویس هادوپ از دستور زیر استفاده می کنیم.
start-dfs.sh
- اکنون سرویس hadoop را اجرا و در محیط مرورگر وضعیت را بررسی می کنید. آدرسی که باید در مرور ثبت کنیم به قرار زیر است
http://192.168.56.10:9870/
* در مرورگر در بخش utilities زیر بخش browse the file system فولدری وجود ندارد، در جلسه بعد درمورد نحوه اعطای حقوق دسترسی برای ایجاد فولدر از طریق مرورگر صحبت خواهد شد. اما اکنون نیز می توان با استفاده از فرمان زیر فولدری ایجاد نمود. این فولدرها مفهوم منطقی است و در دیسک سیستم عامل چنین فولدری ایجاد نخواهد شد.
hdfs dfs -mkdir /data
-حال برای تست عملکرد هادوپ در توزیع فایل کافیست فایل مورد نظر را در مسیر /opt/ کپی کرده و سپس فرمان زیر را  برروی node-master اجرا کنید. بعد از اجرای دستور نیز می توانید فایل puttest.pdf کپی شده در فولدر opt را حذف کنید
hdfs dfs -put  /opt/puttest.pdf  /data/
- با انجام دستور بالا metadata فایل مذکور در namenode در مسیر opt/data/namenode قرار گرفته و محتویات فایل برروی نودها وجود دارد. می توان از طریق مرورگر برروی نام فایل بارگذاری شده کلیک کرد و نحوه توزیع شدن بلاک های آن برروی نودهای مختلف را دید.
- در خاتمه کار و قبل از shutdown کردن سرورها دستور stop-dfs.sh را اجرا کنید.