เมื่อคุณมีสเกล Sber การใช้ Ab Initio กับ Hive และ GreenPlum

ก่อนหน้านี้ เราต้องเผชิญกับคำถามในการเลือกเครื่องมือ ETL สำหรับการทำงานกับ Big Data โซลูชัน Informatica BDM ที่ใช้ก่อนหน้านี้ไม่เหมาะกับเราเนื่องจากมีฟังก์ชันการทำงานที่จำกัด การใช้งานลดลงเหลือเพียงเฟรมเวิร์กสำหรับการเรียกใช้คำสั่ง spark-submit โดยหลักการแล้วมีอะนาล็อกไม่มากนักในตลาดที่สามารถทำงานกับปริมาณข้อมูลที่เราจัดการทุกวัน ในที่สุดเราก็เลือก Ab Initio ในระหว่างการสาธิตนำร่อง ผลิตภัณฑ์แสดงความเร็วในการประมวลผลข้อมูลที่สูงมาก แทบไม่มีข้อมูลเกี่ยวกับ Ab Initio ในภาษารัสเซีย ดังนั้นเราจึงตัดสินใจพูดคุยเกี่ยวกับประสบการณ์ของเราเกี่ยวกับHabré

Ab Initio มีการแปลงแบบคลาสสิกและแปลกตามากมาย โค้ดนี้สามารถขยายได้โดยใช้ภาษา PDL ของตัวเอง สำหรับธุรกิจขนาดเล็ก เครื่องมือที่ทรงพลังเช่นนี้น่าจะใช้งานเกินกำลัง และความสามารถส่วนใหญ่อาจมีราคาแพงและไม่ได้ใช้ แต่ถ้าสเกลของคุณใกล้เคียงกับ Sberov's Ab Initio ก็อาจน่าสนใจสำหรับคุณ

ช่วยให้ธุรกิจสะสมความรู้ทั่วโลกและพัฒนาระบบนิเวศ และนักพัฒนาสามารถพัฒนาทักษะของเขาใน ETL พัฒนาความรู้ของเขาในเชลล์ ให้โอกาสในการเชี่ยวชาญภาษา PDL ให้ภาพกระบวนการโหลด และทำให้การพัฒนาง่ายขึ้น เนื่องจากมีส่วนประกอบการทำงานมากมาย

ในโพสต์นี้ ฉันจะพูดถึงความสามารถของ Ab Initio และให้ลักษณะเปรียบเทียบของการทำงานร่วมกับ Hive และ GreenPlum

  • คำอธิบายกรอบงาน MDW และการทำงานเกี่ยวกับการปรับแต่งสำหรับ GreenPlum
  • การเปรียบเทียบประสิทธิภาพ Ab Initio ระหว่าง Hive และ GreenPlum
  • การทำงาน Ab Initio กับ GreenPlum ในโหมด Near Real Time


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

ธุรกิจต่างๆ กำลังพัฒนาระบบนิเวศของตน และเครื่องมือนี้มีประโยชน์มากกว่าที่เคย ด้วย Ab Initio คุณสามารถสะสมความรู้เกี่ยวกับธุรกิจปัจจุบันของคุณ และใช้ความรู้นี้เพื่อขยายธุรกิจเก่าและธุรกิจเปิดใหม่ ทางเลือกอื่นสำหรับ Ab Initio ได้แก่ สภาพแวดล้อมการพัฒนาภาพ Informatica BDM และสภาพแวดล้อมการพัฒนาที่ไม่ใช่ภาพ Apache Spark

คำอธิบายของ Ab Initio

Ab Initio ก็เหมือนกับเครื่องมือ ETL อื่นๆ คือชุดผลิตภัณฑ์

เมื่อคุณมีสเกล Sber การใช้ Ab Initio กับ Hive และ GreenPlum

Ab Initio GDE (สภาพแวดล้อมการพัฒนากราฟิก) เป็นสภาพแวดล้อมสำหรับนักพัฒนาที่เขากำหนดค่าการแปลงข้อมูลและเชื่อมต่อกับกระแสข้อมูลในรูปแบบของลูกศร ในกรณีนี้ ชุดของการแปลงดังกล่าวเรียกว่ากราฟ:

เมื่อคุณมีสเกล Sber การใช้ Ab Initio กับ Hive และ GreenPlum

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

มีส่วนประกอบที่ใช้งานได้หลายร้อยชิ้นซึ่งมีจำนวนมาก หลายคนมีความเชี่ยวชาญสูง ความสามารถของการแปลงแบบคลาสสิกใน Ab Initio นั้นกว้างกว่าเครื่องมือ ETL อื่นๆ ตัวอย่างเช่น Join มีเอาต์พุตหลายรายการ นอกจากผลลัพธ์ของการเชื่อมต่อชุดข้อมูลแล้ว คุณยังสามารถรับบันทึกเอาต์พุตของชุดข้อมูลอินพุตที่ไม่สามารถเชื่อมต่อคีย์ได้ คุณยังสามารถรับการปฏิเสธ ข้อผิดพลาด และบันทึกการดำเนินการการแปลง ซึ่งสามารถอ่านได้ในคอลัมน์เดียวกับไฟล์ข้อความ และประมวลผลด้วยการแปลงอื่นๆ:

เมื่อคุณมีสเกล Sber การใช้ Ab Initio กับ Hive และ GreenPlum

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

มีการเปลี่ยนแปลงแบบเดิม ตัวอย่างเช่น การแปลงการสแกนมีฟังก์ชันการทำงานคล้ายกับฟังก์ชันการวิเคราะห์ มีการเปลี่ยนแปลงโดยใช้ชื่อที่อธิบายตนเองได้: สร้างข้อมูล, อ่าน Excel, ทำให้เป็นมาตรฐาน, จัดเรียงภายในกลุ่ม, รันโปรแกรม, รัน SQL, เข้าร่วมกับ DB ฯลฯ กราฟสามารถใช้พารามิเตอร์รันไทม์ รวมถึงความเป็นไปได้ในการส่งพารามิเตอร์จากหรือถึง ระบบปฏิบัติการ ไฟล์ที่มีชุดพารามิเตอร์สำเร็จรูปที่ส่งไปยังกราฟเรียกว่าชุดพารามิเตอร์ (psets)

ตามที่คาดไว้ Ab Initio GDE มีพื้นที่เก็บข้อมูลของตัวเองชื่อ EME (Enterprise Meta Environment) นักพัฒนามีโอกาสที่จะทำงานกับโค้ดเวอร์ชันท้องถิ่นและตรวจสอบการพัฒนาของพวกเขาในพื้นที่เก็บข้อมูลส่วนกลาง

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

เมื่อคุณมีสเกล Sber การใช้ Ab Initio กับ Hive และ GreenPlum

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

เมื่อคุณมีสเกล Sber การใช้ Ab Initio กับ Hive และ GreenPlum

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

สำหรับการแปลงแต่ละครั้ง คุณสามารถเลือกเค้าโครงที่เรียกว่า (ที่จะดำเนินการ): โดยไม่ต้องขนานหรือเธรดแบบขนาน ซึ่งสามารถระบุจำนวนได้ ในเวลาเดียวกัน ไฟล์ชั่วคราวที่ Ab Initio สร้างขึ้นขณะดำเนินการแปลงสามารถวางได้ทั้งในระบบไฟล์เซิร์ฟเวอร์และใน HDFS

ในการแปลงแต่ละครั้ง คุณสามารถสร้างสคริปต์ของคุณเองใน PDL ซึ่งคล้ายกับเชลล์เล็กน้อยโดยอิงตามเทมเพลตเริ่มต้น

ด้วย PDL คุณสามารถขยายฟังก์ชันการทำงานของการแปลง และโดยเฉพาะอย่างยิ่ง คุณสามารถสร้างส่วนย่อยของโค้ดแบบไดนามิก (ที่รันไทม์) โดยขึ้นอยู่กับพารามิเตอร์รันไทม์

Ab Initio ยังมีการบูรณาการที่พัฒนาอย่างดีกับระบบปฏิบัติการผ่านเชลล์ โดยเฉพาะ Sberbank ใช้ linux ksh คุณสามารถแลกเปลี่ยนตัวแปรกับเชลล์และใช้เป็นพารามิเตอร์กราฟได้ คุณสามารถเรียกการดำเนินการของกราฟ Ab Initio จากเชลล์และจัดการ Ab Initio ได้

นอกจาก Ab Initio GDE แล้ว ยังมีผลิตภัณฑ์อื่นๆ อีกมากมายรวมอยู่ในการจัดส่งด้วย มีระบบ Co>Operation System ของตัวเองโดยอ้างว่าเป็นระบบปฏิบัติการ มี Control>Center ที่คุณสามารถกำหนดเวลาและตรวจสอบโฟลว์การดาวน์โหลดได้ มีผลิตภัณฑ์สำหรับการพัฒนาในระดับดั้งเดิมมากกว่าที่ Ab Initio GDE อนุญาต

คำอธิบายกรอบงาน MDW และการทำงานเกี่ยวกับการปรับแต่งสำหรับ GreenPlum

นอกจากผลิตภัณฑ์แล้ว ผู้จำหน่ายยังจัดหาผลิตภัณฑ์ MDW (Metadata Driven Warehouse) ซึ่งเป็นตัวกำหนดค่ากราฟที่ออกแบบมาเพื่อช่วยในงานทั่วไปในการเติมคลังข้อมูลหรือคลังข้อมูล

ประกอบด้วยตัวแยกวิเคราะห์ข้อมูลเมตาที่กำหนดเอง (เฉพาะโครงการ) และเครื่องสร้างโค้ดสำเร็จรูปนอกกรอบ

เมื่อคุณมีสเกล Sber การใช้ Ab Initio กับ Hive และ GreenPlum
ในฐานะอินพุต MDW จะได้รับโมเดลข้อมูล ไฟล์การกำหนดค่าสำหรับการตั้งค่าการเชื่อมต่อกับฐานข้อมูล (Oracle, Teradata หรือ Hive) และการตั้งค่าอื่นๆ ตัวอย่างเช่น ส่วนเฉพาะของโครงการ จะปรับใช้โมเดลกับฐานข้อมูล ส่วนที่แกะกล่องของผลิตภัณฑ์จะสร้างกราฟและไฟล์การกำหนดค่าสำหรับกราฟและไฟล์การกำหนดค่าโดยการโหลดข้อมูลลงในตารางแบบจำลอง ในกรณีนี้ กราฟ (และ psets) จะถูกสร้างขึ้นสำหรับหลายโหมดของการเริ่มต้นและการทำงานส่วนเพิ่มในการอัปเดตเอนทิตี

ในกรณีของ Hive และ RDBMS กราฟที่แตกต่างกันจะถูกสร้างขึ้นสำหรับการเริ่มต้นและการอัพเดตข้อมูลส่วนเพิ่ม

ในกรณีของ Hive ข้อมูลเดลต้าขาเข้าจะเชื่อมต่อผ่าน Ab Initio Join กับข้อมูลที่อยู่ในตารางก่อนการอัพเดต ตัวโหลดข้อมูลใน MDW (ทั้งใน Hive และ RDBMS) ไม่เพียงแต่แทรกข้อมูลใหม่จากเดลต้าเท่านั้น แต่ยังปิดช่วงเวลาที่เกี่ยวข้องของข้อมูลที่คีย์หลักได้รับเดลต้าอีกด้วย นอกจากนี้ คุณต้องเขียนส่วนที่ไม่เปลี่ยนแปลงของข้อมูลใหม่ แต่ต้องทำสิ่งนี้เพราะ Hive ไม่มีการดำเนินการลบหรืออัปเดต

เมื่อคุณมีสเกล Sber การใช้ Ab Initio กับ Hive และ GreenPlum

ในกรณีของ RDBMS กราฟสำหรับการอัปเดตข้อมูลส่วนเพิ่มจะดูเหมาะสมกว่า เนื่องจาก RDBMS มีความสามารถในการอัปเดตจริง

เมื่อคุณมีสเกล Sber การใช้ Ab Initio กับ Hive และ GreenPlum

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

เราจึงได้ข้อสรุปว่าในกรณีของ Hive นั้น MDW จะต้องเขียนตารางใหม่ทั้งหมด เนื่องจาก Hive ไม่มีฟังก์ชันอัปเดต และไม่มีอะไรดีไปกว่าการเขียนข้อมูลใหม่ทั้งหมดเมื่อมีการคิดค้นการอัปเดต ในกรณีของ RDBMS ผู้สร้างผลิตภัณฑ์พบว่าจำเป็นต้องมอบความไว้วางใจในการเชื่อมต่อและอัปเดตตารางให้กับการใช้ SQL

สำหรับโปรเจ็กต์ที่ Sberbank เราได้สร้างการใช้งานตัวโหลดฐานข้อมูลใหม่สำหรับ GreenPlum ที่สามารถนำมาใช้ซ้ำได้ ซึ่งดำเนินการตามเวอร์ชันที่ MDW สร้างขึ้นสำหรับ Teradata Teradata ไม่ใช่ Oracle ที่ใกล้เคียงที่สุดและดีที่สุดสำหรับสิ่งนี้ เพราะ... เป็นระบบ MPP ด้วย วิธีการทำงานตลอดจนไวยากรณ์ของ Teradata และ GreenPlum กลับกลายเป็นว่าคล้ายกัน

ตัวอย่างของความแตกต่างที่สำคัญของ MDW ระหว่าง RDBMS ที่แตกต่างกันมีดังนี้ ใน GreenPlum ต่างจาก Teradata เมื่อสร้างตาราง คุณจะต้องเขียนส่วนคำสั่ง

distributed by

Teradata เขียนว่า:

delete <table> all

และใน GreenPlum พวกเขาเขียน

delete from <table>

ใน Oracle พวกเขาเขียนเพื่อวัตถุประสงค์ในการเพิ่มประสิทธิภาพ

delete from t where rowid in (<соединение t с дельтой>)

และ Teradata และ GreenPlum เขียน

delete from t where exists (select * from delta where delta.pk=t.pk)

นอกจากนี้เรายังทราบด้วยว่าเพื่อให้ Ab Initio ทำงานร่วมกับ GreenPlum ได้ จำเป็นต้องติดตั้งไคลเอ็นต์ GreenPlum บนโหนดทั้งหมดของคลัสเตอร์ Ab Initio เนื่องจากเราเชื่อมต่อกับ GreenPlum พร้อมกันจากโหนดทั้งหมดในคลัสเตอร์ของเรา และเพื่อให้การอ่านจาก GreenPlum เป็นแบบขนานและแต่ละเธรด Ab Initio แบบขนานเพื่ออ่านข้อมูลจาก GreenPlum เราต้องวางโครงสร้างที่ Ab Initio เข้าใจไว้ในส่วน "where" ของการสืบค้น SQL

where ABLOCAL()

และกำหนดค่าของโครงสร้างนี้โดยการระบุพารามิเตอร์ที่อ่านจากฐานข้อมูลการแปลง

ablocal_expr=«string_concat("mod(t.", string_filter_out("{$TABLE_KEY}","{}"), ",", (decimal(3))(number_of_partitions()),")=", (decimal(3))(this_partition()))»

ซึ่งคอมไพล์เป็นบางอย่างเช่น

mod(sk,10)=3

, เช่น. คุณต้องแจ้งให้ GreenPlum พร้อมตัวกรองที่ชัดเจนสำหรับแต่ละพาร์ติชัน สำหรับฐานข้อมูลอื่นๆ (Teradata, Oracle) Ab Initio สามารถดำเนินการขนานนี้ได้โดยอัตโนมัติ

การเปรียบเทียบประสิทธิภาพ Ab Initio ระหว่าง Hive และ GreenPlum

Sberbank ทำการทดลองเพื่อเปรียบเทียบประสิทธิภาพของกราฟที่สร้างโดย MDW ที่สัมพันธ์กับ Hive และสัมพันธ์กับ GreenPlum ส่วนหนึ่งของการทดลอง ในกรณีของ Hive มี 5 โหนดบนคลัสเตอร์เดียวกันกับ Ab Initio และในกรณีของ GreenPlum มี 4 โหนดบนคลัสเตอร์ที่แยกจากกัน เหล่านั้น. Hive มีข้อได้เปรียบด้านฮาร์ดแวร์มากกว่า GreenPlum

เราพิจารณากราฟสองคู่ที่ทำงานเหมือนกันในการอัปเดตข้อมูลใน Hive และ GreenPlum ในเวลาเดียวกัน กราฟที่สร้างโดยตัวกำหนดค่า MDW ก็ถูกเปิดใช้งาน:

  • โหลดเริ่มต้น + โหลดส่วนเพิ่มของข้อมูลที่สร้างขึ้นแบบสุ่มลงในตาราง Hive
  • โหลดเริ่มต้น + โหลดที่เพิ่มขึ้นของข้อมูลที่สร้างขึ้นแบบสุ่มลงในตาราง GreenPlum เดียวกัน

ในทั้งสองกรณี (Hive และ GreenPlum) พวกเขารันการอัปโหลดไปยัง 10 เธรดแบบขนานบนคลัสเตอร์ Ab Initio เดียวกัน Ab Initio บันทึกข้อมูลระดับกลางสำหรับการคำนวณในรูปแบบ HDFS (ในแง่ของ Ab Initio จะใช้โครงร่าง MFS โดยใช้ HDFS) ข้อมูลที่สร้างแบบสุ่มหนึ่งบรรทัดมีขนาด 200 ไบต์ในทั้งสองกรณี

ผลลัพธ์เป็นดังนี้:

รัง:

การโหลดครั้งแรกใน Hive

แทรกแถวแล้ว
6 000 000
60 000 000
600 000 000

ระยะเวลาการเริ่มต้น
ดาวน์โหลดในไม่กี่วินาที
41
203
1 601

การโหลดที่เพิ่มขึ้นใน Hive

จำนวนแถวที่มีอยู่ใน
ตารางเป้าหมายเมื่อเริ่มต้นการทดสอบ
6 000 000
60 000 000
600 000 000

จำนวนเส้นเดลต้าที่ใช้กับ
ตารางเป้าหมายระหว่างการทดลอง
6 000 000
6 000 000
6 000 000

ระยะเวลาของการเพิ่มขึ้น
ดาวน์โหลดในไม่กี่วินาที
88
299
2 541

กรีนพลัม:

กำลังโหลดครั้งแรกใน GreenPlum

แทรกแถวแล้ว
6 000 000
60 000 000
600 000 000

ระยะเวลาการเริ่มต้น
ดาวน์โหลดในไม่กี่วินาที
72
360
3 631

การโหลดที่เพิ่มขึ้นใน GreenPlum

จำนวนแถวที่มีอยู่ใน
ตารางเป้าหมายเมื่อเริ่มต้นการทดสอบ
6 000 000
60 000 000
600 000 000

จำนวนเส้นเดลต้าที่ใช้กับ
ตารางเป้าหมายระหว่างการทดลอง
6 000 000
6 000 000
6 000 000

ระยะเวลาของการเพิ่มขึ้น
ดาวน์โหลดในไม่กี่วินาที
159
199
321

เราเห็นว่าความเร็วของการโหลดครั้งแรกในทั้ง Hive และ GreenPlum นั้นขึ้นอยู่กับปริมาณข้อมูลเป็นเส้นตรง และด้วยเหตุผลด้านฮาร์ดแวร์ที่ดีกว่า Hive จึงเร็วกว่า GreenPlum เล็กน้อย

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

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

ดังนั้น GreenPlum จะเพิ่มเดลต้าโดยใช้เมธอด Delete+Insert แต่ Hive ไม่มีการดำเนินการลบหรืออัปเดต ดังนั้นอาร์เรย์ข้อมูลทั้งหมดจึงถูกบังคับให้เขียนใหม่ทั้งหมดในระหว่างการอัปเดตแบบเพิ่มหน่วย การเปรียบเทียบเซลล์ที่ไฮไลต์ด้วยตัวหนาเป็นสิ่งที่เปิดเผยมากที่สุด เนื่องจากเซลล์ดังกล่าวสอดคล้องกับตัวเลือกที่พบบ่อยที่สุดสำหรับการดาวน์โหลดที่ใช้ทรัพยากรมาก เราเห็นว่า GreenPlum เอาชนะ Hive ในการทดสอบนี้ 8 ครั้ง

การทำงาน Ab Initio กับ GreenPlum ในโหมด Near Real Time

ในการทดลองนี้ เราจะทดสอบความสามารถของ Ab Initio ในการอัปเดตตาราง GreenPlum ด้วยข้อมูลที่สร้างขึ้นแบบสุ่มในเวลาใกล้เคียงเรียลไทม์ ลองพิจารณาตาราง GreenPlum dev42_1_db_usl.TESTING_SUBJ_org_finval ซึ่งเราจะใช้งาน

เราจะใช้กราฟ Ab Initio สามกราฟเพื่อใช้งาน:

1) Graph Create_test_data.mp – สร้างไฟล์ข้อมูลในรูปแบบ HDFS โดยมี 10 แถวใน 6 เธรดแบบขนาน ข้อมูลเป็นแบบสุ่ม มีการจัดโครงสร้างเพื่อแทรกลงในตารางของเรา

เมื่อคุณมีสเกล Sber การใช้ Ab Initio กับ Hive และ GreenPlum

เมื่อคุณมีสเกล Sber การใช้ Ab Initio กับ Hive และ GreenPlum

2) กราฟ mdw_load.day_one.current.dev42_1_db_usl_testing_subj_org_finval.pset – กราฟที่สร้างโดย MDW โดยการเริ่มต้นการแทรกข้อมูลลงในตารางของเราใน 10 เธรดคู่ขนาน (ใช้ข้อมูลทดสอบที่สร้างโดยกราฟ (1))

เมื่อคุณมีสเกล Sber การใช้ Ab Initio กับ Hive และ GreenPlum

3) กราฟ mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset – กราฟที่สร้างโดย MDW สำหรับการอัปเดตตารางเพิ่มเติมของเราใน 10 เธรดคู่ขนานโดยใช้ส่วนหนึ่งของข้อมูลที่ได้รับใหม่ (เดลต้า) ที่สร้างโดยกราฟ (1)

เมื่อคุณมีสเกล Sber การใช้ Ab Initio กับ Hive และ GreenPlum

มาเรียกใช้สคริปต์ด้านล่างในโหมด NRT:

  • สร้างสายทดสอบ 6 เส้น
  • ดำเนินการโหลดเริ่มต้นโดยแทรกแถวทดสอบ 6 แถวลงในตารางว่าง
  • ดาวน์โหลดแบบเพิ่มซ้ำซ้ำ 5 ครั้ง
    • สร้างสายทดสอบ 6 เส้น
    • ดำเนินการแทรกแถวทดสอบเพิ่มขึ้น 6 แถวลงในตาราง (ในกรณีนี้ เวลาหมดอายุ valid_to_ts จะถูกตั้งค่าเป็นข้อมูลเก่าและข้อมูลล่าสุดที่มีคีย์หลักเดียวกันจะถูกแทรก)

สถานการณ์นี้จำลองโหมดการทำงานจริงของระบบธุรกิจบางอย่าง - ข้อมูลใหม่ส่วนใหญ่จะปรากฏขึ้นแบบเรียลไทม์และเทลงใน GreenPlum ทันที

ตอนนี้เรามาดูบันทึกของสคริปต์:

เริ่ม Create_test_data.input.pset เมื่อ 2020-06-04 11:49:11
เสร็จสิ้น Create_test_data.input.pset ที่ 2020-06-04 11:49:37
เริ่ม mdw_load.day_one.current.dev42_1_db_usl_testing_subj_org_finval.pset ที่ 2020-06-04 11:49:37
เสร็จสิ้น mdw_load.day_one.current.dev42_1_db_usl_testing_subj_org_finval.pset ที่ 2020-06-04 11:50:42
เริ่ม Create_test_data.input.pset เมื่อ 2020-06-04 11:50:42
เสร็จสิ้น Create_test_data.input.pset ที่ 2020-06-04 11:51:06
เริ่ม mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset ที่ 2020-06-04 11:51:06
เสร็จสิ้น mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset ที่ 2020-06-04 11:53:41
เริ่ม Create_test_data.input.pset เมื่อ 2020-06-04 11:53:41
เสร็จสิ้น Create_test_data.input.pset ที่ 2020-06-04 11:54:04
เริ่ม mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset ที่ 2020-06-04 11:54:04
เสร็จสิ้น mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset ที่ 2020-06-04 11:56:51
เริ่ม Create_test_data.input.pset เมื่อ 2020-06-04 11:56:51
เสร็จสิ้น Create_test_data.input.pset ที่ 2020-06-04 11:57:14
เริ่ม mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset ที่ 2020-06-04 11:57:14
เสร็จสิ้น mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset ที่ 2020-06-04 11:59:55
เริ่ม Create_test_data.input.pset เมื่อ 2020-06-04 11:59:55
เสร็จสิ้น Create_test_data.input.pset ที่ 2020-06-04 12:00:23
เริ่ม mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset ที่ 2020-06-04 12:00:23
เสร็จสิ้น mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset ที่ 2020-06-04 12:03:23
เริ่ม Create_test_data.input.pset เมื่อ 2020-06-04 12:03:23
เสร็จสิ้น Create_test_data.input.pset ที่ 2020-06-04 12:03:49
เริ่ม mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset ที่ 2020-06-04 12:03:49
เสร็จสิ้น mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset ที่ 2020-06-04 12:06:46

ปรากฎภาพนี้:

กราฟ
เวลาเริ่มต้น
เวลาสิ้นสุด
ความยาว

Create_test_data.input.pset
04.06.2020 11: 49: 11
04.06.2020 11: 49: 37
00:00:26

mdw_load.day_one.current.
dev42_1_db_usl_testing_subj_org_finval.pset
04.06.2020 11: 49: 37
04.06.2020 11: 50: 42
00:01:05

Create_test_data.input.pset
04.06.2020 11: 50: 42
04.06.2020 11: 51: 06
00:00:24

mdw_load.regular.current.
dev42_1_db_usl_testing_subj_org_finval.pset
04.06.2020 11: 51: 06
04.06.2020 11: 53: 41
00:02:35

Create_test_data.input.pset
04.06.2020 11: 53: 41
04.06.2020 11: 54: 04
00:00:23

mdw_load.regular.current.
dev42_1_db_usl_testing_subj_org_finval.pset
04.06.2020 11: 54: 04
04.06.2020 11: 56: 51
00:02:47

Create_test_data.input.pset
04.06.2020 11: 56: 51
04.06.2020 11: 57: 14
00:00:23

mdw_load.regular.current.
dev42_1_db_usl_testing_subj_org_finval.pset
04.06.2020 11: 57: 14
04.06.2020 11: 59: 55
00:02:41

Create_test_data.input.pset
04.06.2020 11: 59: 55
04.06.2020 12: 00: 23
00:00:28

mdw_load.regular.current.
dev42_1_db_usl_testing_subj_org_finval.pset
04.06.2020 12: 00: 23
04.06.2020 12: 03: 23
00:03:00

Create_test_data.input.pset
04.06.2020 12: 03: 23
04.06.2020 12: 03: 49
00:00:26

mdw_load.regular.current.
dev42_1_db_usl_testing_subj_org_finval.pset
04.06.2020 12: 03: 49
04.06.2020 12: 06: 46
00:02:57

เราเห็นว่ามีการประมวลผลเพิ่มขึ้น 6 บรรทัดใน 000 นาที ซึ่งค่อนข้างเร็ว
ข้อมูลในตารางเป้าหมายมีการกระจายดังนี้:

select valid_from_ts, valid_to_ts, count(1), min(sk), max(sk) from dev42_1_db_usl.TESTING_SUBJ_org_finval group by valid_from_ts, valid_to_ts order by 1,2;

เมื่อคุณมีสเกล Sber การใช้ Ab Initio กับ Hive และ GreenPlum
คุณสามารถดูความสอดคล้องของข้อมูลที่แทรกกับเวลาที่เปิดใช้กราฟได้
ซึ่งหมายความว่าคุณสามารถเรียกใช้การโหลดข้อมูลส่วนเพิ่มลงใน GreenPlum ใน Ab Initio ด้วยความถี่ที่สูงมาก และสังเกตด้วยความเร็วสูงในการแทรกข้อมูลนี้ลงใน GreenPlum แน่นอนว่าเป็นไปไม่ได้ที่จะเปิดตัวทีละวินาที เนื่องจาก Ab Initio ก็เหมือนกับเครื่องมือ ETL อื่นๆ ที่ต้องใช้เวลาในการ "เริ่มต้น" เมื่อเปิดตัว

ข้อสรุป

ปัจจุบัน Ab Initio ใช้ที่ Sberbank เพื่อสร้าง Unified Semantic Data Layer (ESS) โครงการนี้เกี่ยวข้องกับการสร้างสถานะขององค์กรธุรกิจการธนาคารต่างๆ ในเวอร์ชันที่เป็นหนึ่งเดียว ข้อมูลมาจากแหล่งต่างๆ ซึ่งแบบจำลองนี้จัดทำขึ้นบน Hadoop ตามความต้องการทางธุรกิจ มีการจัดเตรียมแบบจำลองข้อมูลและอธิบายการแปลงข้อมูล Ab Initio โหลดข้อมูลลงใน ESN และข้อมูลที่ดาวน์โหลดไม่เพียงแต่เป็นที่สนใจของธุรกิจเท่านั้น แต่ยังทำหน้าที่เป็นแหล่งข้อมูลสำหรับการสร้างศูนย์ข้อมูลอีกด้วย ในเวลาเดียวกันฟังก์ชันการทำงานของผลิตภัณฑ์ช่วยให้คุณสามารถใช้ระบบต่างๆเป็นตัวรับ (Hive, Greenplum, Teradata, Oracle) ซึ่งทำให้สามารถเตรียมข้อมูลสำหรับธุรกิจในรูปแบบต่างๆที่ต้องการได้อย่างง่ายดาย

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

ผู้เขียนเป็นผู้เชี่ยวชาญในชุมชนมืออาชีพของ Sberbank SberProfi DWH/BigData ชุมชนมืออาชีพ SberProfi DWH/BigData มีหน้าที่รับผิดชอบในการพัฒนาความสามารถในด้านต่างๆ เช่น ระบบนิเวศ Hadoop, Teradata, Oracle DB, GreenPlum รวมถึงเครื่องมือ BI Qlik, SAP BO, Tableau ฯลฯ

ที่มา: will.com

เพิ่มความคิดเห็น