Open rainit2006 opened 7 years ago
Pipeline
AWS Data Pipeline では、パイプラインでどのようなアクションを実行でき、どのリソースにアクセスできるかを IAM ロールで定義する必要があります。さらに、パイプラインで EC2 インスタンスや EMR クラスターなどのリソースを作成すると、IAM ロールによって、アプリケーションが実行できるアクションとアクセスできるリソースが決定します。 AWS Data Pipeline コンソールでは、次のロールが自動的に作成されます。 •DataPipelineDefaultRoleAWS Data Pipeline が AWS リソースにアクセスすることを許可 •DataPipelineDefaultResourceRole - EC2 インスタンス上のアプリケーションが AWS リソースにアクセスすることを許可
教程 http://gihyo.jp/dev/serial/01/emr
EMR起動方法:Web ConsoleとAPIの違い Webコンソールは,1回の操作でJobを1つしか実行できません。 一方APIを使用すると,1回の起動で複数のJobを実行できます。 EMRで使用できるAPIは言語ごとにいくつか用意されています: C#, Java、PHPなど。
Web Consoleでデバッグモードを使用するには: Web Consoleでは,Jobを作成する際にデバッグモードを使用するように設定しておく必要があります。 Java SDKでデバッグするには: RunJobFlowRequestに渡すパラメータとして,デバッグ用のステップコンフィグを定義します。
bootstrap Amazon Elastic Mapreduce(EMR)では,起動時にHadoopのオプションなどを設定できるbootstrapというものが用意されています。うまく利用すれば,細かくHadoopのチューニングをしたり,Jobが起動する前に前処理を行ったりすることができます。
Amazon Elastic MapReduceのパフォーマンスを引き出すためのHadoopの基礎知識
Map: splitという単位で分散され,ユーザが特に意識することはない Reduce: 実際にReduceさせる数をユーザが指定する。デフォルト値は1(1つしかReduceが起動されない)
Map数はsplitという単位で分散されると前述しましたが,splitの単位はユーザが設定することができます。具体的には以下の2つの方法があります。 ①mapred-site.xmlに下記のように記述する
②コード中で指定する(以下はJavaの場合)
何も指定しないのであれば,デフォルトは「HDFSブロックサイズ=splitサイズ」となります。 デフォルトでは「HDFSのブロックサイズ=split数」です。EMRの場合はHDFSではなくS3を使用するので,「S3のファイル数=split数」となってしまいます。
EMRでMap数を増やすには以下のようにすることをお勧めします。