تنظیمات بیشتر برروی HADOOP و چندین مفهوم

جلسه چهارم: 1400/04/29

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

- دستور زیر، سرویس های جاوایی که در سیستم عامل استارت هستند را نمایش می دهد

- reboot باعث ریست شدن سیستم عامل می شود

jps

*مثلا اگر start-dfs.sh را اجرا کرده باشیم، برروی سرور namenode سرویس های NameNode و SecondaryNameNode استارت خواهد بود و برروی سایر نودها سرویس DataNode

-جهت حذف یک فولدر از دستور زیر استفاده کنید. البته دستور زیر را هنگامی استفاده کنید که کاربری که مسیر را ایجاد کرده بوده، کاربر جاری نباشد

sudo rm -rf /opt/data

- از بین بردن یک process فعال؛ بعد از شناسایی شماره ی آن از طریق دستور jps می توان به ترتیب زیر عمل کرد

kill -9 processid

نکات

- برای اجرای HA (High Availability) باید بیش از یک نود مستر داشته باشیم.

- پیشنیازی کار با هادوپ برروی سیستم ها آنست که سرویس NameNode برروی سرور و DataNode ها برروی نودهای slave درحال اجرا باشد

- چند پارامتر دیگر در پیکربندی hadoop که می شود تغییر داد؛ این فایل از طریق مرورگر و آدرس 192.168.56.10:9870 قابل مشاهده است

*dfs.blocksize به شکل پیش فرض 128MB است

* با استفاده از دستور زیر می توان مقدار پارامتر موجود در پیکربندی را دانست

hdfs getconf -confkey dfs.blocksize

-نوع نگهداشت اطلاعات در Distribute Storage (مثلا column storeیا .....) توسط سرویس بالادستی یعنی Distribute Processing مشخص می شود (مثلا Spart - MR - Sqoop  و ....)

-  در UI مرورگر 192.168.56.10:9870 به شکل پیش فرض امکان اضافه کردن فایل یا فولدر وجود ندارد. دلیل هم آنست که کاربری که UI با آن کار می کند dr.who است و چنین دسترسی ندارد. این کاربر را می توان در فایل کانفیگ hadoop با کلید hadoop.http.staticuser.user پیدا کرد. برای تغییر آن نیز کافی است در فایل core-site.xml مربوط به هادوپ عبارت زیر را قرار دهید. خوب است که این تغییر برروی سایر نودها نیز کپی شود.

scp -r  /opt/hadoop/etc/hadoop/core-site.xml  node1:/opt/hadoop/etc/hadoop/core-site.xml
scp -r  /opt/hadoop/etc/hadoop/core-site.xml  node2:/opt/hadoop/etc/hadoop/core-site.xml
*توجه: قبل از انجام این تغییرات باید هادوپ را استاپ کرد. stop-dfs.sh
*درصورتیکه کپی فایل روی نودها انجام نشود به هنگام استفاده از UI برای بارگذاری فایل پیام خطا دریافت خواهد شد ولی ساخت فولدر مشکلی نخواهد داشت.

  <property> 

 <name>hadoop.http.staticuser.user</name> 

  <value>hadoop</value> 

 </property>

*توجه: اگر بارگذاری فایل ها از طریق UI با خطا روبرو شد این احتمال وجود دارد که node-master از داخل محیط سیستم عامل ویندوز قابل روئیت نمی باشد. در این صورت کافی است تا فایل زیر را ویرایش و آدرس نود مسترو سایر نودها را در آن ثبت کنید
c:\windows\system32\drivers\etc\hosts

یعنی اضافه کردن موارد زیر

192.168.56.10 node-master

192.168.56.11 node1

192.168.56.12 node2

چند پرسش:

- با فرض اینکه سایز دیتابلاک در هادوپ 128MB باشد، اما فایل های کوچک (مثلا در حد کیلو و مگابایت) برروی Distribute Storage قرار بگیرد، فضایی که هریک از فایل ها اشغال می کند چقدر است؟ آیا هر فایل کوچه به اندازه یک دیتابلاک 128MB فضا اشغال خواهد کرد؟  خیر، هرفایل به اندازه سایز خود فضا می گیرد.

- تعداد فایل کوچک زیاد در کارایی هادوپ چه اثری می گذارد؟ 1-حجم فایل metadata در node-master را بزرگ کرده و lookup   کردن فایل ها در متادیتا با کندی انجام خواهد شد.(در این metadataاینکه چه فایلی چه تعداد دیتابلاک داردو ...... نگهداری می شود). همچنین NameNode فایل metadata را در حافظه نگهداری می کند و این باعث اتلاف حافظه می شود. یکی از راه حل های این مشکل آنست که در مرحله پردازش، چندین فایل کوچک در قالب یک فایل بزرگتر ذخیره شوند.   2- IO ها خیلی زیاد می شود و تعداد فایل زیادی باید از دیسک فراخوانی شود. (هزینه IO مشابه RDBMS)


safe mode on  چیست؟ وضعیتی است که امکان خواندن از hadoop وجود دارد اما نوشتن روی آن مقدور نیست. علت این وضعیت هم آنست که هنوز DataNode بلاک ریپورت را هنوز ارسال نکرده اند.
نکته:
- با اجرای فرمان put هادوپ مشابه روال دیتابیس ها ابتدا مقادیر را در حافظه دارد و در نهایت در fsImage ها ثبت و ضبط می کند. هنگام start-hfs.sh هم محتوای fsImage ها ابتدا در حافظه بارگذاری می شود. هاوپ هم مانند دیتابیس ها که برای نگهداری موقت از لاگ فایل ها استفاده می کنند مفهومی با عنوان edit log دارد. 
- SecondaryNameNode مشابه فرایند checkpoint در دیتابیس ها، وظیفه انتقال داده از edit log به fsImage ها را دارد. اگر نوشتن از edit log به fsImage ها با تاخیر زیاد انجام شود، هنگام استارت شدن سرویس هادوپ زمان زیادی صرف انتقال لاگ ها به حافظه خواهد شد.
-مقدار checkpoint با متغییری به نام   dfs.namenode.checkpoint.txns  درفایل  hdfs-default.xml  نگهداری می شود (پیش فرض یک میلیون تراکنش).  علاوه براین متغییری دیگری نیز به نام dfs.namenode.checkpoint.check.period با مقدار پیش فرض 60 ثانیه نیز وجود دارد که باعث checkpoint می شود. هرکدام از این متغییرها زودتر فرارسید عملیات checkpoint انجام خواهد شد.منطقا  اگر سیستم پرتراکنش باشد آستانه تعداد تراکنش برای checkpoint فرامی رسد. به این فرایند نوشتن لاگ ها در هادوپ، Journal هم گفته می شود.
- فرایند startup سرویس چگونه است؟ 
چند دستور  HDFS 
- WORM = Write Once Read Many time ؛ هادوپ بسیار مناسب این است
- hdfs dfs -format
- hdfs dfs -checkpoint
- hdfs dfs -mkdir /data3
- hdfs dfs -mkdir  -p /data4/retail     ===> create both folders if not exists
-hdfs dfs -put /opt/puttest.pdf /data/
-hdfs dfs -appendToFile /opt/puttest.pdf /data/puttest.pdf 
دستور appendToFile راهی برای رهایی از Data Block های کوچک است.
-hdfs dfs -cat /data/myfile.csv
دستور cat برای نمایش داده های درون فایل کاربرد دارد.
-hdfs dfs -rm /data/puttest.pdf 
دستور rm برای حذف فایل است. حذف فولدر با اضافه کردن یک r- در دستور امکان پذیر می شود.
برای جلوگیری از خطا و کنترل برروی تعداد فایلهایی که یکجا می شود حذف کرد کافیست که مقدار پارامتر زیر را در کانفیگ به تعداد دلخواه تنظیم کنید.
-hdfs getconf -confkey hadoop.shell.delete.limit.num.file
به منظور جابجایی فایل بین فولدرها از دستور زیر استفاده می شود. اگر بجای mv از cp استفاده کنیم، کپی فایل انجام می شود.
-hdfs dfs -mv /data4/retail/puttest.pdf /data4/extra
اجرای فرامین ادمینی در hdfs با دستور hdfs dfsadmin انجام می شود. در دستور زیر گزارشی مشابه گزارش مرورگر از وضعیت هادوپ نمایش داده می شود.
-hdfs dfsadmin -report
دستور زیر، hdfs را از حالت safe mode خارج می کند و دستور بعدی اجبارا به safe mode می برد تا فقط خواندن از آن امکان پذیر باشد
-hdfs dfsadmin -safemode leave
-hdfs dfsadmin -safemode enter
فعال کردن مجدد یک نود، پس از اتصال به سرور مربوطه و از طریق فرمان زیر انجام می شود
-hdfs --daemon start datanode
اضافه کردن فضا به یکی از روشهای زیر انجام می پذیرد
* حذف فایل
* کم کردن مقدار replication؛ به غیر از UI می توان با فرمان زیر نیز این کار را انجام داد
-hdfs dfs -setrep  2 /archvies
* اضافه کردن datanode
فعال سازی trash
با فعال سازی trash در هادوپ، فایل ها پس از حذف برای مدتی قابل احیا خواهند بود. به منظور فعال سازی لازم است تا تغییرات زیر در فایل core-site.xml صورت گیرد. در مثال زیر فایل ها  تا 60 دقیقه پس از حذف شدنشان قابل احیاء خواهد بود(TTL=Time To Live). (اگر مقدار آن 0 باشد دراصل یعنی trash غیرفعال است)
*توجه: برای فعال شدن این پارامتر  یک stop و start در dfs نیاز است

  <property> 

 <name>fs.trash.interval</name> 

  <value>60</value> 

 </property>

*توجه: برای فعال شدن این پارامتر  یک stop و start در dfs نیاز است

  <property> 

 <name>fs.trash.checkpoint.interval</name> 

  <value>60</value> 

 </property>

*پس از انجام موارد بالا فایل core-site.xml را برروی datanode ها کپی کرده و start-dfs.sh کنید
scp /opt/hadoop/etc/hadoop/core-site.xml node1:/opt/hadoop/etc/hadoop/core-site.xml
scp /opt/hadoop/etc/hadoop/core-site.xml node2:/opt/hadoop/etc/hadoop/core-site.xml
* هادوپ خودکار یک فولدر user و زیر فولدر hadoop ساخته و فایل های حذف شده را موقتا در آنجا نگهداری می کند.
* درصورت نیاز به برگردانن فایل از trash کافی است که از مسیر آن به فولدر مقصد کپی کنید.
* درصورتیکه trash در سیستم فعال باشد، اما بخواهید درهنگام حذف (مثلا برای آزادن شدن فضا) انتقال به trash را منتقی نمایید از دستور زیر استفاده کنید
-hdfs dfs -rm -r -skipTrash /data/extra
* برای مشاهده محتویات فولدر نیز می توان از دستور زیر استفاده کرد
-hdfs dfs -ls .Trash/Current/user/hadoop/delete/

نظرات 0 + ارسال نظر
امکان ثبت نظر جدید برای این مطلب وجود ندارد.