ข้อดีข้อเสียของ Pi Cluster หรือไม่?


33

ฉันเห็นโพสต์มากมายถามว่าจะสร้าง "ซูเปอร์คอมพิวเตอร์" หรือคลัสเตอร์กับ Raspberry Pis ได้อย่างไร แต่ฉันพบข้อดีและข้อเสียเพียงเล็กน้อยในการสร้างเครือข่าย Pis ฉันสนใจที่จะสร้างกลุ่มเล็ก ๆ ของตัวเอง แต่ฉันมีคำถามสองสามข้อ

เมื่อทำคลัสเตอร์ RPIs แล้วจะทำหน้าที่เสมือนคอมพิวเตอร์เครื่องเดียวหรือคุณมีสิทธิ์ควบคุม RPI ทั้งหมดหรือไม่? โหนดหนึ่งมีการควบคุมของอื่น ๆ หรือไม่

มีอะไรที่ RPI สามารถทำได้นั้นถูก จำกัด ในคลัสเตอร์หรือไม่? ตัวอย่างเช่นฉันจะยังสามารถควบคุมพอร์ต GPIO แต่ละพอร์ตได้หรือไม่

มันจะทำให้ pi เร็วขึ้นเท่าไหร่ ให้บอกว่าฉันทำคลัสเตอร์ 2 โหนดซึ่งมากกว่าโอเวอร์คล็อกที่ 1GHz แต่ละตัวฉันจะมีโปรเซสเซอร์ "ดูอัลคอร์ 1GHz" หรือไม่? คลัสเตอร์จำเป็นต้องอยู่ในทวีคูณแบบไบนารีหรือไม่? (1,2,4,8,16,32,64)

สิ่งนี้จะทำให้เว็บโฮสติ้งของฉันทำงานผ่าน NGINX สำหรับ pi ได้หรือไม่ พลังการประมวลผลของบางโหนดสามารถกำหนดงานเฉพาะที่จัดการได้หรือไม่ เช่นโหนด 1 จะจัดการกับคำขอบริการเว็บโหนด 2 จัดการกับที่เก็บข้อมูลบนคลาวด์และอื่น ๆ

คำตอบ:


49

บางคำถามที่น่าสนใจ ฉันคิดว่าคุณอาจเข้าใจผิดเล็กน้อยว่า "ซุปเปอร์คอมพิวเตอร์" ที่สร้างขึ้นด้วย Raspberry Pis ทำงานอย่างไร พวกเขาไม่ทำงานเป็นระบบแบ่งปันโหลดอัตโนมัติ พวกเขาได้รับการออกแบบมาสำหรับสิ่งที่เรียกว่าการเขียนโปรแกรมแบบขนานซึ่งงานที่ซับซ้อนจะแบ่งออกเป็นชิ้นส่วนที่สามารถดำเนินการได้พร้อมกัน Pi หลักในคลัสเตอร์ (โหนดใหญ่) รับผิดชอบการจัดการงานโดยรวมและแต่ละ Pi ในคลัสเตอร์ (โหนดไคลเอ็นต์) ดำเนินงานที่จัดสรรและรายงานผลลัพธ์กลับไปที่โหนดหลัก ไลบรารี่เช่นOpenMPIเป็นกุญแจสำหรับสิ่งนี้

นอกจากนี้กลุ่ม Raspberry Pi ที่สร้างขึ้นยังไม่ได้สร้างเป็นอุปกรณ์คอมพิวเตอร์ที่มีประสิทธิภาพ พวกเขาได้รับการสร้างขึ้นเป็นแพลตฟอร์มการพัฒนา มันถูกกว่ามากที่จะซื้อ 32 Raspberry Pis กว่า 32 เดสก์ท็อปพีซี คุณสามารถพัฒนาและทดสอบซอฟต์แวร์การเขียนโปรแกรมแบบขนานของคุณด้วยวิธีที่ถูกกว่ามาก ทางเลือกเดียวถ้าคุณไม่มี Pis หรือพีซีคือการขอเวลา CPU บนคอมพิวเตอร์จริง ขึ้นอยู่กับขนาดของคอมพิวเตอร์ที่มีปัญหาการทำเช่นนั้นอาจเสียค่าใช้จ่ายหรือมีเวลารอนานก่อนที่ทรัพยากรจะพร้อมใช้งาน เหตุใดผู้คนจึงสร้างคลัสเตอร์ส่วนตัวขึ้นมา มันสมเหตุสมผลแล้วที่จะเรียกใช้แอปพลิเคชันของคุณบนคอมพิวเตอร์จริงเมื่อคุณรู้ว่ามันใช้งานได้!

ดังนั้นโปรดระลึกไว้เสมอและดำเนินการตามคำถามเฉพาะของคุณ

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

ในคลัสเตอร์เนื่องจากแต่ละ Pi ใช้สำเนา Linux ของตัวเองแต่ละ Pi จะรักษาการควบคุมท้องถิ่นของพอร์ต GPIO ฉันไม่แน่ใจว่าซอฟต์แวร์จะใช้งานอย่างไรในสภาพแวดล้อมการคำนวณแบบขนาน แต่มีคุณอยู่

คลัสเตอร์ไม่ได้ทำให้ Pi เร็วขึ้นจริงๆเพราะไม่ใช่คอมพิวเตอร์เครื่องเดียว สิ่งที่คุณได้รับคือความสามารถในการทำมากขึ้นในครั้งเดียว คุณไม่ จำกัด จำนวนทวีคูณของสองคน อย่างไรก็ตามมีข้อ จำกัด สูงสุดที่ใช้งานได้จริงสำหรับคอมพิวเตอร์ที่ทำคลัสเตอร์โดยขึ้นอยู่กับงานที่คุณเรียกใช้ ลองนึกภาพถ้าคุณใช้การคำนวณแบบขนานบน Pis จำนวนมากที่ต้องใช้ 200 ขั้นตอน อย่างไรก็ตามแต่ละขั้นตอนถัดไปต้องการข้อมูลที่ทุก Pi คำนวณจากขั้นตอนก่อนหน้า ดังนั้นแต่ละ Pi ต้องได้รับข้อมูลจาก Pi อื่น ๆ ทุกการทำซ้ำ ขึ้นอยู่กับระยะเวลาในการคำนวณแต่ละครั้งคุณสามารถใช้เวลาในการส่งข้อมูลมากกว่าการคำนวณ นี่คือเหตุผลที่คอมพิวเตอร์ซุปเปอร์ส่วนใหญ่ใช้InfiniBandเครือข่าย มันเร็วมากดังนั้นคุณสามารถคำนวณได้มากขึ้น วิธีแก้ปัญหานี้คือการใช้ Pis ให้น้อยลง แต่ให้พวกเขาทำซ้ำได้มากขึ้นในแต่ละครั้ง แต่อาจไม่สามารถทำได้ขึ้นอยู่กับอัลกอริทึมของคุณ ดังนั้นขีด จำกัด บนในทางปฏิบัติ (ใน Pis สิ่งนี้จะไม่ดีเป็นพิเศษเพราะ USB Ethernet ค่อนข้างช้า)

ดังนั้นเพื่อการใช้งานจริงกระจายเว็บโฮสติ้ง! คุณสามารถใช้ประโยชน์จาก Pis หลาย ๆ ตัวที่นี่ไม่ใช่คลัสเตอร์ปกติ สมมติว่าคุณมี 5 Pis เราจะเรียกพวกเขาว่า GatewayPi, WebPi1, WebPi2, WebPi3 และ DataPi GatewayPi หันหน้าไปทางอินเทอร์เน็ตเรียกใช้ Nginix เพื่อจัดการคำขอเว็บ แต่ไม่ได้ทำการประมวลผลใด ๆ แต่สิ่งที่ควรทำก็คือโหลดบาลานซ์. มันใช้ proxying และส่งต่อการร้องขอขาเข้าไปยัง WebPi1, WebPi2 หรือ WebPi3 แบบสุ่ม เราเพิ่มประสิทธิภาพโครงสร้างพื้นฐานเว็บของเราเป็นสามเท่าเพราะตอนนี้เราสามารถจัดการคำขอได้มากขึ้นพร้อมกัน แล้ว DataPi ล่ะ DataPi ได้แนบฮาร์ดไดรฟ์ที่เก็บข้อมูลเว็บทั้งหมดของเราและใช้เซิร์ฟเวอร์ NFS WebPiX เมาท์ที่ NFS แชร์เพื่อให้สามารถเข้าถึงข้อมูลสำหรับการประมวลผล วิธีนี้เราเพียงแค่ทำการสำรองข้อมูลในที่เดียวและสามารถประหยัดพื้นที่ดิสก์ได้

สิ่งที่ฉันได้อธิบายไปแล้วคือรูปแบบที่ บริษัท ขนาดใหญ่อย่าง Google และ Facebook ใช้ แต่ลดขนาดลงเป็นขนาด Raspberry Pi สิ่งที่จับได้เพียงอย่างเดียวคือเนื่องจากค่าใช้จ่ายของ Pis การทำเช่นนี้คือการสร้างแพลตฟอร์มการพัฒนาเดียวกัน การใช้ Pis หลายอันเนื่องจากความสามารถในการคำนวณค่อนข้างต่ำในไม่ช้าประสิทธิภาพการทำงานจะสิ้นเปลืองพลังงานเมื่อคุณมุ่งไปที่การจัดการข้อมูลจำนวนมาก แต่เพื่อการเรียนรู้? พวกเขาสมบูรณ์แบบ


ดังนั้นถ้าฉันทำงานโครงการบ้านสำหรับเว็บโฮสติ้งราคาถูกของ 2 เว็บไซต์ควบคุมพัดลมระบายความร้อนผ่าน GPIO, SSH, FTP, ที่เก็บข้อมูลบนคลาวด์, ระบบอัตโนมัติในบ้านมันจะคุ้มค่าไหมถ้าจะทำคลัสเตอร์เล็ก ๆ
SuperAdmin

4
+1 ฉันมาถึงคำถามนี้อยากรู้อยากเห็นและจากการศึกษาเล็กน้อย คำตอบที่ดี
jrhorn424

@iOSNoob ถ้าคุณเป็นคนเดียวที่ใช้มันและคุณเคยทำสิ่งเหล่านั้นครั้งละหนึ่งรายการมันอาจไม่คุ้มค่ากับคลัสเตอร์เลยแม้แต่ครั้งเดียวเนื่องจากทรัพยากรถูกจัดสรรตามความจำเป็น ถ้ามีแรมไม่เพียงพอหรือคุณมีภาระมากกว่าคนคนเดียวมันก็น่าจะคุ้มค่า ฉันใส่สิ่งต่าง ๆ เช่นแฟน ๆ และระบบอัตโนมัติที่บ้านบน Pis แยกต่างหากเพื่อความปลอดภัย คุณต้องการโอกาสที่ 0 ว่าใครบางคนจะยุ่งกับสิ่งต่าง ๆ ในบ้านของคุณ ... ถ้าคุณต้องกระโดดผ่าน Pi พิเศษเพื่อไปยังระบบเหล่านั้นทั้งหมดดีกว่า นั่นเป็นอีกชั้นหนึ่งของความปลอดภัย
Fred

@ jrhorn424 ฉันดีใจที่คุณชอบ! เมื่อเร็ว ๆ นี้ฉันได้เข้าร่วมกิจกรรมการคำนวณประสิทธิภาพสูง (super) ดังนั้นสิ่งนี้จึงสดใหม่ในใจของฉัน เวลาที่เหมาะที่สุดในการเขียนมันออกมา
Fred

1
สำหรับตัวอย่างที่เป็นรูปธรรมเกี่ยวกับสถาปัตยกรรมเว็บโฮสติ้งที่ถูกต้อง Fred อธิบายไว้: pidramble.com (ลิงก์ออกไปยังโค้ด / คำแนะนำบน GitHub ที่คุณสามารถสร้างของคุณเองได้ด้วยรสชาติของ Pi)
geerlingguy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.