S3対EC2 HDFSからのファイル読み込みのパフォーマンスの違いは何ですか?また、両方のケースでどのように動作するか説明してください。Apache Spark Peromance S3対EC2 HDFS
答えて
ここでは、このトピックに関する美しい記事があります。締結する
storing-apache-hadoop-data-cloud-hdfs-vs-s3
:スケーラビリティ、組み込みの永続性、および低価格で、S3が勝者です!それにもかかわらず、パフォーマンスを向上させ、ファイルサイズやストレージフォーマットの制限をなくすために、HDFSを使用する方法があります。
S3からファイルにアクセスする際、URIスキームs3aを使用するとs3nよりもパフォーマンスが向上し、s3aでは5GBのファイルサイズ制限はありません。
val data = sc.textFile("s3a://bucket-name/key")
あなたは
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
リーディングS3が開始を指すように設定されているコンテンツ-Rangeヘッダを有する認証HTTPSリクエストを行うの問題である。例えば、このようなスパークのためのScalaのjarファイルをsumbitでき(これはオプションであり、シークヘビーなORCとパーケットの入力には避ける必要があります)。
主要業績ポイント:
- 読む:あなたがアクセスの局所性を得ることはありません。ネットワーク帯域幅は、レンタルするVMによって制限されます。
- S3はシークで遅いですが、近いうちにHadoop 2.8で取り上げられています。
- S3はメタデータ操作(リスト、
getFileStatus()
)で遅くなります。これは仕事のセットアップを傷つける。 - 書き込み:その前のHadoop 2.8を除き、クライアントは
close()
までお待ちください。は遅延を追加します。 rename()
:本当にCOPYです。タスクやジョブをコミットするためにrename()が使用されるため、s3を作業の宛先として使用するとパフォーマンスが低下します。最終的にS3が一貫しているので、とにかくデータを失う可能性があります。 に書き込んでからs3a://
どのように実装されていますか? Apache Hadoopのソースツリーで抽象度org.apache.fs.FileSystem
クラスの実装を調べてください。 HDFSとS3Aは両方の例です。ここにはthe S3A oneがあります。より速いランダムIOのためのHadoop 2.8 lazy seekとfadvise = randomオプションを持つ入力ストリームはS3AInputStreamです。
記事を見ると、もう1つの答えがカバーされています。これは、3GBの5GBに限定されたS3についての記事です。議論の両面でいくつかの重要な点を欠場する。
私は、S3が最初に「S3は圧縮をサポートしています!」との偏見を持っていたと思う:と、両方の側面のいくつかの無知。 (ヒント、parquetとORCの両方がseek()を必要としているが、Content-Range HTTPヘッダを使ってS3クライアントとS3Aクライアントで行う)
S3はEMR以外のシステムでは危険な場所です中間データを格納し、パフォーマンスを犠牲にして、作業の非効率的な宛先になります。これは、ワークフローの次の段階で新しく作成されたデータが取得されない可能性があり、大きなデータセットではrename()
のコミット作業が機能しないことを意味します。あなたのHadoopのバージョンを一致させるためにアマゾン-S3 SDKのJARのバージョンが必要になりますすべて開発中でうまく動作するようだが、規模の問題は、サンプルコードを見てみると
を打つところ生産があり、
- ; 1.7.4のHadoop 2.7用です。それは非常に脆弱であることが証明されています。
- s3aの秘密をspark-defaults.confに入れるのが最適です。 AWS_環境変数のままにしておき、spark-submitによってそれらを自動的に伝播させることができます。それらをコマンドラインに置くと、
ps
コマンドで表示され、その必要はありません。 - S3aは実際にIAM認証を使用します:EC2 VMに提出する場合は、起動時にVMに与えられた資格情報を受け取るので、秘密を提供する必要はありません。
あなたはスパークSQLを使用することを計画している場合は、お使いの外部表は、S3を指している場合は、SPARKのSQLが大幅に退行
org.apache.spark.shuffle.FetchFailedException: Too large frame
、java.lang.OutOfMemoryErrorなどのメモリの問題が発生する可能性もあります。シャッフルブロックが2GBを超えると、シャッフルが失敗します。この問題は、外部テーブルがS3を指している場合に発生します。 HDFSに
SPARKのSQLパフォーマンスが50%速く50MM/10Gデータセットに
- 1. Apache Spark(Structured Streaming):S3チェックポイントのサポート
- 2. EC2対ElasticMapReduce/S3のHadoop
- 3. Apache Sparkで使用するHDFS-GPFSコネクタ
- 4. Spark need HDFS
- 5. S3対EC2にSPA(angular2)をデプロイ
- 6. NIFI(S3 to HDFS)
- 7. apache sparkのディスジョイントセット
- 8. Apache SparkでテキストファイルのHDFSを作成するには?
- 9. PySpark - SparkクラスタEC2 - S3に保存できません
- 10. Apache Flume + Hdfsシンク
- 11. Mongodb map reduce対Apache Spark map reduce
- 12. apache sparkストラクチャードストリーミング
- 13. apache spark implementation
- 14. HerokuにApache Sparkをデプロイ
- 15. Spark + Amazon S3 "s3a://" urls
- 16. apache nifi、hdfs parquet format
- 17. hdfsファイルをsparkコンテキストにロード
- 18. HBFSとSparkとHDFSのスパーク
- 19. Spark 1.6でのHDFSユニットテスト
- 20. S3 Proxy to EC2 Inst
- 21. Spark unzip from S3
- 22. Spark 1.6.1 S3 MultiObjectDeleteException
- 23. S3からHDFSにコピーして解凍する
- 24. Apache SparkでカラムをS3に分割する
- 25. HDFSはDistcp S3に - S3バケットにHDFSからファイルをコピーするためのアクセスキー
- 26. :ローカルファイルをHDFS対
- 27. RDBMSからhdfsにデータを転送する際のApache Spark-SQLとSqoopのベンチマーク
- 28. Apache SparkとApache Ignite
- 29. RDDとApache Sparkのパーティション
- 30. Spark Streaming + Hbase:NoClassDefFoundError:org/apache/hadoop/hbase/spark/HBaseContext