9 มิถุนายน 2560

Published มิถุนายน 09, 2560 by with 0 comment

Python + Distributed Computing - ระบบการประมวลผลแบบกระจายในภาษา Python

สวัสดีผู้อ่านทุกท่านครับ บทความนี้ผมจะพาผู้อ่านไปสร้าง Distributed Computing หรือระบบการประมวลผลแบบกระจาย สำหรับใช้ในภาษา Python กันครับ

ระบบการประมวลผลแบบกระจาย (Distributed Computing) คืออะไร


ระบบการประมวลผลแบบกระจาย (Distributed Computing) คือ ระบบประมวลผลที่มีการกระจายการประมวลผลไปยังเครื่องต่าง ๆ

ต่างจากระบบการประมวลผลแบบรวมศูนย์ดังนี้

การใช้ระบบการประมวลผลแบบกระจายช่วยให้การประมวลผลเป็นไปอย่างรวดเร็วยิ่งขึ้น จากตัวอย่างดังรูปนี้

ระบบการประมวลผลแบบกระจาย (Distributed Computing)

ตัวอย่างเช่น เราต้องการประมวลผลวัตถุสี่เหลี่ยม วงกลม และดาว ใช้ระบบการประมวลผลแบบกระจาย กระจายวัตถุที่ต้องการประมวลผลไปแต่ละเครื่อง พอประมวลผลเสร็จ ส่งค่ากลับมาคืน

  • เครื่องที่ประมวลผลวัตถุแต่ละอัน คือ โหนด (nodes)
  • เครื่องที่กระจายการประมวลผลไปให้โหนด (nodes) หรือรวมกลุ่มโหนด คือ คลัสเตอร์ (Cluster)
แต่ถ้าหากใช้ระบบการประมวลผลแบบรวมศูนย์ ตัวอย่างเช่น ใช้เซิฟเวอร์ประมวลผลแค่ตัวเดียว

ระบบการประมวลผลแบบรวมศูนย์ทำให้เซิฟเวอร์ต้องประมวลผลทั้ง 3 วัตถุเพียงเครื่องเดียว จึงส่งให้เวลาตอบสนองที่ได้ (response time) ช้ากว่าระบบการประมวลผลแบบกระจาย และใช้ต้นทุนสูงกว่า เพราะต้องการเซิฟเวอร์ที่มีประสิทธิภาพมากเพียงพอสำหรับการใช้งานประมวลผล

อ่านเพิ่มเติมได้ที่ http://ecomputernotes.com/computernetworkingnotes/computer-network/what-is-a-computer-network







สำหรับภาษา Python เราสามารถใช้ระบบการประมวลผลแบบกระจาย กระจายการประมวลผลไปยังเครื่องอื่น ๆ ได้ง่าย ๆ ด้วยโมดูล distributed

โมดูล distributed เป็นโมดูลระบบการประมวลผลแบบกระจายในภาษา Python

  • เป็น Pure Python
  • Low latency
  • Peer-to-peer data sharing
  • ใช้ BSD License
สามารถติดตั้งได้ด้วยคำสั่ง $ pip install dask distributed --upgrade

เราจะลองสร้างระบบการประมวลผลแบบกระจายด้วยโมดูล distributed กันครับ

1. สร้าง dask-scheduler (เป็น คลัสเตอร์ (Cluster)) เป็นเครื่องหลักสำหรับใช้กระจายการประมวลผล
ใช้คำสั่ง $ dask-scheduler จะปรากฎที่ตั้ง IP address ในเครือข่ายมา รันค้างไว้

2. สร้าง dask-worker  (เป็นโหนด (nodes))สำหรับใช้เชื่อมต่อเพื่อประมวลผลข้อมูลที่ถูกกระจายการประมวลผลจาก dask-scheduler สามารถรันคำสั่งนี้ได้จากเครื่อง dask-scheduler หรือเครื่องอื่นในเครือข่ายเดียวกัน
ใช้คำสั่ง $ dask-worker ไอพีเครื่องdask-schedulerพร้อมport
รันค้างไว้


3. เขียนโค้ดส่งคำสั่งประมวลผลไปยัง dask-scheduler
>>> from dask.distributed import Client
>>> client = Client('ไอพีเครื่องdask-schedulerพร้อมport')

ตัวอย่างเช่น
>>> from dask.distributed import Client
>>> client = Client('192.168.1.106:8786')

แล้วส่งการประมวลผลได้ตามตัวอย่างนี้


หากไม่ปรากฎโค้ด ดูโค้ดได้ที่ https://gist.github.com/wannaphong/b21491328a6f1ce7ced12b8fe8c554d7

เพียงเท่านี้เราก็ทำระบบการประมวลผลแบบกระจาย (Distributed Computing) เป็นอันเรียบร้อย
อ่านเอกสารเพิ่มเติมได้ที่ http://distributed.readthedocs.io

สอน Python

ติดตามบทความต่อไปนะครับ
ขอบคุณครับ

0 ความคิดเห็น:

แสดงความคิดเห็น

แสดงความคิดเห็นได้ครับ :)