บทช่วยสอน Sqoop: Apache Sqoop คืออะไร Archiการสอนและตัวอย่าง
SQOOP ใน Hadoop คืออะไร
อาปาเช่ SQOOP (SQL-to-Hadoop) เป็นเครื่องมือที่ออกแบบมาเพื่อรองรับการส่งออกและนำเข้าข้อมูลจำนวนมากไปยัง HDFS จากที่เก็บข้อมูลที่มีโครงสร้าง เช่น ฐานข้อมูลเชิงสัมพันธ์ คลังข้อมูลขององค์กร และระบบ NoSQL เป็นเครื่องมือย้ายข้อมูลที่ใช้สถาปัตยกรรมตัวเชื่อมต่อซึ่งรองรับปลั๊กอินเพื่อให้เชื่อมต่อกับระบบภายนอกใหม่ๆ
ตัวอย่างการใช้งานของ Hadoop Sqoop คือองค์กรที่ดำเนินการนำเข้า Sqoop ทุกคืนเพื่อโหลดข้อมูลของวันจาก RDBMS ของธุรกรรมการผลิตลงใน รัง คลังข้อมูลเพื่อการวิเคราะห์ต่อไป
ในบทช่วยสอน Apache Sqoop ต่อไปนี้ เราจะเรียนรู้เกี่ยวกับสถาปัตยกรรม Apache Sqoop
สควอช Archiเทคเจอร์
ที่มีอยู่ทั้งหมด ระบบการจัดการฐานข้อมูล ได้รับการออกแบบด้วย SQL มาตรฐานในใจ อย่างไรก็ตาม แต่ละ DBMS มีความแตกต่างกันในเรื่องของภาษาถิ่นในระดับหนึ่ง ดังนั้นความแตกต่างนี้ทำให้เกิดความท้าทายในการถ่ายโอนข้อมูลข้ามระบบ Sqoop Connectors เป็นส่วนประกอบที่ช่วยเอาชนะความท้าทายเหล่านี้
การถ่ายโอนข้อมูลระหว่าง Sqoop Hadoop และระบบจัดเก็บข้อมูลภายนอกสามารถทำได้ด้วยความช่วยเหลือของตัวเชื่อมต่อของ Sqoop
Sqoop มีตัวเชื่อมต่อสำหรับการทำงานกับฐานข้อมูลเชิงสัมพันธ์ยอดนิยมมากมาย รวมถึง MySQL, PostgreSQL, Oracle, เซิร์ฟเวอร์ SQL และ DB2 ตัวเชื่อมต่อแต่ละตัวเหล่านี้รู้วิธีโต้ตอบกับ DBMS ที่เกี่ยวข้อง นอกจากนี้ยังมีตัวเชื่อมต่อ JDBC ทั่วไปสำหรับการเชื่อมต่อกับฐานข้อมูลใดๆ ที่รองรับ Javaโปรโตคอล JDBC ของ นอกจากนี้ Sqoop Big data ยังมอบการปรับให้เหมาะสมอีกด้วย MySQL และ PostgreSQL ตัวเชื่อมต่อที่ใช้ API เฉพาะฐานข้อมูลเพื่อทำการถ่ายโอนจำนวนมากอย่างมีประสิทธิภาพ
นอกจากนี้ Sqoop ในข้อมูลขนาดใหญ่ยังมีตัวเชื่อมต่อของบุคคลที่สามมากมายสำหรับการจัดเก็บข้อมูล ตั้งแต่ระดับองค์กร คลังข้อมูล (รวมถึง Netezza, Teradata และ Oracle) ไปยังร้านค้า NoSQL (เช่น Couchbase) อย่างไรก็ตาม ตัวเชื่อมต่อเหล่านี้ไม่ได้มาพร้อมกับชุด Sqoop จำเป็นต้องดาวน์โหลดแยกต่างหากและสามารถเพิ่มลงในการติดตั้ง Sqoop ที่มีอยู่ได้อย่างง่ายดาย
ทำไมเราถึงต้องการ Sqoop?
การประมวลผลเชิงวิเคราะห์โดยใช้ Hadoop จำเป็นต้องโหลดข้อมูลจำนวนมหาศาลจากแหล่งต่าง ๆ ลงในคลัสเตอร์ Hadoop กระบวนการโหลดข้อมูลจำนวนมากลงใน Hadoop จากแหล่งต่าง ๆ แล้วจึงประมวลผลนั้นมาพร้อมกับความท้าทายบางประการ การรักษาและรับรองความสอดคล้องของข้อมูลและการรับรองการใช้ทรัพยากรอย่างมีประสิทธิภาพเป็นปัจจัยบางประการที่ต้องพิจารณาก่อนเลือกวิธีการโหลดข้อมูลที่เหมาะสม
ประเด็นสำคัญ:
1. โหลดข้อมูลโดยใช้สคริปต์
วิธีการดั้งเดิมในการใช้สคริปต์ในการโหลดข้อมูลไม่เหมาะกับการโหลดข้อมูลจำนวนมากลงใน Hadoop วิธีการนี้ไม่มีประสิทธิภาพและใช้เวลานานมาก
2. เข้าถึงข้อมูลภายนอกได้โดยตรงผ่านแอปพลิเคชัน Map-Reduce
การให้การเข้าถึงโดยตรงไปยังข้อมูลที่อยู่ในระบบภายนอก (โดยไม่ต้องโหลดลงใน Hadoop) สำหรับแอปพลิเคชันลดแผนที่จะทำให้แอปพลิเคชันเหล่านี้ซับซ้อน ดังนั้นแนวทางนี้จึงไม่สามารถทำได้
3. นอกจากความสามารถในการทำงานกับข้อมูลจำนวนมหาศาลแล้ว Hadoop ยังสามารถทำงานกับข้อมูลในรูปแบบต่างๆ ได้หลายรูปแบบ ดังนั้น จึงได้มีการพัฒนาเครื่องมือต่างๆ ขึ้นมาเพื่อโหลดข้อมูลที่หลากหลายดังกล่าวลงใน Hadoop สควอช และ ไลเดอร์ เป็นเครื่องมือในการโหลดข้อมูลสองรายการดังกล่าว
ต่อไปในบทช่วยสอน Sqoop พร้อมตัวอย่างนี้ เราจะเรียนรู้เกี่ยวกับความแตกต่างระหว่าง Sqoop, Flume และ HDFS
Sqoop กับ Flume กับ HDFS ใน Hadoop
สควอช | ไลเดอร์ | เอชดีเอฟเอส |
---|---|---|
Sqoop ใช้สำหรับการนำเข้าข้อมูลจากแหล่งข้อมูลที่มีโครงสร้าง เช่น RDBMS | Flume ใช้สำหรับย้ายข้อมูลการสตรีมจำนวนมากไปยัง HDFS | HDFS เป็นระบบไฟล์แบบกระจายที่ใช้โดยระบบนิเวศ Hadoop เพื่อจัดเก็บข้อมูล |
Sqoop มีสถาปัตยกรรมแบบตัวเชื่อมต่อ ตัวเชื่อมต่อจะรู้วิธีเชื่อมต่อกับแหล่งข้อมูลที่เกี่ยวข้องและดึงข้อมูล | Flume มีสถาปัตยกรรมแบบใช้ตัวแทน โดยที่นี่จะมีการเขียนโค้ด (เรียกว่า 'ตัวแทน') ซึ่งทำหน้าที่ดึงข้อมูล | HDFS มีสถาปัตยกรรมแบบกระจาย โดยที่ข้อมูลจะกระจายไปทั่วโหนดข้อมูลหลายโหนด |
HDFS เป็นปลายทางสำหรับการนำเข้าข้อมูลโดยใช้ Sqoop | ข้อมูลจะไหลไปยัง HDFS ผ่านช่องสัญญาณตั้งแต่ศูนย์ขึ้นไป | HDFS เป็นปลายทางขั้นสูงสุดสำหรับการจัดเก็บข้อมูล |
โหลดข้อมูล Sqoop ไม่ได้ขับเคลื่อนด้วยเหตุการณ์ | โหลดข้อมูล Flume สามารถขับเคลื่อนโดยเหตุการณ์ได้ | HDFS เก็บข้อมูลที่ได้รับมาไม่ว่าจะด้วยวิธีใดก็ตาม |
ในการนำเข้าข้อมูลจากแหล่งข้อมูลที่มีโครงสร้าง เราต้องใช้คำสั่ง Sqoop เท่านั้น เนื่องจากตัวเชื่อมต่อรู้วิธีโต้ตอบกับแหล่งข้อมูลที่มีโครงสร้างและดึงข้อมูลจากแหล่งข้อมูลเหล่านั้น | เพื่อโหลดข้อมูลสตรีมมิ่ง เช่น ทวีตที่สร้างบน Twitter หรือไฟล์บันทึกของเว็บเซิร์ฟเวอร์ ควรใช้ Flume เอเจนต์ Flume สร้างขึ้นเพื่อดึงข้อมูลการสตรีม | HDFS มีคำสั่งเชลล์ในตัวเพื่อจัดเก็บข้อมูลลงไป HDFS ไม่สามารถนำเข้าข้อมูลสตรีมมิ่งได้ |