Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

AWS Black Belt Techシリーズ Amazon EMR

19,246 views

Published on

AWS Black Belt Tech Webinar 2014
(旧マイスターシリーズ)

Amazon EMR

Published in: Technology

AWS Black Belt Techシリーズ Amazon EMR

  1. 1. Amazon Elastic MapReduce AWS Black Belt Tech Webinar 2014 (旧マイスターシリーズ) 2014/10/1 ソリューションアーキテクト 蒋 逸峰
  2. 2. Agenda • Amazon EMRとは? • 主要アップデート • ベストプラクティス • プラットフォームとしてのAmazon EMR • まとめ
  3. 3. Agenda • Amazon EMRとは? • 主要アップデート • ベストプラクティス • プラットフォームとしてのAmazon EMR • まとめ
  4. 4. AWSのビッグデータサービス群 収集 保存 解析 可視化 Hadoop Service Data Warehouse 4 Stream Processing Amazon Kinesis Cloud Storage Amazon S3 NoSQL Amazon DynamoDB Amazon EMR Amazon Redshift BI Tools Amazon EC2 RDBMS Amazon RDS Data Flow AWS Data Pipeline
  5. 5. Hadoop-­‐as-­‐a-­‐service What is EMR? Map-­‐Reduce エンジン ビッグデータツール連携 大規模分散処理 コスト メリット AWSサービス連携
  6. 6. Amazon EMRのご紹介 • たった数分間であらゆるサイズのクラスタを起動 • 多くのインスタンスサイズから要件に最適したもの を選ぶ
  7. 7. Amazon EMRのご紹介 • キャパシティ プランニング不不要 • ハードウェア運⽤用から開放 • 異異なるサイズ、スペックやノードタイプのクラスタ を同時に複数起動可能
  8. 8. EMRアーキテクチャ Amazon EMR cluster JobTracker NameNode Hive Pig Node management Master node TaskTracker DataNode HDFS Core node Core instance group TaskTracker Task node AWS Cloud Master instance group Task instance group
  9. 9. EMRマスタノード マスタノードが1つ存在 • マスタノードのフェイルオ ーバーは⾮非対応 マスタノード • NameNode, JobTrackerを実 ⾏行行 • コアノードやタスクノード の状態モニタリング Hadoopのマスタノードに相当 Amazon EMR cluster JobTracker NameNode Hive Pig Node management Master node AWS Cloud Master instance group
  10. 10. Amazon EMRコアノード • TaskTrackerを実⾏行行 (MapReduce) • DataNodeを実⾏行行 (HDFS) • 動的追加可能 Master instance group Amazon EMR cluster HDFS HDFS Core instance group
  11. 11. Amazon EMRコアノード • 動的追加可能 – HDFS容量量増 – CPU/RAM増 • HDFSを持っているため、 ノードの追加のみ、 削除はできない Master instance group Amazon EMR cluster HDFS HDFS HDFS Core instance group
  12. 12. Amazon EMRタスクノード • TaskTrackerを実⾏行行 • No HDFS • Amazon S3や コアノードのHDFS から読込 Master instance group Amazon EMR cluster HDFS HDFS Core instance group Task instance group
  13. 13. Amazon EMRタスクノード • 動的追加可能 – CPU/RAM増 • ノードの削除も可能 Master instance group Amazon EMR cluster HDFS HDFS Core instance group Task instance group
  14. 14. Agenda • Amazon EMRとは? • 主要アップデート • ベストプラクティス • プラットフォームとしてのAmazon EMR • まとめ
  15. 15. EMR AMI 3.2.1 • Amazon Linux 2014.03 • Hadoop 2.4 • Hive 0.13.1 • Pig 0.12 • HBase 0.94.18 • Impala 1.2.4 • Mahout 0.9 • Cascading 2.5 • プログラミング言語 – Java: Oracle/Sun jdk-7u65 – Perl 5.16.3 – PHP 5.3.28 – Python 2.6.9 – R 3.0.2 – Ruby 2.0 – Scala 2.11.1
  16. 16. Hive 0.13 Support • Hive12より、1000個以上の新機能、改善やバッグフィックスが追加され ています • パフォーマンスの向上 – Hive12より、数倍のパフォーマンス向上が期待できます • Sub queryのサポート SELECT * FROM A WHERE EXISTS ( SELECT null FROM B WHERE B.id = A.id AND B.date '2009-10-01') SELECT key FROM t1 GROUP BY key HAVING COUNT(value) IN ( SELECT p FROM t2); Sub queryサポートの例 http://hortonworks.com/blog/announcing-apache-hive-0-13-completion-stinger-initiative/
  17. 17. Kinesis Integration • KinesisストリームのデータをEMRから直接アクセス – Hive, Pig, MapReduceでアクセス可能 – SQLライクに操作可能 – EMR AMI 3.0.4~ 利用可能 Data Sources Data Sources Data Sources RedShift Kinesis S3 App DynamoDB Kinesis EMR
  18. 18. Kinesis Integration: Hiveからの使い方 • Kinesis StreamのHive外部テーブル作成 • HQLでクエリ • ほかのデータソースのテーブルとJOIN可能 – 別のKinesis Stream – S3, DynamoDB, HDFSのHive table – 例: Clickstream (Kinesis) JOIN Ad campaign data (DynamoDB) CREATE TABLE apache_logs ( host STRING, ... ) STORED BY 'com.amazon.emr.kinesis.hive.KinesisStorageHandler' TBLPROPERTIES(kinesis.stream.name=AccessLogStream); http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-kinesis.html
  19. 19. AWS CLI対応 • AWS CLIからEMRの操作が可能に クラスタ起動 $ aws emr create-cluster --name mycluster --ami-version 3.2.1 --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m1.medium InstanceGroupType=CORE,InstanceCount=2,InstanceType=m1.medium ジョブステップ追加 aws emr add-steps --cluster-id j-xxxxxxxx --steps Type=STREAMING,Name='Word Count',ActionOnFailure=CONTINUE,Args=-files,s3://bucket/wordcount/scripts/ wordcount-mapper.rb,-files,s3://bucket/wordcount/scripts/wordcount-reducer.rb,-mapper,wordcount-mapper.rb,- reducer,wordcount-reducer.rb,-input,s3://bucket/wordcount/input/,-output,s3://bucket/wordcount/output/ http://docs.aws.amazon.com/cli/latest/reference/emr/index.html
  20. 20. EMRFS Consistent View • Amazon S3は結果整合性(Eventual Consistency) – オブジェクトの上書きが直後のLIST操作に反映されない可能性あり – 複数のMapReduceジョブをチェインイングの際、不整合が生じる可能性ある • EMRFS consistent view – 既存FSを拡張した整合性チェックの仕組み – メタデータをDynamoDBで管理し、S3の実データと比較で整合性チェック – 利用者は基本的に意識しなくてよい – EMRでS3のファイルをLISTの際で自動的に行う • 不整合が検知されたら、retryする • それでもだめな場合、ConsistencyExceptionを投げるか、エラーログを出力する • 常にS3のデータを正にする https://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-consistent-view.html
  21. 21. EMRFS Consistent View • DynamoDBでメタデータ管理 • S3のデータと比較で整合性チェック $ aws s3 ls s3://bucket/csv/ 2014-09-26 15:07:55 285325013 csv/ce53daa0-7e59-485c-858f-f09dd65ca14c-000000 2014-09-26 15:07:37 285320703 csv/ce53daa0-7e59-485c-858f-f09dd65ca14c-000001 2014-09-26 15:07:56 221967808 csv/ce53daa0-7e59-485c-858f-f09dd65ca14c-000002 Objects in S3 Meta data in DynamoDB
  22. 22. EMRFS Consistent View • Emrfs コマンドでファイル操作 – EMRFSが管理するファイルの整合性を保つため $ emrfs --help emrfs 1.0 Usage: emrfs [describe-metadata|set-metadata-capacity|delete-metadata|create-metadata|list-metadata-stores|diff| delete|sync|import] [options] args... • 直接S3でファイルを追加・削除された場合不整合が発生 $ aws s3 rm s3://bucket/csv/528235e6-322a-4e29-bed3-ac937f713584-000000 Directly delete in hive select * from apache_logs_csv limit 10; S3 OK Failed with exception java.io.IOException:com.amazon.ws.emr.hadoop.fs.consistency.exception.ConsistencyException: 1 items inconsistent (no s3 object for associated metadata item). First object: /bucket/csv/528235e6-322a-4e29-bed3- ac937f713584-000000 Time taken: 0.06 seconds ConsistencyEx ception発生
  23. 23. Agenda • Amazon EMRとは? • 主要アップデート • ベストプラクティス • プラットフォームとしてのAmazon EMR • まとめ
  24. 24. EMRベストプラクティス・ホワイトペーパー • Amazon EMRのベストプラクティス  をトータルにご紹介 – データの移動、収集、処理 – コスト最適化 – パフォーマンスの最適化 – https://media.amazonwebservices.com/jp/wp/ AWS_Amazon_EMR_Best_Practices.pdf
  25. 25. Amazon EMRノードタイプとサイズ • 常に現⾏行行世代のインスタンスタイプを利利⽤用 – M3, C3, R3, I2, HS1 – コスト パフォーマンスに優れる • ワークロードに最適のノードタイプを選ぶ – タイプ: M3が⼀一般⽤用途、C3はCPUバウンド – サイズ: 本番利利⽤用はxlargeかそれ以上 • ⼤大きめのノードで構成する⼩小さなクラスタが効率率率的
  26. 26. ⼀一時的EMRクラスタ • ジョブ実⾏行行中のみクラスタが存在 – ジョブが終了了するとクラスタをシャットダウン • データストアとして Amazon S3を使う – 処理理のインプット と アウトプット データを保存 Data on Amazon S3
  27. 27. HDFSの代わりにAmazon S3を使うメリット • クラスタのシャットダウンが可能に • 複数クラスタ間でデータ共有 • Amazon S3 – 99.999999999%の堅牢牢性 – 無限のスケール: ストレージとスループット – Amazon S3の機能を活かす • サーバーサイド暗号化 • Amazon Glacier連携 • バージョニング 大きいメリット Amazon S3 EMR EMR
  28. 28. タスクノードのユースケース #1 • Spotインスタンスの活⽤用 – ⼊入札式でタスクノードをSpotインスタンスにて実⾏行行 – 多くの場合、料料⾦金金の⼤大幅なディスカウントが受けられる – Spotインスタンスが強制的に削除されることがある • 市場価格が⼊入札額を超えた場合 • タスクノードなら基本問題ない http://aws.amazon.com/ec2/purchasing-options/spot-instances/
  29. 29. Spotインスタンスの活用 • タスクノード追加・削除はクラスタにほぼ影響しない – HDFSに影響なし – MapReduce • ノード追加 – 待ち状態のタスクを新しいノードに割当 – ジョブが早くなる! • ノード削除 – 実⾏行行中のタスクを⾃自動的に別ノードに割当 http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-spot-instances.html
  30. 30. タスクノードのユースケース #2 • 短時間で⼤大量量のリソースを必要とする場合 • 例例:Amazon S3から⼤大量量 のデータをHDFSにコピーする HS1 48TB HDFS HS1 48TB HDFS Amazon S3
  31. 31. タスクノードのユースケース例例 HS1 48TB HDFS HS1 48TB HDFS Amazon S3 m3.xl m3.xl m3.xl m3.xl m3.xl m3.xl Spot タスクノード を追加して Amazon S3から データをロード
  32. 32. タスクノードのユースケース例例 HS1 48TB HDFS HS1 48TB HDFS Amazon S3 m3.xl m3.xl m3.xl m3.xl m3.xl m3.xl データロード 終わったら削除
  33. 33. 最適なファイルサイズ • ⼩小さいファイルを避ける – 100MB以上のファイルになるようにする • 理理由 – 1ファイルごとに最低1Mapperが起動する – MapperごとにJVM1つ必要 – JVMの起動にオーバーヘッドがある
  34. 34. 最適なファイルサイズ • Hadoop利利⽤用の場合のAmazon S3の最適なファイルサイズ は? 約 1〜~2GB • 理理由 – 1mapperからAmazon S3のデータ取得速度度: 10MB~∼15MB/s – Mapper処理理は60秒以上であるべき 60sec * 15MB = 約1GB
  35. 35. 小さいファイルの扱い • S3DistCpを使って⼩小さいファイルを結合 • S3DistCpは⼊入⼒力力パターンで⼩小さいファイルをグルーピ ングし、⼤大きいファイルに結合させる http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/UsingEMR_s3distcp.html
  36. 36. 小さいファイルの扱い S3DistCpサンプル ./elastic-mapreduce --jobflow j-3GY8JC4179IOK --jar /home/hadoop/lib/emr-s3distcp-1.0.jar --args '--src,s3://myawsbucket/cf, --dest,s3://myawsbucket/combined, --groupBy,.*XABCD12345678.([0-9]+-[0-9]+-[0-9]+-[0-9]+).*, --targetSize,1024, --outputCodec,lzo,--deleteOnSuccess’
  37. 37. Agenda • Amazon EMRとは? • 主要アップデート • ベストプラクティス • プラットフォームとしてのAmazon EMR • まとめ
  38. 38. Data management Analytics languages HDFS Amazon EMR Amazon Redshift AWS Data Pipeline Amazon DynamoDB Amazon S3 Amazon Amazon Kinesis RDS
  39. 39. Bootstrap Action • ソフトウェアやパッケージをAmazon EMRノード上に実 ⾏行行・インストール • BashスクリプトをAmazon S3に配置 • ノード起動時に⾃自動的にスクリプトをダウロードして実⾏行行 • クラスタに追加されたすべてのノード上に実⾏行行 https://github.com/awslabs/emr-bootstrap-actions
  40. 40. EMR as a Big data Platform EMRは MapReduce だけではない • HBase: NoSQL データベース • Presto: インターアクティブ SQL • Impala:インターアクティブSQL • Spark: インメモリ分散処理エンジン
  41. 41. HBase on Amazon EMR http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-hbase.html
  42. 42. Apache HBaseとは? • Hadoop上のNoSQLデータベース • 列指向key value store (KVS) • ビッグデータをリアルタイムにアクセス • Hadoopとフル連携 – ストレージにHDFS利用 – MapReduceサポート
  43. 43. HBaseユースケース • 非常に大きいテーブル – 数十億行 X 数百万列 • 書込負荷が非常に高いシステム – リアルタイムのメトリックモニタリング – 大規模カウンター
  44. 44. HBase on EMR • 数クリックで簡単インストール • Amazon S3を使った簡単バックアップとリストア – 差分バックアップ
  45. 45. OpenTSDB • HBase上のタイムシアリス データ ベース • 大規模モニタリング システム • 秒間数百万の書込 http://bit.ly/1wlJ0TH http://opentsdb.net/
  46. 46. Presto on Amazon EMR
  47. 47. Prestoとは? • 分散SQLクエリ エンジン – MapReduceではない – GB から PB 級のデータを問合せ – 中間データ結合はインメモリで行う • データコネクタで外部ストレージ対応 • Javaで書かれている
  48. 48. MapReduce vs. Presto http://treasure-data.hateblo.jp/entry/2014/09/04/133703
  49. 49. Prestoユースケース • Hiveや一般用途のRDBMSの代替ではない • ビッグデータをアドホック/インタラクティブに問合せ – MapReduceクラスタと共存可能 – PrestoはHiveより早いケースが多くある • Hiveからの移行も簡単 • PrestoはANSI SQLを利用 – S3のデータをインタラクティブに問合せ • データをRedshiftにロードしなくて良い
  50. 50. Presto on EMR • インスタンス用のブートストラップ アクションを提供 – AMI 3.x以上が条件 – http://bit.ly/1knbk19 • 対応データコネクタ – EMRクラスタのHDFSまたはHive • HBaseは未対応(開発中) – Cassandra – Amazon S3
  51. 51. Impala on Amazon EMR http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-impala.html
  52. 52. Impalaとは? • オープンソースの分散SQLクエリ エンジン – MapReduceではない – Prestoとよく似ている • C++で書かれている
  53. 53. Impalaの性能 • Hiveより数倍〜数十倍早い • 一部処理できないクエリもある 異なるクエリでHive(青)とImpala(赤)の処理時間比較。Q1からQ4、クエリの複数度が徐々に上がる。 http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/impala-optimization.html
  54. 54. Impalaユースケース • Hiveや一般用途のRDBMSの代替ではない • ビッグデータをアドホック/インタラクティブに問合せ – MapReduceクラスタと共存可能 – ImpalaはHiveより早いケースが多くある – ほとんどのHiveQLがImpalaでも動く
  55. 55. Impala on EMR • 数クリックで簡単インストール – AMI 3.x 以上が条件 • ストレージレイヤー – EMRクラスタのHDFSまはたHBase – Amazon S3が未対応 • HDFSに一旦コピーが必要 • ImpalaのロードマップにS3対応予定あり
  56. 56. Spark on Amazon EMR http://aws.amazon.com/articles/Elastic-MapReduce/4926593393724923
  57. 57. Apache Sparkとは? • ⾼高速クラスタ コンピューティング エンジン – インメモリ処理理 • SQL、ストリーミングと複雑な分 析を1つのプラットフォームに • 既存のHadoopやAmazon S3の データをSparkで処理理可能
  58. 58. Spark on EMR • Spark 1.1のインストール 用bootstrap actionを提 供 – http://bit.ly/1uZhF8w Master Node Master instance group HDFS HDFS 32GB Memory
  59. 59. Spark on EMR • スポットでタスクノードを追加し クラスタのメモリ量を増やす • S3 または HDFSからRDDを 生成 • ⽣生成されたRDDで計算処理理 を⾏行行う • 結果RDDを S3 または HDFSに保存 Master Node Master instance group HDFS HDFS 32GB Memory 256GB Memory Input Output
  60. 60. Spark on EMR • 処理が終わったらタスク ノードをシャットダウン Master Node Master instance group HDFS HDFS 32GB Memory
  61. 61. Kinesis連携 Kinesis
  62. 62. EMR as a Big Data Platform Daily/hourly batch Hive / Pig Presto / Impala Dashboard BI Tools HDFS / S3 HBase Canssa Fast cluster processing Interactive query ndra MySQL Kinesis SQL on any data sets Streaming Spark Data analysis platform
  63. 63. まとめ • Amazon EMRでHadoopをすぐに、簡単に利用できる • Hadoopアップデートやエコシステム対応 • Amazon EMRベストプラクティス – 最適なインスタンスを選ぶ – 一時的なクラスタの活用 – タスクノードの活用 – 小さいファイルの扱い • プラットフォームとしてのAmazon EMR – MapReduce以外の使い方 – HBase, Presto, Impala, Spark
  64. 64. 参考資料 • ドキュメント – http://aws.amazon.com/documentation/elastic-mapreduce/ • フォーラム – https://forums.aws.amazon.com/forum.jspa?forumID=52start=0 • AWS Big Data Blog – http://blogs.aws.amazon.com/bigdata
  65. 65. QA
  66. 66. Webinar資料の配置場所 • AWS クラウドサービス活用資料集 – http://aws.amazon.com/jp/aws-jp-introduction/
  67. 67. Appendix
  68. 68. Kinesis StreamをEMRで定期的に処理 • ストリームを定期的にバッチで処理 する • 一度処理済みのデータをスキップ • DynamoDBを使ってチェックポイント • Data Pipeline / Crontabで制御
  69. 69. HBaseデータモデル • ソートされた巨大なハッシュテーブルのイメージ • 行キーでデータ アクセス http://www.n10k.com/blog/hbase-for-architects/
  70. 70. HBaseアーキテクチャ • 書込: 非常に早い, 非 常に高いスループット • 読込: 早い (よく設計 された場合) • ノード追加に比例して スケール http://blog.sematext.com/2012/07/16/hbase-memstore-what-you-should-know/
  71. 71. Prestoアーキテクチャ Client Coordinator Worker Worker Worker Connec tor Plugin Storage / Metadata Discovery Service http://www.slideshare.net/frsyuki/presto-hadoop-conference-japan-2014
  72. 72. Impalaアーキテクチャ http://www.theregister.co.uk/2012/10/24/cloudera_hadoop_impala_real_time_query/
  73. 73. Sparkアーキテクチャ • ドライバー プログラム – メイン メソッドである。ジョブのスケジューリングを処理 – Workerまたはクライントで実行 • クラスタ マネージャー – リソース配布管理 – YARN, Mesos, Standalon • Worker – 各worker毎にApp Executorが1つ – Executor毎に複数のタスクを実行 http://www.cs.berkeley.edu/~matei/papers/2012/nsdi_spark.pdf http://www.cs.berkeley.edu/~matei/papers/2010/hotcloud_spark.pdf
  74. 74. Sparkアーキテクチャ (続き) • Resilient Distributed Datasets (RDDs) – an efficient, general-purpose and fault-tolerant abstraction for sharing data in cluster applications. – In-memory – Partitioned – Immutable • RDDs support transformations and actions

×