Big DAta Hadoop V1 Arabic Eddition

125
Edited By: Ahmed Gamil CBT Nuggets Course 1 | Page HADOOP Hadoop هوdistributed software solution اوframework distributed وكلمةdistributed تطيع استخدامها نسن تعمي ان هنا في الـclustered environments ومعlow price machines Hadoop يقوم بفحص الـdata صه الـ وخاunstructured data بعض الـ ويجمعstatistics عنهاستخدملعالمية تت الشركاك العديد من ا هنا انيضا سنجد اHadoop مثلYahoo وAmazon وCloudera وMicrosoft متلك كما تfacebook اكبرHadoop cluster حتوي علىث يلعالم حي في ا100 petabytes من الـdata وهو كيف تقومك سؤال يطرح نفسه هناgoogle بعملع وكيف تقوم من المواقهائلع هذا الكم التعامل م بالIndexing لها ؟بة هي انجا واgoogle بابتكار قامتtechnology تسمىMapReduce معستخدم تGoogle File system (GFS) مل مع هذالتعا لتمد عليهالضبط ما يعت وهذا بلبيانائل من الها الكم اHadoop اذا فـHadoop تمد على يع2 technologies وهمMapReduce وHadoop distributed file system (HDFS) EXAMPLES ه تستخدمة لشركاتمثلك العديد من ا ناHadoop الـو تكنولوجيا اbig data : فمث بشكل عام شركةمتلك تyahoo اكثر من40000 machine نهم مستخدم ، ت4500 node كـHadoop cluster ذه الـ ، وهnodes ات، فهيلية المواصف ليست عاcore CPU - dual quad و4 terabyte Disk و16GB RAM كن استخداميضا يم اHadoop over cloud ، فتقدمamazon ذه الخدمة ه) EMR, Elastic MapReduce ( ستطيعي ت التائقلها في دقمها وتفعي استخدااليا صحيفةذه الخدمة حستفيد من ه وتYork Times New اليتها تحويل مقا فيPDF ي عملجه اللحا بدون اhadoop infrastructure ن في الـمله او متخصصي كاbig data باستئجارط قامت فقEC2 instance متصله بـstorage S3 ت عليها ووضع4 terabyte من الـdata ى شكل علTIFF وعن طريقElastic MapReduce ت الىلمقاذه ا بتحويل ه قامتPDF في اقل من24 ساعه بتكلفه$240 فقط ولكنذه الـل ه كيف يتم استغdata ك شيء اخر ؟م هنا لمجرد التخزين؟ ارهيبة؟ هل الذه الـ هميه الحقيقة ان اهData ص العديد من الـستخ مهاكمن في استخدا تstatistics نات شركةت مثل اعلشركا المفيدة لfacebook وamazon ي الـموجودة علت الناع يضغطون على ا ستخدمينن الم ان العديد م منى الرغم ، فعلfacebook وamazon هناك ان اى الصفحة،هم قد تظهر علامثير اهتمي ت التناتع العديد من ايف ذلك ؟ فكن طريق ما يعرف يتم ذلك ع بالـad targeting الـى تكنولوجياتمد علي تع والتcollaborative filtering اوrecommendation engine ذه الـ ، وهtechnology ستخدم تmachine learning algorithms تابع كل بحيث تclick يقوم به الـuser صدقائه وتربط وا المشتركةاماتهتمستخلص ا بينهم وتيضا واtweeter اكثر من فهناك400 مليونtweets دل اكثر منهو ما يعاميا و يو15 يت من الـبا تيراdata وميا، يعهم ؟تعامل مكيف ت ف

Transcript of Big DAta Hadoop V1 Arabic Eddition

Page 1: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 1 | P a g e

HADOOP

Hadoop هوdistributed software solution اوframework distributed وكلمةdistributed هنا تعمي اننا نستطيع استخدامه

low price machinesومع clustered environmentsفي الـ

Hadoop يقوم بفحص الـdata وخاصه الـunstructured data ويجمع بعض الـstatistics عنها

Microsoftو Clouderaو Amazonو Yahooمثل Hadoopسنجد ايضا ان هناك العديد من الشركات العالمية تستخدم

dataمن الـ petabytes 100في العالم حيث يحتوي على Hadoop clusterاكبر facebookكما تمتلك

لها ؟ Indexingبالتعامل مع هذا الكم الهائل من المواقع وكيف تقوم بعمل googleهناك سؤال يطرح نفسه وهو كيف تقوم

للتعامل مع هذا Google File system (GFS)تستخدم مع MapReduceتسمى technologyقامت بابتكار googleواالجابة هي ان

Hadoopالكم الهائل من البيانات وهذا بالضبط ما يعتمد عليه

Hadoop distributed file system (HDFS)و MapReduceوهم technologies 2يعتمد على Hadoopاذا فـ

EXAMPLES

بشكل عام فمثال : big dataاو تكنولوجيا الـ Hadoopناك العديد من االمثلة لشركات تستخدم ه

تمتلك شركةyahoo 40000اكثر من machine 4500، تستخدم منهم node كـHadoop cluster وهذه الـ ،nodes

16GB RAMو terabyte Disk 4و core CPU-dual quadليست عالية المواصفات، فهي

ايضا يمكن استخدامHadoop over cloud فتقدم ،amazon هذه الخدمة)EMR, Elastic MapReduce ( التي تستطيع

استخدامها وتفعيلها في دقائق

hadoopبدون الحاجه الي عمل PDFفي تحويل مقاالتها الي York Times Newوتستفيد من هذه الخدمة حاليا صحيفة

infrastructure كامله او متخصصين في الـbig data

TIFFعلى شكل dataمن الـ terabyte 4ووضعت عليها storage S3 متصله بـ EC2 instance فقط قامت باستئجار

فقط 240$ساعه بتكلفه 24في اقل من PDFقامت بتحويل هذه المقاالت الى Elastic MapReduceوعن طريق

الرهيبة؟ هل لمجرد التخزين؟ ام هناك شيء اخر ؟ dataكيف يتم استغالل هذه الـ ولكن

و facebookالمفيدة للشركات مثل اعالنات شركة statisticsتكمن في استخدامها الستخالص العديد من الـ Dataالحقيقة ان اهميه هذه الـ

amazon فعلى الرغم من ان العديد من المستخدمين ال يضغطون على االعالنات الموجودة علي الـ ،facebook وamazon اال ان هناك

فكيف ذلك ؟العديد من االعالنات التي تثير اهتمامهم قد تظهر على الصفحة،

recommendationاو collaborative filteringوالتي تعتمد على تكنولوجيا الـ ad targetingبالـ يتم ذلك عن طريق ما يعرف

engine وهذه الـ ،technology تستخدمmachine learning algorithms بحيث تتابع كلclick يقوم به الـuser واصدقائه وتربط

بينهم وتستخلص االهتمامات المشتركة

فكيف تتعامل معهم ؟يوميا، dataتيرابايت من الـ 15يوميا وهو ما يعادل اكثر من tweetsمليون 400فهناك اكثر من tweeterوايضا

Page 2: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 2 | P a g e

التي تقوم بتحليل هذه البيانات jobsMapReduceالتي تقوم بعمل االف من الـ Hadoop clustersعدد كبير من الـ tweeterتمتلك

للشركات statisticsواستخالص توجهات المشتركين واهتماماتهم ثم تبيع هذه الـ

والـ velocityوالـ 3V’s (volume والـ structured data -semiوالـ unstructuredوالـ structuredسنتحدث هنا عن الـ

variety)

الخاصه به وخصائصه من حيث الـ core componentsوالـ high level structure Hadoopكما سنتحدث ايضا عن الـ

scalability والـhigh tolerance والـflexibility والـspeed

وسنرى كيف سنتعامل معها dataوسنضع عليهم كمية كبيرة من الـ servers 4يتكون من LABوسنقوم بعمل

STATE OF DATA

انواع 3الى dataمكن تصنيف الـ ي

STRUCTURAL DATA

DBمثل الـ schemasالتي توضع داخل dataوهي الـ

SEMI-STRUCTURAL DATA

CSVوالـ XMLمثل الـ tagsالتي توضع داخل dataوهي الـ

UN-STRUCTURAL DATA

documentsوالـ PDFوالـ emailمثل الـ hard driveالتي توجد في الـ dataوهي الـ

structured dataتزداد نموا بشكل اسرع بكثير من الـ semi-structured dataوالـ structured dataوكما نرى ان الـ

COMPUTING MODELS

RELATIONAL MODEL (RM)

DBمثل structural dataيستخدم للتعامل مع الـ modelهو

Page 3: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 3 | P a g e

TRADITIONAL MODEL

والتعامل معها internal disksوالتي يتم تخزينها علي dataالمشهور والشائع في التعامل مع الـ modelهو الـ

COMPUTE MODEL

external storageعلى dataمن اي مكان، ويتم تخزين هذه الـ dataالحديث في التعامل مع الـ modelهو الـ

THREE V'S

:لثالث اسباب رئيسية traditional computing modelsفلن نستطيع استخدام الـ Big dataند التعامل مع الـ ع

VOLUME

petabytesو terabytesوالذي يقدر بالـ dataلن تستطيع التعامل مع هذا الكم الهائل من الـ traditional computing modelsالـ

traditional modelكثيرة جدا وهذا ال يتوفر في الـ memoryو processorsكبيرة جدا و storageحيث يحتاج الي

VELOCITY

والـ CPUتعتمد على الـ dataفان سرعة التعامل مع الـ traditional computing modelوفي الـ dataوهي سرعة التعامل مع الـ

disk IO

VARIETY

un-بينما الـ tapsببساطة وعند زيادة حجمها فيمكن تخزينها في structural dataتستطيع التعامل مع الـ relational systemsالـ

structural data والـsemi structural data فتحتاج الى بعض الـtools االخرى االكثر تعقيدا والتي تسمىETL tools مثل :

Informatica - Power Center

IBM - Websphere DataStage(Formerly known as Ascential DataStage)

SAP - BusinessObjects Data Integrator

؟ 3V’sعلى هذه الـ Hadoopاذا فكيف يتغلب

الذي يتعامل مع هذه الـ computeاوال بغض النظر عن الـ dataالذي يهتم بالـ clustering modelsببساطة عن طريق استخدام الـ

data / وذلك عكس الـtraditional compute الذي يهتم بالـcompute resources اوال

,dual 8GB RAMبمواصفات node 900يتكون من Hadoop clusterتمتلك yahooكانت شركة 2008فعلى سبيل المثال عام

core processors -quad 4و disks attached

HADOOP

Page 4: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 4 | P a g e

Hadoop هو batch processing system اي انهsystem يعتمد في االساس على الـbatch jobs وهذه الـbatches تحتوي

:مثلفي وقت معين التي تعمل بدون تدخل خارجي لتنفيذ مهمه معينه jobsعلى سلسلة من الـ

ال و عمليات الشراءبجميع واحد تفصيلية فانك تحصل في نهاية الشهر على فاتورة credit cardفعندما تقوم باستخدام الـ : credit cardالـ

dataحيث يتم تخزين هذه الـ الـ batch processingتم عن طريق عمليه ي، اصدار هذه الفاتورة نحصل على فاتورة عقب كل عملية شراء

مرة واحدة واصدار الفاتورة batchحتي يتم تشغيل الـ

الى ان نقوم بطلب معلومات معينه فيقوم بعرضها dataيحتفظ بالـ Hadoopايضا

وعرض النتيجة لحظيا commandالذي يقوم بتنفيذ الـ interactive processingاو الـ transaction processingوهذا عكس الـ

ويتكون من جزئين fault tolerance techniqueيعتمد على الـ distributed software solution ايضا Hadoop يعتبرو

:اساسيين

HDFS

HDFS : وهوcluster storage لهBW عالي

MapReduce : وهو الـSoftware الذي يقوم بعمليه الـprocessing والـretrieval للـdata

clusterوتوزيعها على الـ blocksيقوم بتقسيمه الى HDFSالـ فان Hadoop clusterعلى الـ petabyte fileفاذا اردنا تخزين

nodes ثم يقوم الـ ،HDFS بعملfault tolerance لهذه الـblocks عن طريقreplication factor (usual RF=3 ) وهذا ،

nodesوتوزيعهم على الـ blockنسخ من كل 3يقوم بعمل replication factorالـ

Page 5: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 5 | P a g e

IDله blockوكل blocks 5يتم تقسيمه الى file1وكما نرى في الصورة ان الـ

المختلفة sDataNodeموزعين على الـ storageفي الـ blockالى عدد مرات تكرار الـ replication factorكما يشير الـ

re-بعمل HDFSيقوم الـ healing-selfعملية الـ في و، heal-selfوهذا ما يسمى dataفال نفقد الـ nodeالي failureاذا حدث

replicate للـblock المفقود في الـfailed node على باقي الـnodes

المفقودة ؟ blocksولكن كيف سيعرف هذه الـ

تقوم NameNode (HN name)تسمي Nodeبتخصيص cluster، فيقوم الـ Nodesمن مجموعة Hadoop clusterيتكون الـ

Memoryفي الـ blocksوالـ nodesالخاص بالـ locationبوضع الـ

DataNode (HN data)وتسمي dataللـ clusterاالخرى في الـ nodesكما يقوم بتخصيص الـ

؟ fault toleranceو replicationوكيف يتم عمل storageاذا لنلخص مرة اخرى ماذا يتم على مستوي الـ

يعتمد الـHadoop علىClustered nodes تستخدمHDFS

يتم تقسيم الـdata الىblocks وتوزيعها علي الـsDataNode بـreplication factor نسخ من كل 3، فيتم عمل 3وليكن

block وتوزيعها على جميع الـnodes

ثم يقوم الـNameNode بوضع بيانات الـNodes والـblocks في الـMemory

اذا حدثfailure لـDataNode فان الـcluster يستعين بالـdata الموجوده في الـmemory عن الـblocks location

nodesالمفقودة وتخزينها على جميع الـ blocksليقوم بعمل نسخه اخرى من الـ

MAPREDUCE

Page 6: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 6 | P a g e

عليها jobsوتطبق عليها بعض الـ dataوالتي تتعامل مع الـ software layerالذي يمثل الـ MapReduceنتحدث االن قليال عن الـ

:تتم على مرحلتين jobsوهذه الـ

MAPPER

المطلوبه dataوتوضح له ما هي الـ clusterع الـ بكتابتها حتى تتعامل م programmerيقوم الـ functionjavaهي mapperوالـ

REDUCER

dataليجمع هذه الـ reducerثم يأتي دور الـ

او تعلمه ؟ javaولكن هل يجب علينا معرفة الـ

تحتوي على Hiveتسمى tool (SQL interpreter)بعمل facebookتقوم بهذه المهمة، فمثال قامت شركة toolsفهناك . االجابة هي ال

jobs جاهزة يستطيع أي شخص استخدامها بدون الحاجه الى معرفة الـjava

clusterمن الـ dataالستخراج الـ Pigتسمى level dataflow language-highقامت بعمل yahooايضا شركة

HBase, Sqoop, ZooKeeper, Ambari, Avro, Flume, Oozieاالخرى مثل toolsوهناك العديد من الـ

HADOOP ADVANTAGES

مثل : dataوفرت العديد من المميزات التي نحتاجها للتعامل مع الـ Hadoopذا يمكن القول بان ا

SCALABLE

فكل ما علينا هي dataاصبحت بطيئة بسبب كثرة الـ MapReduce، فاذا وجدنا ان الـ scalabilityهي الـ Hadoopمن احدى مميزات

NameNodeعليها ، ثم نشير اليها باستخدام الـ Hadoop binariesجديدة ووضع nodesاضافة

INTELLIGENT

فنستطيع rack switchesو racks-multiتحتوي على environment، فاذا كان لدينا intelligentبانها Hadoopايضا تتميز

dataتوجد الـ rackتتصل وبأي switchوبأي sDataNodeوبالتالي سيعرف اين تقع الـ Hadoopلـ topologyوصف هذه الـ

كما يقلل dataمما يقلل زمن استخراج الـ dataفستقوم باستخدام اقصر الطرق للوصول الي الـ job MapReduceاذا فبمجرد استالمها لـ

المستخدم BWمن الـ

FLEXIBLE

structural-semiوالـ structural-unوالـ structuralمثل الـ dataالتعامل مع جميع انواع الـ Hadoopتستطيع

FAULT-TOLERANT

Page 7: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 7 | P a g e

nodeعلى الـ data blocksوتوزيع الـ replication factorبـ replicationكما ذكرنا سابقا امكانية عمل

HADOOP TECHNOLOGY STACK

ويمكن تقسيمها الى جزئين اساسيين وهم : Hadoopاو مكونات Hadoop stackهذه الصورة توضح الـ

HADOOP CORE

وهو الجزء االوسط داخل الدائرة ويتكون من:

1- HDFS

Hadoop distributed file systemوهو

2- MapReduce

:ويتكون من clusterالموجودة في الـ dataللتعامل مع الـ programmable interfaceوهو الـ

a. JobTracker

Page 8: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 8 | P a g e

TaskTrackersللـ manageو trackويقوم بعمل schedulingو resources manageيقوم بعمل

task life cycle managementو tracking resource availabilityو

b. TaskTrackers

taskبحالة الـ job trackerللـ Updateومتابعة تنفيذها واعطاء job trackerمن الـ tasksتقوم باستقبال الـ

3- YARN

MapReduce version 2 (MR2)وهو فعليا yet another resource negotiatorوهو اختصار

للـ managingبعمل daemons، بحيث يقوم احد الـ daemonsالى job trackerفي انه قسم الـ version 1وهو يختلف عن

resources واالخرmanaging للـjobs

jobsيحتوي على مجموعة من الـ applicationواصبح الـ applicationsبكلمة jobsوتم استبدال كلمه

HADOOP COMMON

مثل : dataالتي تتعامل مع الـ وهو باقي المكونات

Data access

Data storage

Data integration, visualization, execution and development

Data serialization

Data intelligence

Data integration

Management, Monitoring and orchestration tools

HADOOP COMMON PROJECTS

يمكن االطالع عليها من اللينك التالي dataللتعامل مع الـ projectsبتطوير apacheامت ق

http://incubator.apache.org/projects/

ويمكن تصنيفها حسب وظيفتها كالتالي

DATA ACCESS

Page 9: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 9 | P a g e

تمكنهم من التعامل مع الـ javaمثل الـ programming languageاو اي SQLفالعديد من االشخاص ليس لديهم المعرفة الكافية بالـ

data فلذلك قامت بعض الشركات بعملdata access libraries مثل نستطيع استخدامها بسهوله:

PIG

Pig هيscripting tool نستطيع من خالله عمل التالي:

USAGE

getting the data عن طريق الـqueries

data Loading up

Transforming data

Filtering data

Returning or storing those results

COMPONENT

:من قسمين Pigويتكون

1- Pig Latin

المراد تنفيذه job codeوهو الـ

2- Pig Runtime

clusterيمكن تنفيذه داخل الـ MapReduce jobثم تحويله الى Pig Latin(job code)للـ compileوهو الجزء الذي يقوم بعمل

HIVE

HDFSالموجودة في الـ dataللـ structureيقوم بعمل data access projectهو

وهي مثل Hive query language (HiveQL)تسمى languagequeryتستخدم data warehouseداخل DBوهو عبارة عن

SQLالـ

clusterلتنفيذه على الـ MapReduce jobالى queryوهي تقوم بتحويل الـ

DATA STORAGE PROJECT

عند الطلبثم نقرءها dataنضع به الـ batch processing systemهو Hadoopكما ذكرنا سابقا ان

؟ real time dataاو اردنا transaction processولكن ماذا اذا اردنا تنفيذ

النها ال تعتمد scalableبشكل اكثر مرونة وتجعلها Dataالتي تتعامل مع الـ relational database-nonالـ ففي هذه الحالة يمكن استخدام

keysوانما تعتمد على الـ dataبين الـ relationsعمل في schemasوالـ tablesعلى الـ

على dataالذي يقوم بتخزين الـ DB oriented-Columnوهو الـ relational database-nonيستخدم نوع من انواع الـ big dataوالـ

keysويتم االشارة اليها عن طريق columnsشكل

Page 10: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 10 | P a g e

: relational DBومن امثلة الـ

Google's bigtable الذي يستطيع عملtable يحتوي على ماليين الـcolumns والـrows وعملindexing و

analysis لهم

MySQL BD

Cassandraو HBaseهو Hadoopالتي يستخدمها oriented-Column relational database/-nonومن امثلة الـ

HBASE

o يسمى ايضاapache Hbase اوHadoop data base

o متخصص في الـ data warehousing analysis وعملtolerant-fault

o يقومPig وHive بعملintegration natively معHbase بدون ايconfiguration

CASSANDRA

o يسمى ايضاApache Cassandra database

o وهي مستوحاه منAmazon's Dynamo data store

o صممت خصيصا لعملprocessing للـreal time interactive transaction

وقت معين لحل مشكلة تستخدم في موقف معين و toolسنجد ان كل انهم ال يقوموا بنفس المهمة والمستخدمة اال toolsوعلى الرغم من تنوع الـ

معينه

مثل : problems businessللتعامل مع الـ technologiesتستخدم انوع عديدة من الـ Hadoopايضا

INTERACTION

HCatalog تسمى toolويتم ذلك عن طريق

HCATALOG

Page 11: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 11 | P a g e

االخرى toolsلمختلف الـ Hive metadataتقوم بعرض الـ table management layer او metadata tableوهي تستخدم كـ

لكي تستطيع القراءة منها والكتابه عليها

SEARCHING

Lucene تسمى toolويتم ذلك عن طريق

LUCENE

لعمل : APIsوالـ algorithmsبعض الـ Luceneتستخم

Full text searching

Wild card searches

Phrase searches

Range searches

HAMA

BSP, Bulkبعمل Hamaحيث تقوم scientific dataعند التعامل مع مقدار كبير من Hamaتسمى toolايضا يمكن استخدام

Synchronous Processing

DEVELOPMENT

CRUNCH

وسنتحدث عنها بمزيد من MapReduce pipelinesللـ runningو testingو writingتستخدم لعمل tooldevelopmentهي

التفاصيل مستقبال ان شاء هللا

map, shuffle, reduce, andمع البيانات وهي تعاملها اثناء MapReduceعلى جميع مراحل الـ full controlكما انها تعطي

combine

DATA SERIALIZATION

(binary or human readable)اخر formatالى data formatاو الـ data structureتغيير الـ هي عمليه serializationالـ

ثم عمل applicationمن الـ dataاستخراج الـ ذلك عن طريق حتي يسهل التعامل معها او تخزنها او ارسالها عبر االنترنت، ويتم

formatting بحيث يقوم برنامج اخر بعمل لهاdeserialize لهذه الـ format ويتعامل مع الـdata الموجودة داخله

XML, JSON, YAMLمثل الـ serializationللـ formatsوهناك عدة

AVRO

data serialization and exchangeتستخدم في عمل Hadoop essential frameworkيطلق عليها common toolهو

AVROفيمكن استخدام javaمكتوبه بالـ dataلكي يتعامل مع application or C++ pythonفاذا اردت استخدام

Page 12: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 12 | P a g e

THRIFT

language compatibilitycrossمتخصصه في الـ language neutral serialization frameworkهي

DATA INTELLIGENCE

data analysisهو الـ data intelligenceويقصد بالـ

Business performance, data mining, online analyticsمثل dataلجميع انواع الـ analysisويمكن عمل

DRILL

dataللـ interactive analysisتقوم بعمل toolوهي

MAHOUT

three C’sتهدف الى عمل machine learning libraryهي

3C’s:

1- ecommendation/ collectiveR

recommendation enginesحيث تعمل كـ

2- Clustering

users، مثل االهتمامات المشتركة بين الـ التي لها عالقة ببعضها البعض DOCsوالـ textبتجميع الـ حيث تقوم

3- Classification

الى اهتمامات بمجاالت التكنولوجيا او الصناعة مثل تصنيف االهتمامات DOCsوالـ Textلهذه الـ categorizeحيث يقوم بعمل

او غيرها

DATA INTEGRATION TOOLS

والعكس relational systemsوالـ Hadoopبين dataتسمح بنقل الـ integration toolsالـ

SQOOP

relational systemالى اي Hadoopمن dataبارسال الـ تقوم tooldata exchangeهي

tapsبدال من استخدام الـ dataللـ archivingكنوع من انواع الـ Hadoopالي relational systemمن الـ dataكما تقوم بارسال الـ

arching toolو integration toolيعتبر sqoopاذا فان

FLUME AND CHUCKWA

وهم ,، real timeفي الـ logsمعالجة وتحليل الـ اي real time log analysisيقوموا بعمل stoollog collectorعبارة عن هم

servicesاو OSوالـ applicationsمع جميع الـ يتعاملوا

logsلها في اي مكان له setupالتي يمكن عمل frameworksتتكون من مجموعه من الـ stoolوهذه الـ

Page 13: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 13 | P a g e

realحتي نتمكن من عمل Hadoopوارسالها مباشرة الي dataلمعالجة الـ qoopSمع Chuckwaو Flumeاذا فيمكن استخدام

time analysis

MANAGING, MONITORING, AND ORCHESTRATING

مثل toolsنستخدم بعض الـ clusterلكل شيء موجود في الـ managing, monitoring, and orchestratingلعمل

ZOOKEEPER

clusterالتي تعمل على الـ servicesبين كل الـ synchronizationيقوم بعمل distributed service coordinatorهو

servicesللتعامل مع هذه الـ centralized management pointكما توفر

OOZIE

Hadoop jobsللـ workflowاو schedulingيقوم بعمل workflow scheduler systemهي

Sqoop jobثم بعد ذلك تشغيل Hive queryوبعد ان ينتهي يتم تنفيذ Pig scriptبتنفيذ workflowفمثال يبدأ الـ

AMBARI

,MapReduce, Hive, HDFSمثل servicesبجميع الـ clusterلـ monitorو manageو provisionتقوم بعمل toolهي

HBase, HCatalog, Zookeeper, Oozi, Pig, and Sqoop عن طريقdashboard سهلة االستخدام

لها installationالتي نريد عمل servicesبسيط نستطيع من خالله تحديد الـ wizardعن طريق serviceلـ provisionفيمكن عمل

عليها installationالتي نريد عمل الـ nodeونحدد الـ Hiveاو Pigمثل

Management interfaceعن طريق start, stop, reconfigureمثل servicesلهذه الـ manageكما نستطيع عمل

toolايضا باستخدام هذه الـ servicesللـ Monitorكما نستطيع عمل

KNOX

clusterHadoopلـ centralized securityتقوم بعمل toolهي

HDT (HADOOP DEVELOPMENT TOOLS)

MapReduce jobsمثل الـ development tasksلعمل Eclipseمع integrateالتي تقوم بعمل toolsهي مجموعة من الـ

SPARK AND SHARK

dataالوصول الى الـ يؤدي الى سرعةمما memoryالـ في disksالـ علىالموجوده dataالـ بتخزينتقوم toolهي

Page 14: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 14 | P a g e

Memoryالموجوده في الـ dataلهذه الـ queryعمل Hiveو Pigيستطيع

toolsوبعض الـ HDFSيتكون من الـ Hadoopاذا فالخالصه هي ان

HADOOP DISTRIBUTED FILE SYSTEM (HDFS)

Hadoopالخاص بـ systemFileالذي يعتبر الـ HDFSنتحدث االن بمزيد من التفاصيل عن الـ س

و foldersو filesفي انه يسمح بعمل file systemsنموذجي اال انه يشترك مع باقي الـ file systemعلى الرغم من انه ليس

permissions وبعض االشياء االخرى

التي يكون فيها الـ FSوليس مثل باقي الـ 64MBيساوي block sizeوالـ blocksعلى شكل Dataبتخزين الـ HDFSكما يقوم الـ

block size 4يساويk 8اوk

NameNode, DataNaode and Secondary NameNodeهي HDFSالخاصه بالـ core componentو الـ

ومحتوياتها node statusتسهل علينا االطالع على الـ UIلها Nodeكما ان كل

Page 15: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 15 | P a g e

HDFS ARCHITECTURE

RACsواحد فقط او مجموعة RACباستخدام HDFS clusterيمكن عمل

multi-rack large cluster single-rack cluster

SINGLE-RACK CLUSTER

:يعمل كـ master serverسنجد ان الـ rack cluster-singleلنتحدث اوال عن

1- NameNode لعملcontrol على الـsDataNode

2- NameNodeSecondary

3- Tracker Job لعملcontrol للـTask Trackers

MULTI-RACK LARGE CLUSTER

Page 16: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 16 | P a g e

: rolesومن اهم هذه الـ ، معينه roleيقوم بـ RACكل سنجد ان rack cluster-multiفي الـ

1- NameNode هو الـcontroller الذي يقوم بعمل :

a. جميع الـfile system operations مثل directorycreate new file/ اوread/write files

file system namespaceللـ manageبعمل يقوم NameNodeلذلك نستطيع القول بان الـ

b. يقوم بعملsnapshot للـfile system في الـmemory

c. وايضا يقوم بعملhandling للـblock mappings اي انه يطلب من الـDataNode تخزين الـBlocks في

اماكن معينه

2- DataNode : هو المسئول عن جميع الـblock operations

a. يقوم بتخزين الـblocks في اماكن معينه وبطريقة معينه بناء على طلب من الـNameNode

b. يقوم بعملreplication للـdata blocks ولكن ايضا يتم تخزين هذه الـreplicated blocks بناء على االماكن

NameNodeالتي يحددها الـ

:مثال

:فيتم ذلك عن طريق Pig Scriptمعينه باستخدام dataاذا اردنا استخراج

التي يريدها blocksمعرفة اماكن الـ NameNodeمن الـ scriptيطلب الـ -1

Pigالى الـ blocksبارسال اماكن الـ NameNodeيقوم الـ -2

الستخراجها DataNodeبارسال هذه االماكن مباشرة الى الـ Pigيقوم -3

مباشرة Pigالى dataبارسال الـ DataNodeيقوم الـ -4

3- NameNodeSecondary وهي ليست بديلة للـNameNode ولكن يمكن ان نطلق عليهاcheckpoint node

في حالة NameNodeللـ system restore pointكل فترة ويمكن اعتبارها NameNodeللـ screenshotتقوم بعمل nodeوهي

لها corruptionحدوث اي

HDFS FEATURES AND INTERNALS

مثل featuresببعض الـ HDFS، ويتمتع الـ diskعلى الـ dataبتخزين الـ HDFSيقوم الـ

RAC AWARENESS

؟ dataكامل بكل ما فيه من RACماذا يحدث اذا فقدنا

NameNodeبسبب وجود الـ RAC awareانه Hadoopكما ذكرنا سابقا ان من مميزات

RACsعلى الـ replicated blocksواماكن الـ RACوبالتالي سيعلم محتويات كل Network topologyبالـ NameNodeحيث نقوم بتعريف الـ

رىاخ RACsالموجوده به على blocksللـ re-replicationكامل فانه يقوم بعمل RACاالخرى ، فاذا فقدنا

RACفي الـ Nodeوهذا ايضا ما يحدث في حالة فقد

RELIABLE STORAGE

Page 17: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 17 | P a g e

: communicationالمطلوبة عن طريق نوعين من الـ dataيتم تجميع الـ

1- Cross RAC communication : وهو الـdata flow بين الـRACs وتتم عبر الـNW switches وهو تؤثر مباشرة

NW BWعلى الـ

2- Interconnect RAC communication : وهو الـdata flow بين الـNodes داخل نفس الـRAC وال تؤثر بشكل مباشر

BWعلى الـ

يحاول دائما تجميع الـ NameNodeقد يكون عالي، لذلك فان الـ BWفان ذلك سيستهلك RACمن اكثر من dataفاذا تم تجميع الـ

Blocks من نفس الـRAC بقدر االمكان لتقليل الـcross rac communication

BLOCK PLACEMENT

blocksللـ replicateفانه يقوم بعمل RACداخل الـ DataNode، ففي حالة فقدان block placementهي الـ HDFSايضا من اهم مميزات الـ

nodes (shortest path)المفقودة من اقرب

مما يقلل ( node4)ولن يطلب ذلك من node2على block 5لـ replicateبعمل node3من NameNodeفسيطلب الـ node1فمثال اذا فقدنا

network utilizationالـ

REBALANCING

على الـ data blocksولكن كيف سنقوم باعادة توزيع الـ ، clusterجديدة للـ nodesعلى االمتالء، فيجب اضافة disksاذا اوشكت الـ

DataNodes لتشمل الـDataNodes الجديدة ؟

cluster nodesبالتساوي على الـ data blocksواعادة توزيع للـ rebalanceتقوم بعمل balancer toolاالجابة هي عن طريق

Page 18: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 18 | P a g e

REPLICATION MANAGEMENT

nodesعلى الـ replicatedالـ blocksعدد الـ NameNodeهي الوسيلة التي يعرف بها الـ Replication Managementالـ

وتستطيع تحديد replicated blocksعدد الـ NameNodeوبذلك تعرف الـ block reportبارسال DataNodeيقوم الـ heartbeats 10فكل

under-replicatedام over-replicatedما اذا كان

Over-replicated هو ان عدد الـ :blocks اكثر من الـreplication factor الـ يطلبالمحدده ، وبالتاليNameNode من الـDataNode

blockبحذف هذا الـ

Under-replicated هو ان عدد الـ :blocks اقل من الـreplication factor وبالتالي يطلب الـ المحدده ،NameNode من الـDataNode

عن العدد المفروض تواجده كلما زادت الـ blocks، وكلما قل عدد الـ عالية priorityواعطاء هذه العملية blockلهذا الـ replicationعمل

replication priority له

، ونتيجة الـ healthyام corruptedللتأكد من انها block statusللـ scanيقوم بعمل block scannerعلى DataNodeايضا تحتوي الـ

scanning ؤثر في الـ تblock report فاذا كان هناك ،corrupted block فيطلب الـNameNode من الـDataNode بحذف هذا الـblock

nodeعلى نفس الـ له مرة اخرى replicationوعمل

HDFS INTERACTION

HDFS file systemوالـ HDFS dataيسمح لنا بالتعامل مع الـ bashوهو مثل الـ FS Shellعن طريق الـ HDFSنتعامل مع الـ

,ls, cp, mv, cat, mkdir, chown, chgrpمثل bashوالـ FS Shellالمشتركة بين الـ commandsوهناك العديد من الـ

chmod,

عن الـ statistics وعرض level cluster administration-lowالذي يقوم بعمل DFSمثل admin toolsوهناك العديد من الـ

cluster

quotaويمكن ايضا عمل

file systemللـ browseنستطيع من خالله عمل nodeلكل web UIكما تتوافر

Page 19: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 19 | P a g e

مع امثلة توضيحية لكيفية استخدامه على هذه اللينك commandsكمرجع للـ command referenceلنا Hadoopكما توفر

https://hadoop.apache.org/docs/r1.0.4/commands_manual.html

Page 20: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 20 | P a g e

HIGH THROUGHPUT

HDFS rolesسنتحدث االن بمزيد من التفاصيل عن الـ

NAMENODE

يمر من خالله requestوكل controllerوالنه الـ single point of failureالنه clusterهو اهم جزء في الـ NameNodeالـ

memoryفي الـ file systemوالـ clusterمحتويات الـ ويضع كل file system metadataكما انه يحتوي على الـ

clusterفسنفقد الـ NameNodeحتى االن فبالتالي اذا فقدنا الـ NameNodeللـ high availability solutionوحيث انه ال يوجد اي

ككل

secondaryوذلك عن طريق الـ disaster recovery (DR)، اال وهو الـ high availabilityولكن هناك حل بديل للـ

NameNode الذي سنتحدث عنه بعد قليل

metadataنعود مرة اخرى للـ

الموجودة filesوسنطلق على الـ ) memoryفي الـ file systemمن الـ snapshotيقوم بوضع NameNodeكما ذكرنا سابقا ان الـ

( FS imageاسم file systemعلى الـ

ثم يقوم بعمل fileلكل blocksوبالتالي يستطيع حساب عدد الـ replication factorsوالـ filesراقب الـ ت NameNodeكما ان الـ

mapping بينblock_id والـDataNode ثم يقوم بوضع كل ذلك في الـmemory

Page 21: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 21 | P a g e

التي transactionsلكل الـ trackالتي تقوم بعمل edit logاو ما يعرف بالـ journaling featureعن طريق الـ filesراقب الـ وهي ت

بنفسه بكتابة هذا الـ clientفيقوم الـ dataسواء استعالم او اضافة او حذف requestاي client، فاذا طلب الـ HDFSتتم على الـ

request في الـedit log

يقوم بعمل NameNodeللـ rebootوعندما نقوم بعمل edit logيتم تسجيله في الـ HDFSيتم على الـ modificationاذا فأي

checkpoint ثم يقوم بدمج محتويات الـmemory مع الـfiles الموجودة على الـHDFS والتي اطلقنا عليهاFS image

للـ Loadبعمل NameNodeفارغة وسيقوم الـ edit logsمرة اخرى فستكون الـ startupبعمل NameNodeوبالتالي عندما يقوم الـ

FS image في الـmemory بشكل طبيعي

الذي يزيد بشكل دائم edit logوعن حجم الـ edit logالتي يتم تسجيلها في الـ transactionوهنا تظهر بعض التساؤالت عن كمية الـ

تكبر الى edit log؟ ام سنترك الـ edit logsللـ cleanو dataللـ mergeحتي يتم عمل NodeNameللـ rebootفهل يجب عمل

ماال نهاية ؟

بشكل دوري كل ساعة FS imageوالـ edit logللـ mergingالذي يتولى مسئولية الـ NameNodesecondaryهنا تظهر اهمية الـ

مرة اخرى FS imageثم يقوم بتحديث الـ ( قابلة للتغير)

من الـ backup، واصبح ليدنا ايضا NameNodeجاهزة لالستخدام بواسطة الـ metadataحديثه و FS imageوبالتالي اصبح لدينا

metadata لدى الـNameNodesecondary يمكن استخدامها كـDR في حالة حدوثfailure لـ لNameNode فيمكن اعادة بنائه

Backupمرة اخرى باستخدام هذا الـ

وانما هم من يتعاملون معه DataNodeوال الـ NameNodeSecondaryال يتعامل مع الـ NameNodeويجب ان نؤكد على ان الـ

واذا لم يرسل الـ up & runningثواني كإشارة الى انه 3كل NameNodeالى الـ heartbeat messageيرسل DataNodeالـ ف

heartbeat دقائق فسيعتبره الـ 10لمدةNameNode خارج الخدمة

DataNodeهو الذي يتعامل مع الـ clientوالـ clientتتعامل مع الـ NameNodeكما ان الـ

:في التالي NameNodeاذا فيمكن تلخيص وظائف الـ

file system metadataيحتوي على الـ -1

blocks informationالرسال الـ clientsيتعامل مع الـ -2

3- Monitor الـhealth DataNode

DATANODES

:يقوم باالتي DataNodeالـ

disksعلى الـ blocksقراءة وكتابة الـ -1

client requestsللـ handlingمباشرة ويقوم بعمل clientsيتعامل مع الـ -2

NameNodeالى الـ heartbeat messagesيرسل -3

HDFS featuresنعود مرة اخرى الي الـ

لماذا ؟. HDFS metadata، وهذا يؤثر بشكل مباشر على الـ 64MBيساوي data block sizeذكرنا سابقا ان الـ

Page 22: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 22 | P a g e

مما يؤدي الى metadataوزيادة حجم الـ storageفذلك سيؤدي الى اهدار الـ 64MBاقل من blockفي كل dataاذا كان حجم الـ

bad performanceوهذا يعني dataاستهالك وقت اطول في الوصول الى الـ

اقل مما يحافظ على الـ metadataالتي ستستخدم سيكون اقل وحجم الـ blocksفان عدد الـ كبير blockفي الـ dataبينما اذا كان حجم الـ

capacity storage ويحسن من الـperformance

الي block sizeوالقليلة العدد، بل نستطيع ايضا زيادة الـ الكبيرة الحجم filesالذي يستطيع التعامل مع الـ Hadoopوهنا تأتي اهمية

128MB لزيادة الـperformance وتقليل حجم الـmetadata

MAPREDUCE

والـ architectureسنتحدث عن الـ . MapReduceومكوناته وطريقة عمله سنتحدث االن عن الـ HDFSعد ان تحدثنا عن الـ ب

internals وسنأخذ بعض االمثلة عن كيفية التعامل معه

تحتاج الى codesعبارة عن jobs، وهذه الـ jobsعن طريق clusterمن الـ dataيقوم باستخراج الـ softwareوببساطه هو

programmers لكتابتها، ولكن لتسهيل التعامل مع الـMapReduce يمكن استخدامHive queries اوPig scripts والتي تعتبر

high level languages وفي نفس الوقت تقوم هي بترجمة الـ يسهل التعامل معهاscript او الـquery اليMapReduce code

مستقل بذاته يستخدم في عمل function، وكل قسم هو ( map , reduce)الى قسمين MapReduceويمكن تقسيم الـ

implementations معينه

لهذه compile، ويتم عمل reduce functionsوالـ map functionsـ الخاصه بال binariesالـ عبارة عن MapReduce jobوالـ

binariesالـ

MAPREDUCE ARCHTECTURE

:اجزاء رئيسية 3من MapReduceيتكون الـ

Page 23: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 23 | P a g e

JOB CLIENT

jobsللـ submitالذي نستخدمه في عمل FS Shellاو CLIوهو الـ

JOB TRACKER

o هو الـmaster للـtask trackers وهو يتعامل مع الـNameNode

o وهو يقوم بعملexecution plan حيث يقوم بعملcoordination وscheduling للـjob على كل الـtask

trackers

o وهو ايضا مسئول عن الـphase coordination بين الـmap phase والـreduce phase وسنتحدث عنه

بمزيد من التفاصيل الحقا

Page 24: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 24 | P a g e

taskعلى الـ map functionsالتي يتم فيها تنفيذ الـ phaseهي الـ map phaseالـ

taskعلى الـ reduce functionsالتي يتم فيها تنفيذ الـ phaseهي الـ reduce phaseالـ

TASK TRACKER

o الـ داخل يعملDataNode

o يقوم الـTaskTracker بتقسيم الـjob اليtasks (map task & reduce task )ستخراج الـ عن طريق اmap

function والـreduce function من الـjob binaries

o

reduce functionsو الـ map functionsتقوم فعليا بتنفيذ الـ slotsالى tasksبارسال هذه الـ TaskTrackerالـ ثم يقوم

فسيقوم الـ tasksاثناء تنفيذ احدي الـ fail، فاذا حدث heartbeatعن طريق الـ job trackerالى الـ progress reportثم تقوم بارسال

job tracker بعملreschedule لهذه الـtask

EXAMPLE:

:فسيتم ذلك عن طريق clusterنريد تنفيذها على الـ jobاذا كان لدينا

: بعمل clientيقوم الـ -1

a. ارسال copy من الـ job binaries او الـdata files كـinput الـ الىHDFS حتى تستطيع الـtask tracker

بسهولة codeالوصول الى الـ

(mapper, reducer implementation, configuration information)تتكون من job binariesوالـ

b. الـ ثم يقومclient بارسال الـjob الـ الىjob tracker

Page 25: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 25 | P a g e

الـ التي تحتوي على sDataNodeيسأله عن اسماء واماكن الـ NameNodeالى الـ queryبارسال job trackerقوم الـ ي -2

information المطلوبه

sDataNodeالموجودة في هذه الـ task trackerبالتواصل مع الـ job trackerيقوم الـ وباستخدام هذه المعلومات -3

a. فاذا وجد فيهاfree task slots فيقوم بعملexecution plan

b. ان لم يجدfree task slots فسيبحث عن اقربsDataNode بهاtask trackers تحتوي علىfree task

slots ويستخدمها لعملexecution plan

execution planوالـ job binaryاذا يتوافر االن لدينا الـ

Page 26: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 26 | P a g e

MapReduceعن طريق job binaryالموجودة في الـ map & reduce codesبتنفيذ الـ task trackerيقوم االن الـ -4

pipeline سنتحدث عنها الحقا

reduce functionsقبل البدء في تنفيذ الـ codesmap functions/يجب ان تنتهي جميع الـ و

يحتوي status reportوهذا الـ . job trackerالى الـ heartbeatمع الـ status reportيقوم بارسال codesاثناء تنفيذ الـ -5

:على

معلومات عن الـtask وفي ايphase تتواجد( هل تتواجد في الـmap phase ام في الـreduce phase)

حالة الـtask هل اصبحتsuccessful امfailed . وفي حال انهاfailed فسيقوم الـjob tracker بعمل

reschedule لها مرة اخرى علىtask tracker اخر

الـslots availability status

بالكامل ونحصل على الـ jobلهم حتي ينتهي تنفيذ الـ manageوعمل phases 2بمتابعه تنفيذ الـ job trackerويقوم الـ -6

output

بنجاح jobبانتهاء الـ clientللـ Updateبعمل job trackerثم يقوم الـ

Page 27: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 27 | P a g e

UIايضا على الـ jobوسيظهر جميع تفاصيل الـ percentageعلى شكل clientعلى الـ progressسيظهر الـ jobعند تنفيذ الـ

MAPREDUCE INTERNALS

dataووظيفتها وكيف تتعامل مع الـ MapReduce phasesسنتحدث االن عن الـ

phasesتتكون من عدة MapReduceوكما نرى في الصورة التالية ان الـ

Page 28: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 28 | P a g e

INPUT FORMAT

هو input formatوالـ ، وتقسيمها الى اجزاء اصغر (input format)حسب نوعها diskيبدأ باستخراجها من الـ dataالتعامل مع الـ

code يقوم بالتعامل مع نوع معين من الـdata :

defaultوهو الـ textالذي يتعامل مع الـ codeاو الـ input formatوهو الـ text input formatفهناك

database informationالتي تتعامل مع الـ database input formatوهناك

imagesالتي تتعامل مع الـ binary input formatوهناك

:يقوم بـ input formatاذا فالـ

(input dataتسمى dataهذه الـ ) job requestحسب المطلوب منه في الـ dataيستخرج الـ -1

mappersالى الـ لكي يتم ارسالها ثم يحدد كيف سيتم تقسيمها -2

SPLIT PHASE

وتقسيمها diskمن الـ datainputاستخراج الـ input formatوهي تطلب من الـ input splitsتعرف ايضا باسم split phaseالـ

(map phase)التالية phase الـ ىوارسالها ال

mapperالى Lineوارسال كل linesفسيتم تقسيمه الى fileعبارة عن dataفاذا كانت الـ

map taskعبارة عن split phaseويمكن اعتبار الـ

MAP PHASE (MAPPER)

التالية phaseويرسلها الي الـ defined code-userعن طريق key/value pairsالى input splitيقوم بتحويل الـ mapperالـ

& search)(shuffle

مرات 3مكررة appleتعني على سبيل المثال ان لدينا كلمه key/value pairوالـ

3هي valueوالـ appleهو keyفالـ

Page 29: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 29 | P a g e

COMBINE PHASE

التالية مما يقلل الـ phaseالمتشابهه قبل ارسالها الى الـ key/value pairsحيث يتم تجميع وعد الـ local reducerهذه المرحلة تعرف باسم الـ

network utilization

DataNodesتوجد في جميع الـ phaseوهذه الـ

SHUFFLE & SEARCH

ثم يتم تقسيمهم ووضعهم DataNodesالموجودة في كل الـ combine phasesالقادمه من جميع الـ combined key/value pairsيتم تجميع الـ

(reducer phase)التالية phaseوارسال النتيجة الى الـ keyثم ترتيبهم حسب الـ groupsفي

DataNodeمن اكثر من dataتجميع الـ عالي نتيجة BWتستخدم phaseوهذه الـ

REDUCER

user-definedعن طريق shuffle & search phaseالقادمة من الـ sorted data (key/value pairs)بتجميع الـ reducerثم يقوم الـ

code ويرسل النتيجة مرة اخرى الي الـHDFS عن طريق الـoutput format phase

OUTPUT FORMAT

HDFSعلى الـ outputيقوم بتحديد كيف سيتم كتابة الـ

EXAMPLE

dataهذا مثال على كيفيه التعامل مع الـ

بتنفيذ task slots، فتقوم الـ fileونريد معرفة عدد مرات تكرار كل كلمة في الـ سطور 5يحتوي على HDFSعلى الـ fileلنفترض ان لدينا

على عدة مراحل jobالـ

Input format

split phaseوارساله الى الـ HDFSمن الـ fileباستخراج الـ input formattextيقوم الـ

Page 30: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 30 | P a g e

سطور كالتالي : 5يحتوي على fileوسنجد ان الـ

Nuggets Cisco MS Cisco Nuggets Web Linux Windows IT Nuggets Linux Certs Hadoop AWS IT

Split phase

input splitيسمى Lineوكل linesالى fileبتقسيم الـ split phaseقوم الـ ت

input split Nuggets Cisco MS

input split Cisco Nuggets Web

input split Linux Windows IT

input split Nuggets Linux Certs

input split Hadoop AWS IT

Map Phase (mapper)

ثم يقوم بعدها ووضع (keys)الى كلمات lineعن طريق تفكيك الـ key/value pairالي input splitبتقسيم الـ mapperثم يقوم الـ

value

Key Value Key Value Key Value

input split Nuggets Cisco MS Nuggets 1 Cisco 1 MS 1

input split Cisco Nuggets Web Cisco 1 Nuggets 1 Web 1

input split Linux Windows IT Linux 1 Windows 1 IT 1

input split Nuggets Linux Certs Nuggets 1 Linux 1 Certs 1

input split Hadoop AWS IT Hadoop 1 AWS 1 IT 1

Combine phase

التالية phaseالى الـ outputوعد المتشابه وارسال الـ key/value pairsتجميع الـ phaseيتم في هذه الـ

& search Shuffle

وفرزها DataNodesالموجودة في كل الـ combine phasesالقادمه من جميع الـ inputsبتجميع الـ Shuffle & search phaseثم تقوم الـ

مرة اخرى

Key Value

Nuggets 1

Nuggets 1

Nuggets 1

Cisco 1

Cisco 1

Page 31: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 31 | P a g e

Linux 1

Linux 1

Hadoop 1

Windows 1

AWS 1

MS 1

Web 1

IT 1

IT 1

Certs 1

Reducer

مرات الخ( 3مكررة nuggetsالمرتبة ويقوم بتجميعها )كلمة dataهذه الـ reducerثم يستلم الـ

Key Value

Nuggets 3

Cisco 2

Linux 2

Hadoop 1

Windows 1

AWS 1

MS 1

Web 1

Certs 1

IT 2

Output format

final output formatلكي لعمل الـ output format phaseالى الـ outputبارسال الـ reducerثم يقوم الـ

output formatحتى الـ input formatبدءا من الـ key/value pairيعتمد على فكرة الـ Hadoopاذا فمن المثال السابق نستنتج ان

stateوال objectsكانها عملية حسابية حيث ال يوجد computationالذي يتعامل مع الـ functional programming على الـ ايضا يعتمدكما

يتغير سلوك الـ resultالـ وعلى حسب الـ statementsكانها computationع الـ الذي يتعامل م imperative programingوهذا عكس الـ

program

EXAMPLE 2

Hadoopباختصار لنرى كيف يتم التعامل مع سنقوم بعمل مثال واقعي

linesونضع به الـ words.txtونقوم بعمل ملف باسم DataNodeنذهب الى الـ -1

Page 32: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 32 | P a g e

reduce -mapوهو يحتوي على العديد من الـ Hadoop examplesيسمى filejarعلى Hadoop filesيحتوي -2

examples وهو بمثابة الـjob التي سنقوم بتنفيذها على الـfile

Hadoop examplesوهي احدي محتويات الـ word countتسمى jobسنقوم االن بتنفيذ -3

Page 33: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 33 | P a g e

resultsيسمى directoryفي outputوسنضع الـ

Log fileوايضا سنجد r-part-00000باسم Outputسنجد الـ browserومن الـ -4

r-part-00000نقوم باستعراض محتويات -5

وهي نفس النتيجة الموجوده في المثال السابق

INSTALLING APACHE HADOOP (SINGLE NODE)

Page 34: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 34 | P a g e

عمليا Hadoopنظريا ، نتحدث عن Hadoopالن بعد ان تعرفنا على ا

Hadoopلـ implementationيمكن طرق عديدة لعمل

1- standalone mode

الحد الـ failureواحدة ، وبالتالي اذا حدث Java virtual machineتحت Hadoops daemonsحيث تعمل كل الـ

component فسيتوقفHadoop بالكامل

2- pseudo distributed mode

ممستقلة jvmتحت daemonوفيها تعمل كل one node clusterوهو

3- fully distributed

مستقلة nodeعلى daemonوفيه تعمل كل node cluster-multiوهو

INSTALLATION PREREQUISITES

1- keyssh : يجب عملtrusted key الـ بينNameNode وباقي الـsDataNode واال سنضطر الى كتابة الـ

password في كل مرة نقوم بتشغيل الـdaemons فيها

a. نقوم بعملinstall للـserver-openssh على الـclient machine

NameNodeعلى الـ ssh keyنقوم بعمل

Page 35: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 35 | P a g e

Client Nodeوارسالها الى الـ NameNodeلنفس الـ trusted fileفي الـ public keyنقوم بوضع الـ

Passwordsالتعامل مع بعضهم البعض بدون الحاجه الى nodes 2وبالتالي تستطيع الـ

2- Java 6 وهناك عدة انواع من الـ : او اعلىjava مثلJDK, JRE, SE

النه يحتوي developersيستخدمه الـ JDKبينما الـ full featuresبالـ runtime environmentsهم SEوالـ JREوالـ

compilersمثل الـ development toolsعلى

sudo apt-get install openjdk-8-source

Page 36: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 36 | P a g e

java versionولمعرفة الـ

3- Ports

NameNode 50070

Job tracker 50030

Task Tracker 50060

DataNode 50075

INSTALLATION

1- Downloading and Installing Hadoop

wget http://www.interior-dsgn.com/apache/hadoop/common/stable1/hadoop-1.2.1-bin.tar.gz

tar -zxvf hadoop-1.2.1-bin.tar.gz

cp -r hadoop-1.2.1 /usr/local/hadoop

environment variableاضافة -2

bashrc.الى Hadoop's Home Directory عن طريق اضافة

export HADOOP_PREFIX=/usr/local/hadoop

export

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/loca

l/games:/snap/bin:/usr/local/hadoop:/usr/local/hadoop/bin

exec bash

Page 37: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 37 | P a g e

3- configure Hadoop's environment :

في حالة وجود اكثر من Hadoopالذي سيستخدمه java homeنستطيع اضافة الـ ”env.sh“ملف فعن طريق

installed java

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

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64

export HADOOP_OPTS=-Djava.net.preferIPv4Stack=true

4- disable IPv6

OSمن الـ IPv6للـ disableويمكن عمل

IPv6لكي يتجاهل الـ Hadoopلـ configureويمكن عمل

5- and job tracker NameNode configure ( سنترك هذه الـfiles بالـdefault configuration)

الخاص به listen portوالـ NameNodeللـ configurationالذي يقوم بعمل site-Coreفلدينا

والـ DataNodeوالـ job trackerللـ configurationالذي يقوم بعمل MapReduce siteولدينا ايضا

listen port الخاص به

HDFSللـ configurationالذي يقوم بعمل FS siteDHوايضا

daemonsHadoopتشغيل الـ -6

Page 38: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 38 | P a g e

Installationنقوم االن بعمليه الـ

DOWNLOADING AND INSTALLING HADOOP

wget http://www.interior-dsgn.com/apache/hadoop/common/stable1/hadoop-1.2.1-bin.tar.gz

tar -zxvf hadoop-1.2.1-bin.tar.gz

sudo cp -r hadoop-1.2.1 /usr/local/hadoop

sudo chown ahmed /usr/local/hadoop/ -R

Page 39: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 39 | P a g e

SET ENVIRONMENT VARIABLE

echo "export HADOOP_PREFIX=/usr/local/hadoop" >> $HOME/.bashrc

echo "export PATH=$PATH:$HADOOP_PREFIX/bin" >> $HOME/.bashrc

exec bash

CONFIGURE HADOOP'S ENVIRONMENT

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

DISABLE IPV6

IPv6لـ Hadoopعن طريق تجاهل : الطريقة االولى

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

Page 40: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 40 | P a g e

OSعن طريق الـ : الطريقة الثانية

sudo nano /etc/sysctl.conf

>>>> net.ipv6.conf.all.disable_ipv6 = 1

>>>> net.ipv6.conf.default.disable_ipv6 = 1

>>>> net.ipv6.conf.lo.disable_ipv6 = 1

sudo sysctl -p

CONFIGURE NAMENODE AND JOB TRACKER

sudo nano /usr/local/hadoop/conf/core-site.xml

Page 41: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 41 | P a g e

/usr/local/hadoop/tmp/ >> hadoop storage base directory

وسنتحدث عنه بالتفصيل الحقا

sudo nano /usr/local/hadoop/conf/mapred-site.xml

START HADOOP DAEMONS

$ hadoop NameNode –format

$ start-all.sh

Page 42: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 42 | P a g e

daemonالخاص بكل logsوكما نرى في الصورة مكان تخزين الـ

daemonالتي تستخدمها كل JVMونستطيع ايضا معرفة الـ

Page 43: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 43 | P a g e

محدد demonلـ startولعمل

STOP HADOOP DAEMONS

hadoop daemonsواليقاف

$ stop-all.sh

GUI

NameNodeللـ statisticsفي معرفة الـ GUIويمكن استخدام الـ

http://10.20.104.253:50070/

Page 44: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 44 | P a g e

job trackerللـ statisticsفي معرفة الـ GUIويمكن استخدام الـ

http://10.20.104.253:50030/jobtracker.jsp

Page 45: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 45 | P a g e

trackertaskللـ statisticsفي معرفة الـ GUIويمكن استخدام الـ

http://10.20.104.253:50060/tasktracker.jsp

Page 46: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 46 | P a g e

multimode configuration، سنتحدث االن عن الـ single node installationوبذلك نكون قد انتهينا من عمل

INSTALLING APACHE HADOOP (MULTI NODE)

taskوالـ sDataNodeوالـ Nodeعلى نفس الـ job tackerوالـ NameNodeالـ ونضع كل multimode clusterنقوم بعمل س

trackers علىnodes اخرى مستقلة

nodes 2:10باستخدام small multimode clusterويمكن عمل

+ secondary name mode (snn) )jt(nn) + job tracker (NameNode نضعهم فيnode واحدة

(dn) + task tracker (tt) DataNode على باقي الـ نضعهمnodes

multimode cluster Medium 10:40باستخدام nodes

(nn) + job tracker (jt)NameNode

secondary name mode (snn)

)(dn) + task tracker (tt DataNode على باقي الـ نضعهمnodes

multimode cluster Large 100اكثر من باستخدام node

tracker (jt) + secondary name mode (snn)(nn) + job NameNode علىdedicated machines

Page 47: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 47 | P a g e

Rack Awarness

Network & HDFS optimizations

MapReduce optimizations

INSTALLATION STEPS

1- ssh keys

nodesعلى كل الـ ssh keyللـ copyنقوم بعمل

CONFIGURE MASTERS AND SLAVE NODES

: files 2على conf directoryيحتوي الـ

Masters: نضع به الـNameNodesecondary

Slaves: نضع به الـsDataNode

mastersفي الـ NameNodesecondaryنقوم باضافة اسم الـ

Page 48: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 48 | P a g e

slavesفي الـ sDataNodeثم نقوم باضافة اسم الـ

CLUSTER CONFIGURATION

:وذلك عن طريق Masterبالـ task trackersوالـ job trackersوالـ sDataNodeوبعد ذلك نقوم بتعريف الـ

داخل هذا الملف NameNodeالـ اسم نقوم باضافة حيث : sDataNodeالموجود في الـ site.xml-coreملف الـ

sudo nano /usr/local/hadoop/conf/core-site.xml

task trackerلكي يستطيع الـ job trackerحيث نقوم باضافة اسم الـ : sDataNodeالموجود داخل الـ site.xml-mapredملف

job trackerاالتصال بالـ DataNodeالموجود على هذه الـ

sudo nano /usr/local/hadoop/conf/mapred-site.xml

Page 49: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 49 | P a g e

CONFIGURE NAMENODE

NameNodeللـ formatنقوم بعمل

hadoop NameNode -format

START NAMENODE & SECONDARY NAMENODE & DATANODES

scriptعن طريق الـ NameNodeثم نقوم بتشغيل الـ

start-dfs.sh

Page 50: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 50 | P a g e

dfs.sh-start: يقوم بتشغيل الـNameNode على الـlocal machine ، ثم تقوم الـNameNode بقراءة الـMasters file

sDataNode لتشغيل الـ slavesوالـ NameNode secondary وتشغيل الـ

الخاصه بها daemonتعمل عليها الـ nodeسنجد ان كل jps commandوعند استخدام

START JOB TRACKER & TASK TRACKERS

scriptعن طريق job trackerثم نقوم بتشغيل الـ

start-mapred.sh

mapred.sh-start يقوم بتشغيل الـtrackerjob على الـNameNode ثم يقرأ الـslaves file لتشغيل الـtask trackers

Page 51: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 51 | P a g e

الخاصه بها daemonتعمل عليها الـ nodeسنجد ان كل jps commandوعند استخدام

UIويمكن رؤية النتيجة على الـ

Page 52: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 52 | P a g e

SCENARIO: DECOMMISSION NODE

فكيف نقوم بعمل ذلك ؟ clusterمن الـ sDataNodeلنفترض ولسبب من االسباب نريد فصل احد الـ

Page 53: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 53 | P a g e

وهذا الحل مرفوض data loss، ولكن ذلك قد يؤدي الى حدوث DataNodeللـ shutdownالحل االول هو ان نقوم بعمل -1

ونشير fileفي DataNodeعن طريق وضع اسم الـ clusterمن الـ DataNodeللـ excludeالحل االخر هو ان نقوم بعمل -2

site.xml file-coreاليه من داخل الـ

nodesالى باقي الـ Decommissioning nodeمن الـ dataللـ replicationوهذا يؤدي الى حدوث

a. نقوم بعملexclude file ونضع بداخله اسم الـDataNode التي نريد فصلها عن الـcluster

b. نقوم باضافة هذا الـfile في الـsite.xml file-core

sudo nano /usr/local/hadoop/conf/core-site.xml

===================================================

<property>

<name>dfs.hosts.exclude</name>

<value>/usr/local/hadoop/exclude</value>

</property>

“dfs.hosts.include”الى “dfs.hosts.exclude”من property nameبنفس الطريقة ايضا مع تغيير الـ includeويمكن عمل

Page 54: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 54 | P a g e

sudo nano /usr/local/hadoop/conf/core-site.xml

===================================================

<property>

<name>dfs.hosts.include</name>

<value>/usr/local/hadoop/include</value>

</property>

c. ثم نقوم بعملrestart للـcluster عن طريق

hadoop dfsadmin -refreshNodes

3بدال من 2اصبح live nodesان عدد الـ UIوسنجد على الـ

clusterمازالت تعمل ولكنها خارج الـ DataNodeوسنجد ايضا ان الـ

SCENARIO: CLUSTER REBALANCER

Page 55: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 55 | P a g e

لها على الـ rebalancingستكون كبيرة فيجب عن replicated dataفان الـ nodesلعدد كبير من الـ decommissionاذا قمنا بعمل

cluster nodes وذلك عن طريقbalancer.sh-start

start-balancer.sh

Balancingاليه ، وبعد ذلك تظهر رسالة نهائية بنتيجة الـ cluster nodesواضافة الـ balancerانه قام بتشغيل الـ logsفي الـ سنجد

”node over utilization 0“و ”nodes underutilization 2“وهي ان هناك

STOP CLUSTER

عن طريق taskTrackersوالـ NameNodeمن الـ job trackerنقوم بايقاف الـ

$ stop-mapred.sh

secondary NameNodeوالـ DataNodesوالـ NameNodeواليقاف الـ

$ stop-dfs.sh

Page 56: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 56 | P a g e

تعمل daemonsوسنجد انه لم تعد هناك اي

START ALL DAEMONS

عن طريق cluster nodesعلى الـ daemonsهناك طريقة اخرى لتشغيل كل الـ

start-all.sh

Page 57: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 57 | P a g e

TROUBLESHOOTING, ADMINISTERING AND OPTIMIZING HADOOP

TROUBLESHOOTING

فماذا نفعل ؟. التي لم تعمل nodesوقمنا بتشغيله ، ولكن هناك بعض الـ Hadoop clusterلـ installبعد ان قمنا بعمل

logsنستخدم الـ : االجابة هي

LOGS

logs، وهناك نوعين من الـ Logsله daemonفكل

a. error messages

b. Java exceptions

filesوهناك نوعين من الـ

Page 58: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 58 | P a g e

.log : يحتوي على جميع الـinformation التي تتعلق بالـdaemon فاذا حدث اي ،error فيجب البحث عن الـ

errors في الـ“.log”

.out : تحتوي على الـstart up information فعندما نقوم بتشغيل ،daemon معينه فيتم تسجيل الـstart up

information في هذا الـfile

: directoriesتحت احدى الـ hadoop homeالـ في logsوتوجد الـ

Log directory : وهو الـdefault path للـ.log والـ.out

libexec directory : هو الـpath البديل للـdirectorylog في حالة عدم وجودlog directory

عن طريق datanodeللـ UIفي الـ logsويمكن االطالع على الـ

http://hdnode01:50075/logs/

HADOOP DATA

”tmp“تحت home directoryالخاصه به في الـ dataبتخزين الـ Hadoopيقوم

tmp directoryالـ property configurationقمنا بعمل sites.xml”-“coreللـ configuration عمل فكما نتذكر اثناء

Base Directoryلذلك يسمى بالـ daemon dataالخاصه بالـ directoriesيحتوي على جميع الـ tmp dirوهذه الـ

Page 59: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 59 | P a g e

nameالخاصه به في الت dataيضع الـ namenodeالتي جعل الـ configurationوما هي الـ directoriesولكن ماذا يوجد بهذه الـ

directory ؟

والـ namenodeللـ property configurationفيمكن عمل tmpللـ property configurationاالجابة هي انه مثلما يوجد

secondary namenode والـDFS

dfs.data.dir ${hadoop.tmp.dir}/dfs/data datanode data

dfs.name.dir ${hadoop.tmp.dir}/dfs/name namenode data

fs.checkpoint.dir ${hadoop.tmp.dir}/dfs/namesecondary secondary namenode

وايضا تقوم بتخزين جميع dfs/data/{hadoop.tmp.dir}$في الـ block informationبتخزين جميع انواع الـ datanodeوتقوم الـ

عنها Metadataوالـ raw bytesالـ

name spaceالنه يحتوي على الـ VERSION directoryالهامة هي الـ directoriesومن احد الـ

NAMESPACE

namespace IDلها نفس الـ nodes، وجميع الـ directoriesوالـ filesالخاص بالـ hierarchyهو الـ

cat /usr/local/hadoop/tmp/dfs/name/current/VERSION For NameNode

cat /usr/local/hadoop/tmp/dfs/data/current/VERSION For DataNode

Page 60: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 60 | P a g e

لن تعمل nodeفان هذه الـ namenode namespace IDعن الـ nodeفي اي Namespaceواذا اختلف الـ

namenodeللـ formatيتغير كلما قمنا بعمل namespace IDوالـ

Page 61: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 61 | P a g e

كالتالي logوسيظهر الـ

datanodeوالـ namenode namespace IDمختلفة ، كما يظهر الـ namespace IDيوضح ان الـ logوهذا الـ

namespace ID

namenodeالموجود في الـ namespace IDلكي يكون مثل الـ Namespace IDDataNodeلذا يجب ان نقوم بتعديل الـ

Sudo nano /usr/local/hadoop/tmp/dfs/data/current/VERSION

بشكل طبيعي مرة اخرى clusterومن ثم نستطيع تشغيل الـ

ADMINISTRATION

Page 62: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 62 | P a g e

معرفة بعض االساسيات Hadoop administratorيجب على

COMMISSION & DECOMMISSION

Commissioning هي عملية اضافةnode الي الـslaves file ثم القيام بعملconfiguration للـsite.xml-hdfs والـ-mapred

site.xml حتي تصبحonline

Decommissioning هي عملية فصل الـnode من الـcluster عن طريق ازالتها من الـslaves file واضافتها فيexclude file

site.xml-coreنشير اليه من

CHECK FOR CORRUPTION

corrupted blocksنستطيع معرفة ما اذا كان هناك اي FSCKباستخدام

unwanted blocksنستطيع ازالة الـ Deleteباستخدام االمر و

DEFAULT AND OVERRIDE CONFIG

COPY DATA IN, OUT, ACROSS THE CLUSTER

copy fron commandو put commandمثل hdfsعلى الـ copyهناك العديد من الطرق لعمل

clusterعلى الـ dataالذي يقوم بتوزيع الـ distributed copyولكن هناك ايضا

SAFE MODE

hdfsللـ read only modeهو

حتى تقوم بعمل datanodesثم ينتظر الـ edit logوالـ fsimageللـ loadيقوم بعمل namenodeففي كل مرة نقوم بتشغيل الـ

report للـblocks

Page 63: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 63 | P a g e

OPTIMIZATION

clusterللـ optimizationنستطيع عمل core, mapred, hdfsعن طريق الثالث ملفات

بشكل مباشر dataالنهم يتعاملوا مع الـ reducersوالـ mapperيتم للـ optimizationومعظم الـ

CORE OPTIMIZATION

كالتالي site.xml-coreللـ optimizationفمثال يمكن عمل

<configuration> <property> <name>fs.default.name</name> <value>hdfs://hnnode:10001</value> <description>NameNode configuration,host/ip:port</description> </property> <property> <name>hadoop.tmp.dir</name> <value>/usr/local/hadoop/tmp</value> <description>Base for other directories</description> </property> <property> <name>fs.checkpoint.dir</name> <value>disk1/hdfs/secondname,disk2/hdfs/secondname</value>

<description>secondary NameNode storage</description> </property> <property> <name>webinterface.private.actions</name> <value>true</value> <description>advanced options in Web UIs</description> </property> </configuration>

Page 64: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 64 | P a g e

له redundancyلعمل disks 2على secondary namenodeوكما نرى في الجزء المظلل من الصورة انه من االفضل وضع الـ

dataخوفا من فقدان الـ

<property> <name>fs.checkpoint.dir</name> <value>disk1/hdfs/secondname,disk2/hdfs/secondname</value> <description>secondary NameNode storage</description> </property>

web UIالي الـ advanced buttonsوايضا يمكن اضافة

<property> <name>webinterface.private.actions</name> <value>true</value> <description>advanced options in Web UIs</description> </property>

HDFS OPTIMIZATION

كالتالي HDFSللـ optimizationويمكن عمل

<configuration> <property> <name>dfs.name.dir</name> <value>disk1/hdfs/name,disk2/hdfs/name</value> <description>NameNode storage (fsimage)</description> </property>

Page 65: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 65 | P a g e

<property> <name>dfs.data.dir</name> <value>/disk1/hdfs/data,disk2/hdfs/data</value> <description>DataNode Block Storage</description> </property> <property> <name>dfs.replication</name> <value>3</value> <description>Replication Factor</description> </property> <property> <name>dfs.block.size</name> <value>67108864</value> <description>Size of Blocks HDFS splits new files up by</description> </property> <property> <name>dfs.namenode.handler.count</name> <value>10</value> <description># threads NameNode uses to server requests</description> </property> <property> <name>dfs.datanode.handler.count</name> <value>3</value> <description># threads DataNodes use</description> </property> </configuration>

Page 66: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 66 | P a g e

يمكن تحديد الـreplication factor عن طريق

<property> <name>dfs.replication</name> <value>3</value> <description>Replication Factor</description> </property>

resourcesكلما زادت الـ replication factorولكن االفضل زيداة الـ recommended valueوليس هناك

ويمكن تحديد الـblock size كالتالي

<property> <name>dfs.block.size</name> <value>67108864</value> <description>Size of Blocks HDFS splits new files up by</description> </property>

Page 67: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 67 | P a g e

mapperوبالتالي في زمن الـ input splits (mappers)وبالتالي في عدد الـ dataهو الذي يتحكم في حجم الـ block sizeالـ و

tasks

الواحدة سوف تنتهي بسرعة ولكنها ستاخذ وقت اطول في mapper taskالصغيرة الحجم فان الـ blocksفاذا كان لدينا عدد كبير من الـ

اخر تتعامل معه data blockالحصول على

( MB 256)الكبيرة الحجم data setsكبير فاالفضل تقسيمه الى عدد صغير من الـ dataاذن فاذا كان حجم الـ

.min 1:2هو tasksلالنتهاء من الـ Mapperالوقت المناسب للـ

MAPRED OPTIMIZATION

كالتالي MAPREDللـ optimizationويمكن عمل

<configuration> <property> <name>mapred.job.tracker</name> <value>hnnode:10002</value> <description>Job Tracker Configuration,host/ip:port</description> </property> <property> <name>mapred.local.dir</name> <value>/disk1/hdfs/data,disk2/hdfs/data</value> <description>MapReduce Intermediate storage</description> </property> <property> <name>io.sort.factor</name> <value>10</value> <description>Max. # of streams to merge when sorting</description> </property> <property> <name>io.sort.mb</name> <value>100</value> <description>Size of memory buffer used when sorting map outputs</description> </property> <property> <name>mapred.map.tasks</name> <value>2</value> <description># of map tasks that can run simulteniously</description> </property> <property> <name>mapred.reduce.tasks</name> <value>1</value> <description># of map tasks that can run simulteniously</description> </property> <property> <name>mapred.tasktracker.map.tasks.maximum</name> <value>2</value> <description>MAX # of map slots per a TaskTracker</description> </property> <property> <name>mapred.tasktracker.reduce.tasks.maximum</name> <value>2</value>

Page 68: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 68 | P a g e

<description>MAX # of reduce slots per a TaskTracker</description> </property> <property> <name>mapred.child.java.opts</name> <value>-Xmx200m</value> <description>JVM options. MAP/Reduce task memory</description> </property> <property> <name>mapred.output.compression.codec</name> <value> apache.hadoop.io.compress.SnappyCodec</value> </property> <property> <name>mapred.output.compress</name> <value>true</value> </property> </configuration>

فستعمل احدى الـ bufferوبمجرد امتالء الـ memory bufferفتقوم بتخزينها في الـ dataللـ retrieveبعمل Mapperعندما تقوم الـ

background thread على نقل الـdata من الـbuffer الى الـdisk ووضعها فيfile

map outputتحتوي على الـ filesويتم عمل هذه الخطوة عدة مرات مما يؤدي في النهاية الى وجود عدة

reducerوارسالها الى الـ filesلهذه الـ Mergeويتم عمل

عن طريق filesلـ ، ويتم التحكم في عدد ا buffer sizeلها والـ mergeالتي سيتم عمل filesوهم عدد الـ factors 2اذا فلدينا هنا

<property> <name>io.sort.factor</name> <value>10</value> <description>Max. # of streams to merge when sorting</description> </property>

هو رقم قليل للغاية ويفضل زيادته " 10"وهذا الرقم

عن طريق memory bufferويتم التحكم في الـ

<property> <name>io.sort.mb</name> <value>100</value> <description>Size of memory buffer used when sorting map outputs</description> </property>

memory buffer size = 10 * sort factorومن االفضل ان تكون الـ

وفي اغلب االحوال optionalالتي تعمل في وقت واحد ، ولكن هذا الرقم reduce tasksوالـ map tasksوايضا يمكن التحكم في عدد الـ

ال يستخدم

<property> <name>mapred.map.tasks</name> <value>2</value> <description># of map tasks that can run simulteniously</description> </property>

Page 69: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 69 | P a g e

<property> <name>mapred.reduce.tasks</name> <value>1</value> <description># of map tasks that can run simulteniously</description> </property>

hdfs.xmlالموجود في الـ block sizeعن طريق الـ mappersبتحديد عدد الـ Hadoopوفي اغلب االحوال يقوم

mapperالذي يعتبر هو نفسه الـ input splitsالنه يمثل الـ

او قريب mappersلذلك يجب تعديل هذه القيمة لتساوي عدد الـ " 1"له هي default valueله وضع مختلف الن الـ reducersولكن الـ

منه

ويعتمد على try&errorsيعتمد على الـ reducersنستطيع االعتماد عليه ، لذلك فتعديل عدد الـ Mapersولكن ليس لدينا عدد محدد للـ

running jobsوعدد الـ benchmarksمعرفة الـ

وهي reducersيمكن استخدامها للوصول الى رقم تقريبي مناسب لعدد الـ formulaوهناك

(095 : 1.75) * No. of cluster nodes * max no. of reduce slots

يتم تحديدها عن طريق max no. of reduce slotsوالـ

<name>mapred.tasktracker.map.tasks.maximum</name> <value>2</value> <description>MAX # of map slots per a TaskTracker</description> </property> <property> <name>mapred.tasktracker.reduce.tasks.maximum</name> <value>2</value> <description>MAX # of reduce slots per a TaskTracker</description> </property>

"2"لهم هو default value، والـ lotsmax no. of map slots & reduce sنري كيفيه تحديد الـ tagsوفي هذه الـ

: لكي تصبح default valueولكن من االفضل تغيير الـ

maximum number of slots = number of cores per machine -1

"7"يكون max slotsفان الـ " 8"هو nodeفي الـ coresفاذا كان عدد الـ

map & reduce tasksالتي تستخدمها الـ JVMللـ Memoryواخيرا يجب تخصيص بعض الـ

<property> <name>mapred.child.java.opts</name> <value>-Xmx200m</value> <description>JVM options. MAP/Reduce task memory</description> </property>

واحده reduce taskاو map taskلكي تنفذ JVMالتي تستخدمه الـ Memoryهي مقدار الـ “-Xmx200m”و

tasks (2 map + 2 reduce) 4لتنفيذ MB free memory 800ذلك انه في هذا المثال نحتاج الى ومعنى

COMPRESSION AND COMBINERS

Page 70: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 70 | P a g e

كما تحدثنا عنهم قبل ذلك local map reducersعن طريق تشغيل network trafficالذي يقوم بتقليل الـ combinersهناك ايضا الـ

عند الـ compressionوبالتالي نستطيع عمل compressionمعين لعمل الـ codecفنستطيع اختيار compressionوايضا الـ

mappers وdecompression عند الـreducers مما يقلل من الـ ،network traffic

<property> <name>mapred.output.compression.codec</name> <value> apache.hadoop.io.compress.SnappyCodec</value> </property> <property> <name>mapred.output.compress</name> <value>true</value> </property>

EXAPMLE

:بالمواصفات التالية NameNode 1و DataNodes 3يتكون من LABسنقوم بعمل

1 CPU , 4 Cores 2GB RAM Medium Data

:كما يلي configurationللـ optimizationاذا سنقوم بعمل

dfs.replication = 2 dfs.block.size = 128 MB medium data dfs.namenode.handler.count = 20 dfs.datanode.handler.count = 5 io.sort.factor = 20 io.sort.mb = 20*10=200 mapred.tasktracker.map.tasks.maximum = no of cores -1 = 4-1=3 mapred.tasktracker.reduce.tasks.maximum = no of cores -1 = 4-1=3 mapred.child.java.opts = 300 mapred.reduce.tasks =(095 : 1.75) * No. of nodes * max reduce slots = 3*3*(0.95:1.75)=(8:15)

:بالمواصفات التالية nodes 20اما اذا كان لدينا

2 CPU * 4 cores

8 GB RAM

Large Data

:كما يلي configurationللـ optimizationاذا سنقوم بعمل

dfs.replication = 3 dfs.block.size = 256 MB Large data dfs.namenode.handler.count = 50 dfs.datanode.handler.count = 15 io.sort.factor = 100 io.sort.mb = 100*10=1000

Page 71: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 71 | P a g e

mapred.tasktracker.map.tasks.maximum = no of cores -1 = 8-1=7 mapred.tasktracker.reduce.tasks.maximum = no of cores -1 = 8-1=7 mapred.child.java.opts = 500 mapred.reduce.tasks =(095 : 1.75) * No. of nodes * max reduce slots = 20*7*(0.95:1.75)=(133:245)

وتنفيذ عدة خطوات LABسنقوم االن بعمل الـ

1- Generate data باستخدامteragen program

terasort programوترتيبها باستخدام dataتقطيع هذه الـ -2

GENERATE DATA USING TERAGEN

1- generate 500 megs worth of data

hadoop jar $HADOOP_PREFIX/hadoop-*example*.jar teragen 5242880 /data/input

Hadoop examples jarالجاهزة الموجودة في Jobsهو احد الـ job nameوالـ

reduce tasksو ال يوجد jobيتعاملوا مع هذه الـ mappers 2والصورة التالية توضح ان هناك

Page 72: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 72 | P a g e

تظهر النتيجة كالتالي jobsوبعد تنفيذ الـ

Page 73: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 73 | P a g e

SAMPLE THE DATA AND SORT

terasort programوترتيبها باستخدام الـ dataبتقطيع هذه الـ نقوم االن

https://discuss.zendesk.com/hc/en-us/articles/200927666-Running-TeraSort-MapReduce-

Benchmark

وم يق map/reduce programتحتوي على packageهو terasortوالـ

hadoop jar $HADOOP_PREFIX/hadoop-*example*.jar terasort /data/testin /data/testout

Page 74: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 74 | P a g e

commandنستخدم الـ data/testout/الذي قمنا بعمله output fileللـ deleteولعمل

$ hadoop dfs -rmr /data/testout

TEST IO

عن طريق writeو الـ readفي الـ disk IOللـ testنستطيع عمل

$ hadoop jar /usr/local/hadoop/hadoop*test*.jar TestDFSIO -write -nrfiles 10 -fileSize

100

كالتالي logsفي نهاية الـ testوتظهر نتيجة الـ

Page 75: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 75 | P a g e

$ hadoop jar /usr/local/hadoop/hadoop*test*.jar TestDFSIO -read -nrfiles 10 -fileSize

100

كالتالي Logsوتظهر النتيجة في نهاية الـ

cleanنقوم بعمل test filesولحذف الـ

$ hadoop jar /usr/local/hadoop/hadoop*test*.jar TestDFSIO -clean

MANAGING HDFS

HDFSعلى الـ dataنقوم االن بوضع الـ tasksوالـ jobsالن بعد ان القينا نظرة على كيفية عمل الـ ا

where to find data

make directories

Page 76: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 76 | P a g e

take data from the local file system, put it up in HDFS, and then the reverse.

HDFS management tasks, file system checker, and DFS admin

how to configure rack awareness

sample scripts

how that process works

DATA

وتقسيمها dataنتحدث االن عن انواع الـ س

:حسب حجمها اللى dataيمكن ان نقسم الـ

- Small size مثل الـbook الموجودة على االنترنت

- Varying size مثلs3 data والـdata sets

- Large size مثلWikipedia

configuration filesوجميع الـ installed Hadoopيحتوي على clientمع مالحظة ان الـ clientعلى الـ dataنقوم االن بوضع

namenode. فقط الـ daemonsتماما ولكن بدون تشغيل الـ namenodeمثل الـ

CREATE DIRECTORY

dataللـ directoryنقوم بعمل clientمن الـ

hnclient:~$ hadoop fs -mkdir test

hnclient:~$ hadoop fs -ls

namenodeعلى الـ directoryثو نقوم بعمل

hnclient:~$ hadoop fs -mkdir hdfs://hnnode:10001/data/small

hnclient:~$ hadoop fs -mkdir hdfs://hnnode:10001/data/big

Page 77: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 77 | P a g e

REMOVE DIRECTORY

directoriesولحذف الـ

hnclient:~$ hadoop fs -rmr hdfs://hnnode:10001/data/*

COPY FROM/TO DIRECTORY

Copy from local – move from local : source is local file system

Copy to local : source is HDFS

hnclient:~$ hadoop fs -copyFromLocal /home/ahmed/data/201012monthly.txt

hdfs://hnnode:10001/data/small/201012monthly.txt

Page 78: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 78 | P a g e

small dirقد تم نسخه في الـ fileان الـ UIونرى في الـ

fileومحتويات الـ

UIمن الـ fileللـ tailاو downloadكما نستطيع عمل

كله directoryلمحتويات الـ copyايضا يمكن عمل

$ hadoop fs -copyFromLocal /home/ahmed/data/ hdfs://hnnode:10001/data/big

Page 79: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 79 | P a g e

hdfsمن to locl disk copyونستطيع عمل

hnclient:~$ hadoop fs -copyToLocal hdfs://hnnode:10001/data/small/201012monthly.txt

/home/ahmed/data/test.txt

REPORTING

GUIكما في الـ CLIمن الـ environmentعن الـ reportيمكن عرض

$ hadoop dfsadmin -report

SAFEMODE

في namenodeعلى الـ actionsومنع اي updatesوذلك اذا كنا نريد عمل اي safemodeفي الـ namenodeيمكن وضع الـ

هذا الوقت

Page 80: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 80 | P a g e

Hadoop dfsadmin –safemode enter

Hadoop dfsadmin –safemode leave

FILE SYSTEM STATUS

عن طريق Missed blocksاو blockscorrubtedوهل يوجد file system statusنستطيع معرفة الـ

GUIالـ

CLIاو عن طريق الـ

$ hadoop fsck -block

Page 81: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 81 | P a g e

“The filesystem under path '/' is CORRUPT”الحظ اخر سطر في الصورة

Fsck يعتبر الـopened files بمثابةcorrubted files وللتغلب على هذا االمر نقوم باضافة”openforwrite-“

UPGRADE HADOOP

1- Shutdown Cluster

stop-all.sh

2- Install new version

3- Start HDFS with “upgrade” option

$ start-dfs.sh –upgrade

اخر new directory، ثم بقوم بعمل بعمل previous directoryالي current directoryبتحويل الـ commandيقوم هذا الـ

الجديد installationويضع به الـ

4- Check the status of upgrade with dfsadmin

$ hadoop dfsadmin -upgradeProgress status

Page 82: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 82 | P a g e

5- When upgrade is completed :

a. Put in safe mode

Hadoop dfsadmin –safemode enter

b. Use fsck to check health

c. Read some files

d. RollBack if there is any issues

start-dfs.xml -rollback

e. Finalize if successful

Hadoop dfsadmin -finalizeUpgrade

RACK AWARENESS

بشكل افضل clusterعلى الـ replicasبوضع الـ HDFSحتي يقوم الـ RACKsبالـ nodesجب ربط الـ ي

rack transfers-offوالـ rack transfers -inعملية المفاضله بين الـ MapReduce كما يسهل على الـ

tagواضافه هذا الـ site.xml-coreيتم ذلك عن طريق التعديل على ملف

<property> <name>topology.script.file.name</name> <value>path_to_script.sh</value> </property>

RACKبالـ datanodeيقوم بربط الـ scriptوهذا الـ

if [ $1 = “192.168.0.23” ]; then ## IP of the datanode echo –n “/rack1” else echo –n “/default-rack” fi

التابعة لها datanodesوالـ RACKsلمعرفة الـ fsckنستطيع ايضا عمل

بعمل الـ scriptثم يقوم الـ nodesلجميع الـ hosnamesوالـ IPsنضع به الـ fileوهي عمل scriptهناك طريقة اخرى لعمل هذا الـ

query والـmatching بنفسه

Page 83: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 83 | P a g e

Page 84: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 84 | P a g e

يتم عن طريق NW utilizationتقليل الـ

مما يؤدي الى استخدام اقرب الـ MapReduceللـ topologyحيث نقوم بوصف الـ rack awarenessانه Hadoopمن مميزات

RACs واقرب الـSwitches

Nodeمن اقرب lost blocksللـ block placementالذي يقوم بعمل RAC communication-Interconnectباستخدام الـ

Page 85: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 85 | P a g e

Page 86: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 86 | P a g e

PIG

WHAT IS PIG?

High level data flow scripting language that can create MapReduce tasks

PIG CONPONENTS

Runtime Engine

Language (Pig Latin)

Pig schema and data stored in HDFS

EXECUTION TOOLS AND MODES

Grunt shell or CLI

Local mode (for testing against local FS) or MapReduce mode (for running on MapReduce)

Interactive or batch

Page 87: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 87 | P a g e

DATA IN RELATION

Page 88: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 88 | P a g e

RELATIONAL OPERATIONS

FOREACH : add new field into a relation

Distinct : remove duplicate raws

Group : group one field

Cogroup : group multible fields

Order : sort

Limit : get top enf results

Union : combine multible relations into one

Spli : take single relation into multible relations

Piggy Bank :

community package of user defined functions

DOWNLOAD &INSTALL PIG

http://pig.apache.org/releases

[root@nn1 ~]# wget http://www-us.apache.org/dist/pig/pig-0.16.0/pig-0.16.0.tar.gz

[root@nn1 ~]# tar xzvf pig-0.16.0.tar.gz

[root@nn1 ~]# vim .bashrc

export PIG_PREFIX=/root/pig

export PATH=$PATH:$PIG_PREFIX/bin

[root@nn1 ~]# pig >> run pig in the cluster

Page 89: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 89 | P a g e

[root@nn1 ~]# pig -x mapreduce >> run pig in the cluster

[root@nn1 ~]# pig -x local >> run pig in local mode

Grunt> quit >> exit the grun

Relation:

Relation = function

LOAD SYNTAX

LOAD ‘data’ [USING function] [AS schema];

Grunt> Month1 = LOAD ‘hdfs:/data/big/201201hourly.txt’ USING PigStorage(‘,’) AS (wban:int,

date:chararray, time:chararray, stationType:int, skyCondition:chararray, skyConditionFlag:int,

visibility:float, visibilityFlag:float, weatherType:chararray, weatherTypeFlag:int, dryTemp:int);

Grunt> describe month1

Month1 : {wban:int, date:chararray, time:chararray, stationType:int, skyCondition:chararray,

skyConditionFlag:int, visibility:float, visibilityFlag:float, weatherType:chararray, weatherTypeFlag:int,

dryTemp:int}

STORE SYNTAX

STORE alias INTO ‘directory’ [USING function];

Page 90: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 90 | P a g e

STORE month1 INTO ‘hdfs:/data/big/pigresult.txt’ USING PigStorage(‘:’, ‘-schema’)

schema - مفيدة حيث تقوم بتخزن الـ :result بنفس شكل الـschema بحيث اذا اردنا عملLoad للـresult مرة اخري فال نحتاج

مرة اخرى LOAD statementفي الـ schemaالى كتابة الـ

The result :

tupleمن الموجودين في الصورة يسمى lineوكل

directoryالموجوده بهذا الـ input filesحتي يتم استخدامها تلقائيا مع الـ parent directlyفي الـ schemaللـ copyنقوم بعمل

FILTER SYNTAX

Page 91: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 91 | P a g e

FILTER

dumpلعرض النتيجة على الشاشه نقوم باستخدام

على الشاشة tmpثم يعرض النتيجة من الـ hdfsالموجود في الـ tmp dirويخزن النتيجة في الـ MapReduce tasksالذي يقوم بعمل

FOREACH SYNTAX

Page 92: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 92 | P a g e

ويتحويل شكله الى شكل اخر line/tupleيقوم بقراءة كل

GROUPING SYNTAX

سنجد ان groupedللـ dumpوعندما نقوم بعمل

groupمرة اخرى على الـ FOREACHونستطيع عمل

وتصبح النتيجة

Page 93: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 93 | P a g e

35.89646935483871لهم هو averageوالـ 09/01يوم records 35712وكما نرى في الصورة ان هناك

SORTING SYNTAX

averageوهو الـ 1$العمود الثاني sort byنقوم بعمل

Page 94: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 94 | P a g e

WORKING WITH RELATIONS

COMPING RELATION

raw by rawويتم الدمج واحدة relationفي relationsيستخدم لدمج مجموعة من الـ

SPLITTING RELATIONS

JOINING RELATIONS

واحد tableفي columnsللـ joinحيث يقوم بعمل DB joiningمثل الـ

Page 95: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 95 | P a g e

FILTER DATA

TRANSFORM AND SHAPE RELATIONS

PARALLEL operatorعن طريق اضافة reducersنستطيع التحكم بعدد الـ و

GROUP RELATIONS

PARALLEL operatorعن طريق اضافة reducersنستطيع التحكم بعدد الـ و

Page 96: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 96 | P a g e

AGGREGATE RELATION

PARALLEL operatorعن طريق اضافة reducersنستطيع التحكم بعدد الـ و

SORT RELATIONS

PARALLEL operatorعن طريق اضافة reducersنستطيع التحكم بعدد الـ و

SORT RELATION IN HDFS

Page 97: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 97 | P a g e

HIVE

Used in Facebook

Hive is SQL oriented query language (SQL for Hadoop)

It is datawarehouse on top of HDFS use Hive QL

Hive Archtecture

Metastore: track hive metadata, database tables, columns, datatypes, HDFS mappings

Stored in local FS, tables or data in HDFS

Tables: pointers for the data on HDFS,

Deleting the table will not effect on the data

Partitions: spliced data inside the table to store it in a separate file (subdirectory) in HDFS

Used to enhance query performance

Page 98: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 98 | P a g e

Buckets: it is hashed partitions to speed up joins and sampling of data

DataBase: is a namespace of a collection of tables

HIVE VS RDBMS

Hive RDBMS

OLAP: (reporting, select only, no insert) OLTP (transaction processing) : for realtime read/write data inside RDBMS OLAP: real time reporting

Schema on read : create a schema before loading any data into the system

Schema on write

Page 99: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 99 | P a g e

HIVE TOOLS

Hive shell

Hive web UI

Hive Server Thrift : to allow the warehouse to use JDBC and ODBC through drivers in order to

contact with any RDBMS (MySQL, PostgreSQL, SQL Server, Oracle) and

desktop applications (Excel and Access)

Thrift client : Allow programmer can use thrift API to use Hive

HIVE QUERY LANGUAGE

Same language features as sql

Data Types:

Standard: numeric, datetime, Boolean, binary

Complex: arrays, structs, maps

Data difinitions:

Create, alter, drop

Used with database, tables, partitions

View, function, index

Data Manibulation:

Load, insert

Page 100: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 100 | P a g e

Select, explain

INSTALL HIVE

[root@nn1 bin]# wget http://www-us.apache.org/dist/hive/stable-2/apache-hive-2.1.0-

bin.tar.gz

[root@nn1 bin]# tar -xzvf apache-hive-2.1.0-bin.tar.gz

[root@nn1 bin]# mv apache-hive-2.1.0-bin hive

[root@nn1 bin]# export HIVE_PREFIX=/root/hive/

[root@nn1 bin]# export PATH=$PATH:$HIVE_PREFIX/bin/

[root@nn1 bin]# ./schematool -initSchema -dbType derby

[root@nn1 bin]# hive

Page 101: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 101 | P a g e

WORKING WITH HIVE

SHOW HIVE PROPERTY

set –v;

SHOW TABLE

hive> show tables;

CREATE TABLE

Create table called book with column called word with type string

CREATE TABLE book create internal table (data will not deleted when loaded)

hive> CREATE TABLE book(word STRING)

> ROW FORMAT DELIMITED

> FIELDS TERMINATED BY ','

> LINES TERMINATED BY '\n'

> ;

OK

Time taken: 1.741 seconds

hive>

CREATE EXTERNAL TABLE create external table (data will deleted when loaded)

We use external table if the data is outside hive and need to keep data if table

dropped

hive> CREATE EXTERNAL TABLE book(word STRING)

> ROW FORMAT DELIMITED

> FIELDS TERMINATED BY ','

> LINES TERMINATED BY '\n'

> ;

OK

Time taken: 1.741 seconds

hive>

Page 102: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 102 | P a g e

LOAD DATA INTO TABLE

hive> LOAD DATA INPATH 'hdfs:/data/data.txt' INTO TABLE book;

Loading data to table default.book

Table default.book stats: [numFiles=1, totalSize=3637700]

OK

Time taken: 1.49 seconds

hive>

DESCRIPT TABLE

hive> DESCRIBE book;

OK

word string

Time taken: 0.188 seconds, Fetched: 1 row(s)

hive>

Descripe table with more details

hive> describe extended book;

OK

word string

Detailed Table Information Table(tableName:book, dbName:default, owner:cloudera,

createTime:1468942166, lastAccessTime:0, retention:0,

sd:StorageDescriptor(cols:[FieldSchema(name:word, type:string, comment:null)],

location:hdfs://quickstart.cloudera:8020/user/hive/warehouse/book,

inputFormat:org.apache.hadoop.mapred.TextInputFormat,

outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat,

compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null,

serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe,

parameters:{serialization.format= , field.delim= , line.delim=

}), bucketCols:[], sortCols:[], parameters:{},

skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[],

skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[],

parameters:{numFiles=1, transient_lastDdlTime=1468942253, COLUMN_STATS_ACCURATE=true,

totalSize=3637700}, viewOriginalText:null, viewExpandedText:null,

tableType:MANAGED_TABLE)

Time taken: 0.192 seconds, Fetched: 4 row(s)

hive>

PARTITION TABLES

PARTITIONED BY (year INT, month STRING)

Create virtual columns called year and month

We can configure dynamic partitions to load data dynamically

hive> SET hive.exec.dynamic.partition=true;

hive> SET hive.exec.dynamic. partition.mode= nonstrict;

Page 103: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 103 | P a g e

And we can set these configuration permenantly by adding them in hive config file Hive-site.XML,

/etc/hive/conf.dist/hive-site.xml

Then load the data in staging table (not partitioned), then create production table (partitioned), then

write a query to move all the data from staging table and into production table

1- Create staging table

2- Create production table

3- Load data into staging table

4- Insert data from staging table into production table partition

Page 104: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 104 | P a g e

The result is

SELECT FROM THE TABLE

hive> SELECT * FROM book;

Page 105: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 105 | P a g e

COUNT ROWS

hive> select count(*) from book2

Hadoop job information for Stage-1: number of mappers: 1; number of reducers: 1

2016-07-19 08:41:30,014 Stage-1 map = 0%, reduce = 0%

2016-07-19 08:41:47,831 Stage-1 map = 100%, reduce = 0%, Cumulative CPU 1.84 sec

2016-07-19 08:42:06,381 Stage-1 map = 100%, reduce = 100%, Cumulative CPU 3.55 sec

MapReduce Total cumulative CPU time: 3 seconds 550 msec

Ended Job = job_1468749513024_0072

MapReduce Jobs Launched:

Stage-Stage-1: Map: 1 Reduce: 1 Cumulative CPU: 3.55 sec HDFS Read: 3644004 HDFS

Write: 6 SUCCESS

Total MapReduce CPU Time Spent: 3 seconds 550 msec

OK

93470

Time taken: 64.231 seconds, Fetched: 1 row(s)

it will create MapReduce job

Select all words starting with small “w” and count

hive> select lower(word), count(*) as count

> from book

> where lower(sub

> where lower(substring(word, 1, 1)) = 'w'

> group by word

> having count > 50

> sort by count desc;

LOCALTION

Specify the location that hive will store its data

VIEWS

Page 106: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 106 | P a g e

We can create nested views

INDEXES

To speed up the query performance by indexes the most columns used

CREATE INDEX

Compact: used if we have a high number of non-unique values (good for most scenarios)

We can use Bit map for highly unique values or sparse data sets

Rebuild: bulid index all in one shot, and can build index partition by partition

SHOW INDEX

Show indexes of the table

Page 107: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 107 | P a g e

SHOW FORMATTED INDEXES

You can also show formatted index to see a column headers to know what this data is

DROP INDEX

EXAMPLE:

CREATE INTERNAL TABLE

hive> CREATE TABLE data(time string, id string, name string, rio int, wio int, rwio

int, rmb int, wmb int, rwmb int)

> row format delimited

> fields terminated by ','

> location '/data/';

OK

Time taken: 0.189 seconds

hive>

hive> LOAD DATA INPATH 'hdfs:/data/data.txt' INTO TABLE data;

Loading data to table default.data

Table default.data stats: [numFiles=4, numRows=0, totalSize=18137548, rawDataSize=0]

OK

Page 108: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 108 | P a g e

Time taken: 0.619 seconds

hive>

LOAD HIVE FILE FROM THE UNDERLYING STORAGE

We can run hive file from local storage directly

[root@nn1 #] hive –f /home/data.hive

PARTITIONING

hive> CREATE TABLE data3(time string, id string, name string, rio int, wio int, rwio

int, rmb int, wmb int, rwmb int)

> PARTITIONED BY (year INT, month STRING)

> row format delimited

> fields terminated by ',';

OK

Time taken: 2.389 seconds

hive>

hive> LOAD DATA INPATH 'hdfs:/data/data.txt' INTO TABLE data3 PARTITION(year=2016,

month=7) ;

Loading data to table default.data3 partition (year=2016, month=7)

Partition default.data3{year=2016, month=7} stats: [numFiles=1, numRows=0,

totalSize=3637700, rawDataSize=0]

OK

Time taken: 2.056 seconds

hive>

hive> select * from data3 where month=7;

Page 109: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 109 | P a g e

Page 110: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 110 | P a g e

HBASE

HBase is built for low-latency queries real time, we can pull out just one record

Working with specific records

Has webUI

WHAT IS HBASE?

a distributed column-oriented database sitting on top of HDFS

Used by facebook in messaging system

COLUMN-ORIENTED VS ROW-ORIENTED DATA STORE

ROW-ORIENTED DATA STORE

Page 111: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 111 | P a g e

All columns are stored together in a row on disk ( a row with all the fields)

Good for OLTP databases

Any query will read the entire row

Row-oriented data stores work well with transaction processing (single row read and writes)

Built for a small number of columns and a small number of rows.

COLUMN-ORIENTED DATA STORES

Designed for OLAP, Online Analytical Processing, data warehousing type stuff

Stores a column of data.

Have a column with all the values stored in that column

Columns stored separately on disk

Page 112: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 112 | P a g e

In aggregation, the query will hit an aggregate on that column

High compression rates due to few distinict values.

HBASE VERSUS RDBMS

HBASE

Create large table and split it up and spread across all the nodes

HBase is schema-less

No data types

Wide tables (millions of columns, billions of rows)

Can define columns and put columns in column families

Don’t care about redundant data because we have compression on top of it

No null values (empty column will not stored)

Denormalized

RDBMS

Have schemas

Thin tables (Small number of rows and columns, lots of small tables)

Normalized

Small table, small related tables, reduce the amount of redundant data, less storage, more

performance

HBASE VERSUS HDFS

HBASE

Low latency access to read small amounts of rows from millions of records

HDFS

Designed for high-latency batch processing

No concept of random reads and writes

Page 113: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 113 | P a g e

You can append to files in HDFS

HBASE ARCHTECTURE

MASTER

1- Like namenode

2- manage and monitor our HBase cluster operations

3- assign regions to region servers

4- handling load balancing, splitting or sharding data

SLAVE (REGION SERVER)

Page 114: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 114 | P a g e

1- A regios server contain a table which is become bigger

2- The big table will be splitter or shared to another region server

3- If HBase cluster become slow or running out of space, we can add new region server

How clients bring the data out of HBase? Through zookeeper

HMaster communicates with region servers to do load balancing and splitting through ZooKeeper

Clients go through ZooKeeper, but once ZooKeeper gives them the OK, they communicate directly

with the region servers to put data in and pull data out of these tables.

Region server

Region server contains regions to tommunicate with the client and handle data and read

and write requests

Page 115: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 115 | P a g e

Region server decide the size of the region based on region size thresholds

Region server contain:

Regions: Are just a table split up and spread across region servers

Memory store (cache memory): Anything that is entered into the HBase is stored here

initially

Then the data is transferred and saved in Hfiles as blocks

Then memstore is flushed.

Hfiles: the files that contains the actual data in blocks

COLUMN FAMILIES

Column families group HBase columns,

(Product + amount) sales data

(Name + Address) Customer Data

Column families must be defined up front during table creation.

Column families are stored together on disk,

The number of column families per table is three or less.

Column families are grouped together on disk, so grouping data with similar access patterns reduces

overall disk access and increases performance.

If we query the amount from the a column family, it will grap the data from the amount column only and

ignore the product column (So increase performance)

INSTALL HBASE

Note: Hbase ports : 60000, 60010

wget http://www-us.apache.org/dist/hbase/stable/hbase-1.2.2-bin.tar.gz

tar –xzvf hbase-1.2.2-bin.tar.gz

Page 116: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 116 | P a g e

mv hbase-1.2.2 hbase

export HBASE_PREFIX=/root/hbase

export PATH=$PATH:$HBASE_PREFIX/bin

CONFIGURE HBASE ENVIRONMENT

[root@nn1 ~]# vim hbase/conf/hbase-env.sh

export JAVA_HOME=/usr/lib/jvm/java/jdk1.7.0-openjdk

[root@nn1 ~]# vim hbase/conf/hbase-site.xml

hbase directory in the above path is the shared directory that all region servers can use

if this property is not configured, and you are configuring stand alone mode, So HBase dir will be in

the local FS

hbase.cluster.distributed false if stand alone or pseudo mode

true for full clustered mode

CONFIGURE REGION SERVER

Like master and slave file

Add Hmaster and region servers

[root@nn1 ~]# vim hbase/conf/regionservers

localhost

START HBASE

Page 117: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 117 | P a g e

start-hbase.sh

START REGION SERVERS

Local-regionservers.sh 1 2 3

start 3 region servers on ports 60001, 60002, 60003

WORKING WITH HBASE

# hbase shell

hbase(main):001:0>

CREATE TABLE

create table “htest” with one column “cf” and value “v1”

Page 118: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 118 | P a g e

GETTING VALUE FROM TABLE

OVERRIDE VALUE ON FIELD

DELETE FROM TABLE

Page 119: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 119 | P a g e

CLOUDERA CDH

CDH is a hadoop distribution by hadoop

CDH VM : It contains single node cluster

AMAZON ELASTIC MAPREDUCE (AMAZON EMR)

Amazon EMR is hadoop over amazon cloud

EMR is on top of EC2 and EC2 is on top of S3

EC2 for processing, S3 for storage

S3 distributed copy

We can use command line interface in interact with EMR

1- Upload “wordcount.jar” file into S3 and create “Input” folder

2- Go to your Namenode and edit “core-site.xml”

Add S3 access ID

Page 120: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 120 | P a g e

If you want to use S3 as a Hadoop FS instead of HDFS, you can edit same file

S3n is a native S3 file system, it is block storage like HDFS that support only 5GB file size, However

S3 support only file with 5GB

How to get Access Key and ID

a) Open the IAM console.

b) In the navigation pane, choose Users.

c) Choose your IAM user name (not the check box).

d) Choose the Security Credentials tab and then choose Create Access Key.

e) To see your access key, choose Show User Security Credentials. Your

credentials will look something like this:

a. Access Key ID: AKIAIOSFODNN7EXAMPLE

b. Secret Access Key:

wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

f) Choose Download Credentials, and store the keys in a secure location.

3- Copy the “word_count.tct” file from the hadoop cluster to S3n

Page 121: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 121 | P a g e

# hadoop fs –cp hdfs://hnname:10001/data/word_count.txt s3n:/bucket_name/folder_name

# hadoop fs –cp hdfs://hnname:10001/data/word_count.txt s3n:/gamiltest/Input

Page 122: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 122 | P a g e

SUMMARY

INSTALLING APACHE HADOOP (SINGLE NODE)

$ sudo ssh-copy-id -i ~/.ssh/id_rsa.pub ahmed@hdnode01

$ sudo apt-get install openjdk-8-source

$ wget http://www.interior-dsgn.com/apache/hadoop/common/stable1/hadoop-1.2.1-bin.tar.gz

$ tar -zxvf hadoop-1.2.1-bin.tar.gz

$ sudo cp -r hadoop-1.2.1 /usr/local/hadoop

$ sudo chown ahmed /usr/local/hadoop/ -R

$ sudo mkdir /usr/local/hadoop/tmp

$ sudo nano $HOME/.bashrc

export HADOOP_PREFIX=/usr/local/hadoop

export PATH=$PATH:$HADOOP_PREFIX/bin

$ exec bash

$ sudo nano /usr/local/hadoop/conf/hadoop-env.sh

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64

export HADOOP_OPTS=-Djava.net.preferIPv4Stack=true

$ sudo nano /usr/local/hadoop/conf/core-site.xml

<configuration>

<property>

<name>fs.default.name</name>

Page 123: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 123 | P a g e

<value>hdfs://hnnode.gaca.itnn.ad:10001</value>

</property>

<property>

<name>hadoop.tmp.dir</name>

<value>/usr/local/hadoop/tmp</value>

</property>

</configuration>

$ sudo nano /usr/local/hadoop/conf/mapred-site.xml

<configuration>

<property>

<name>mapred.job.tracker</name>

<value>hnnode.gaca.itnn.ad:10002</value>

</property>

</configuration>

$ hadoop NameNode –format

$ start-all.sh

$ stop-all.sh

INSTALLING APACHE HADOOP (MULTI NODE)

$ sudo ssh-copy-id -i ~/.ssh/id_rsa.pub ahmed@hdnode01

$ sudo echo "SecondaryNameNode" > /usr/local/hadoop/conf/masters

$ sudo echo "DataNode" > /usr/local/hadoop/conf/slaves

$ sudo nano /usr/local/hadoop/conf/core-site.xml

<configuration>

<property>

<name>fs.default.name</name>

Page 124: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 124 | P a g e

<value>hdfs://hnnode.gaca.itnn.ad:10001</value>

</property>

<property>

<name>hadoop.tmp.dir</name>

<value>/usr/local/hadoop/tmp</value>

</property>

</configuration>

$ sudo nano /usr/local/hadoop/conf/mapred-site.xml

<configuration>

<property>

<name>mapred.job.tracker</name>

<value>hnnode.gaca.itnn.ad:10002</value>

</property>

</configuration>

$ hadoop NameNode –format

$ start-dfs.sh

$ start-mapred.sh

DECOMMISSION NODE

$ sudo echo "hdnode03" > /usr/local/hadoop/exclude

$ sudo nano /usr/local/hadoop/conf/core-site.xml

<property>

<name>dfs.hosts.exclude</name>

Page 125: Big DAta Hadoop V1 Arabic Eddition

Edited By: Ahmed Gamil CBT Nuggets Course 125 | P a g e

<value>/usr/local/hadoop/exclude</value>

</property>

$ hadoop dfsadmin -refreshNodes refresh the cluster

BALANCE CLUSTER

$ start-balancer.sh start balancer

STOP HADOOP CLUSTER

$ $ stop-mapred.sh

$ $ stop-dfs.sh

START HADOOP CLUSTER

$ start-all.sh

REMOVE DIRECTORY FROM HDFS

$ hadoop dfs -rmr /data/testout