aws-dynamo-emr.pdf
Upcoming SlideShare
Loading in...5
×
 

aws-dynamo-emr.pdf

on

  • 2,237 views

 

Statistics

Views

Total Views
2,237
Views on SlideShare
2,236
Embed Views
1

Actions

Likes
2
Downloads
27
Comments
0

1 Embed 1

https://twitter.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

aws-dynamo-emr.pdf aws-dynamo-emr.pdf Presentation Transcript

  • DynamoDB ジャンプスタートプログラム EMRを使った運用方法アマゾン データ サービス ジャパン 株式会社
  • このセッションの目的EMRを使ったDynamoDBの運用方法についてハンズオンを通して理解する EMRの起動方法 Hive経由でのDynamoDB連携 DynamoDBのImport/Export Copyright © 2012 Amazon Web Services
  • アジェンダEMRとDynamoDB連携の概要 EMRとHiveの概要 連携の概要ハンズオン 環境設定 Hive Job Flowの起動 DynamoDBのバックアップ、リカバリ バッチ処理 Copyright © 2012 Amazon Web Services
  • AWSのサービス お客様のアプリケーション ライブラリ & SDKs Web スーェフータンイ IDE プラグイン デプロイと自動化 Java, PHP, .NET, AWS Elastic Beanstalk Management Console Eclipse Python, Ruby AWS CloudFormation Visual Studio 認証 & 請求 ネットワーク&ルーティング AWS IAM モニタリング スケーリング Amazon VPC Identity Federation Amazon CloudWatch Auto Scale Amazon Elastic LB Consolidated Billing Amazon Route 53 AWS Direct Connect メール コンテンツ配信 メッセージ オンデマンド Amazon Amazon SNS 分散処理 配信 ワークホース Elastic MapReduce Amazon CloudFront Amazon SQS Amazon Mechanical Turk SES データベース ストレージ コンピュータ処理 Amazon RDS Amazon S3 Amazon DynamoDB Amazon EC2 Amazon SimpleDB Amazon EBS Amazon Elasticache AWS のグローバルなインフラ Copyright © 2012 Amazon Web Services
  • AMAZON ELASTIC MAPREDUCE Hadoopの運⽤管理の複雑さとコストを削減 AWSサービスとのシームレスな統合 EMRチームの卓越した運⽤サポート経験を利⽤
  • Apache Hadoopとは?Big Dataを扱うために: – スケーラブルな分散ストレージ – 低価格で柔軟に⾏うことが出来る分析Hadoop は上記を満たすオープンソース製品 – HDFS(Hadoop Distributed File System) – 巨大なデータを扱えるバッチ処理⽤分散ファイルシステム – コモディティサーバに特化 – MapReduce – 分散処理である煩わしい点をカバーしてくれる Copyright © 2012 Amazon Web Services
  • Amazon Elastic MapReduceとはHadoopをオンデマンドにいつでも実⾏可能 使った分だけなので、低コスト開発者は分析・解析アプリケーションに集中 結果を出すまでの最短パスS3による⼊⼒・出⼒データを強⼒に保護 データをロストしない仕組み Copyright © 2012 Amazon Web Services
  • Amazon Elastic MapReduceとはBig Data処理のための煩雑な事を肩代わり サーバ調達、⾒積もり、チューニング・・・解析をトライアンドエラー出来る ユーザ動向にあわせ、アドホックに解析可 収集→保存→解析→アクションのサイクルを もっと早く!AWSの他サービスとのインテグレーション S3との連携機能 JavaやRubyなどのSDKが利⽤可能 Copyright © 2012 Amazon Web Services
  • +ビッグデータシステムの運用コストを低く抑える
  • • ジョブフローを起動して以下で管理可能 • AWS マネージメントコンソール • コマンドライン • REST API
  • Amazon DynamoDBとEMR連携 Hive連携 クエリをDynamoDBとEMRで フィルタ機能 スループットのスロットリング EMR Hiveを利⽤するシーン DynamoDBのテーブルをS3にダンプ 複雑なクエリをDynamoDBではなく、Hiveで実⾏ S3にアーカイブしたデータとDynamoDB上のデータで ジョインして集計などのバッチ処理 http://docs.amazonwebservices.com/ElasticM apReduce/latest/DeveloperGuide/EMRforDyn amoDB.html
  • アジェンダEMRとDynamoDB連携の概要 EMRとHiveの概要 連携の概要ハンズオン 環境設定 Hive Job Flowの起動 DynamoDBへのインポート、 S3へのアーカイブ Copyright © 2012 Amazon Web Services
  • ハンズオンこのハンズオンの目的・S3上のデータを、DynamoDBにインポートして検索する。・DynamoDB上にあるデータをHiveで検索する。・DynamoDB上のデータをアーカイブする以下の⼿順に従って実施(⼀部、東京リージョン⽤に変更有り)http://aws.amazon.com/articles/Elastic-MapReduce/28549
  • イメージ S3 DynamoDBEMRチームのデータソースバケット HDFS S3からデータを抜き出して DynamoDBへインポート orders_s3 _export orders_dd b_2012_0 Orders- 1 2012-01 orders_s3 _new_exp ort自分のDynamoDB DynamoDBからデータを抜き出してデータのアーカイ S3へアーカイブブするバケット DynamoDB上でも、S3上でも データに対して同様にHiveク エリを投げられる
  • ステップバイステップ(準備編)1. EMR CLIインストール済みAMI(ami-2edf6f2f)から踏み台用インスタンス起動2. sshログイン3. キーペアの秘密鍵を設置,権限設定 $ vi ~/.ssh/key $ chmod 600 ~/.ssh/key4. EMRのログ出⼒先S3を作成 例) バケツ名 $dynamosample(各自指定ください) フォルダ名 logs5. DynamoDBのデータExport先のS3を作成 例) バケツ名 $dynamodata (各自指定ください) フォルダ名 data6. DynamoDBにテーブルを作成 テーブル名 : “Orders-2012-01” Primary Key : “Order ID” (Hash, String) Capacity: 100 (Read/Write)
  • ステップバイステップ(準備編)6. EMR CLIの設定情報を credentials.jsonに記述 $ vi ~/emrclient/credentials.json { "access-id": “abcdfeksldksjdf", "private-key": "z9p7o3D128oDBsdfasdfsdfsdSQdQHy0", “key-pair”: “lab_key", "key-pair-file": "/home/ec2-user/.ssh/key", "region": "ap-northeast-1", “log-uri”: “s3://$dynamosample/logs" } access-id:アクセスID private-key:プライベートキー key-pair:キーペア名 key-pair-file:プライベートキーの配置場所 region:デフォルトリージョン指定 log-uri:EMR稼働ログの出力先 log Copyright © 2012 Amazon Web Services
  • ステップバイステップ:EMR起動EMR CLIインストール済みAMIからインスタンス起動、sshログイン $ ~/emrclient/elastic-mapreduce --create --alive --hive-interactive --name “DynamoDB job flow" --instance-type m1.small --availability-zone ap-northeast-1a Created job flow j-XXXXXXXXXJob flow IDを指定して、EMRクラスタにSSHログイン $ elastic-mapreduce --ssh j-XXXXXXXXXEMRクラスタ内で、Hiveの設定修正(ファイル末尾に以下を追記) $ vi /home/hadoop/hive/conf/hive-default.xml <property> <name>dynamodb.endpoint</name> <value>dynamodb.ap-northeast-1.amazonaws.com</value> <description>DynamoDB endpoint</description> </property>
  • ステップバイステップ:HIVEHiveにインタラクティブモードでログイン $ hive hive>DynamoDBへのスループットを設定 hive> SET dynamodb.throughput.read.percent=1.0;EXTERNAL TABLE作成(インポート元のファイル用) hive> CREATE EXTERNAL TABLE orders_s3_export >( order_id string, customer_id string, >order_date int, total double ) >PARTITIONED BY (year string, month string) >ROW FORMAT DELIMITED FIELDS >TERMINATED BY t >LOCATION >s3://ddbsamples/samples/ddb-orders ;
  • ステップバイステップ:HIVEEXTERNAL TABLE作成(インポート先 DynamoDB用) hive> CREATE EXTERNAL TABLE orders_ddb_2012_01 >(order_id string, customer_id string, > order_date bigint, total double) > STORED BY > org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler > TBLPROPERTIES ( > "dynamodb.table.name" = "Orders-2012-01", > "dynamodb.column.mapping" = > "order_id:Order ID,customer_id:Customer ID, >order_date:Order Date,total:Total");
  • ステップバイステップ:HIVES3の外部テーブルにパーティションを追加 hive> ALTER TABLE orders_s3_export ADD PARTITION > (year=‘2012’, month=‘01’);S3のファイルからDynamoDBにインポート hive> INSERT OVERWRITE TABLE orders_ddb_2012_01 > SELECT order_id, customer_id, order_date, total > FROM orders_s3_export;DynamoDBに対してSQLでクエリー実⾏ hive> SELECT customer_id, sum(total) spend, count(*) order_count FROM orders_ddb_2012_01 WHERE order_date >= unix_timestamp(2012-01-01, yyyy-MM-dd) AND order_date < unix_timestamp(2012-01-08, yyyy-MM-dd) GROUP BY customer_id ORDER BY spend desc LIMIT 5 ;
  • ステップバイステップ:HIVEDynamoDBデータのアーカイブ先となるS3の外部テーブル作成 hive> CREATE EXTERNAL TABLEorders_s3_new_export > ( order_id string, customer_id string, > order_date int, total double) > PARTITIONED BY (year string, month string) > ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘,’ > LOCATION ‘s3://$dynamodata/data/’;DynamoDBからS3にアーカイブ hive> INSERT OVERWRITE TABLE orders_s3_new_export > PARTITION (year = ‘2012’, month=‘01’) > SELECT * from orders_ddb_2012_01;S3にアーカイブされているか確認する
  • ステップバイステップ:クリーンアップHiveシェルと、EMRからログアウト hive> quit; $ exitJob Flow IDを指定してEMRをターミネートし、ログアウト $ elastic-mapreduce –-terminate j-XXXXXXXXX $ exitログアウトしたインスタンスをターミネートS3にアーカイブしたファイルの削除作成したDynamoDBテーブルOrders-2012-01の削除
  • 補足.EMR CLIのセットアップ1. パッケージ更新2. EMR CLIをダウンロード、解凍3. PATH設定4. 認証等設定(アクセスキー、シークレットアクセスキー)5. 稼動確認6. ssh秘密鍵設置 $ sudo yum update $ wget http://elasticmapreduce.s3.amazonaws.com/elastic-mapreduce-ruby.zip $ unzip elastic-mapreduce-ruby.zip –d ~/emrclient/ #解凍 $ export PATH=$PATH:~/emrclient #PATH設定 $ vi ~/emrclient/credentials.json # 認証設定 $ elastic-mapreduce --list #稼働確認 $ vi ~/.ssh/<キーペア名> #キーペアの秘密鍵を設置 $ chmod 600 ~/.ssh/<キーペア名> Copyright © 2012 Amazon Web Services