Jak skopiować pliki z S3 do Amazon EMR HDFS?

I ' m running hive over EMR, i trzeba skopiować niektóre pliki do wszystkich instancji EMR.

Jednym ze sposobów, jak rozumiem, jest kopiowanie plików do lokalnego systemu plików na każdym węźle, drugim jest kopiowanie plików do HDFS, jednak nie znalazłem prostego sposobu na skopiowanie Straight z S3 do HDFS.

Jaki jest najlepszy sposób na to?

Author: jldupont, 2011-09-20

3 answers

Najlepszym sposobem na to jest użycie polecenia Distcp Hadoop. Przykład (na jednym z węzłów klastra):

% ${HADOOP_HOME}/bin/hadoop distcp s3n://mybucket/myfile /root/myfile

To skopiuje plik o nazwie myfile z zasobnika S3 o nazwie mybucket do /root/myfile w HDFS. Zauważ, że ten przykład zakłada, że używasz systemu plików S3 w trybie "natywnym"; oznacza to, że Hadoop widzi każdy obiekt w S3 jako plik. Jeśli używasz S3 w trybie blokowym zamiast tego, zastąpisz s3n przez S3 w powyższym przykładzie. Więcej informacji o różnicach między natywne S3 i tryb blokowy, a także opracowanie na powyższym przykładzie, zobacz http://wiki.apache.org/hadoop/AmazonS3 .

Odkryłem, że distcp jest bardzo potężnym narzędziem. Oprócz możliwości kopiowania dużej ilości plików z I do S3, można również wykonywać szybkie kopie klastrowe z dużymi zestawami danych. Zamiast przepychać wszystkie dane przez jeden węzeł, distcp używa wielu węzłów równolegle do przesyłania danych. To sprawia, że distcp znacznie szybsze przy przesyłaniu dużych ilości danych, w porównaniu z alternatywą kopiowania wszystkiego do lokalnego systemu plików jako pośrednika.

 28
Author: Patrick Salami,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-03 17:11:27

Teraz sam Amazon ma wrapper zaimplementowany przez distcp, a mianowicie : s3distcp .

S3DistCp jest rozszerzeniem DistCp zoptymalizowanym do pracy z Amazon Web Services (AWS), w szczególności Amazon Simple Storage Service (Amazon S3). Używasz S3DistCp, dodając go jako krok w przepływie zadań. Za pomocą S3DistCp można efektywnie kopiować duże ilości danych z Amazon S3 do HDFS, gdzie może być przetwarzany przez kolejne kroki w Twoja Amazonka elastyczna MapReduce (Amazon EMR) job flow. Możesz również użyć S3DistCp do kopiowania danych między łyżkami Amazon S3 lub z HDFS do Amazon S3

Przykładowe kopiowanie plików dziennika z Amazon S3 do HDFS

Poniższy przykład ilustruje, jak skopiować pliki dziennika przechowywane w zasobniku Amazon S3 do HDFS. W tym przykładzie użyto opcji --srcPattern, aby ograniczyć dane kopiowane do dzienników demona.

elastic-mapreduce --jobflow j-3GY8JC4179IOJ --jar \
s3://us-east-1.elasticmapreduce/libs/s3distcp/1.latest/s3distcp.jar \
--args '--src,s3://myawsbucket/logs/j-3GY8JC4179IOJ/node/,\
--dest,hdfs:///output,\
--srcPattern,.*daemons.*-hadoop-.*'
 15
Author: Amar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-17 18:09:08

Zauważ, że według Amazona, w http://docs.amazonwebservices.com/ElasticMapReduce/latest/DeveloperGuide/FileSystemConfig.html "Amazon Elastic MapReduce-File System Configuration", S3 Block FileSystem jest przestarzały, a jego przedrostek URI to teraz s3bfs: / / i szczególnie zniechęcają do używania go, ponieważ "może wywołać stan wyścigu, który może spowodować niepowodzenie przepływu pracy".

Według tej samej strony, HDFS jest teraz' pierwszą klasą ' systemu plików pod S3, chociaż jest efemeryczny (odchodzi, gdy kończy się praca Hadoop).

 4
Author: Dror Harari,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-07 16:20:03