มีการพึ่งพาระหว่างSparkและHadoopหรือไม่?
ถ้าไม่มีคุณสมบัติใดบ้างที่ฉันจะพลาดเมื่อเรียกใช้Sparkโดยไม่มีHadoop ?
มีการพึ่งพาระหว่างSparkและHadoopหรือไม่?
ถ้าไม่มีคุณสมบัติใดบ้างที่ฉันจะพลาดเมื่อเรียกใช้Sparkโดยไม่มีHadoop ?
คำตอบ:
Spark สามารถทำงานได้โดยไม่ต้อง Hadoop แต่ฟังก์ชันบางอย่างต้องอาศัยรหัสของ Hadoop (เช่นการจัดการไฟล์ Parquet) เรากำลังใช้งาน Spark บน Mesos และ S3 ซึ่งค่อนข้างยุ่งยากในการตั้งค่า แต่ใช้งานได้ดีจริง ๆ เมื่อทำเสร็จแล้ว (คุณสามารถอ่านสรุปสิ่งที่จำเป็นในการตั้งค่าอย่างถูกต้องได้ที่นี่ )
(แก้ไข) หมายเหตุ: ตั้งแต่เวอร์ชัน 2.3.0 Spark ยังเพิ่มการรองรับเนทีฟสำหรับ Kubernetes
Sparkเป็นเอนจินการประมวลผลแบบกระจายในหน่วยความจำ
Hadoopเป็นเฟรมเวิร์กสำหรับพื้นที่จัดเก็บแบบกระจาย ( HDFS ) และการประมวลผลแบบกระจาย ( YARN )
Spark สามารถทำงานโดยมีหรือไม่มีส่วนประกอบ Hadoop (HDFS / YARN)
เนื่องจากSparkไม่มีระบบจัดเก็บข้อมูลแบบกระจายของตัวเองจึงต้องพึ่งพาระบบจัดเก็บข้อมูลเหล่านี้สำหรับการประมวลผลแบบกระจาย
S3 - งานแบทช์ที่ไม่เร่งด่วน S3 เหมาะกับกรณีการใช้งานที่เฉพาะเจาะจงมากเมื่อพื้นที่ข้อมูลไม่สำคัญ
Cassandra - เหมาะสำหรับการวิเคราะห์ข้อมูลแบบสตรีมมิ่งและการใช้งานมากเกินไปสำหรับงานแบทช์
HDFS - เหมาะอย่างยิ่งสำหรับงานแบทช์โดยไม่กระทบกับพื้นที่ข้อมูล
คุณสามารถเรียกใช้ Spark ในสามโหมดที่แตกต่างกัน: แบบสแตนด์อโลน, YARN และ Mesos
ดูคำถาม SE ด้านล่างสำหรับคำอธิบายโดยละเอียดเกี่ยวกับทั้งพื้นที่จัดเก็บแบบกระจายและการประมวลผลแบบกระจาย
โดยค่าเริ่มต้น Spark ไม่มีกลไกการจัดเก็บ
ในการจัดเก็บข้อมูลจำเป็นต้องมีระบบไฟล์ที่รวดเร็วและปรับขนาดได้ คุณสามารถใช้ S3 หรือ HDFS หรือระบบไฟล์อื่น ๆ Hadoop เป็นตัวเลือกที่ประหยัดเนื่องจากต้นทุนต่ำ
นอกจากนี้หากคุณใช้ Tachyon จะช่วยเพิ่มประสิทธิภาพด้วย Hadoop ขอแนะนำ Hadoop สำหรับการประมวลผล apache spark
ใช่ประกายไฟสามารถทำงานได้โดยไม่ต้องมีฮารูป ฟีเจอร์จุดประกายหลักทั้งหมดจะยังคงทำงานต่อไป แต่คุณจะพลาดสิ่งต่างๆเช่นการแจกจ่ายไฟล์ทั้งหมดของคุณอย่างง่ายดาย (รหัสและข้อมูล) ไปยังโหนดทั้งหมดในคลัสเตอร์ผ่าน hdfs เป็นต้น
ตามเอกสารของ Spark Spark สามารถทำงานได้โดยไม่ต้องมี Hadoop
คุณสามารถเรียกใช้เป็นโหมดสแตนด์อโลนโดยไม่ต้องมีตัวจัดการทรัพยากรใด ๆ
แต่ถ้าคุณต้องการเรียกใช้ในการตั้งค่าแบบหลายโหนดคุณต้องมีตัวจัดการทรัพยากรเช่น YARNหรือ Mesos และระบบไฟล์แบบกระจายเช่น HDFS, S3 เป็นต้น
ได้คุณสามารถติดตั้ง Spark ได้โดยไม่ต้องใช้ Hadoop นั่นจะยุ่งยากเล็กน้อยคุณสามารถอ้างถึงลิงก์ arnon เพื่อใช้ไม้ปาร์เก้เพื่อกำหนดค่าบน S3 เป็นที่จัดเก็บข้อมูล http://arnon.me/2015/08/spark-parquet-s3/
Spark เป็นเพียงการประมวลผลและใช้หน่วยความจำแบบไดนามิกในการทำงาน แต่ในการจัดเก็บข้อมูลคุณต้องมีระบบจัดเก็บข้อมูล ที่นี่ hadoop เข้ามามีบทบาทกับ Spark ซึ่งให้ที่เก็บข้อมูลสำหรับ Spark อีกเหตุผลหนึ่งในการใช้ Hadoop กับ Spark ก็คือพวกเขาเป็นโอเพ่นซอร์สและทั้งสองสามารถรวมเข้าด้วยกันได้ง่ายเมื่อเปรียบเทียบกับระบบจัดเก็บข้อมูลอื่น ๆ สำหรับพื้นที่เก็บข้อมูลอื่น ๆ เช่น S3 คุณควรกำหนดค่าให้ยุ่งยากเช่นการกล่าวถึงในลิงค์ด้านบน
แต่ Hadoop ยังมีหน่วยประมวลผลที่เรียกว่า Mapreduce
ต้องการทราบความแตกต่างของทั้งสองหรือไม่?
ตรวจสอบบทความนี้: https://www.dezyre.com/article/hadoop-mapreduce-vs-apache-spark-who-wins-the-battle/83
ฉันคิดว่าบทความนี้จะช่วยให้คุณเข้าใจ
จะใช้อะไร
เมื่อใดควรใช้และ
วิธีใช้ !!!
ใช่แน่นอน Spark เป็นกรอบการคำนวณอิสระ Hadoop เป็นระบบจัดเก็บข้อมูลแบบกระจาย (HDFS) ที่มีกรอบการคำนวณ MapReduce Spark สามารถรับข้อมูลจาก HDFS เช่นเดียวกับแหล่งข้อมูลอื่น ๆ เช่นฐานข้อมูลดั้งเดิม (JDBC) คาฟคาหรือแม้แต่โลคัลดิสก์
ใช่ Spark สามารถทำงานโดยมีหรือไม่มีการติดตั้ง Hadoop สำหรับรายละเอียดเพิ่มเติมที่คุณสามารถเยี่ยมชมได้ - https://spark.apache.org/docs/latest/
ใช่ประกายไฟสามารถทำงานได้โดยไม่ต้องมี Hadoop คุณสามารถติดตั้ง spark ในเครื่องของคุณได้โดยไม่ต้องใช้ Hadoop แต่ Spark lib มาพร้อมกับไลบรารี Haddop ก่อนเช่นใช้ในขณะติดตั้งบนเครื่องของคุณ
ไม่จำเป็นต้องติดตั้ง Hadoop แบบเต็มเพื่อเริ่มทำงาน - https://issues.apache.org/jira/browse/SPARK-10944
$ ./spark-shell Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/fs/FSDataInputStream at org.apache.spark.deploy.SparkSubmitArguments$$anonfun$mergeDefaultSparkProperties$1.apply(SparkSubmitArguments.scala:118) at org.apache.spark.deploy.SparkSubmitArguments$$anonfun$mergeDefault at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 7 more