質問

Amazon EMRを使用してプレイしたい大きなデータセット(25GB+、インターネットでダウンロード可能)がいくつかあります。データセットを自分のコンピューターにダウンロードしてからAmazonに再アップロードする代わりに、データセットをAmazonに移動する最良の方法は何ですか?

EC2インスタンスを起動し、インスタンス内からデータセット(WGETを使用して)をS3にダウンロードしてから、EMRジョブを実行するときにS3にアクセスしますか? (私はこれまでAmazonのクラウドインフラストラクチャを使用したことがないので、私が言ったことが理にかなっているかどうかはわかりません。)

役に立ちましたか?

解決

次のことをお勧めします...

  1. EMRクラスターを起動します

    elastic-mapreduce --create --alive --other-options-here

  2. マスターノードにログオンし、そこからデータをダウンロードします

    wget http:// blah/data

  3. 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で動作しないのですか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top