เมื่อเราต้องการใช้ SQL บน Big Data Platform ตอนที่ 3

Softnix
Softnix
Published in
3 min readMay 6, 2018

ในตอนที่ 3 นี้จะขอกล่าวถึงความสามารถในเรื่องของความเร็วหรือประสิทธิภาพในการ Query ข้อมูลบน Big Data Platform ในรูปแบบต่างๆเพื่อนำมาเปรียบเทียบกัน

สำหรับท่านใดที่เพิ่งเห็นบทความนี้ อาจจะต้องย้อนกลับไปอ่าน ตอนที่ 1 และตอนที่ 2 ก่อนนะครับ สำหรับที่มา

ภาพประกอบจาก http://tanducits.com/program/55224-1-microsoft-azure-big-data-analytics-solutions

เริ่มที่ข้อมูลทดสอบ

ก่อนอื่นก็ต้องหา Dataset ครับ เราได้ Dataset จากที่นี่ http://opensource.indeedeng.io/imhotep/docs/sample-data/ โดยดาวน์โหลดจาก Link นี้ครับ nasa_19950630.22–19950728.12.tsv.gz ซึ่งไฟล์นี้มีจำนวน Record อยู่ทั้งสิ้น 1,891,710 Records หน้าตาข้อมูลจะเป็นประมาณนี้ครับ

โดยวัตถุประสงค์จะเปรียบเทียบความเร็วในการ Query ข้อมูล จากไฟล์ที่ถูกจัดเก็บในรูปแบบที่แตกต่างกันดังนี้

  1. ข้อมูลที่เก็บบน Hive จัดเก็บแบบ TEXTFILE
  2. ข้อมูลที่เก็บบน Hive แต่เก็บข้อมูลแบบ Parquet Format
  3. ใช้ Presto ซึ่งเป็น Query Engine ทำการ Query ข้อมูลของข้อ 1
  4. ใช้ Presto ซึ่งเป็น Query Engine ทำการ Query ข้อมูลของข้อ 2

สาเหตุที่อยากทดสอบกับ Format file แบบ Parquet เนื่องจากได้อ่านบทความนี้ (https://eng.uber.com/presto/) ของ Blog Engineer Uber ซึ่งเขามีข้อมูลหลาย PB แต่สามารถ Query ข้อมูลได้ไม่เกิน 1 นาที น่าทึ่งมากครับ (แต่ใช้ 300 nodes แม่เจ้า) ซึ่งเขาแปลงข้อมูลให้อยู่ในรูปแบบ Parquet บน Hive ครับ และบอกว่าดีนักดีหนา (https://www.slideshare.net/zhenxiao/presto-uber-hadoop-summit2017) เราจึงอยากจะทดสอบดูครับ ให้เห็นเป็นจริง นะออเจ้า

สร้าง Hive Table

เราต้องสร้าง 2 tables ครับ คือ table แบบธรรมดาเก็บแบบ TEXT และแบบ Parquet (คือ Data Storage Format ชนิดนึงของ Hadoop ซึ่งแปลงข้อมูลให้อยู่ในรูปแบบ columnar database ง่ายต่อการค้นหา ทำงานบน HDFS ของ Hadoop กล่าวแบบยอยอ) การทำแบบ Step-by-Step เราคงขออนุญาติไม่ลงรายละเอียดนะครับ ทางไหนลัดเราก็เอาทางนั้น ไม่เสียเวลา เราใช้เครื่องมือ Talend Big Data Integration ช่วย ซึ่งสุดแสนจะง่าย ไม่ต้องลง Command Line หรือเขียน Code ทำให้การทำงานรวดเร็วขึ้น

ตัวอย่างการกำหนดค่า Componant tHiveCreateTable สำหรับ table แบบ TEXTFILE

ส่วน table parquet ก็เพียงแค่กำหนด Format เป็น Parquet ดังรูป แยกชื่อ Tableให้ง่ายต่อการเปรียบเทียบ

เสร็จแล้วก็ LOAD Data เข้าครับ ด้วย Componant tHiveLoad ซึ่งกำหนดค่าประมาณนี้

จะสังเกตุว่า การใช้เครื่องมือ Big Data Integration เข้ามาช่วยจะทำให้เราเตรียมข้อมูลบน Big Data ทำง่ายขึ้นมีประโยชน์มากครับ สำหรับ Talend Big Data Integration ทางทีมงานถ้ามีโอกาส มีคนสนใจ ทีมงานเองก็อยากจะเปิด Free Workshop เหมือนกัน อยากมีส่วนร่วมใน Community ให้คนเป็น Big Data Engineer กันเยอะๆ ถ้าใครสนใจก็ลอง inbox เข้ามาที่เพจ softnix นะครับ ถ้าเรารวบรวมได้ระดับที่เหมาะสมเราจะจัดกิจกรรมนี้สักครั้งครับ

Big Data Cluster Environment

สำหรับ Hadoop Cluster และ Presto Cluster ที่เตรียมไว้สำหรับทดสอบงาน จะมี 4 Data nodes และ 2 Name Nodes ใช้ Cloudera CDH 5.41 ประมาณนี้ครับ

ส่วน Presto Worker nodes จำนวน 4 Worker Nodes ทำงานบนเครื่องเดียวกับ Data nodes 3 เครื่องและเครื่อง name node secondary 1 เครื่อง รวมเป็น 4 เครื่อง ดังภาพ Cluster Overview ทุกอย่างก็พร้อมแล้ว

ผลการทดสอบ

สำหรับคำสั่งที่ใช้ทดสอบ Query จะใช้แบบง่ายๆครับ เพราะเราไม่เน้น Analyte แต่เน้น Performance

หาจำนวน Record ทั้งหมด ด้วยคำสั่ง

SELECT count(* ) FROM weblog;

ส่วนหา Top 10 Host ใช้คำสั่ง

SELECT host, COUNT(*) as hostcount FROM default.weblog GROUP BY hostORDER BY hostcount DESC limit 10

ผลที่ได้ดังนี้ครับ

ตัวเลข เป็นหน่วยวินาที

สรุป

บน Presto ที่ใช้ Hive เป็น Data Source หรือ Hive Connector นั้น เร็วกว่าการใช้ Hive ตรงๆมากเลยครับ ไม่เกิน 3 วินาที ก็ Query ประมวลผลข้อมูลหลัก 1.8 ล้าน ได้สบายๆ แต่สำหรับ Hive ที่จัดเก็บไฟล์แบบ Parquet นั้นไม่เห็นข้อแตกต่างมากนักหรืออาจจะต้องมีปริมาณข้อมูลมากกว่านี้ก็ไม่ทราบครับ (ใครทราบบอกหน่อยนะ) แต่ความเร็วการนับจำนวน Record ไม่ถึงวินาทีครับ รวดเร็วมาก ดังนั้นหากในงาน Big Data Analytics ของเราที่จำเป็นต้องใช้เครื่องมือในการวิเคราะห์ข้อมูลอย่างเช่น Business Intelligence Software ที่มีความสามารถแบบ Self Services จำเป็นมากครับสำหรับการ Interactive กับ Data ที่รวดเร็วและมีประสิทธิภาพเพื่อทำ Report ส่งผู้บริหารได้ทันเวลา ทางเลือกนี้เหมาะพอสมควรครับ

หากท่านใดสนใจงานด้าน Big Data Analytic, Big Data Engineering สามารถติดตาม Follow Medium ของทีมงานเราได้ครับ และเพจ Facebook.com/softnixtech หรือแม้กระทั่งผู้ที่สนใจอยากร่วมงานกับเรา เรามีงานและความท้าทายด้าน Big Data Analytics ที่อยากจะสร้างคุณค่าจากการใช้ข้อมูลเพื่อประโยชน์ต่อการพัฒนาธุรกิจ เพราะเราเชื่อว่า พื้นฐานของ Business Transformation คือการใช้ข้อมูลให้เป็นประโยชน์ สร้างการเติบโตให้ธุรกิจที่ยั่งยืน

--

--