เมื่อองค์กรธุรกิจเห็นความสำคัญของข้อมูลที่มีจำนวนมากขึ้นทุกๆวัน และได้มีการจัดเก็บข้อมูลเพื่อนำมาวิเคราะห์ วางแผนกลยุทธ์ขององค์กร เพื่อสร้างความได้เปรียบให้กับธุรกิจ โดยอาศัยข้อมูลในอดีตเพื่อทำนายถึงอนาคต ทำให้เรื่อง Big Data เริ่มมีความสำคัญและน่าสนใจมากขึ้นในปัจจุบัน ดังนั้น ผมก็เป็นคนนึงที่สนใจในเรื่อง Big Data {Note: บทความนี้เป็นลักษณะการศึกษาและบันทึกทำความเข้าใจไปเรื่อยๆในแต่ละส่วน};

2_Hadoop2.0ที่มา : www. hortonworks.com

จากรูปด้านบนผมหยิบมาเพื่ออธิบายให้เข้าใจองค์ประกอบโดยรวมของการทำ Big Data Hadoop ซึ่งเป็นรูปที่ทำให้ผมเข้าใจมากยิ่งขึ้น โดยในแต่ละส่วน API, Engine และ System ก็จะมีหน้าที่การทำงานที่แตกต่างกันไป เดี่ยวผมจะค่อยๆศึกษาไปทีละส่วนว่า Key-Word เหล่านี้มันทำหน้าที่อะไร


Hive  :  เป็นเครื่องมือใช้เตรียมข้อมูลที่เป็นลักษณะคลังข้อมูล (Data warehouse) บน Hadoop โดยมีการกำหนด Schema เตรียมไว้ทำให้สามารถทำการสืบค้น (Query) โดยใช้ภาษาที่เรียก Hive QL ซึ่งมีลักษณะคล้ายภาษา SQL  จากข้อมูลที่มีการจัดเก็บใน HDFS โดยที่เราไม่ต้องเขียน Map/Reduce เอง เนื่องจาก Hive จะทำการแปลง Hive QL เป็น Map/Reduce แล้วทำการ Execute เป็นแบบ Batch นั่นเอง และสามารถ Access ด้วย ODBC/JDBC  ตัวอย่างหน้าจอ Hive ของค่าย Cloudera  <<อ่านต่อ>>

14


Impala : เป็นเครื่องมือที่ทางค่าย Cloudera ทำการ Build เข้ามาในตัว Cloudera Hadoop นั่นเอง โดยมีการทำงานคล้ายๆ Hive แต่ที่แตกต่างคือ Impala จะทำงานกับข้อมูลที่อยู่บน  Memory ซึ่งแน่นอนว่าต้องเร็วกว่าแต่มันก็ยังมีข้อจำกัดในเรื่อง Memory อาจจะต้องขึ้นอยู่กับชุดคำสั่งที่ใช้ Query และ Memory ว่ามีจำนวนเพียงพอต่อการใช้งานหรือหากไม่เพียงพอจะทำให้เกิดปัญหา out-of-memory ได้   <<อ่านต่อ>>


Apache Drill : Apache drill เพิ่งเกิดมาใหม่ (ผมยังไม่เคยลองเล่น) จากที่อ่านมาไม่ต้องสร้าง Schema ก่อน เป็นเครื่องมือที่ทำงานเป็น Query  คล้ายๆกับ Hive <<อ่านต่อ>>


Pig : เป็นเครื่องมือที่จะใช้ภาษา Script ที่เรียกว่า Pig Latin ซึ่งเขียนเพื่อประมวลผลข้อมูลเป็นขั้นเป็นตอน โดยเราไม่ต้องใช้ java มาทำ Map/Reduce ก็สามารถเขียน script pig ประมวลผลข้อมูลที่จัดเก็บใน HDFS ได้เลย ส่วน output ก็จะ write ออกมาเป็น file output เป็นต้น  ตัวอย่างหน้าจอการเขียน Script Pig ของค่าย Cloudera <<อ่านต่อ>>
15


Sqoop : เป็นเครื่องมือที่ทำหน้าที่ในการ Transfer ข้อมูลจากระบบฐานข้อมูลอื่นๆเช่น Oracle, SQL Server, My SQL เข้ามาเก็บในรูปแบบ HDFS ของ Hadoop (ซึ่งเราต้องสร้าง Connection ผ่าน jdbc เพื่อต่อไปยังระบบฐานข้อมูล และสร้าง Link เพื่อเชื่อมต่อไปยัง HDFS)  <<อ่านต่อ>>


Flume : คือเครื่องมือที่ช่วยจัดเก็บข้อมูล Log Collector หรือ Event Log จากแหล่งต่างๆ โดยทำการเคลื่อนย้ายข้อมูลที่มีจำนวนมาก และต้องทำการฝัง Agent ไว้ยัง web server เพื่อทำการไหลข้อมูลผ่านทาง Channel ซึ่งทำงานบน Memory ไปเก็บไว้บน HDFS ทำให้มีความรวดเร็วและทำงานแบบ real-time ได้ เช่น Web log, Tweeter เป็นต้น

ที่มา: https://flume.apache.org

Kafka : เป็นระบบการส่งข้อความที่รองรับการ publishing และ subscribing ที่มีความเร็วสูง เนื่องจากมีระบบประมวลผลแบบกระจาย (distributed system) และง่ายต่อการขยาย (Scale out) โดย Kafka จะทำตัวเองเป็น Brokers หรือ Kafka Cluster รวบรวม Message จาก Producer ไว้สำหรับให้ฝั่ง Consumer ที่มีการ subscribe สามารถดึงข้อความได้ โครงสร้างของ Kafka เองยังมีการแบ่งเป็น partition ทำให้ Producer และ Consumer สามารถที่จะส่งและรับข้อความได้ในเวลาเดียวกันได้

ที่มา : http://www.infoq.com/articles/apache-kafka

NoSQL : หรือ Not Only SQL เป็นระบบฐานข้อมูลที่ออกแบบมาเพื่อใช้เก็บข้อมูลที่มีขนาดใหญ่ รองรับการเก็บข้อมูลหลากหลายรูปแบบ อีกทั้งยังต้องสามารถทำการขยายได้ง่ายหากข้อมูลมีขนาดเพิ่มขึ้นเรื่อยๆ
ประเภทของ No SQL แบ่งเป็น 4 ประเภท
1. Column Store เช่น HBase, Cassandra, Accumulo
2. Document Store เช่น MongoDB, CouchDB , JSON ODM, Elasticsearch, ArangoDB
3. Key/Value เช่น Riak, DynamoDB, Redis, Oracle NOSQL Database
4. Graph Databases เช่น Neo4J, Infinite Graph, GraphBase, Trinity


Oozie : เป็นเครื่องมือที่ใช้ทำ Workflow และสร้างเป็น Job Scheduler เพื่อจัดการงานของ Apache Hadoop ตัวอย่างเช่น Java map-reduce, Streaming map-reduce, Pig, Hive, Sqoop และ Distcp เป็นต้น
1


Spark : เป็นเครื่องมือในการประมวลผลแบบ in-memory cluster  มีความรวดเร็วและรองรับ API ที่พัฒนาจากภาษา Java, Scala, and Python ซึ่งถูกเครมว่ามีความเร็ว 10-100 เท่า Spack ประกอบไปด้วย MLib, Spark SQL, Streaming, GraphX
ก่อนจะใช้งานข้อมูลต้องใช้คำสั่งโหลดข้อมูลขึ้น Memory ก่อน

ที่มา : http://hortonworks.com

Mahout : เป็นเครื่องมือ Open Source ที่เอาไว้ใช้ทำ machine learning algorithms จากข้อมูลขนาดใหญ่บน Hadoop เช่น Recommendation, Classification, Clustering
1


Hue  : เป็นหน้าจอ Web UI ของค่าย Cloudera ย่อมาจาก “Hadoop User Experience”  ทำให้สามารถจัดการ Application ตัวอื่นๆเช่น Hive, Pig, Sqoop, Hbase, Files, Security … เป็นต้น ผ่านทาง web browser ได้อย่างสะดวกและง่ายกว่าใช้คำสั่ง Command Line  ตัวอย่างหน้าจอ Hue
16


Ambari :  เป็นหน้าจอ Web UI ของค่าย Hortonworks ทำให้สามารถจัดการ Hadoop ผ่าน web browser ดังรูป
Ambari


Storm : เป็น Open source ที่ใช้ประมวลผลข้อมูลที่เป็น Streaming Data แบบ Real Time ซึ่งมีคุณลักษณะ 5 อย่างในการประมวลผลข้อมูลดังนี้
– Fast เขาเครมว่าเร็วขนาดที่ประมวลผลข้อความขนาด 100 ล้านไบต์ ต่อวินาที ต่อโหนด
– Scalable  การขยายออกเพื่อรองรับโหลดและสามารถทำการ parallel processing ได้ดี
– Fault-tolerant กรณีที่เกิดข้อผิดพลาด เช่น workers die เจ้าตัว storm ก็จะทำการ Restart ให้อัติโนมัติ หรือ Node die  เจ้าตัว Storm ก็จะไป Start Node อื่นขึ้นมาทำงานแทนเป็นต้น
– Reliable มีความเชื่อถือได้
– Easy to operate  ง่ายต่อการทำงาน มี configuration ง่ายและเป็นมาตรฐานทั่วไป


Zookeeper : เป็น service ที่ใช้ในการ replicate ข้อมูลจาก server ต่างๆ ซึ่งมีกระบวนการทำงานแบบ Distribution 

https://cwiki.apache.org

ศึกษาข้อมูลเพิ่มเติมได้จาก
http://nosql-database.org
http://hortonworks.com
http://hadoop.apache.org/
https://cloudera.com

TG Facebook Comments