เมื่อใดที่จะใช้ Hadoop, HBase, Hive และ Pig?


185

ประโยชน์ของการใช้HadoopหรือHBaseหรือHiveคืออะไร

จากความเข้าใจของฉันHBaseหลีกเลี่ยงการใช้แผนที่ลดและมีการจัดเก็บคอลัมน์ที่มุ่งเน้นด้านบนของ HDFS ไฮฟ์เป็นแบบ SQL อินเตอร์เฟซสำหรับHadoopและHBase

ฉันต้องการทราบว่าHiveเปรียบเทียบกับPigอย่างไร


Hadoop : Hadoop ระบบไฟล์แบบกระจาย + โมเดลการประมวลผลการคำนวณ MapReduce HBase : การจัดเก็บคีย์ - ค่าเหมาะสำหรับการอ่านและการเขียนแบบเรียลไทม์ ไฮฟ์ : ใช้สำหรับการดึงข้อมูลจาก HDFS โดยใช้ไวยากรณ์คล้าย SQL Pig : เป็นภาษาการไหลของข้อมูลสำหรับการสร้าง ETL
dbustosp

คำตอบ:


348

MapReduce เป็นเพียงกรอบการคำนวณ HBase ไม่มีส่วนเกี่ยวข้องกับมัน ที่กล่าวว่าคุณสามารถนำหรือดึงข้อมูลไปยัง / จาก HBase ได้อย่างมีประสิทธิภาพโดยการเขียนงาน MapReduce หรือคุณสามารถเขียนโปรแกรมแบบต่อเนื่องโดยใช้ HBase API อื่น ๆ เช่น Java เพื่อใส่หรือดึงข้อมูล แต่เราใช้ Hadoop, HBase และอื่น ๆ เพื่อจัดการกับข้อมูลจำนวนมหาศาลดังนั้นมันจึงไม่สมเหตุสมผลนัก การใช้โปรแกรมตามลำดับปกติจะไม่มีประสิทธิภาพสูงเมื่อข้อมูลของคุณมีขนาดใหญ่เกินไป

กลับมาที่ส่วนแรกของคำถามของคุณ Hadoop เป็นพื้น 2 สิ่งคือกระจาย FileSystem (HDFS) + A กรอบการคำนวณหรือการประมวลผล (MapReduce) เช่นเดียวกับ FS อื่น ๆ HDFS ยังให้บริการพื้นที่จัดเก็บข้อมูลของเรา แต่ในลักษณะการรับข้อมูลความผิดพลาดด้วยปริมาณงานสูงและความเสี่ยงต่อการสูญหายของข้อมูล (เนื่องจากการจำลองแบบ) แต่เป็น FS ที่ HDFS ขาดสุ่มอ่านและเขียนเข้าถึง นี่คือสิ่งที่ HBase เข้ามาในภาพ มันเป็นคลังข้อมูลขนาดใหญ่แบบกระจายปรับขนาดได้ซึ่งจำลองตาม BigTable ของ Google มันเก็บข้อมูลเป็นคู่ของคีย์ / ค่า

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

ในขณะที่ Pig นั้นเป็นภาษาดาต้าโฟลว์ที่ช่วยให้เราสามารถประมวลผลข้อมูลจำนวนมหาศาลได้อย่างง่ายดายและรวดเร็ว หมูโดยทั่วไปมี 2 ส่วนหมูล่ามและภาษาPigLatin คุณเขียนสคริปต์ Pig ใน PigLatin และใช้ล่าม Pig ในการประมวลผล หมูทำให้ชีวิตของเราง่ายขึ้นมิฉะนั้นการเขียน MapReduce นั้นไม่ใช่เรื่องง่ายเสมอไป ในความเป็นจริงในบางกรณีมันอาจกลายเป็นความเจ็บปวด

ฉันได้เขียนบทความเกี่ยวกับการเปรียบเทียบสั้น ๆ ของเครื่องมือต่าง ๆ ของระบบนิเวศ Hadoopเมื่อเร็ว ๆ นี้ มันไม่ใช่การเปรียบเทียบเชิงลึก แต่เป็นการแนะนำสั้น ๆ เกี่ยวกับเครื่องมือเหล่านี้ซึ่งสามารถช่วยคุณในการเริ่มต้น (เพียงเพิ่มคำตอบของฉันไม่มีการส่งเสริมการขายด้วยตนเอง)

ข้อความค้นหาทั้ง Hive และ Pig จะถูกแปลงเป็นงาน MapReduce ภายใต้ประทุน

HTH


คุณลืมพูดคุยเกี่ยวกับyarnระบบนิเวศ Hadoop :(.
Kenry Sanchez

53

ฉันใช้แพลตฟอร์ม Hive Data ใน บริษัท ของฉันเมื่อเร็ว ๆ นี้และสามารถพูดกับมันในคนแรกตั้งแต่ฉันเป็นทีมชายคนหนึ่ง

วัตถุประสงค์

  1. หากต้องการมีไฟล์บันทึกการทำงานเว็บรายวันที่รวบรวมจากเซิร์ฟเวอร์มากกว่า 350+ แห่งต่อวันสามารถสืบค้นได้ผ่านSQLเช่นภาษา
  2. เพื่อแทนที่ข้อมูลการรวมรายวันที่สร้างผ่านMySQLด้วย Hive
  3. สร้างรายงานที่กำหนดเองผ่านการสืบค้นในHive

ตัวเลือกสถาปัตยกรรม

ฉันเปรียบเทียบตัวเลือกต่อไปนี้:

  1. Hive + HDFS
  2. Hive + HBase - ข้อความค้นหาช้าเกินไปดังนั้นฉันจึงทิ้งตัวเลือกนี้

ออกแบบ

  1. ไฟล์บันทึกประจำวันถูกส่งไปยังHDFS
  2. งาน MR แยกวิเคราะห์ไฟล์บันทึกและไฟล์เอาต์พุตเหล่านี้ในHDFS
  3. สร้างตาราง Hive ด้วยพาร์ติชันและตำแหน่งที่ชี้ไปยังตำแหน่งHDFS
  4. สร้างสคริปต์แบบสอบถาม Hive (เรียกว่าHQLถ้าคุณชอบต่างจากSQL ) ซึ่งจะทำให้งาน MR ในพื้นหลังและสร้างข้อมูลรวม
  5. วางขั้นตอนเหล่านี้ทั้งหมดลงในเวิร์กโฟลว์Oozie - กำหนดเวลาด้วย Daily Oozie Coordinator

สรุป

HBaseเป็นเหมือนแผนที่ หากคุณรู้กุญแจคุณสามารถรับค่าได้ทันที แต่ถ้าคุณต้องการทราบจำนวนคีย์จำนวนเต็มใน Hbase อยู่ระหว่าง 1000000 ถึง 2000000 ที่ไม่เหมาะสำหรับHbaseเพียงอย่างเดียว

หากคุณมีข้อมูลที่จะต้องมีการรวบรวมรีดขึ้นวิเคราะห์ในแถวแล้วพิจารณาHive

หวังว่านี่จะช่วยได้

Hiveจริงหิน ... ฉันรู้ว่าฉันยังมีชีวิตอยู่มันเป็นเวลา 12 เดือนในขณะนี้ ... ดังนั้นไม่HBase ...


1
HBase เป็นฐานข้อมูล NonSQL ที่เก็บข้อมูลใน HDFS มันถูกใช้เมื่อคุณต้องการเข้าถึงข้อมูลขนาดใหญ่ของคุณแบบสุ่ม / อ่านแบบเรียลไทม์
รูทลูป

28

Hadoopเป็นเฟรมเวิร์กที่อนุญาตให้ทำการประมวลผลชุดข้อมูลขนาดใหญ่แบบกระจายข้ามกลุ่มคอมพิวเตอร์โดยใช้โมเดลการเขียนโปรแกรมอย่างง่าย

มีสี่โมดูลหลักใน Hadoop

  1. Hadoop Common : ยูทิลิตี้ทั่วไปที่สนับสนุนโมดูล Hadoop อื่น ๆ

  2. Hadoop Distributed File System ( HDFS ™ ): ระบบไฟล์แบบกระจายที่ให้การเข้าถึงข้อมูลแอ็พพลิเคชัน

  3. Hadoop YARN : เฟรมเวิร์กสำหรับการจัดตารางเวลางานและการจัดการทรัพยากรคลัสเตอร์

  4. Hadoop MapReduce : ระบบที่ใช้ YARN สำหรับการประมวลผลแบบขนานของชุดข้อมูลขนาดใหญ่

ก่อนที่จะดำเนินการเพิ่มเติมโปรดทราบว่าเรามีข้อมูลสามประเภทที่แตกต่างกัน

  • โครงสร้าง : ข้อมูลที่มีโครงสร้างมีสคีมาที่แข็งแกร่งและสคีมาจะถูกตรวจสอบในระหว่างการดำเนินการเขียนและอ่าน เช่นข้อมูลในระบบ RDBMS เช่น Oracle, MySQL Server เป็นต้น

  • ไม่มีโครงสร้าง : ข้อมูลไม่มีโครงสร้างใด ๆ และสามารถเป็นรูปแบบใดก็ได้ - บันทึกการใช้เว็บเซิร์ฟเวอร์อีเมลรูปภาพ ฯลฯ

  • กึ่งโครงสร้าง : ข้อมูลไม่ได้มีโครงสร้างอย่างเคร่งครัด แต่มีโครงสร้างบางอย่าง เช่นไฟล์ XML

ขึ้นอยู่กับประเภทของข้อมูลที่จะประมวลผลเราต้องเลือกเทคโนโลยีที่เหมาะสม

บางโครงการเพิ่มเติมซึ่งเป็นส่วนหนึ่งของ Hadoop:

  • HBase ™ : ฐานข้อมูลแบบกระจายปรับขนาดได้ที่รองรับการจัดเก็บข้อมูลที่มีโครงสร้างสำหรับตารางขนาดใหญ่

  • Hive ™: โครงสร้างพื้นฐานคลังข้อมูลที่ให้การสรุปข้อมูลและการสอบถามเฉพาะกิจ

  • Pig ™ : ภาษากระแสข้อมูลระดับสูงและกรอบการดำเนินการสำหรับการคำนวณแบบขนาน

การเปรียบเทียบHive Vs PIGสามารถพบได้ในบทความนี้และโพสต์อื่น ๆ ของฉันที่คำถาม SE นี้

HBASEจะไม่แทนที่แผนที่ย่อ HBaseเป็นฐานข้อมูลแบบกระจายที่ปรับขนาดได้ & การลดแผนที่เป็นรูปแบบการเขียนโปรแกรมสำหรับการประมวลผลข้อมูลแบบกระจาย การลดแผนที่อาจกระทำกับข้อมูลใน HBASE ในการประมวลผล

คุณสามารถใช้HIVE / HBASEสำหรับข้อมูลที่มีโครงสร้าง / กึ่งโครงสร้างและประมวลผลด้วย Hadoop Map Reduce

คุณสามารถใช้SQOOPเพื่อนำเข้าข้อมูลที่มีโครงสร้างจากฐานข้อมูล RDBMS ดั้งเดิม Oracle, SQL Server และประมวลผลด้วย Hadoop Map Reduce

คุณสามารถใช้FLUMEสำหรับการประมวลผลข้อมูลและกระบวนการที่ไม่มีโครงสร้างด้วย Hadoop Map Reduce

มีลักษณะที่: Hadoop กรณีการใช้งาน

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

HBaseเหมาะสำหรับการสอบถาม Big Data แบบเรียลไทม์ Facebook ใช้สำหรับการส่งข้อความและการวิเคราะห์ตามเวลาจริง

PIGสามารถใช้ในการสร้างดาต้าโฟลว์, เรียกใช้งานตามกำหนดเวลา, บีบอัดข้อมูลจำนวนมากรวม / สรุปและจัดเก็บลงในระบบฐานข้อมูลที่เกี่ยวข้อง เหมาะสำหรับการวิเคราะห์แบบเฉพาะกิจ

Hiveสามารถใช้สำหรับการวิเคราะห์ข้อมูลแบบเฉพาะกิจ แต่ไม่สามารถรองรับรูปแบบข้อมูลที่ไม่มีโครงสร้างทั้งหมดซึ่งแตกต่างจาก PIG


Facebook ไม่ได้ใช้ HBase โอเพ่นซอร์สสำหรับระบบการส่งข้อความตามเวลาจริงอีกต่อไป พวกเขาแทนที่มันด้วย [Myrocks ฐานข้อมูล] ในบ้าน ( engineering.fb.com/core-data/… )
PPK

23

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


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

HBase เป็นระบบเชิงการเขียนซึ่งไม่เหมาะกับการสแกนแม้ว่าข้อมูลจะถูกจัดเรียงไว้ ดังนั้นในขณะที่การสแกนบางช่วงอาจเป็นตัวเลือกที่ดีการสแกนแบบเต็มจะช้าลงมากจากนั้นโดยตรงจาก HDFS
David Gruzman

5

สำหรับเปรียบเทียบระหว่าง Hadoop Vs คาสซานดรา / HBase อ่านโพสต์

โดยทั่วไป HBase ช่วยให้การอ่านและเขียนได้อย่างรวดเร็วด้วยความสามารถในการปรับขยายได้ รวดเร็วและปรับขนาดได้อย่างไร Facebookใช้เพื่อจัดการสถานะผู้ใช้รูปภาพข้อความแชท ฯลฯ HBase นั้นรวดเร็วมากบางครั้ง Facebook ได้รับการพัฒนาโดยใช้ HBase เป็นแหล่งข้อมูลสำหรับ Hive เอง

Where As Hive เป็นเหมือนโซลูชันคลังข้อมูลมากขึ้น คุณสามารถใช้ไวยากรณ์ที่คล้ายกับ SQL เพื่อเคียวรีเนื้อหา Hive ซึ่งส่งผลให้งานลดขนาดแผนที่ ไม่เหมาะสำหรับระบบที่รวดเร็วและทำธุรกรรม


5

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

เราใช้เทคโนโลยีระบบนิเวศHadoopสำหรับการใช้งานด้านบน

การประมวลผลตามเวลาจริง

Apache Storm: การประมวลผลข้อมูลสตรีมแอปพลิเคชันกฎ

HBase: Datastore สำหรับการให้บริการแดชบอร์ดแบบเรียลไทม์

การประมวลผลแบบแบทช์ Hadoop: การบีบอัดข้อมูลจำนวนมหาศาล ภาพรวม 360 องศาหรือเพิ่มบริบทให้กับเหตุการณ์ อินเทอร์เฟซหรือกรอบงานเช่น Pig, MR, Spark, Hive, Shark ช่วยในการคำนวณ เลเยอร์นี้ต้องการตัวกำหนดตารางเวลาสำหรับ Oozie ซึ่งเป็นตัวเลือกที่ดี

เลเยอร์การจัดการเหตุการณ์

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


5

เข้าใจในเชิงลึก

Hadoop

Hadoopเป็นโครงการโอเพ่นซอร์สของApacheมูลนิธิ มันเป็นกรอบการเขียนในการJavaพัฒนามาโดย Doug Cutting ในปี 2005 มันถูกสร้างขึ้นเพื่อรองรับการกระจายสำหรับNutchเครื่องมือค้นหาข้อความ Hadoopใช้Map Reduceเทคโนโลยีระบบไฟล์ของ Google และ Google เป็นรากฐาน

คุณสมบัติของ Hadoop

  1. มันได้รับการปรับให้เหมาะสมในการจัดการข้อมูลจำนวนมากที่มีโครงสร้างกึ่งโครงสร้างและไม่มีโครงสร้างโดยใช้ฮาร์ดแวร์สินค้า
  2. มันไม่ได้แชร์สถาปัตยกรรมอะไรเลย
  3. มันจำลองข้อมูลลงในคอมพิวเตอร์หลายเครื่องเพื่อที่ว่าหากเครื่องหนึ่งหยุดทำงานข้อมูลก็ยังสามารถประมวลผลได้จากเครื่องอื่นที่จัดเก็บแบบจำลอง
  4. Hadoopสำหรับปริมาณงานสูงมากกว่าเวลาหน่วงต่ำ เป็นการดำเนินการแบบกลุ่มที่จัดการกับข้อมูลจำนวนมหาศาล ดังนั้นเวลาตอบสนองจะไม่ทันที
  5. มันเสริมการประมวลผลธุรกรรมออนไลน์และการประมวลผลการวิเคราะห์ออนไลน์ RDBMSแต่ก็ไม่เปลี่ยนสำหรับ
  6. มันไม่ดีเมื่องานไม่สามารถขนานหรือเมื่อมีการอ้างอิงภายในข้อมูล
  7. มันไม่ดีสำหรับการประมวลผลไฟล์ขนาดเล็ก มันทำงานได้ดีที่สุดกับไฟล์ข้อมูลและชุดข้อมูลขนาดใหญ่

รุ่นของ Hadoop

มีสองรุ่นHadoop:

  1. Hadoop 1.0
  2. Hadoop 2.0

Hadoop 1.0

มันมีสองส่วนหลัก:

1. กรอบการจัดเก็บข้อมูล

เป็นระบบไฟล์อเนกประสงค์ที่เรียกว่า Hadoop Distributed File System ( HDFS)

HDFS สคีมาน้อย

มันเก็บไฟล์ข้อมูลและไฟล์ข้อมูลเหล่านี้สามารถอยู่ในรูปแบบใดก็ได้

แนวคิดคือการจัดเก็บไฟล์ให้ใกล้เคียงกับรูปแบบดั้งเดิมที่สุด

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

2. กรอบการประมวลผลข้อมูล

นี้เป็นเรื่องง่ายแบบการเขียนโปรแกรมการทำงานที่นิยมในขั้นแรกโดย Google MapReduceเป็น

มันใช้ฟังก์ชั่นสองอย่าง: MAPและREDUCEประมวลผลข้อมูล

"ตัวทำแผนที่" ใช้เวลาในชุดของคู่คีย์ - ค่าและสร้างข้อมูลกลาง (ซึ่งเป็นรายการของคู่ของคีย์ - ค่าอื่น)

"Reducers" จากนั้นดำเนินการกับอินพุตนี้เพื่อสร้างข้อมูลเอาต์พุต

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

ข้อ จำกัด ของ Hadoop 1.0

  1. ข้อ จำกัด แรกคือข้อกำหนดของMapReduceความเชี่ยวชาญด้านการเขียนโปรแกรม

  2. รองรับการประมวลผลแบบแบตช์เท่านั้นซึ่งเหมาะสำหรับงานต่าง ๆ เช่นการวิเคราะห์บันทึก, โครงการขุดข้อมูลขนาดใหญ่ แต่ไม่เหมาะสำหรับโครงการประเภทอื่น ๆ

  3. ข้อ จำกัด ที่สำคัญอย่างหนึ่งก็Hadoop 1.0คือมีการคำนวณร่วมกันอย่างแน่นหนาMapReduceซึ่งหมายความว่าผู้ให้บริการด้านการจัดการข้อมูลที่จัดตั้งขึ้นจะทิ้งความคิดเห็นไว้สองข้อ:

    1. คุณอาจเขียนฟังก์ชันการทำงานใหม่MapReduceเพื่อให้สามารถทำงานในHadoopหรือ

    2. ดึงข้อมูลจากหรือประมวลผลด้านนอกของHDFSHadoop

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

Hadoop 2.0

ในHadoop 2.0, HDFSยังคงเป็นกรอบการจัดเก็บข้อมูล

อย่างไรก็ตามเฟรมเวิร์กการจัดการทรัพยากรใหม่และแยกต่างหากที่เรียกว่าY et A nother R esource N egotiater ( YARN ) ถูกเพิ่มเข้ามา

แอปพลิเคชันใด ๆ ที่สามารถแบ่งตัวเองออกเป็นงานคู่ขนานได้รับการสนับสนุนโดย YARN

YARN ประสานงานการจัดสรรงานย่อยของแอปพลิเคชั่นที่ส่งซึ่งจะช่วยเพิ่มความยืดหยุ่นความยืดหยุ่นและประสิทธิภาพของแอปพลิเคชัน

มันทำงานได้โดยมีApplication MasterแทนJob Trackerเพื่อรันแอปพลิเคชันบนทรัพยากรที่ควบคุมโดยNode Managerใหม่

ApplicationMaster สามารถที่จะเรียกใช้โปรแกรมใด ๆ MapReduceและไม่เพียง

ซึ่งหมายความว่ามันไม่เพียง แต่รองรับการประมวลผลแบทช์ แต่ยังรวมถึงการประมวลผลแบบเรียลไทม์ MapReduceไม่มีตัวเลือกการประมวลผลข้อมูลอีกต่อไปเท่านั้น

ข้อดีของ Hadoop

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

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

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

มันมีความยืดหยุ่น ข้อดีอย่างหนึ่งที่สำคัญของHadoopมันคือมันสามารถทำงานกับข้อมูลประเภทใดก็ได้: โครงสร้างไม่มีโครงสร้างหรือกึ่งโครงสร้าง นอกจากนี้การประมวลผลยังเร็วมากHadoopเนื่องจากกระบวนทัศน์ "ย้ายรหัสไปยังข้อมูล"

ระบบนิเวศ Hadoop

ต่อไปนี้เป็นองค์ประกอบของHadoopระบบนิเวศ:

HDFS : Hadoopระบบไฟล์แบบกระจาย มันเก็บไฟล์ข้อมูลใกล้เคียงกับรูปแบบดั้งเดิมที่สุดเท่าที่จะทำได้

HBase : มันเป็นฐานข้อมูล Hadoop RDBMSและเมื่อเปรียบเทียบกับ สนับสนุนการจัดเก็บข้อมูลที่มีโครงสร้างสำหรับตารางขนาดใหญ่

Hive : ช่วยให้สามารถวิเคราะห์ชุดข้อมูลขนาดใหญ่โดยใช้ภาษาที่คล้ายคลึงกับมาตรฐานANSI SQLซึ่งหมายความว่าทุกคนในครอบครัวSQLจะสามารถเข้าถึงข้อมูลในHadoopคลัสเตอร์ได้

หมู : มันเป็นภาษากระแสข้อมูลที่เข้าใจง่าย Hadoopมันจะช่วยให้มีการวิเคราะห์ชุดข้อมูลขนาดใหญ่ซึ่งค่อนข้างสั่งซื้อกับ Pigสคริปต์จะถูกแปลงเป็นMapReduceงานโดยอัตโนมัติโดยPigล่าม

ZooKeeper : เป็นบริการประสานงานสำหรับแอปพลิเคชันแบบกระจาย

Oozie : เป็นschedularระบบเวิร์กโฟลว์เพื่อจัดการHadoopงานApache

Mahout : เป็นห้องสมุดเรียนรู้เครื่องจักรที่ปรับขนาดได้และคลังข้อมูล

Chukwa : เป็นระบบรวบรวมข้อมูลสำหรับจัดการระบบกระจายขนาดใหญ่

Sqoop : มันถูกใช้เพื่อถ่ายโอนข้อมูลจำนวนมากระหว่างHadoopและที่เก็บข้อมูลที่มีโครงสร้างเช่นฐานข้อมูลเชิงสัมพันธ์

Ambari : เป็นเครื่องมือบนเว็บสำหรับจัดเตรียมจัดการและตรวจสอบHadoopกลุ่ม

รัง

HiveHadoopเป็นเครื่องมือที่มีโครงสร้างพื้นฐานคลังข้อมูลในการประมวลผลข้อมูลที่มีโครงสร้างใน มันอยู่ด้านบนของHadoopเพื่อสรุปข้อมูลขนาดใหญ่และทำให้การสืบค้นและการวิเคราะห์ง่ายขึ้น

กลุ่มไม่ใช่

  1. ฐานข้อมูลเชิงสัมพันธ์

  2. การออกแบบสำหรับการประมวลผลธุรกรรมออนไลน์ ( OLTP)

  3. ภาษาสำหรับการสืบค้นตามเวลาจริงและการอัปเดตระดับแถว

คุณสมบัติของไฮฟ์

  1. HDFSมันเก็บคีมาในฐานข้อมูลและการประมวลผลข้อมูลลงใน

  2. OLAPมันถูกออกแบบมาสำหรับ

  3. มันมีSQLภาษาชนิดที่เรียกว่าสำหรับการสอบถามหรือHiveQLHQL

  4. มันเป็นแฟมิลี่ที่รวดเร็วปรับขนาดได้และขยายได้

สถาปัตยกรรมรังผึ้ง

ส่วนประกอบต่อไปนี้มีอยู่ใน Hive Architecture:

  1. ส่วนติดต่อผู้ใช้ : Hiveเป็นโครงสร้างพื้นฐานที่สามารถสร้างปฏิสัมพันธ์ระหว่างผู้ใช้และdata warehouse HDFSส่วนต่อประสานผู้ใช้ที่Hiveรองรับคือ Hive Web UI, บรรทัดคำสั่ง Hive และ Hive HD Insight (ใน Windows Server)

  2. MetaStore : Hiveเลือกตามลำดับdatabase serversเพื่อจัดเก็บสคีมาหรือMetadataของตารางฐานข้อมูลคอลัมน์ในตารางประเภทข้อมูลและHDFSการแมป

  3. HiveQL กระบวนการเครื่องยนต์ : HiveQLมีความคล้ายคลึงกับสำหรับการสอบถามข้อมูลเกี่ยวกับสคีบนSQL Metastoreมันเป็นหนึ่งในวิธีการแทนที่แบบดั้งเดิมสำหรับMapReduceโปรแกรม แทนการเขียนMapReduceในJavaเราสามารถเขียนแบบสอบถามหาMapReduceและประมวลผล

  4. Exceution Engine : ส่วนร่วมของเอ็นจิ้นHiveQLกระบวนการและMapReduceเป็นHiveExecution Engine MapReduce resultsเครื่องมือการดำเนินการประมวลผลแบบสอบถามและสร้างผลเป็นเช่นเดียวกับ MapReduceจะใช้รสชาติของ

  5. HDFS หรือ HBase : Hadoopระบบไฟล์แบบกระจายหรือHBaseเป็นเทคนิคการจัดเก็บข้อมูลเพื่อจัดเก็บข้อมูลลงในระบบไฟล์


1

ก่อนอื่นเราควรจะได้รับที่ชัดเจนว่าHadoopถูกสร้างขึ้นเป็นทางเลือกที่เร็วขึ้นเพื่อRDBMS ในการประมวลผลข้อมูลจำนวนมากในอัตราที่รวดเร็วซึ่งก่อนหน้านี้ใช้เวลานานใน RDBMS

ตอนนี้หนึ่งควรรู้สองคำ:

  1. ข้อมูลที่มีโครงสร้าง : นี่คือข้อมูลที่เราใช้ใน RDBMS ดั้งเดิมและแบ่งออกเป็นโครงสร้างที่กำหนดไว้อย่างดี

  2. ข้อมูลที่ไม่มีโครงสร้าง : สิ่งนี้เป็นสิ่งสำคัญที่ต้องเข้าใจข้อมูลประมาณ 80% ของโลกนั้นไม่มีโครงสร้างหรือกึ่งโครงสร้าง นี่คือข้อมูลที่อยู่ในรูปแบบดิบและไม่สามารถประมวลผลได้โดยใช้ RDMS ตัวอย่าง: facebook, twitter data ( http://www.dummies.com/how-to/content/unstructured-data-in-a-big-data-environment.html )

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

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

Hadoopสามารถกล่าวว่าเป็นเพียงสิ่งที่สอง: MapReduceและHDFS Mapreduce เป็นที่ที่การประมวลผลเกิดขึ้นและ HDFS เป็นฐานข้อมูลที่จัดเก็บข้อมูล โครงสร้างนี้เป็นไปตามหลักการของหนอนคือเขียนครั้งเดียวอ่านหลายครั้ง ดังนั้นเมื่อเราเก็บข้อมูลใน HDFS แล้วเราจะไม่สามารถเปลี่ยนแปลงได้ สิ่งนี้นำไปสู่การสร้างHBASEซึ่งเป็นผลิตภัณฑ์ NOSQL ที่เราสามารถทำการเปลี่ยนแปลงข้อมูลได้หลังจากที่เขียนครั้งเดียว

แต่เมื่อเวลาผ่านไปเราก็เห็นว่า Hadoop มีข้อบกพร่องมากมายและเพื่อที่เราจะสร้างสภาพแวดล้อมที่แตกต่างไปจากโครงสร้าง Hadoop PIG และ HIVE เป็นสองตัวอย่างยอดนิยม

HIVEถูกสร้างขึ้นสำหรับผู้ที่มีพื้นหลังSQL คำสั่งที่เขียนคล้ายกับ SQL ชื่อเป็นHIVEQL HIVE ได้รับการพัฒนาในการประมวลผลอย่างสมบูรณ์ข้อมูลที่มีโครงสร้าง มันไม่ได้ใช้สำหรับข้อมูลที่เก็บไว้

หมูในมืออื่น ๆ มีภาษาแบบสอบถามของตัวเองเช่นละติน มันสามารถใช้สำหรับทั้งโครงสร้างเช่นเดียวกับข้อมูลที่ไม่มีโครงสร้าง

การย้ายไปสู่ความแตกต่างเหมือนเมื่อใช้ HIVE และเมื่อใช้ PIG ฉันไม่คิดว่าคนอื่นนอกจากสถาปนิกของ PIG จะพูดได้ ติดตามลิงค์: https://developer.yahoo.com/blogs/hadoop/comparing-pig-latin-sql-constructing-data-processing-pipelines-444.html


1

Hadoop:

HDFS ย่อมาจาก Hadoop Distributed File System ซึ่งใช้การประมวลผลแบบจำลองการคำนวณแผนที่ - ลด

HBase:

HBase เป็นที่เก็บคีย์ - ค่าเหมาะสำหรับการอ่านและการเขียนแบบเรียลไทม์

Hive:

Hive ใช้สำหรับการดึงข้อมูลจาก HDFS โดยใช้ไวยากรณ์คล้าย SQL ใช้ภาษา HQL

หมู:

Pig เป็นภาษาของ data flow สำหรับการสร้าง ETL มันเป็นภาษาสคริปต์


0

ให้ฉันลองตอบด้วยคำสองสามคำ

Hadoop เป็นระบบนิเวศซึ่งประกอบด้วยเครื่องมืออื่น ๆ ทั้งหมด ดังนั้นคุณไม่สามารถเปรียบเทียบ Hadoop ได้ แต่คุณสามารถเปรียบเทียบ MapReduce

นี่คือไม่กี่เซ็นต์ของฉัน:

  1. ไฮฟ์:ถ้าคุณต้องการ SQLish มากหมายถึงคำแถลงปัญหาของคุณสามารถตอบสนองโดย SQL ดังนั้นสิ่งที่ง่ายที่สุดที่จะทำคือใช้ Hive อีกกรณีหนึ่งเมื่อคุณใช้กลุ่มคือเมื่อคุณต้องการให้เซิร์ฟเวอร์มีโครงสร้างของข้อมูลที่แน่นอน
  2. หมู:ถ้าคุณพอใจกับหมูลาตินและคุณต้องการท่อข้อมูลมากกว่า นอกจากนี้ข้อมูลของคุณยังขาดโครงสร้าง ในกรณีเหล่านั้นคุณสามารถใช้หมู สุจริตไม่มีความแตกต่างมากระหว่าง Hive & Pig เกี่ยวกับกรณีการใช้งาน
  3. MapReduce:หากปัญหาของคุณไม่สามารถแก้ไขได้โดยใช้ SQL แบบตรงคุณควรลองสร้าง UDF สำหรับ Hive & Pig ก่อนแล้วถ้า UDF ไม่แก้ปัญหาจากนั้นทำมันผ่าน MapReduce

0

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


0

1. เราใช้ Hadoop ในการจัดเก็บข้อมูลขนาดใหญ่ (iestructure, Unstructure และ Semist โครงสร้าง data) ในรูปแบบไฟล์ฟอร์มเช่น txt, csv

2. ถ้าเราต้องการการอัปเดตเรียงเป็นแนวในข้อมูลของเราเราจะใช้เครื่องมือ Hbase

3. ในกรณีของไฮฟ์เรากำลังจัดเก็บข้อมูลขนาดใหญ่ซึ่งอยู่ในรูปแบบที่มีโครงสร้างและนอกเหนือจากนั้นเรากำลังให้การวิเคราะห์ข้อมูลนั้น

4.Pig เป็นเครื่องมือที่ใช้ภาษา Pig latin เพื่อวิเคราะห์ข้อมูลที่อยู่ในรูปแบบใด ๆ (โครงสร้างกึ่งโครงสร้างและโครงสร้าง)


0

การล้างข้อมูลในหมูนั้นง่ายมากวิธีการที่เหมาะสมคือการล้างข้อมูลด้วยหมูแล้วประมวลผลข้อมูลผ่านรังและอัพโหลดในภายหลังไปยัง hdfs


0

การใช้ Hive, Hbase และ Pig wrt ประสบการณ์เรียลไทม์ของฉันในโครงการต่างๆ

ไฮฟ์ส่วนใหญ่จะใช้สำหรับ:

  • จุดประสงค์ของการวิเคราะห์ที่คุณต้องทำการวิเคราะห์ข้อมูลประวัติ

  • การสร้างรายงานธุรกิจขึ้นอยู่กับคอลัมน์บางคอลัมน์

  • จัดการข้อมูลอย่างมีประสิทธิภาพพร้อมกับข้อมูลเมตาดาต้า

  • การเข้าร่วมตารางในคอลัมน์บางคอลัมน์ที่ใช้บ่อยโดยใช้แนวคิดการจัดเก็บข้อมูล

  • การจัดเก็บและการสืบค้นที่มีประสิทธิภาพโดยใช้แนวคิดการแบ่งพาร์ติชัน

  • ไม่มีประโยชน์สำหรับการดำเนินการระดับธุรกรรม / แถวเช่นอัปเดตลบ ฯลฯ

หมูส่วนใหญ่จะใช้สำหรับ:

  • การวิเคราะห์ข้อมูลบ่อยครั้งในข้อมูลขนาดใหญ่

  • การสร้างมูลค่า / จำนวนรวมบนข้อมูลขนาดใหญ่

  • การสร้างตัวบ่งชี้ประสิทธิภาพระดับคีย์องค์กรบ่อยมาก

Hbase ส่วนใหญ่จะใช้:

  • สำหรับการประมวลผลข้อมูลตามเวลาจริง

  • สำหรับการจัดการ schema ที่ซับซ้อนและซ้อนกันอย่างมีประสิทธิภาพ

  • สำหรับการสืบค้นตามเวลาจริงและผลลัพธ์ที่เร็วขึ้น

  • เพื่อให้ปรับขยายได้ง่ายด้วยคอลัมน์

  • มีประโยชน์สำหรับการดำเนินการระดับธุรกรรม / แถวเช่นอัปเดตลบ ฯลฯ


0

คำตอบสั้น ๆ สำหรับคำถามนี้คือ -

Hadoop - เป็น Framework ที่อำนวยความสะดวกให้กับระบบไฟล์แบบกระจายและรูปแบบการเขียนโปรแกรมซึ่งช่วยให้เราสามารถจัดเก็บข้อมูลขนาดมหึมาและประมวลผลข้อมูลในรูปแบบการกระจายอย่างมีประสิทธิภาพมากและใช้เวลาประมวลผลน้อยกว่าวิธีการแบบดั้งเดิม

(HDFS - ระบบไฟล์กระจาย Hadoop) (ลดแผนที่ - โมเดลการเขียนโปรแกรมสำหรับการประมวลผลแบบกระจาย)

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

Hbase - เป็นฐานข้อมูล NoSQL เรียงเป็นแนว เลเยอร์การจัดเก็บข้อมูลพื้นฐานสำหรับ Hbase นั้นเป็น HDFS อีกครั้ง กรณีการใช้งานที่สำคัญที่สุดสำหรับฐานข้อมูลนี้คือสามารถจัดเก็บหลายพันล้านแถวด้วยล้านคอลัมน์ คุณลักษณะความหน่วงแฝงต่ำของ Hbase ช่วยให้การเข้าถึงเรกคอร์ดแบบเร็วกว่าและเข้าถึงข้อมูลแบบกระจายเป็นคุณลักษณะที่สำคัญมากที่จะทำให้มีประโยชน์สำหรับโครงการที่ซับซ้อนเช่นเอนเดอร์เอ็นจิ้น นอกจากนี้ยังมีความสามารถในการกำหนดรุ่นระดับระเบียนให้ผู้ใช้สามารถจัดเก็บข้อมูลธุรกรรมได้อย่างมีประสิทธิภาพ (ซึ่งจะช่วยแก้ปัญหาการอัปเดตระเบียนที่เรามีด้วย HDFS และ Hive)

หวังว่านี่จะเป็นประโยชน์ในการทำความเข้าใจคุณสมบัติ 3 ข้อข้างต้นอย่างรวดเร็ว


0

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

เช่นเดียวกับในกรณีการใช้งานจำนวนมากมีความต้องการเฉพาะของ SQL like หรือ No-SQL like interfaces ด้วย Phoenix ที่อยู่เหนือ HBase แม้ว่าความสามารถด้าน SQL จะสามารถทำได้อย่างแน่นอนอย่างไรก็ตามประสิทธิภาพการผสานรวมของบุคคลที่สามการอัพเดทแดชบอร์ดเป็นประสบการณ์ที่เจ็บปวด อย่างไรก็ตามมันเป็นตัวเลือกที่ยอดเยี่ยมสำหรับฐานข้อมูลที่ต้องการปรับสเกลแนวนอน

โดยเฉพาะอย่างยิ่งหมูที่ยอดเยี่ยมสำหรับชุดที่ไม่เกิดซ้ำเช่นการคำนวณหรือท่อส่ง ETL (บางแห่งที่มันมีประสิทธิภาพสูงกว่า Spark โดยระยะทางที่สะดวกสบาย) นอกจากนี้ยังมีการใช้งาน dataflow ในระดับสูงเป็นตัวเลือกที่ยอดเยี่ยมสำหรับการทำแบบสอบถามและสคริปต์ ตัวเลือกระหว่าง Pig และ Hive นั้นสำคัญกับความต้องการของไคลเอนต์หรือสคริปต์ฝั่งเซิร์ฟเวอร์, รูปแบบไฟล์ที่ต้องการ, ฯลฯ Pig รองรับรูปแบบไฟล์ Avro ซึ่งไม่เป็นจริงในกรณีของ Hive ตัวเลือกสำหรับ 'ภาษาดาต้าโฟลว์ขั้นตอน' กับ 'ภาษาการไหลของข้อมูลที่เปิดเผย' ยังเป็นข้อโต้แย้งที่แข็งแกร่งสำหรับตัวเลือกระหว่างหมูกับรัง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.