Big Data as a Service แนวทางการทำโครงการ Big Data ที่ไม่ต้องลงทุนโครงสร้างพื้นฐาน

Screenshot 2017-09-18 10.59.49

ช่วงหลายเดือนที่ผ่านมาผมเดินสายบรรยายเรื่อง Big Data Jumpstart  โดยแนะนำให้องค์กรต่างๆทำ  Big Data  as a Service ซึ่งเป็นการใช้ Cloud Services ของ Public cloud หลายใหญ่ต่างๆทั้ง  Google Cloud Platform, Microsoft Platform หรือ Amazon Web Services (AWS) ทำให้เราสามารถที่จะลดค่าใช้จ่ายได้มหาศาลโดยเฉพาะกับองค์กรขนาดกลางหรือขนาดเล็กที่ไม่มีงบประมาณหลายสิบล้านในการลงทุนโครงสร้างพื้นฐานด้าน Big Data

Screenshot 2017-10-02 08.27.19

รูปที่ 1 องค์ประกอบของเทคโนโลยีสำหรับการทำ Big Data

การลงทุนโครงสร้างพื้นฐานหรือการจัดหาเทคโนโลยีสำหรับโครงการ Big Data โดยมากจะมีการลงทุนอยู่สี่ด้านคือ 1) Data Collection/Ingestion สำหรับการนำข้อมูลเข้ามาเก็บ  2) Data Storage สำหรับการเก็บข้อมูลที่เป็นทั้ง structure และ unstructure 3) Data Analysis/Processing สำหรับการประมวลผลข้อมูลที่อยู่ใน data storage และ 4)  Data visualisation  สำหรับการแสดงผล

ปัญหาที่องค์กรต่างๆมักจะมีก็คือการจัดหาเทคโนโลยีด้าน Data storage ที่จะต้องสามารถเก็บ Big Data ซึ่งนอกจากจะมีขนาดใหญ่แลัวข้อมูลยังมีความหลากหลาย จึงต้องหาเทคโนโลยีราคาถูกอย่าง Apache Hadoop มาเก็บข้อมูล แต่การติดตั้งเทคโนโลยีเหล่านี้ก็มีค่าใช้จ่ายในการหาเครื่องคอมพิวเตอร์ Server จำนวนมากมาใช้ และค่าใช้จ่ายด้าน Hardware ก็ค่อนข้างสูงหลายล้านบาท บางทีเป็นสิบล้านหรือร้อยล้านบาท ซึ่งอาจไม่เหมาะกับองค์กรขนาดเล็ก หรือแม้แต่องค์กรขนาดใหญ่ก็มีคำถามที่จะต้องหา Use case ที่ดีเพื่อตอบเรื่องความคุ้มค่ากับการลงทุน (Returm of Investment) ให้ได้

ดังนั้นการทำโครงการ Big Data ไม่ควรจะเริ่มต้นจากการลงทุนเรื่องเทคโนโลยี ไม่ใช่เป็นการจัดหาระบบอย่างการทำ Apache Hadoop แต่ควรจะเป็นการเริ่มจากคิดเรื่องของธุรกิจเราต้องคิดเรื่องของ Business Transformation (Don’t thing technology, think business transformation) การทำโครงการ Big Data ควรเริ่มจากทีมด้านธุรกิจไม่ใช้หานักเทคโนโลยีมาแนะนำการติดตั้งระบบหรือลง Hadoop หรือหานักวิทยาศาสตร์ข้อมูลมาทำงานทันที เพราะหากฝ่ายบริหารหรือฝ่ายธุรกิจมีกลยุทธ์ด้าน Big Data เข้าใจประโยชน์ของการทำ Big Data ได้ เราสามารถเริ่มต้นโครงการ Big Data ได้อย่างง่าย โดยใช้ประโยชน์จากบริการ Big Data as a Service บน Public cloud ซึ่งทำให้องค์กรไม่ต้องเสียค่าใช้จ่ายเริ่มต้นในราคาแพง ที่อาจไม่คุ้มค่ากับการลงทุน

เทคโนโลยีในการทำ Big Data  ต่างๆเช่น Big data storage (อย่าง Hadoop HDFS) เราสามารถใช้ Cloud Storage  อย่าง Amazon S3, Google Cloud Storage หรือ Azure Blob เข้ามาแทนที่ได้ โดยบริการเหล่านี้ค่าใช้จ่ายในการใช้จ่ายในการใช้งานจะต่ำกว่าการติดตั้ง Hadoop มาใช้งานเป็นสิบหรือร้อยเท่า แม้อาจมีข้อเสียเรื่องเวลาในการ Transfer ข้อมูลจาก site ของเราขึ้น Public Cloud แต่หากมีการวางแผนที่ดีแล้วสามารถทำงานได้อย่างมีประสิทธิภาพ เช่นเดียวกับเรื่องความปลอดภัยของข้อมูบบน Public cloud หากมีการพิจารณาการใช้ข้อมูลที่เหมาะสมหรือการเข้ารหัสข้อมูลก็จะตัดปัญหาเรื่องเหล่านี้ไปได้

เช่นเดียวกันในการประมวลผลเราสามารถใช้บริการบน Public cloud ที่ใช้ระบบประมวลผลอย่าง Hadoop as a service เช่น DataProc บน Google Cloud Platform, HDInsight ของ Microsoft Azure หรือ EMR ของ AWS ซึ่งมีค่าใช้จ่ายตามระยะเวลาการใช้งาน  (pay-as-you-go) ซึ่งเราไม่จำเป็นต้องเปิดระบบตลอด และมีค่าใช้จ่ายที่ต่ำมาก รวมถึงการใช้บริการอื่นๆอย่าง Machine Learning as a Service บน public cloud  ที่มีความสามารถที่ค่อนข้างสูง ทำให้เราสามารถทำงานได้อย่างมีประสิทธิภาพ

แม้แต่การทำ Data Visualisation เราก็สามารถที่จะใช้เครื่องมือบน public cloud ที่จัดเป็น Big Data Software as a Service อย่างเช่น Google Data Studio 360, PowerBI บน Microsoft Azure หรือ Quicksight ของ AWS ได้ ซึ่งรูปที่ 2 ก็แสดงสรุปให้เห็นบริการ Cloud Service เหล่านี้ บน public cloud platform ต่างๆ

Screenshot 2017-10-02 12.09.47

รูปที่ 2 Tradition Big Data Technology เทียบกับ Big Data as a Service ต่าง

ซึ่งการทำโครงการ Big Data โดยใช้ public cloud เหล่านี้สามารถที่จะเริ่มทำได้เลย ไม่ได้มีค่าใช้จ่ายเริ่มต้น และค่าใช้จ่ายที่ตามมาก็เป็นค่าบริการต่อการใช้งาน ซึ่งค่าบริการที่อาหมดไปหลักๆก็จะเป็นค่า Cloud Storage  ที่อาจเสียประมาณเดือนละไม่ถึงพันบามต่อ Terabyte และหากเราต้องการเปลี่ยนแปลงหรือยกเลิกบริการเหล่านี้ก็สามารถใช้ได้ทันที ซึ่งวิธีการตัดสินใจที่จะทำโครงการ Big Data เหล่านี้ก็จะไม่ได้เน้นเรื่องของความคุ้มค่ากับการลงทุนมากนัก เพราะค่าใช้จ่ายเริ่มต้นต่ำมาก แต่มันจะกลายเป็นว่า เราจะทำโครงการอะไรที่ให้ประโยชน์กับธุรกิจมากสุด และเมื่อเริ่มทำลงทุนเรื่มต้นเล็กน้อยก็จะเห็นผลทันทีว่าคุ้มค่าหรือไม่

กล่าวโดยสรุป วันนี้เราสามารถเริ่มทำโครงการ  Big Data ได้เลยโดยเริ่มที่โจทย์ทางธุรกิจ คุยกับฝั่งธุรกิจ ไม่ใช่เริ่มที่เทคโนโลยี

ธนชาติ นุ่มนนท์

IMC Institute

ตุลาคม 2560

Hortonworks เทียบกับ Hadoop Distribution อื่นๆ

ช่วงสองสัปดาห์ที่ผ่านมา ผมให้ทีมนักศึกษาฝึกงานของ IMC Institute  ในโครงการ Big Data School  ได้ทดลองติดตั้งและเปรียบเทียบ Hadoop Distribution ต่างๆ ซึ่งผมได้เคยเขียนเรื่อง การติดตั้ง Hadoop Distributions  พร้อมทั้งวิธีการติดตั้งไว้แล้ว ในบทความ “Big Data School กับการติดตั้ง Hadoop Distributions” ซึ่งในการเปรียบเทียบDistribution ต่างๆ ผมให้นักศึกษาทดลองติดตั้งสองแบบคือ

  • การติดตั้ง  Hadoop Cluster 4-5  เครื่องบน Amazon EC2 หรือ Microsoft Azure สำหรับที่จะใช้เป็น Production
  • การใช้ Hadoop Sandbox บนเครื่อง Server หรือเครื่อง PC หนึ่งเครื่อง สำหรับที่จะใช้เป็นเครื่องทดลองหรือทำ Development

ซึ่งนักศึกษาก็ได้แบ่งกลุ่มกันทำ  Hadoop Distribution  4 ชุดคือ

Screenshot 2016-06-28 12.20.25

และผมได้ให้พวกเขาสรุปเปรียบเทียบในประเด็นต่างๆเช่น ราคา, ความยากง่ายในการใช้งาน, ความยากง่ายในการติดตั้ง, Opensource Compatibity, คู่มือเอกสารต่างๆและชุมชน, การสนับสนุนจากผู้ผลิต  ซึ่งพอสรุปประเด็นต่างๆได้ดังนี้

  • ราคา: ในแง่ราคา Apache Hadoop เป็นฟรีซอฟต์แวร์แต่ก็ไม่มี support ใดๆ ซึ่งถ้าเปรียบเทียบกรณีนี้ Hortonworks จะดีสุดเพราะฟรีเช่นกันยกเว้นต้องการซื้อ  support ขณะที่ Cloudera จะหรีเฉพาะ  Express Version และ MapR จะฟรีเฉพาะเวอร์ชั่น M3  ซึ่งทั้งสองเวอร์ชั่นไม่ใช่ Full Feature ที่ทั้งสองรายมีให้
  • ความง่ายในการติดตั้ง Cluster: เมื่อพิจารณาจากประเด็นนี้  Cloudera จะติดตั้งง่ายสุดโดยผ่าน Cloudera Manager แต่จริงๆแล้วการติดตั้ง Hortonworks ก็ไม่ยากเกินไปถ้าติดตั้งผ่าน Public Cloud หรือ  Private Cloud ที่เป็น Openstack  โดยใช้ Cloudbreak ส่วน Apache Hadoop ติดตั้งค่อนข้างยากแต่อาจใช้ Ambari ได้
  • ความง่ายในการใช้งาน: Cloudera และ MapR  จะมีส่วนติดต่อผู้ใช้ที่เป็น Hue ที่ค่อนข้างง่ายต่อการใช้งาน ส่วนของ Hortonworks ใช้ Ambari ที่มี Feature เพียงบางส่วน ส่วนของ Apache Hadoop จะต้องติดตั้ง Hue เองซึ่งค่อนข้างยาก
  • Opensource Compatibility: กรณีนี้ Hortonworks จะดีกว่ารายอื่นมากเพราะจะสอดคล้องกับ Apache Hadoop ที่เป็น Opensource ขณะที่ Cloudera จะเป็น Vendor Lockin หลายตัว อาทิเช่น Cloudera Manager หรือ Impala เช่นเดียวกับ MapR ที่ Lockin ตั้งแต่ MapR-FS และ MapR Streaming
  • Sandbox: ถ้าต้องการหาตัวทดลองเล่น Cloudera มีจุดเด่นที่มี Docker Image ให้เลยสามารถเล่นกับเครื่องใดก็ได้ ขณะที่ Hortonworks จะเน้นให้เล่นกับ VMware/VirtualBox หรือจะรันผ่าน Microsoft Azure เท่านั้น ส่วน distributation อื่นๆ (MapR, Apache Hadoop) ก็ไม่มี Official Docker Image  เช่นกัน
  • คู่มือเอกสารต่างๆและ Community:  ในแง่นี้ทั้งสามรายที่เป็น  Commercial Distribution ต่างก็มีเอกสารพอๆกัน แต่ถ้าพูดถึง Community เราอาจเห็นจำนวนคนที่จะแชร์ข้อมูล Cloudera มากกว่า Hortonworks แต่ทั้งนี้เราสามารถใช้ Community กลุ่มเดียวกับ Pure Apache Hadoop เพราะ Hortonworks จะมีความ Opensource Compatibity ค่อนข้างสูงแต่สองรายใหญ่ต่างก็มีงานประจำปีหลายที่คือ Hadoop Summit ของ Hortonworks และ Hadoop World ของ  Cloudera ส่วน MapR จำนวน  Community น้อยสุด
  •  การสนับสนุนจากผู้ผลิต: ถ้ามองในแง่ประเทศไทย การสนับสนุนจากผู้ผลิตของ Cloudera ยังนำรายอื่นๆอยู่มาก ทำให้หน่วยงานในประเทศไทยรายแห่งสนใจใช้ Cloudera

ทั้งนี้เมื่อพิจารณาโดยรวมแล้ว เราสรุปกันว่า ถ้าจะทำ Product ที่มีราคาถูกสุดและสอดคล้องกับ Pure Apache Hadoop มากที่สุดควรเลือกใช้ Hortonworks ทั้งนี้เพราะ  Commercial Distribution จะมีค่าใช้จ่ายในแง่ License หรือ Subscribtion แต่ถ้ามีงบประมาณค่อนข้างเยอะก็อาจเลือกใช้ได้ แต่ไม่ควรใช้ Free Version ของสองรายดังกล่าว (Cloudera และ  MapR) ทั้งนี้เนื่องจากไม่ใช่ Full Features และบางอย่างขาดความเสถียร

แต่ถ้าต้องการทดลองหรือใช้เพื่อทำ Development โดยผ่าน Hadoop Sandbox ก็จะแนะนำให้ใช้  Cloudera Quickstart ซึ่งผมเองก็ใช้ตัวนี้ในการอบรม ดังตัวอย่างเอกสารอบรมของผมดังนี้ >> Big data processing using Cloudera Quickstart

สุดท้ายผมมี  Slide ทีนักฝึกงานของ IMC Institute ได้ทำขึ้นเพื่อเปรียบเทียบ Hadoop Distribution ต่างๆดังนี้

 

ธนชาติ นุ่มมนท์

IMC Institute

มิถุนายน 2559

Slide สำหรับการเรียนรู้ Big Data Hadoop ของ IMC Institute

 

IMC Institute จัดอบรม Big Data Hadoop มาหลายรุ่นและมีคนผ่านอบรมมาจำนวนมาก และเคยทำเอกสารประกอบการบรรยายหลายชุด วันนี้ผมเลยรวบรวม Slide  ต่างๆมาเพื่อให้ทุกท่านได้เรียนรู้ Apache Hadoop + Spark ที่มี Service ต่างๆมากมาย โดยได้เป็นแบบฝึกหัดที่ผู้อ่านสารมารถนำไปฝึกและทดลองใช้งานได้จริง ทั้งนี้ Slide  ต่างๆเหล่านี้จะอ้างอิงกับ Cloudera Quickstart ที่ใช้ Docker Image  ดังนั้นผู้ที่สนใจจะเรียนรู้จาก Slide ชุดนี้จะต้องมีเครื่องคอมพิวเตอร์หรือ Server ที่มี Docker Engine  อยู่ โดยสามารถไปดูขั้นตอนการติดตั้งได้ที่ >> https://docs.docker.com/engine/installation/

Screenshot 2016-06-23 16.23.06

รูปที่ 1  Hadoop Ecosystem

สำหรับ Service ต่างๆที่เคยทำเอกสารการสอนมาก็เป็นไปดังรูปที่ 1  โดยมีเอกสารดังนี้

Service  ด้านเก็บข้อมูล

Service ด้านการประมวลผล

Service ด้านการนำข้อมูลเข้า

Apache Spark

ธนชาติ นุ่มนนท์

IMC Institute

มิถุนายน 2559

เทคโนโลยีสำหรับ Big Data: Storage และ Analytics

 

เมื่อพูดถึง Big Data หลายๆคนก็คงเริ่มเข้าใจความหมายของ 3Vs (Volume, Velocity, Variety) และเริ่มที่จะเห็นภาพว่าข้อมูลจะมีขนาดใหญ่ขึ้นและมีหลากหลายรูปแบบ ดังนั้นจึงไม่แปลกใจที่หลายองค์กรจำเป็นต้องปรับ Information Infrastructure เพื่อให้รองรับกับการบริหารจัดการ Big Data ได้

เทคโนโลยีฐานข้อมูลเดิมที่เป็น RDBMS และภาษา SQL ก็ยังคงอยู่แต่การที่จะนำมาใช้ในการเก็บข้อมูลขนาดใหญ่มากๆเป็นหลายร้อย TeraByte หรือนับเป็น PetaByte อาจไม่สามารถทำได้และอาจมีต้นทุนที่สูงเกินไป และยิ่งถ้าข้อมูลเป็นแบบ  Unstructure ก็คงไม่สามารถจะเก็บได้ นอกจากนี้การจะประมวลผลข้อมูลหลายร้อยล้านเรคอร์ดโดยใช้เทคโนโลยี  RDBMS ผ่านภาษา SQL ก็อาจใช้เวลานานและบางครั้งอาจไม่สามารถประมวลผลได้

Screenshot 2015-09-26 21.57.56

รูปที่ 1  ตัวอย่างของ Big Data Technology

ด้วยเหตุนี้จึงเริ่มมีการคิดถึงเทคโนโลยีอื่นๆในเก็บและประมวลผลข้อมูลที่เป็น Big Data ดังที่ได้แสดงตัวอย่างในรูปที่ 1 ซึ่งหากเราแบ่งเทคโนโลยีเป็นสองด้านคือ การเก็บข้อมูล (Storage) และการประมวลผล/วิเคราะห์ข้อมูล (Process/Analytics) เราอาจสามารถจำแนกเทคโนโลยีต่างๆได้ดังนี้

เทคโนโลยีการเก็บข้อมูล

ข้อมูลที่เป็น Big Data อาจจะมีขนาดใหญ่เกินกว่าที่เทคโนโลยีการเก็บข้อมูลแบบเดิมที่เรามีอยู่เก็บได้หรืออาจเจอปัญหาในแง่โครงสร้างของข้อมูลที่อาจไม่เหมาะกับเทตโนโลยี RDBMS ตัวอย่างเช่น Telecom operator อาจต้องการเก็บข้อมูล Call Detail Records (CDR) ที่อาจมีปริมาณสูงถึง 1 TeraByte ต่อวันเป็นระยะเวลายาวนานขึ้น หรือเราอาจต้องเก็บข้อมูลในอีเมลจำนวนมากที่เป็นรูปแบบของ Text File  หรือเก็บภาพจากกล้อง CCTV จำนวนหลายสิบ TB หรืออาจต้องการเก็บข้อมูลจาก Facebook ซึ่งข้อมูลต่างๆเหล่านี้ที่กล่าวมา อาจไม่เหมาะกับเทคโนโลยีฐานข้อมูลแบบเดิม RDBMS ที่เป็น Vertical Scaling

จากที่กล่าวมาจึ่งได้มีการนำเทคโนโลยีต่างๆเข้ามาเพื่อที่จะให้เก็บข้อมูลได้มากขึ้น โดยมีเทคโนโลยีต่างๆอาทิเช่น

  • ฐานข้อมูล  RDBMS แบบเดิม ก็ยังเป็นเทคโนโลยีที่เหมาะสมที่สุดในการเก็บข้อมูลแบบ Structure แต่ถ้าข้อมูลมีขนาดใหญ่มากก็จะเจอปัญหาเรื่องต้นทุนที่สูง  และหากข้อมูลมีจำนวนเป็น PetaByte ก็คงยากที่จะเก็บ ถึงแม้ในปัจจุบันจะมี MPP Datanbase อย่าง Oracle ExaDta หรือ SAP HANA แต่ราคาก็สุงมาก
  • Hadoop HDFS เป็นเทคโนโลยีที่มีการคาดการณ์ว่าหน่วยงานส่วนใหญ่จะต้องใช้ในอนาคต เพราะมีความต้องการเก็บข้อมูลขนาดใหญ่ทั้งที่เป็น Unstrucure Data หรือนำข้อมูลที่เป็น structure มาเก็บไว้ โดยสามารถจะเก็บข้อมูลได้เป็น PetaByte ทั้งนี้ขึ้นอยู่กับจำนวนเครื่องที่มีอยู่ในลักษณะ scale-out ข้อสำคัญ Hadoop มีต้นทุนที่ค่อนข้างต่ำเมื่อเทียบกับเทคโนโลยีการเก็บข้อมูลแบบอื่น ดังแสดงในรูปที่ 2
  • NoSQL เป็นเทคโนโลยีที่ต้องการเก็บข้อมูลจำนวนมากกว่าของ RDBMS ในลักษณะ scale-out เป็นจำนวนหลาย TeraByte แต่อาจไม่ได้เน้นเรื่อง Consistency หรือ ACID ของข้อมูลมากนัก เหมาะกับ Application บางประเภท ทั้งนี้เราสามารถจะแบ่งเทคโนโลยี NoSQL ออกไปได้สี่กลุ่มคือ Column Oriented, Document Oriented, Key-Value และ Graph
  • Cloud Storage ข้อมูลขนาดใหญ่ขององค์กรบางส่วนอาจต้องเก็บไว้ใน Public Cloud Storage เช่น  Amazon S3 โดยเฉพาะข้อมูลภายนอกอาทิเช่น Social Media Data หรือข้อมูลที่เป็น Archiving  ที่ไม่ได้มีความสำคัญมาก เพราะ Cloud Storage จะมีราคาในการเก็บที่ถูกสุด และสามารถที่จะเก็บได้โดยมีขนาดไม่จำกัด แต่ข้อเสียคือเรื่องความปลอดภัยและความเร็วในการถ่ายโอนข้อมูล

Screenshot 2014-11-17 16.27.33

รูปที่  2  เปรียบเทียบราคาของ Storage Technology

เทคโนโลยีการประมวลผลข้อมูล

การประมวลผลข้อมูลที่เป็น Big Data จะมีทั้งการวิเคราะห์ข้อมูลที่เป็น business intelligence (BI) เพื่อที่จะดึงข้อมูลมานำเสนอ หรือการทำ Predictive Analytics โดยใช้หลักการของ Data Science ความยากของการประมวลผลคือต้องการความเร็วในการประมวลผลข้อมูลที่นอกจากมีขนาดใหญ่แล้วบางครั้งยังเป็นข้อมูลที่ไม่มีโครงสร้าง ดังนั้นต้องจึงมีการนำเทคโนโลยีหรือภาษาต่างๆมาเพื่อให้สามารถประมวลผลข้อมูลได้ ซึ่งในบางครั้งหน่วยงานอาจต้องพิจารณาต้องเลือกใช้ อาทิเช่น

  • SQL  ก็เป็นภาษาที่ยังต้องใช้ในการประมวลผลข้อมูลโดยเฉพาะ Structure  Data ที่เก็บอยู่ใน RDBMS และสามารถประมวลผลแบบ RealTime ได้
  • APIs ข้อมูลที่เก็บอยู่ใน Storage ต่างๆที่กล่าวมาข้างต้นเช่น NoSQL หรือ Cloud Storage  อาจต้องพัฒนาโปรแกรมด้วยภาษาคอมพิวเตอร์ต่างๆ ในการประมวลผลข้อมูลโดยใช้  APIs ในการเข้าถึงข้อมูล
  • MapReduce เป็นเทคโนโลยีที่พัฒนาโดย Google ในการประมวลผลข้อมูลที่อยู่ใน HDFS โดยใช้ภาษาคอมพิวเตอร์อย่าง Java ในการพัฒนาโปรแกรม โดยจะประมวลผลแบบ Batch และเป็นวิธีการประมวลผลที่มากับเทคโนโลยี  Hadoop
  • Hive หรือ Pig เป็นภาษาคล้าย SQL หรือ Scripting ที่ทำให้เราสามารถประมวลผลข้อมูลที่อยู่ใน Hadoop HDFS ได้โดยไม่ต้องพัฒนาโปรแกรม MapReduce แต่ทั้งนี้ข้อมูลจะต้องอยู่ในรูปแบบที่เหมาะสมเช่น  ไฟล์ csv หรือ ไฟล์ข้อความบางประเภท
  • Impala  เป็นภาษาคล้าย SQL ที่ทำให้เราสามารถประมวลผลข้อมูลที่อยู่ใน Hadoop HDFS ได้ โดยทำงานได้รวดเร็วกว่า Hive มาก แต่มีข้อเสียคือเป็นภาษาที่เป็น proprietary ของ  Cloudera
  • Spark เป็นเทคโนโลยีที่สามารถประมวลผลข้อมูลขนาดใหญ่แบบ Real-time  โดยอาจมี Data Source มาจากหลากหลายแหล่งเช่น  RDBMS, Cloud Storage, NoSQL หรือ Hadoop  ซึ่งสามารถเขียนโปรแกรมโดยใช้ภาษา Scala, Java, Python หรือจะเขียนโดยใช้ภาษาคล้าย SQL ก็ได้ และมี  Library สำหรับการทำ Data Science คือ  MLib  เป็นเทคโนโลยีที่น่าสนใจมากอันหนึ่ง
  • ภาษาและเทคโนโลยีในการทำ Machine Learning  ซึ่งก็จะมีหลากหลายทั้ง R Hadoop, Mahout, Azure Machine Learning  หรือ AWS ML
  • เทคโนโลยีสำหรับการทำ Data Visualisation และ BI อาทิเช่น Tableau, Pentaho, SaS, Excel  และอื่นๆ

จากที่กล่าวมาทั้งหมดนี้ ถ้าหน่วยงานจะมีโครงการ Big Data และข้อมูลมีขนาดใหญ่จริง เราคงต้องเลือกหาเทคโนโลยีที่เหมาะสมมาใช้งาน

ธนชาติ นุ่มนนท์

IMC Institute

สิงหาคม 2558

Big Data บน Public Cloud

ผมไม่ได้เขียนบล็อกมาสองเดือนกว่า เพราะยุ่งอยู่กับการศึกษาเรื่อง Big Data  เตรียมการสอนและเปิดหลักสูตรใหม่ๆอาทิเช่น

  • เปิดหลักสูตร Big Data Certification จำนวน 120 ชั่วโมงที่มีผู้เข้าร่วมอบรมกว่า30 คน
  • เปิดหลักสูตร Introduction to Data Science เมื่อต้นเดือนเมษายน ก็เน้นสอนเรื่องของ Hadoop, R และ Mahout  ในการทำ Machine Learning รุ่นแรกมีคนเช้ามาเรียน 20 กว่าท่าน
  • ปรับปรุงเนื้อหาหลักสูตร Big Data using Hadoop Workshop โดยมีการนำ Cloud Virtual Server ของ AWS มาใช้ในการอบรม และเปิดอบรมรุ่นแรกของปีนี้เมื่อปลายเดือนมีนาคม มีคนอบรม 30 คน
  • ปรับปรุงเนื้อหา Big Data Programming using Hadoop for Developer  โดยมีการเน้นการใช้ Cluster ขนาดใหญ่บน  Amazon EMR มากขึ้น และเปิดอบรมไปเมื่อเดือนกุมภาพันธ์
  • จัดฟรีสัมมนา Big Data User Group แก่บุคคลทั่วไปเพื่อให้เข้าใจเรื่อง Big Data Analytics โดยจัดไปเมื่อต้นเดือนมีนาคม
  • เปิด Hadoop Big Data Challenge เพื่อคนทั่วไปสามารถมาทดลองวิเคราะห์ข้อมูลขนาดใหญ่บน Hadoop Cluster  ที่รันอยู่บน AWS จำนวนกว่า 40 vCPU

จากการทำงานด้านนี้ในช่วงสองเดือนที่ผ่านมา ทำให้ได้ประส[การณ์และข้อมูลใหม่ๆพอควร โดยเฉพาะประสบการณ์การติดตั้ง Hadoop  หรือ NoSQL บน Public Cloud ซึ่งข้อดีของการใช้ Public Cloud คือเราไม่ต้องจัดหา  Server  ขนาดใหญ่จำนวนมาก และสามารถ Provision ระบบได้อย่างรวดเร็ว แต่มีข้อเสียคือค่าใช้จ่ายระยะยาวจะแพงกว่าการจัดหา  Server เอง และถ้ามีข้อมูลจำนวนมากที่ต้อง Transfer ไปอาจไม่เหมาะสมเพราะจะเกิดความล่าช้า นอกจากนี้ยังอาจมีปัญหาเรื่องความปลอดภัยของข้อมูล

แต่การใช้ Public Cloud จะเหมาะมากกับการใช้งานเพื่อเรียนรู้ หรือการทำ Development  หรือ Test Environment นอกจากนี้ยังมีบางกรณีที่การใช้ Public Cloud มาทำ Big Data Analytics อาจมีความเหมาะสมกว่าการจัดหา Server ขนาดใหญ่มาใช้งานเอง อาทิเช่น

  • กรณีที่ระบบปัจจุบันขององค์กรทำงานอยู่บน Public Cloud  อยู่แล้ว อาทิเช่นมีระบบ Web Application ที่รันอยู่บน Azure  หรือมีระบบอยู่  Salesforce.com
  • กรณีที่ข้อมูลที่ต้องการวิเคราะห์ส่วนใหญ่เป็นข้อมูลภายนอกที่อยู่บน Cloud เช่นการวิเคราะห์ข้อมูลจาก Facebook  ที่การนำข้อมูลขนาดใหญ่เหล่านั้นกลับมาเก็บไว้ภายในจะทำให้เปลืองเนื้อที่และล่าช้าในการโอนย้ายข้อมูล
  • กรณีที่มีโครงการเฉพาะด้านในการวิเคราะห์ข้อมูลขนาดใหญ่เพียงครั้งคราว ซึ่งไม่คุ้มค่ากับการลงทุนจัดหาเครื่องมาใช้เอง

การใช้ Public Cloud สำหรับการวิเคราะห์ข้อมูลโดยใช้  Hadoop หรือ NoSQL มีสองรูปแบบคือ

1)  การใช้ Virtual Server  ในการติดตั้ง Middleware อาทิเช่นการใช้ EC2 ของ  AWS หรือ Compute Engine ของ Google Cloud  มาลงซอฟต์แวร์ ข้อดีของวิธีการนี้คือเราสามารถเลือกซอฟต์แวร์มาติดตั้งได้ เสมือนกับเราจัดหา Server มาเอง และสามารถควบคุมการติดตั้งได้ ที่ผ่านมาผมได้เขียนแบบฝึกหัดที่ติดตั้งระบบแบบนี้อยู่หลายแบบฝึกหัดดังนี้

2)   การใช้  PaaS ที่อาจเป็น Hadoop as a Service หรือ NoSQL as a Service  ซึ่งในปัจจุบัน Public Cloud รายใหญ่ๆทุกค่ายจะมีระบบอย่างนี้ เช่น  EMR สำหรับ Hadoop  และ Dynamo DB สำหรับ  NoSQL บน AWS หรือค่ายอย่าง  Microsoft Azure ก็มี HDInsight สำหรับ Hadoop และ DocumentDB สำหรับ NoSQL ข้อดีของระบบแบบนี้คือ เราจ่ายตามการใช้งานไม่ต้องรัน Server ไว้ตลอด, ติดตั้งง่ายเพราะผู้ให้บริการ  Cloud ลงระบบมาให้แล้ว แต่ข้อเสียก็คือเราไม่สามารถปรับเปลี่ยนซอฟต์แวร์ที่ติดตั้งได้เอง อาทิเช่น Hadoop ที่อยู่บน EMR มีให้เลือกแค่ Amazon  Distribution หรือ MapR  Distribution ผมเองก็ได้เขียนแบบฝึกหัดlสำหรับการใช้ Amazon EMR ไว้ดังนี้

สำหรับผู้ที่ต้องการศึกษาการติดตั้ง Hadoop Cluster  ผมอาจแนะนำให้ใช้ Google Cloud Platform ครับ เพราะระบบมีให้ทดลองใช้ 60 วัน โดยเราสามารถที่จะลองใช้ Compute Engine ขนาด 4 vCPU ได้ (ดูขั้นตอนการติดตั้ง Hadoop บน Google Cloud ตามนี้) และถ้าต้องการใช้ Hadooo[ as a Service ผมแนะนำให้ใช้ Amzon EMR ตามแบบฝึกหัดข้างต้น แต่ก็มีค่าใช่จ่ายในการรันแต่ละครั้ง

วันนี้ขอแค่นี้ครับและอาจเขียนออกเป็นเทคนิคมากหน่อยครับ เพราะไม่ได้เขียนบล็อกมาหลายสัปดาห์ มัวแต่ไปเขียนแบบฝึกหัดที่เป็นด้านเทคนิคให้ผู้เข้าอบรมได้เรียนกัน

ธนชาติ นุ่มนนท์

IMC Institute

เมษายน 2558