เริ่มต้น Big Data ด้วย การติดตั้ง Hadoop แบบ Step-by-Step กัน

Posted on Posted in Big Data, Hadoop

      บทความกลุ่มการศึกษาเรื่องของ Big Data ด้วยการใช้งาน Hadoop นี้เกิดจากความตั้งใจที่อยากให้ท่านที่กำลังสนใจอยากใช้งาน Hadoop ได้เข้าใจการทำงาน Hadoop เพื่อการติดตั้ง Hadoop เป็นอย่างแท้จริง และ รวมถึงมีแนวทางการแก้ปัญหากรณีที่องค์กรนำ Hadoop Distribution ตัวใดตัวหนึ่งมาใช้งานแล้วเกิดปัญหาในการติดตั้ง

      รายละเอียดในบทความนี้ เราจะเริ่มจากการเห็นภาพเชิงระบบนิเวศน์(Ecosystem)ของ Big Data และ Hadoop Enterprise เพื่อสรุปให้เห็นว่าถ้าจะอิมพลีเมนท์ในองค์กรจะต้องจัดองค์ประกอบซอฟต์แวร์ ตามบทบาทหน้าที่อย่างไรบ้าง และ

       เราจะได้รู้หลัการทำงานของ Hadoop ว่า Hadoop ทำงานอย่างไรเพื่อจะได้เห็นภาพทั้งการควบคุมการจัดเก็บข้อมูลและภาพหน่วยประมวลผลข้อมูลที่ทำงานร่วมกันกับ Hadoop  และ

      สุดท้าย เราจะได้ความเข้าใจในการกระบวนการติดตั้ง Hadoop ด้วยการเรียนรู้การติดตั้ง Hadoop แบบดิบๆโดยใช้ Apache Hadoop เพื่อจะได้เห็นภาพไฟล์ที่ควบคุมการทำงานของ Hadoop ที่เป็น Configuration ไฟล์ว่าแต่ละไฟล์ควบคุมการทำงาน Hadoop อย่างไร สำหรับส่งต่อก้าวถัดไปการนำ Hadoop Distribution ต่างมาใช้แล้วเกิดปัญหาจะได้ตรวจวิเคราะห์และแก้ปัญหาได้  

ทำความรู้จักภาพโตๆของ Hadoop กันก่อน

      การเรียนรู้ที่จะเข้าใจการทำงานของ Hadoop และ Big Data Ecosystem ที่มี Hadoop และประกอบรวมด้วยซอฟต์แวร์หลายๆตัว สิ่งที่สำคัญคือภาพการแยกส่วนซอฟต์แวร์แต่ละตัวออกเป็นบทบาทการทำงานเพื่อเป็นกรอบว่าซอฟต์แวร์แต่ละตัวที่เรานำมาประกอบรวมในระบบนั้นทำหน้าที่รับผิดชอบในส่วนใด

      การจัดกลุ่มที่เป็นบทบาทการทำงานใน  Ecosystem จะแบ่งออกเป็น 1).การนำเข้าข้อมูล 2).การจัดการและจัดเก็บข้อมูล 3).การประมวลผลข้อมูล 4).การดูแลและควบคุมการทำงานของระบบ และ 5).การนำเสนอข้อมูล 

      สำหรับการบทบาทหน้าที่ของแต่ละส่วน สำหรับบทความนี้เราจะมองในลักษณะงาน Big Data Engineering เป็นหลัก  และ จะใช้ภาพ Enterprise Hadoop ของ Hortonworks ตามรูปที่ 1   เพื่อสรุปสั้นๆในบทบาทแต่ละส่วนดังนี้

 

7082351-5–box-hortonworks-2-original

รูป: http://www.hortonworks.com

รูปที่ 1

 

            1). การนำเข้าข้อมูล หรือส่วน Governance & Integration: บทบาทหลักของส่วนนี้คือการดึงข้อมูลเข้าระบบที่ทำงานได้ทั้งแบบ Online และ Batch การดึงข้อมูลเข้าระบบสามารถเข้าไปเก็บแบบไฟล์ที่การเข้าถึงข้อมูลเป็นแบบ Sequential ที่ควบคุมการทำงานโดยตรงจาก HDFS หรือ ข้อมูลที่เป็นโครงสร้างแบบตารางที่การเข้าถึงข้อมูลแบบ Random Access ตัวอย่าง หรือ มองได้ว่าส่วนนี้ทำหน้าที่หลักคือ Extract-Transform-Loading ( ETL ) นั้นเอง เครื่องมือที่เอามาใช้งานเช่น Sqoop , Flume เป็นต้น

            2). การจัดการและจัดเก็บข้อมูล หรือ ส่วน Data Management: บทบาทหลักของส่วนนี้คือการบริหารจัดการข้อมูลทั้งการ การเก็บข้อมูล การเรียกข้อมูล การลบข้อมูล ที่คุณสมบัติของการจัดการข้อมูลที่เป็นแบบ Distributed Data ภายใต้การจัดการระบบไฟล์ของ HDFS ( Hadoop Distributed File System )

            3). การประมวลข้อมูล หรือส่วน Data Access: บทบาทหลักของจัดการเข้าถึงข้อมูลทั้งรูปแบบการเก็บข้อมูล และ รูปแบบการประมวลผลข้อมูล สรุปสั้นๆในแต่ละด้านดังนี้

  • รูปแบบการเก็บข้อมูลมีทั้งลักษะการแทนข้อมูลแบบโครงสร้างที่เป็นตาราง และ Key-Value เช่น Hive , HBase เป็นต้น
  • รูปแบบการประมวลผลข้อมูลที่อยู่ในรูปแบบของ Component Based ที่เป็น Map Reduce ที่ทำงานแบบ Batch Processing หรือ Application Programming Interface สำหรับการเขียนโปรแกรมเรียกข้อมูลประมวลแบบทั่วไปตามข้อกำหนดของแอพพลิเคชั่น ที่รองรับการเรียกข้อมูลในแบบภาษา SQL หรือ การเข้าถึงข้อมูลเชิงObject แบบ Key-Value เป็นต้น

            4).การดูแลและควบคุมการทำงานของระบบ หรือ ส่วน Security & Operations สรุปแยกกลุ่มดังนี้

            4.1 ). Security: บทบาทหลักของส่วนนี้คือการควบคุมสิทธิในการเข้าใช้งานทรัพยากรในระบบทั้ง Storage, การสั่งประมวลผล และ การเข้าถึงข้อมูลที่อยู่ในระบบ

            4.2 ). Operations: บทบาทหลักของการบริหารจัดการและเฝ้าติดตามการทำงานของระบบซอฟต์แวร์ต่างๆในภาพเครื่องมือระบบ Big Data Technology และ การจัดลำดับการประมวลผลข้อมูลตามข้อกำหนดของการออกแบบระบบการประมวลผลข้อมูล

            ลำดับสุดท้ายที่เป็นองค์ประกอบหลักที่สำคัญของการจัดการระบบแบบ Distributed Data & Processing ที่ควบคุมการทำงานแบบระบบ Cluster คือ YARN ตามรูปที่ 1 โดยที่ YARN ถูกเรียกว่า  Data Operating System สำหรับประสานการทำงานในระบบทั้งหมด ทั้งลักษณะของการควบคุมการกระจายงานออกไปประมวลผลที่เครื่องต่างๆ หรือ การควบคุมความพร้อมใช้งานของเครื่องต่างๆในระบบเป็นต้น

สถาปัตยกรรมหลักของ Hadoop เป็นอย่างไร

           เรารู้จักภาพใหญ่ที่เป็น Enterprise Hadoop หรือ บางที่เรียกว่า Hadoop Ecosystem เพื่อให้ภาพกับเราว่า  ถ้าจะอิมพลีเมนท์ Enterprise Hadoop เราจะต้องกำหนดองค์ประกอบให้ครบถ้วนด้านใดบ้างและหาซอฟต์แวร์ตัวใดมาเติมเต็มบ้าง 

           ถัดจากนี้เราจะปูพื้นให้เข้าใจใน 2 ส่วนหลักคือ  i) การจัดการข้อมูลและจัดเก็บหรือส่วน Data Management และ ii). YARN ที่เป็นหัวใจหลักของ Hadoop System   เพื่อที่เวลาที่เราติดตั้ง Hadoop และ Start Hadoop แล้วเห็น Process ที่จัดการ HDFS( Hadoop Distributed File System )   และ YARN( Yet Another Resource Negotiator )  จะได้จินตนาการอย่างเห็นภาพ  ดังนั้นตามรูปที่ 2 เฉพาะส่วนของ HDFS และ YARN    เรามาสรุปบทบาทหน้าที่ของแต่ละส่วนกันดังนี้

HadoopV2-L

รูปที่ 2

1). HDFS :

HDFS (Hadoop Distributed File System) เป็นระบบการจัดการไฟล์แบบกระจายการจัดเก็บข้อมูลไปตามเครื่องเก็บข้อมูลต่างในระบบ Cluster  มันถูกออกแบบมาเพื่อวัตถุประสงค์ต่างๆดังนี้

           i). การเก็บข้อมูลไม่จำกัดปริมาณจากความสามารถการเพิ่มเครื่อง( Node )เก็บข้อมูลได้เป็นพันๆเครื่อง 

           ii). ความคงทนต่อความล้มเหลวของเครื่องเก็บข้อมูลด้วยการสำเนาข้อมูลไปยังเครื่องต่างๆ

           iii). ความมีประสิทธิภาพในการเข้าถึงข้อมูลที่ดีมากๆ (High-throughput streaming data access) จากการไม่มีข้อจำกัดด้าน I/O Wait เนื่องจากข้อมูลกระจายไปไว้ในเครื่องต่างๆ การอ่านข้อมูลเดียวกันในเวลาเดียวกันการเข้าถึงข้อมูลจึงกระจายไปยังเครื่องต่างๆที่เก็บข้อมูล

           การจัดเก็บไฟล์นั้นไฟล์ใหญ่ๆจะถูกแบ่งออกเป็นชิ้นย่อยๆหรือเป็นบล็อกๆ(Blocks) ค่าปกติของ Apache Hadoop ขนาดบล็อก 64 MB  กระบวนการจัดเก็บจะส่งไฟล์จะถูกแยกออกเป็นบล๊อกๆไปเก็บในแต่ละเครื่องที่กำหนดเป็นเครื่องเก็บข้อมูล(Data Node)   ดังนั้นใน HDFS จะแบ่งออกคอมโพเนนท์ หรือ Process เป็น 2 ตัว คือ Name Node และ Data Node ซึ่งเราจะเห็นเป็น Process หลังจากที่เรา Start Hadoop  แต่ละตัวที่จะมีหน้าที่แตกต่างกันไปดังนี้

Name Node: ทำหน้าที่ 2 อย่างคือ 1)เป็น Directory สำหรับให้ข้อมูลว่าไฟล์ที่ต้องการเรียกดูข้อมูลจะต้องไปอ่านชิ้นส่วนย่อยๆจากเครื่องเก็บข้อมูลใดบ้าง และ 2). ควบคุมการเข้าถึงไฟล์(Permission)  โดยแสดงภาพในลักษณะของ Cluster Server ตามรูปที่ 3   ที่ Name Node เป็นเหมือนกับโปรเซสแม่ในการกำกับการกระจายข้อมูลไปเก็บในเครื่องเก็บข้อมูลต่างๆในกลุ่ม Cluster นี้

HDFS1

รูปที่ 3

 

Data Node: เป็นโปรเซสลูกที่ทำหน้าที่ดูแลการจัดเก็บและบันทึกข้อมูลที่เป็นชิ้นข้อมูลย่อยๆ โดยภาพของโปรเซสที่ติดตั้งในระบบจะเรียกเครื่องเหล่านี้ว่า Worker Node ใน Cluster Server

สรุปภาพสุดท้ายเพื่อให้เห็นการกระจายของบล็อกข้อมูล ตามรูปที่ 4 ที่ NameNode แสดงให้เห็นว่า File X แยกเป็น B1 และ B2  ซึ่งถูกกระจายไปวางไว้ที่เครื่อง DataNode ต่างๆตามรูปเพื่อ

HDFS2

รูปที่ 4

2). YARN :

ตัว YARN เป็นตัวควบคุมในการจัดสรรทรัพยากรใน Cluster  ควบคุมการอนุญาตให้ Application ที่ต้องการประมวลผลข้อมูลบน HDFS  ว่าสามารถส่งไปทำงานบนเครื่อง Worker Node ( Data Node ) เครื่องใดได้บ้าง  

สถาปัตยกรรมของ YARN เป็นแบบ Master-Slave หรือโปรเซสแม่-โปรเซสลูกเช่นเดียวกับ HDFS โดยโปรเซสแม่เรียกว่า ResourceManager และ โปรเซสลูกเรียกว่า NodeManager   การทำงานแบบ Cluster จะติดตั้งและสั่งให้ทำงานจะแยกเครื่องกัน โดยที่ 1 Cluster เราจะมีเครื่องทำหน้าที่เป็น ResourceManager 1 เครื่องที่ทำหน้าที่ NodeManager อยู่หลายๆเครื่อง แสดงเป็นรูปการทำงานในรูปที่ 5  โดยแต่ละส่วนทำหน้าที่ดังนี้

Yarn

รูปที่ 5

Client: ทำหน้าที่ส่ง Application ไปขอ Run กับ ResourceManager  หรือ ภาพการควบควบคุม Cluster โดย YARN

ResourceManager: ทำหน้าที่เหมือนกับผู้คุมสำหรับการให้คิวการทำงานและดูแลความเรียบร้อยของการประมวลผล สรุปสั้นๆดังนี้

  • รับการร้องขอจาก Client ในการส่งคำสั่งมาประมวลผลข้อมูล
  • สื่อสารกับ ApplicationMaster ที่เครื่อง NodeManager ว่าสถานะ Resource ของเครื่องใดพร้อมให้บริการ
  • เลือกเครื่อง NodeManager ( Data Node ) ที่พร้อมใช้งานให้กับ Client เมื่อ Client ส่งงานมาขอให้ประมวลผล
  • ติดตามเฝ้าดูการทำงานของ Application ที่กำลังประมวลผลข้อมูลอยู่ที่เครื่องเครื่อง Worker ใดทำงานสำเร็จแล้วหรือไม่ หรือ หากมี Application Process ใดล่มไประหว่างการทำงานก็ทำการโยกย้าย Application Process ส่งไปให้เครื่อง Worker อื่นๆที่พร้อมให้บริการ

NodeManagers: ทำหน้าที่หลักในการสร้างสภาพแวดล้อม(Container)ในการ Run Application และ สื่อสารสถานะความพร้อมให้บริการกับ ResourceManager โดยดูจาก Memory และ CPU เพียงพอที่จะรับ Run Application หรือ ไม่  โดยถ้าพร้อม Run Application   ตัว Node Manager จะ สร้าง ApplicationManager เป็นตัวควบคุม-ประสานการทำงานร่วมกันระหว่าง Task ต่างๆ

            ดังนั้น Hadoop Cluster 1 ระบบ จะประกอบด้วย  1 เครื่องที่เป็น Master Node ก็จะมีทั้งโปรเซสแม่ของ HDFS คือ NameNode และ YARN คือ ResourceManager และ หลายๆเครื่องที่เป็น Slave Node ก็จะมีทั้งโปรเซสลูกของ HDFS คือ DataNode และ YARN คือ NodeManager ตามรูปที่ 6  สำหรับการประสานการทำงานร่วมกันทั้งการจัดการกับข้อมูลของ HDFS

hadoop2_ec2

รูปที่ 6

แล้ว Hadoop ดีอย่างไรในภาพของ Data Processing

           สุดท้ายที่เป็นข้อดีในด้านการประมวลของ Hadoop System ด้านความเร็วของการประมวลผลข้อมูลขนาดใหญ่คือ ระบบการประมวลผลข้อมูลที่ส่ง Application Process ไปสั่งประมวลผลข้อมูลที่เครื่องข้อมูลเอง เพื่อลดการเสียเวลาการโอนถ่ายข้อมูลมายังเครื่องที่ Run Application Process และ ทำให้เกิดการประมวลผลแบบขนาน ( Parallel Computing )  อย่างแท้จริง

 

เราไปต่อภาพของ Big Data ด้วยการติดตั้ง Hadoop กันครับ การติดตั้ง Hadoop Single Node แบบ Step-by-Step

 

อ้างอิงรูป : https://dzone.com/refcardz/getting-started-apache-hadoop

Our Service

Big Data Engineering

ติดตั้ง Cloudera Enterprise Hadoop , อิมพลีเมนท์การเอาข้อมูลเข้า HDFS , Hive , HBase , Elasticsearch ผ่าน Talend  ETL Tool และ Custom Programming admin

Software&Solution

พัฒนา Smart Software Application ( Web , Mobile ) และ เชื่อมต่อกับอุปกรณ์ IoT  , พัฒนาระบบ Dashboard ทำ Visualize ข้อมูล , การพัฒนา API&Micro-Service , การเชื่อมต่อและประมวลผลข้อมูลบน Big Data Store ด้วยเทคนิค Machine Learning admin

IT Operation

อิมพลีเมนท์ระบบ IT  Monitoring สำหรับการเฝ้าระวังและแจ้งเตือนสภาพการทำงานของ Server , Application Server และ IoT Device ต่างๆ , การบริหารจัดการ Service & Application Log. admin

Leave a Reply

Your email address will not be published. Required fields are marked *