Apache NiFi คืออะไร? ใช้งานอย่างไร?

apache nifi guide beginner

ในโลกของ Big Data และการประมวลผลข้อมูลในปัจจุบัน เรามีเครื่องมือมากมายจาก Apache ที่ช่วยให้การจัดการและประมวลผลข้อมูลเป็นไปได้อย่างมีประสิทธิภาพ เช่น Apache Spark, Apache Kafka, Apache Iceberg และอื่น ๆ อีกมากมายที่ช่วยในการประมวลผลข้อมูลที่แตกต่างกันออกไปตามความต้องการ

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

Apache NiFi คือ

apache-nifi

Apache NiFi เป็นระบบจัดการการไหลของข้อมูลที่พัฒนาขึ้นบนแนวคิดของ flow-based programming โดยรองรับกราฟที่มีความซับซ้อนและสามารถสเกลได้สำหรับการกำหนดเส้นทางข้อมูล การแปลงข้อมูล และการเชื่อมต่อระบบต่าง ๆ

NiFi มาพร้อมกับ Interface ที่ใช้งานผ่านเว็บสำหรับการออกแบบ ควบคุม ติดตาม และตรวจสอบการไหลของข้อมูล ระบบนี้มี configuration ให้ปรับแต่งได้หลากหลาย เช่น การลดปริมาณข้อมูล การเพิ่มอัตราการส่งข้อมูล และการจัดลำดับการส่งข้อมูล ยังมีความสามารถในการติดตามเส้นทางของข้อมูลอย่างละเอียดในทุกขั้นตอน ตั้งแต่การรับข้อมูล การแยก การรวม การทำซ้ำ การปรับเปลี่ยน การส่ง และการกำจัดข้อมูลเมื่อถึงที่สุดท้ายตามที่กำหนดไว้

Apache NiFi ช่วยให้องค์กรนับพันทั่วโลกในทุกอุตสาหกรรมสามารถทำการป้องกันทางไซเบอร์ (cybersecurity), การสังเกตการณ์ (observability), การจัดการสตรีมเหตุการณ์ (event streams) และการสร้าง data pipelines จาก generative AI ได้อย่างอัตโนมัติและมีประสิทธิภาพ

แนวคิดหลักของ Apache NiFi คือ การสร้างการไหลของข้อมูล (data flow) ที่สามารถกำหนดเส้นทางและแปลงข้อมูลผ่านโปรเซสเซอร์ต่าง ๆ (Processor)

ยกตัวอย่างให้เห็นภาพ: เราสามารถใช้ Apache NiFi เมื่อต้องการนำข้อมูล JSON ไปใส่ในฐานข้อมูล (database) หรือ ส่งข้อมูลจาก Apache Kafka ไปยัง ElasticSearch ซึ่งทำได้อย่างง่ายดายด้วยการใช้งานอินเทอร์เฟซแบบลากและวาง (drag and drop)

นอกจากนี้ยังเน้นการตั้งค่า Configuration ของ Processor โดยการให้ความสำคัญกับการกำหนดค่าเหล่านี้จะช่วยให้การเชื่อมต่อระบบทำงานได้อย่างราบรื่น ส่วนที่เหลือ Apache NiFi จะจัดการให้เอง

apache-nifi-concept

Concept สำคัญของ Apache NiFi

การทำงานของ Apache NiFi ประกอบไปด้วย 3 ส่วนหลัก

  • FlowFile
  • Processor
  • Connector

ซึ่ง 3 ส่วนนี้แตกต่างอย่างไรไปต่อกันเลย

FlowFile คือข้อมูลในระบบ Apache NiFi ซึ่งจะมีส่วนของ เนื้อหา (Content) เป็นตัวข้อมูลเอง และ Attributes อยู่ในรูปแบบคู่ Key Value เก็บค่าที่เกี่ยวข้องกับข้อมูล เช่น วันที่สร้าง เป็นต้น หลังจากสร้างขึ้นแล้ว FlowFile จะถูกบันทึกลงในดิสก์เพื่อเก็บรักษาทันที

Processor ทำหน้าที่ประมวลและแปลงข้อมูลหรือ FlowFile ตามกฎที่เราตั้งไว้เพื่อสร้าง FlowFile ใหม่ สามารถประมวลผล FlowFile อันไหนก็ได้ แล้วยังส่งต่อข้อมูลไปยัง Processor ถัดไป เพื่อดำเนินการประมวลผลข้อมูลต่อไป Processor ทั้งหมดทำงานแบบขนาน (ต่างกระบวนการกัน)

Connector คือ Queue ที่เก็บรวบรวม FlowFile ทั้งหมดที่ยังไม่ได้รับการประมวลผลโดย Processor ตัวถัดไป สามารถกำหนดลำดับความสำคัญของ FlowFile ได้ ว่าข้อมูลตัวไหนประมวลผลก่อนหลัง จะประมวลผลแบบ FIFO (First in First Out) ไหม หรือประมวลผลแบบ LIFO (Last in First Out)

Connector ยังสามารถควบคุมปริมาณและความเร็วในการส่งข้อมูล (Backpressure) เพื่อหลีกเลี่ยงการ overflow ของระบบ เช่น กำหนดให้ connector เก็บ FlowFile ได้ 1,000 FlowFile ถ้ามากกว่านั้นก็ให้ Processor ก่อนหน้าหยุดทำงานก่อนชั่วคราว เพื่อที่จะรอให้ Processor ตัวถัดไปทำงานได้ทัน

ยกตัวอย่างจากรูปด้านล่าง จะประกอบไปด้วย Processor ใช้สำหรับประมวลผลข้อมูล เช่น GetFile อ่านไฟล์, ConvertJSONToSQL แปลง JSON เป็น SQL และ PutSQL บันทึกข้อมูลลงฐานข้อมูล

Connector เชื่อมต่อระหว่าง Processor เพื่อส่งต่อข้อมูลและ FlowFiles แทนข้อมูลที่ไหลผ่านระบบ โดยแต่ละ FlowFile จะถูกประมวลผลและเปลี่ยนแปลงตามขั้นตอนต่าง ๆ จนกระทั่งข้อมูลถูกส่งไปยังฐานข้อมูล.

apache-nifi-example

นอกจากนี้ยังมี Concept เรื่อง

  • การจัดเก็บข้อมูลชั่วคราว (Data Buffering): การจัดเก็บข้อมูลชั่วคราวในระบบของ Apache NiFi ระหว่างการส่งผ่าน Connector ซึ่งทำหน้าที่เป็นบัฟเฟอร์ เพื่อให้ระบบรับประมวลผลทันและลดการสูญหายของข้อมูล
  • การควบคุมความเร็วการส่งข้อมูล (Back Pressure): ชะลอการส่งข้อมูลเมื่อระบบปลายทางที่รับข้อมูลไม่สามารถประมวลผลข้อมูลได้เร็วพอ จนกว่าระบบปลายทางจะพร้อมรับข้อมูลเพิ่มเติม
  • การจัดลำดับความสำคัญของ Queue: ในกรณีที่มีการจัดการกับข้อมูลหลายชนิดหรือส่งข้อมูลหลายเส้นทาง การจัดลำดับของคิวช่วยกำหนดได้ว่าข้อมูลไหนควรจะส่งก่อนหรือหลัง และควรประมวลผลในลำดับใด
  • การควบคุมเวลาการทำงาน (Latency) และปริมาณข้อมูลที่ส่ง (Throughput) : Latency คือเวลาที่ใช้ในการส่งข้อมูล ส่วน Throughput คือปริมาณข้อมูลที่ส่งได้ในเวลาหนึ่งหน่วย การควบคุมทั้งสองสิ่งนี้สำคัญต่อประสิทธิภาพของระบบ โดยสามารถปรับแต่งได้ผ่านการเพิ่มโปรเซสเซอร์, Machine ในคลัสเตอร์, หรือการปรับ Buffer และแรงดันย้อนกลับให้เหมาะสม

ข้อดีและข้อเสียของ Apache NiFi

สิ่งที่ Apache NiFi ทำได้ดี:

  1. การส่งข้อมูลระหว่างระบบต่าง ๆ อย่างปลอดภัยและเชื่อถือได้: Apache NiFi สามารถเชื่อมต่อระบบฐานข้อมูล SQL กับระบบคลาวด์ เช่น AWS S3 ได้ โดยข้อมูลจะถูกเข้ารหัสและตรวจสอบความถูกต้องก่อนการส่ง เพื่อป้องกันข้อมูลสูญหายหรือถูกดัดแปลงระหว่างทาง
  2. การส่งข้อมูลไปยังแพลตฟอร์มวิเคราะห์ข้อมูล: หากองค์กรต้องการนำข้อมูลการขายจากระบบ POS ไปวิเคราะห์ในแพลตฟอร์มอย่าง Google BigQuery หรือ Apache Hadoop, Apache NiFi สามารถทำการส่งข้อมูลเหล่านี้ไปยังปลายทางได้อย่างอัตโนมัติและต่อเนื่อง
  3. การ enrich และการเตรียมข้อมูล
    1. การแปลงข้อมูลระหว่างรูปแบบต่าง ๆ : เมื่อองค์กรต้องการแปลงข้อมูลจาก JSON ไปเป็น XML เพื่อให้เข้ากับระบบปลายทางที่รองรับเฉพาะ XML
    2. การ Extract และแยกข้อมูล: หากองค์กรต้องการแยกข้อมูลที่เกี่ยวข้องเฉพาะกับลูกค้า VIP จากฐานข้อมูลขนาดใหญ่ Apache NiFi สามารถทำการกรองและแยกข้อมูลเหล่านี้ออกมาให้ได้อย่างแม่นยำ
    3. การตัดสินใจเส้นทางข้อมูล: เมื่อมีข้อมูลเข้ามา Apache NiFi สามารถกำหนดเส้นทางการส่งข้อมูลตามกฎที่กำหนด เช่น ข้อมูลทางการเงินถูกส่งไปยังระบบบัญชี ในขณะที่ข้อมูลลูกค้าถูกส่งไปยังระบบ CRM

สิ่งที่ Apache NiFi ทำได้ไม่ดี:

  1. การประมวลผลแบบกระจาย (Distributed computation): หากองค์กรต้องการคำนวณจำนวนการคลิกของผู้ใช้จากเว็บไซต์ทั่วโลกในเวลาเดียวกัน การใช้ Apache Spark หรือ Hadoop จะเหมาะสมกว่า Apache NiFi เพราะระบบเหล่านี้ถูกออกแบบมาเพื่อประมวลผลข้อมูลขนาดใหญ่ที่ต้องใช้การคำนวณแบบกระจาย
  2. การประมวลผลเหตุการณ์ที่ซับซ้อน (Complex event processing): ในกรณีที่ต้องการติดตามและวิเคราะห์เหตุการณ์ทางธุรกิจที่มีความซับซ้อน เช่น การตรวจสอบธุรกรรมทางการเงินที่ผิดปกติ การใช้ Apache Kafka Streams หรือ Flink จะเหมาะสมกว่า เพราะระบบเหล่านี้ถูกออกแบบมาเพื่อการประมวลผลเหตุการณ์ที่ซับซ้อน
  3. การรวมข้อมูล (join), rolling window, และการคำนวนแบบ aggregate: หากต้องการวิเคราะห์ข้อมูลจำนวนมาก เช่น ต้องการคำนวณค่าเฉลี่ยการเข้าชมเว็บไซต์ในช่วง 7 วันที่ผ่านมาทุก ๆ วัน ซึ่งเรียกว่า rolling window 7 วัน หรือต้องการหาจำนวนการเข้าชมเว็บไซต์ทั้งหมดในแต่ละเดือนจากข้อมูลในแต่ละวัน ซึ่งก็คือ aggregation การใช้เครื่องมือ Apache Spark จะเหมาะสมกว่า Apache NiFi เนื่องจากสามารถจัดการกับการประมวลผลที่ต้องใช้การคำนวณแบบ aggregate หรือ rolling window ได้ดีกว่า

Apache NiFi ใช้งานตอนไหน

เมื่อคุณต้องการย้ายข้อมูล คุณสามารถใช้ Apache NiFi เพื่อกรอง ปรับปรุง หรือเปลี่ยนแปลงข้อมูลเล็กน้อย เช่น เปลี่ยนชื่อฟิลด์หรือแปลงข้อมูลบางอย่าง หากต้องการคำนวณค่าเฉลี่ยของเมตริกนี้ในช่วง 5 เดือนที่ผ่านมา คุณสามารถใช้ NiFi ในการทำสิ่งเหล่านี้ได้อย่างมีประสิทธิภาพ

แนะนำว่า ไม่ควรใช้ Apache NiFi ในการวิเคราะห์ข้อมูลปริมาณมากหรือประมวลผลเหตุการณ์ที่ซับซ้อน แต่เราสามารถใช้เครื่องมืออื่นที่ดีกว่าตามแต่กรณีไป อย่างเช่นใช้ Apache Spark ในการประมวลผลแบบกระจาย Apache Kafka ในการจัดการเหตุการณ์ที่ซับซ้อน หรือ Apache Spark รายการวิเคราะห์ข้อมูลจำนวนมาก

Apache NiFi หน้าตาเป็นอย่างไร

นี่คือหน้าตา User Interface ของ Apache NiFi

apache-nifi-interface

ส่วนด้านบนของ Apache NiFi UI ในกรอบสีแดงจะเป็นแถบเครื่องมือ (Toolbar) ซึ่งเป็นจุดที่เราสามารถเพิ่ม Processor ลงใน Flow และลาก Flow ต่อกัน ก็จะสร้าง connector ปุ่มอื่น ๆ ก็จะไว้สำหรับการเพิ่มพอร์ตเพื่อรับส่งข้อมูล หรือสร้าง Funnel ช่วยรวม Flow หลายเส้นเข้าด้วยกันเพื่อส่งไปยัง processor ต่อไป

ถัดลงมาจะเป็น สถิติ ของ Flow ที่สร้างขึ้น เช่น ขนาดของข้อมูลที่ไหลเข้ามากับไหลออกไป มี Processor กี่ตัวที่ทำงาน หรือหยุดทำงาน มีกี่ตัวที่อาจจะอยู่ใน warning state และเราสามารถทำการ search ได้ด้วย

ด้านล่างสุดจะเป็น Navigation Pane มีปุ่มไว้ปรับระดับการซูมเพื่อดูรายละเอียดของ Flow ให้ชัดเจนขึ้นหรือดูภาพรวมทั้งหมด เราสามารถลากแผนผังไปมาได้ ช่วยจัดระเบียบ Processor ให้เรียงตามแนวเพื่อให้ Flow ดูเป็นระเบียบมากขึ้น หรือเพิ่มสีให้ processor ได้ด้วย

สรุป Apache NiFi

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

แม้ว่า NiFi อาจไม่เหมาะสำหรับการประมวลผลเหตุการณ์ที่ซับซ้อนหรือการคำนวณแบบกระจาย แต่มันยังคงเป็นเครื่องมือสำคัญที่ช่วยองค์กรในด้านการกรอง การเตรียม และการแปลงข้อมูลต่าง ๆ อย่างมีประสิทธิภาพ ในการใช้งาน คุณสามารถปรับแต่ง Processor การตั้งค่า Queue และการควบคุม Latency หรือ Throughput ให้เหมาะสมกับความต้องการเฉพาะของแต่ละองค์กรได้

ถ้าใครสนใจ อยากลองใช้งาน Apache NiFi จริง ๆ ติดตามได้ในบทความ Data Migration With Apache NiFi

ถ้าเพื่อน ๆ คิดว่าบทความนี้มีประโยชน์ อยากฝากให้ช่วยแชร์ให้เพื่อน ๆ หน่อยนะคะ และถ้าอยากติดตามบทความดี ๆ ด้าน Data กันบน Facebook หรืออยากมาพูดคุย ติชมกัน เชิญได้ที่ Facebook Page: DataTH – Data Science ชิลชิล เลยนะค้าา

แล้วพบกันใหม่บทความหน้าค่ะ

บทความอื่น ๆ ที่เกี่ยวข้อง

PDPA Icon

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ นโยบายความเป็นส่วนตัว และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ ตั้งค่า

Privacy Preferences

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

Allow All
Manage Consent Preferences
  • Always Active

Save