Big DAta Hadoop V1 Arabic Eddition
-
Upload
ahmed-gamil -
Category
Technology
-
view
92 -
download
10
Transcript of 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وايضا
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هو
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
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الـ
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
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
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
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
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شكل
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
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فاذا اردت استخدام
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وهذه الـ
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هي
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كما ان كل
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
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
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االجابة هي عن طريق
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كما تتوافر
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
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
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ذكرنا سابقا ان الـ
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يتكون الـ
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 وسنتحدث عنه
بمزيد من التفاصيل الحقا
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
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اذا يتوافر االن لدينا الـ
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ثم يقوم الـ
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وكما نرى في الصورة التالية ان الـ
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فالـ
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يقوم الـ
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
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
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
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)
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نقوم بعمل
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
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
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
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
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
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
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
Edited By: Ahmed Gamil CBT Nuggets Course 42 | P a g e
daemonالخاص بكل logsوكما نرى في الصورة مكان تخزين الـ
daemonالتي تستخدمها كل JVMونستطيع ايضا معرفة الـ
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/
Edited By: Ahmed Gamil CBT Nuggets Course 44 | P a g e
job trackerللـ statisticsفي معرفة الـ GUIويمكن استخدام الـ
http://10.20.104.253:50030/jobtracker.jsp
Edited By: Ahmed Gamil CBT Nuggets Course 45 | P a g e
trackertaskللـ statisticsفي معرفة الـ GUIويمكن استخدام الـ
http://10.20.104.253:50060/tasktracker.jsp
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
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نقوم باضافة اسم الـ
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
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
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
Edited By: Ahmed Gamil CBT Nuggets Course 51 | P a g e
الخاصه بها daemonتعمل عليها الـ nodeسنجد ان كل jps commandوعند استخدام
UIويمكن رؤية النتيجة على الـ
Edited By: Ahmed Gamil CBT Nuggets Course 52 | P a g e
SCENARIO: DECOMMISSION NODE
فكيف نقوم بعمل ذلك ؟ clusterمن الـ sDataNodeلنفترض ولسبب من االسباب نريد فصل احد الـ
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ويمكن عمل
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
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
Edited By: Ahmed Gamil CBT Nuggets Course 56 | P a g e
تعمل daemonsوسنجد انه لم تعد هناك اي
START ALL DAEMONS
عن طريق cluster nodesعلى الـ daemonsهناك طريقة اخرى لتشغيل كل الـ
start-all.sh
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وهناك نوعين من الـ
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وهذه الـ
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
Edited By: Ahmed Gamil CBT Nuggets Course 60 | P a g e
لن تعمل nodeفان هذه الـ namenode namespace IDعن الـ nodeفي اي Namespaceواذا اختلف الـ
namenodeللـ formatيتغير كلما قمنا بعمل namespace IDوالـ
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
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
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>
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>
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>
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>
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>
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>
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
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
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والصورة التالية توضح ان هناك
Edited By: Ahmed Gamil CBT Nuggets Course 72 | P a g e
تظهر النتيجة كالتالي jobsوبعد تنفيذ الـ
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
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وتظهر نتيجة الـ
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
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
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
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
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يمكن وضع الـ
هذا الوقت
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
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
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 بنفسه
Edited By: Ahmed Gamil CBT Nuggets Course 83 | P a g e
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باستخدام الـ
Edited By: Ahmed Gamil CBT Nuggets Course 85 | P a g e
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
Edited By: Ahmed Gamil CBT Nuggets Course 87 | P a g e
DATA IN RELATION
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
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];
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
Edited By: Ahmed Gamil CBT Nuggets Course 91 | P a g e
FILTER
dumpلعرض النتيجة على الشاشه نقوم باستخدام
على الشاشة tmpثم يعرض النتيجة من الـ hdfsالموجود في الـ tmp dirويخزن النتيجة في الـ MapReduce tasksالذي يقوم بعمل
FOREACH SYNTAX
Edited By: Ahmed Gamil CBT Nuggets Course 92 | P a g e
ويتحويل شكله الى شكل اخر line/tupleيقوم بقراءة كل
GROUPING SYNTAX
سنجد ان groupedللـ dumpوعندما نقوم بعمل
groupمرة اخرى على الـ FOREACHونستطيع عمل
وتصبح النتيجة
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نقوم بعمل
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مثل الـ
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نستطيع التحكم بعدد الـ و
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
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
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
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
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
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>
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;
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
Edited By: Ahmed Gamil CBT Nuggets Course 104 | P a g e
The result is
SELECT FROM THE TABLE
hive> SELECT * FROM book;
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
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
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
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;
Edited By: Ahmed Gamil CBT Nuggets Course 109 | P a g e
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
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
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
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)
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
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
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
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”
Edited By: Ahmed Gamil CBT Nuggets Course 118 | P a g e
GETTING VALUE FROM TABLE
OVERRIDE VALUE ON FIELD
DELETE FROM TABLE
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
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
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
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>
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>
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>
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