Was ist der Leistungsunterschied in Funken lesen Datei von S3 vs EC2 HDFS. Bitte erläutern Sie auch, wie es in beiden Fällen funktioniert?Apache Spark Peromance S3 vs EC2 HDFS
Antwort
Hier ist ein schöner Artikel zu diesem Thema, den Sie durchlaufen müssen.
storing-apache-hadoop-data-cloud-hdfs-vs-s3
Fazit: Mit einer besseren Skalierbarkeit, integrierte in Ausdauer und niedrigere Preise, S3 Gewinner ist! Nichtsdestotrotz ist HDFS für eine bessere Leistung und keine Dateigrößen oder Speicherformate die richtige Wahl.
Beim Zugriff auf Dateien von S3, gibt die Verwendung von URI Schema s3a mehr Leistung als s3n und auch s3a gibt es keine 5 GB Dateigröße Grenze.
val data = sc.textFile("s3a://bucket-name/key")
Sie können die scala JAR-Datei für die Funken wie dies zum Beispiel sumbit
spark-submit \
--master local[2] \
--packages datastax:spark-cassandra-connector:2.0.0-M2-s_2.11,org.apache.hadoop:hadoop-aws:2.7.3 \
--conf spark.hadoop.fs.s3a.impl=org.apache.hadoop.fs.s3a.S3AFileSystem \
--conf spark.hadoop.fs.s3a.access.key=xxxx \
--conf spark.hadoop.fs.s3a.secret.key=xxxxxxx \
--class org.etl.jobs.sprint.SprintBatchEtl \
target/scala-2.11/test-ingestion-assembly-0.0.1-SNAPSHOT.jar
Lesen S3 ist eine Frage der Durchführung der Authentifizierung HTTPS-Anfragen mit dem Inhalt-Bereich-Header auf dem Start-zu-Punkt von das Lesen (0 oder der Ort, an dem Sie gerade versucht haben) und das Ende (in der Vergangenheit das Ende der Datei; dies ist jetzt optional und sollte für die schwer zu suchenden ORC- und Parquet-Eingaben vermieden werden).
Key Performance Punkte:
- lesen: Sie nicht über die Ortschaft Zugang zu erhalten; Netzwerkbandbreite begrenzt durch die von Ihnen gemieteten VMs.
- S3 ist viel langsamer auf sucht, teilweise in der bevorstehenden Hadoop 2.8
- S3 ist Weg, viel langsamer auf Metadaten-Operationen (Liste,
getFileStatus()
). Dies beeinträchtigt die Einrichtung des Jobs. - Schreiben: nicht so schlimm, außer dass vor Hadoop 2.8 der Client wartet, bis die
close()
Aufruf, um den Upload zu tun, die kann Verzögerungen hinzufügen. rename()
: wirklich eine Kopie; Da rename() zum Übertragen von Aufgaben und Jobs verwendet wird, beeinträchtigt dies die Leistung, wenn s3 als Arbeitsziel verwendet wird. Da S3 schließlich konsistent ist, könnten Sie trotzdem Daten verlieren. Schreiben Sie anhdfs://
dann kopieren Sie ans3a://
Wie ist das implementiert? Suchen Sie im Apache Hadoop-Quellbaum nach den Implementierungen der abstrakten Klasse org.apache.fs.FileSystem
; HDFS und S3A sind beide Beispiele. Hier ist the S3A one. Der Eingabestream mit der Option Hadoop 2.8 true seek und fadvise = random für schnelleres Random IO ist S3AInputStream.
auf dem Artikel der Suche die andere Antwort deckt, es ist ein drei Jahre alter Artikel spricht über S3, wenn es um 5 GB begrenzt war; verpasst einige Schlüsselpunkte auf beiden Seiten des Arguments.
Ich denke, der Autor eine gewisse Tendenz in Richtung S3 in erster Linie hatte „S3 unterstützt Kompression“ :, sowie einige Unkenntnis Aspekte von beidem. (Hinweis, während Parkett und ORC suchen müssen(), tun wir dies in den S3N und S3a S3-Clients über die Content-Range-HTTP-Header)
S3 ist, auf Nicht-EMR-Systemen, ein gefährlicher Ort zu Zwischendaten speichern und leistungsmäßig ein ineffizientes Ziel der Arbeit.Dies liegt an seiner eventuellen Konsistenz, was bedeutet, dass neu erstellte Daten möglicherweise nicht von der nächsten Stufe des Workflows übernommen werden, und weil die Arbeit mit rename()
nicht mit großen Datensätzen funktioniert. Es scheint alles gut in der Entwicklung zu arbeiten, aber die Produktion ist, wo die Skala Probleme
am Beispielcode Sehen,
- Sie verlassen nun die Version von amazon-s3 SDK JAR benötigen eine Hadoop-Versionen übereinstimmen ; für Hadoop 2.7 ist das 1.7.4. Das ist sehr spröde.
- am besten, um die s3a-Geheimnisse in spark-defaults.conf; oder belassen Sie sie als AWS_-Umgebungsvariablen und lassen Sie sie von funke-submit automatisch propagieren. Wenn Sie sie in die Befehlszeile einfügen, werden sie in einem Befehl
ps
sichtbar, und das wollen Sie nicht. - S3a verwendet tatsächlich die IAM-Authentifizierung: Wenn Sie eine EC2-VM einreichen, sollten Sie keine Geheimnisse angeben, da die zum Zeitpunkt des Starts der VM angegebenen Anmeldeinformationen abgerufen werden.
Wenn Sie planen, Spark-SQL zu verwenden, dann möchten Sie vielleicht unter
Wenn Ihre externe Tabellen S3 zeigen sind zu prüfen, regrediert SPARK SQL erheblich. Sie könnten sogar Speicherproblem wie
org.apache.spark.shuffle.FetchFailedException: Too large frame
, java.lang.OutOfMemoryErrorEine weitere Beobachtung begegnen, Wenn ein Shuffle-Block über 2 GB ist, schlägt der shuffle. Dieses Problem tritt auf, wenn externe Tabellen auf S3 zeigen.
SPARK SQL-Performance auf HDFS ist 50% schneller auf 50MM/10G-Datensatz verglichen mit S3
- 1. Apache Spark auf EC2 "Killed"
- 2. Apache Spark vs Apache Spark 2
- 3. Apache Spark vs Apache Storm
- 4. Apache Drill vs Spark
- 5. Wie weiß Apache Spark über HDFS-Datenknoten?
- 6. Hadoop auf EC2 vs. ElasticMapReduce/S3
- 7. Apache Phoenix vs Hive-Spark
- 8. Spark Notwendigkeit von HDFS
- 9. Kopieren und entpacken von S3 nach HDFS
- 10. Spark läuft auf EC2 vs EMR
- 11. Spark: hdfs Cluster-Modus
- 12. Langsamer JNI-basierter Spark-Job auf EC2
- 13. Verwenden von Dateien aus HDFS in Apache Spark-
- 14. PySpark - Spark-Cluster EC2 - Speichern unter S3 nicht möglich
- 15. Spark auf EC2 - S3 Endpoint für Scala nicht auflösen
- 16. von EC2 Spark Python, wie auf S3-Datei zugreifen
- 17. Apache Spark-SQL vs Sqoop Benchmarking beim Übertragen von Daten aus RDBMS zu HDFs
- 18. Spark EC2 Verbindung abgelehnt
- 19. Apache Spark Streaming vs Spring XD Streams
- 20. Spark iterate HDFS Verzeichnis
- 21. Einrichten eines Apache Spark-Cluster auf Amazon EC2 Mit CMD
- 22. Datei nicht gefunden - API Apache Spark-Jobs auf EC2
- 23. Apache Spark Stderr und Stdout
- 24. Apache Spark-Implementierung
- 25. Zugang öffentlich verfügbar Amazon S3-Datei von Apache Spark
- 26. Schnelle Hadoop-Analyse (Cloudera Impala vs Spark/Shark vs Apache Drill)
- 27. Abfrage hdfs mit Spark Sql
- 28. Get hdfs Dateipfad in Spark
- 29. Spark DataFrame vs sqlContext
- 30. CloudStore vs. HDFS