Amazon Elastic Mapに大きなデータセットを取得すると、削減されます
-
22-10-2019 - |
質問
Amazon EMRを使用してプレイしたい大きなデータセット(25GB+、インターネットでダウンロード可能)がいくつかあります。データセットを自分のコンピューターにダウンロードしてからAmazonに再アップロードする代わりに、データセットをAmazonに移動する最良の方法は何ですか?
EC2インスタンスを起動し、インスタンス内からデータセット(WGETを使用して)をS3にダウンロードしてから、EMRジョブを実行するときにS3にアクセスしますか? (私はこれまでAmazonのクラウドインフラストラクチャを使用したことがないので、私が言ったことが理にかなっているかどうかはわかりません。)
解決
次のことをお勧めします...
EMRクラスターを起動します
elastic-mapreduce --create --alive --other-options-here
マスターノードにログオンし、そこからデータをダウンロードします
wget http:// blah/data
HDFSにコピーします
hadoop fs -copyFromLocal data /data
元のデータセットをS3に配置する本当の理由はありません。結果を保持したい場合は、クラスターをシャットダウンする前に、結果をS3に移動できます。
データセットが複数のファイルで表されている場合は、クラスターを使用してマシン全体で並行してダウンロードできます。これが当てはまるかどうか教えてください、そして私はあなたにそれを説明します。
マット
他のヒント
EMRを始めて実験したばかりの場合、S3でこれらを必要としているので、インタラクティブなHadoopセッションを開始する必要はありません(代わりにAWSコンソールを介してEMRウィザードを使用します)。
最良の方法は、S3バケツと同じ領域でマイクロインスタンスを開始し、WGETを使用してそのマシンにダウンロードしてから、次のようなものを使用することです。 S3CMD (おそらくインスタンスにインストールする必要があります)。 ubuntuで:
wget http://example.com/mydataset dataset
sudo apt-get install s3cmd
s3cmd --configure
s3cmd put dataset s3://mybucket/
インスタンスと同じ地域にS3バケットが必要な理由は、追加のデータ転送料金を回避するためです。 WGETのインスタンスにバインドされた帯域幅で請求されますが、XFerからS3は無料になります。
私はそれについてはわかりませんが、私にとっては、Hadoopがあなたのソースから直接ファイルをダウンロードできるはずだと思われます。
入力するだけです http:// blah/data あなたの入力として、そしてHadoopは残りをするべきです。確かにS3で動作しますが、なぜHTTPで動作しないのですか?