เผยแพร่โดย Tricore: 10 กรกฎาคม 2017
Apache Hadoop เป็น open-source, Java-based framework สำหรับประมวลผลข้อมูลปริมาณมากในสภาพแวดล้อม distributed computing พัฒนาโดย Doug Cutting และ Mike Cafarella ปล่อยเมื่อ 2005
สร้างบน commodity hardware Hadoop ทำงานบนสมมติฐานพื้นฐานว่า hardware failures เป็นเรื่องปกติ Hadoop framework จัดการ failures เหล่านี้
ใน Part 1 ของชุดบทความ 2 ส่วน เราจะครอบคลุม big data, Hadoop ecosystem และ key components ของ Hadoop framework
ข้อมูลใหญ่กว่าที่เคย
ข้อมูลสำคัญต่อทุกองค์กร และ big data เปิดโอกาสการวิเคราะห์ใหม่ๆ นำไปสู่ business insights มีค่า Big data หมายถึงข้อมูลที่เกินความจุ storage และ processing power ขององค์กร
Big data มาจาก social networks, CCTV cameras, sensors, online shopping, hospitality data, GPS, automobile industry และแหล่งอื่นที่สร้างข้อมูลปริมาณมหาศาล
3 ด้านหลักของ big data ที่ก้าวหน้าอย่างรวดเร็ว:
- Volume: ปริมาณเพิ่มจาก GB เป็น TB และ PB ต้องการ disk space มหาศาล
- Velocity: Big data เก็บใน data centers ต้องการ high-speed data processors เพื่อส่งข้อมูลไป workstation
- Variety: ข้อมูลแบ่งเป็น structured, unstructured, semi-structured
Big data = (Volume + Velocity + Variety) of data
Hadoop Ecosystem
Hadoop ecosystem หมายถึง components ต่างๆ ของ Apache Hadoop software library ประกอบด้วย modules ที่โต้ตอบกัน เครื่องมือและ accessories สำหรับจัดการ big data ครอบคลุม core components และ add-on modules
Components ของ Hadoop Framework
Distributed Storage
Hadoop Distributed File System (HDFS)
Distributed storage ใน Hadoop เรียกว่า HDFS ให้ redundant storage มีลักษณะ:
- ออกแบบให้เก็บข้อมูลบน commodity hardware ได้อย่างน่าเชื่อถือ
- สร้างขึ้นคาดการณ์ hardware failures
- ตั้งใจให้ large files และ batch inserts (Write once, read many times)
HBase
HBase เป็น distributed, column-oriented NoSQL database ใช้ HDFS เป็น underlying storage รองรับ batch-style computations ด้วย MapReduce และ point queries (random reads)
- จัดเก็บข้อมูลปริมาณใหญ่ (มilliards of rows) บน clusters ของ commodity hardware
- Bulk store logs, documents, real-time feeds, raw imported data
- อ่าน/เขียนข้อมูลที่ Hadoop apps ใช้งานอย่างสม่ำเสมอ
- รวมหรือประมวลผล data store ด้วย MapReduce
- Data platform สำหรับ analytics และ machine learning
HCatalog
HCatalog เป็น table และ storage management layer สำหรับ Hadoop ให้ Pig, MapReduce, Hive อ่าน/เขียนข้อมูลในรูปแบบตารางแทนไฟล์
- Centralized location สำหรับข้อมูลที่ Hadoop apps ใช้
- Reusable data store สำหรับ sequenced และ iterated Hadoop processes
- Data storage ใน relational abstraction
- Metadata management
Distributed Processing
MapReduce
MapReduce เป็น distributed data processing model และ execution environment รันบน large clusters ของ commodity machines สร้าง insights จากข้อมูลที่เก็บ ใช้ MapReduce algorithm แบ่ง operations เป็น Map หรือ Reduce functions
- Aggregation (counting, sorting, filtering) บน large disparate data sets
- Scalable parallelism ของ Map/Reduce tasks
- Distributed task execution
YARN
YARN เป็น cluster และ resource management layer สำหรับ Apache Hadoop ecosystem ฟีเจอร์หลักของ Hadoop generation 2
- Schedule applications เพื่อ prioritize tasks และ maintain big data analytics systems
- Aggregate และ sort data เพื่อ conduct specific queries
- Allocate resources ให้ applications และ manage resource monitoring tasks
Machine Learning
Apache Mahout
Open-source project สำหรับสร้าง scalable machine learning algorithms Data mining framework รันกับ Hadoop infrastructure จัดการ huge volumes of data
- Ready-to-use framework สำหรับ data mining tasks บน large data volumes
- Algorithms เขียนบน Hadoop ทำให้ Mahout ทำงานได้ดีใน distributed environments
- Quick analysis ของ large data sets
- Distributed fitness function capabilities สำหรับ evolutionary programming รวม matrix และ vector libraries
Workflow Monitoring และ Scheduling
Oozie
Hadoop's system สำหรับจัดการ jobs Workflow scheduler รัน workflows สำหรับ dependent jobs ให้สร้าง directed acyclic graphs (DAGs) ของ workflows ที่รัน parallel และ sequential jobs
- ยืดหยุ่น: start, stop, suspend, re-run jobs ได้ง่าย
- Re-run failed workflows ได้ง่าย
- Scalable: จัดการ thousands of workflows (แต่ละ workflow มี dozens of jobs) ใน Hadoop cluster
Scripting
Apache Pig
Scripting ใช้ SQL-based language และ execution environment สำหรับ complex MapReduce transformations Pig เขียนด้วย Pig Latin แปลเป็น executable MapReduce jobs เปิดใช้งาน extended/user-defined functions (UDFs) ด้วย Java
- Scripting environment สำหรับ ETL tasks บน raw data ใน HDFS
- SQL-based language สำหรับ complex MapReduce functions
- Data processing, stitching, schematizing บน large disparate data sets
- High-level data flow language
- Abstraction layer ให้ focus บน data processing
สรุป
Hadoop และ MapReduce มี user base มากใน bioinformatics โดยเฉพาะ next-generation sequencing analysis นิยมเพราะ HDFS ที่ robust, fault-tolerant HBase เพิ่ม distributed, fault-tolerant, scalable database บน HDFS ด้วย random real-time read/write access สนใจ Mahout สำหรับ scalable machine learning libraries หรือ Pig สำหรับ batch processing data
ใน Part 2 จะครอบคลุม components เพิ่มเติมของ Hadoop ecosystem