Amazon EMRでグローバル規模の金融データを扱う分散処理システムを構築した話

896 Views

March 14, 24

aws

スライド概要

2024年3月2日開催のJAWS DAYS 2024にて発表された「Amazon EMRでグローバル規模の金融データを扱う分散処理システムを構築した話」です。

profile-image

シンプレクスは1997年の創業以来、メガバンクや大手総合証券を筆頭に、日本を代表する金融機関のテクノロジーパートナーとしてビジネスを展開してきました。現在では、金融領域で培った豊富なノウハウを活用し、金融機関以外の領域でもソリューションを展開しています。2019年3月にはAI企業のDeep Percept株式会社、2021年4月には総合コンサルティングファームのXspear Consulting株式会社がグループに加わり、創業時より付加価値の創造に取り組んできたシンプレクスとワンチームとなって、公的機関や金融機関、各業界をリードする企業のデジタルトランスフォーメーション(DX)の推進を支援しています。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

JAWS DAYS 2024 D-3 Amazon EMR でグローバル規模の金融データを扱う 分散処理システムを構築した話 シンプレクス株式会社 田中 咲 ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_d ©2024 Simplex Inc.

2.

自己紹介 ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_d 名前: 田中 咲 所属: シンプレクス株式会社 経歴: 2020年4月 に新卒でシンプレクス株式会社に入社。 大手銀行向けの市場リスク管理システムの更改案件に配属。 同案件にて、アプリケーション開発と性能テストを担当。 ©2024 Simplex Inc. 2

3.

Amazon EMR とは ©2024 Simplex Inc. 3

4.

Amazon EMR とは ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_d Amazon EMR とは、Apache Spark、Apache Hive、Presto などのオープンソ ースフレームワークを使用して、ペタバイトスケールのデータ処理、相互分析、機 械学習を行なう業界をリードするクラウドビッグデータソリューションです。 ビッグデータアプリケーションやペタバイトスケールのデータ分析を、オンプレミ ス型ソリューションの半分以下のコストで高速に実行できます。 カスタマイズされた Amazon EC2 クラスター、Amazon EKS、AWS Outposts、 または Amazon EMR Serverless で実行するオプションを備えた、最新のオープ ンソースフレームワークを使用してアプリケーションを構築します。 公式(https://aws.amazon.com/jp/emr/) から引用 ©2024 Simplex Inc. 4

5.

Amazon EMR とは ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_d 要約すると、 Hadoop クラスター環境を提供し、 その上で分散処理/ビッグデータ処理フレームワークを利用し て実装されたアプリケーションを実行できるサービス ©2024 Simplex Inc. 5

6.

Amazon EMR とは ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_d 要約すると、 Hadoop クラスター環境を提供し、 その上で分散処理/ビッグデータ処理フレームワークを利用し て実装されたアプリケーションを実行できるサービス ©2024 Simplex Inc. 6

7.

Amazon EMR とは ~分散処理 ~ ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_d データやジョブを分割してノードに分散し、 並列に処理を実行する事で1つの大きな処理を実行する手法 並列数増 分割されたジョブは 複数のノードで処理される 処理時間 ©2024 Simplex Inc. 処理時間 7

8.

Amazon EMR とは ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_d 要約すると、 Hadoop クラスター環境を提供し、 その上で分散処理/ビッグデータ処理フレームワークを利用し て実装されたアプリケーションを実行できるサービス ©2024 Simplex Inc. 8

9.

Amazon EMR とは ~Hadoop クラスター~ ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_d Data processing using programming Apache MapReduce Data Processing Services using Query (SQL-like) Apache Hive In-memory Data Processing Scripting Apache Spark Apache Pig Resource Management Apache Hadoop Yarn Storage Apache HDFS ©2024 Simplex Inc. … 9

10.

Amazon EMR とは ~ 全体像 ~ ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_d AWS 環境の上で EMR のサービスを実行し、 Hadoop クラスター環境を提供する。 AWS Cloud Application Amazon EMR Hadoop Cluster AWS が提供する環境 ©2024 Simplex Inc. use Hadoop エコシステムの フレームワーク EMR利用者が用意するアプリケーション 10

11.

Amazon EMR とは ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_d EMR を使用するメリット • Hadoop クラスターの構築を自前で実施せずに済む • スケーリングが容易である • EMR インスタンスグループ • EMR インスタンスフリート • 運用に便利な機能が用意されている • 自動ログ S3 バックアップ • AWS コンソール上でのログ確認 • CloudWatch メトリクス ©2024 Simplex Inc. 11

12.

弊社利用事例 ©2024 Simplex Inc. 12

13.

アプリケーション前提 ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_d 大手銀行向け 市場リスク管理システム ©2024 Simplex Inc. 13

14.

アプリケーション前提 ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_d 大手銀行向け 市場リスク管理システム 銀行では日々大量の取引 (金融商品の売買) を実施している。 例えば株を買った場合、その株の株価が下がったら損をするし、上がれば得をする。 この損得が発生する不確実性の事を「市場リスク」と呼ぶ。 銀行はこの市場リスクを定められた範囲に収める様に取引する必要があるため、 リスクを表す様々な指標を計算する必要がある。 ©2024 Simplex Inc. 14

15.

アプリケーション前提 ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_d 扱う情報規模 全世界の取引がリスク管理対象であり、その件数は1日当たり数十万件にのぼる。 さらに、それぞれの取引について複数のリスク指標を計算する必要がある。 リスク指標の計算には、取引の種類ごとに定められた方法で取引の時価を複数回計 算する必要がある。 たとえばある時間帯では、およそ 1億回の時価計算を30分以内に完了させるため、 最大で 1200 core の並列処理が必要となる。 ©2024 Simplex Inc. 15

16.

アプリケーション構成 ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_d Virtual private cloud (VPC) write data read result Amazon Elastic Compute Cloud (Amazon EC2) store data get result Amazon EFS Amazon S3 put result send http request Client use data store result read data store data use data Amazon Aurora (Data Storage) Amazon EC2 (API Server) push request Amazon ElastiCache (Message Broker) pop request run job Amazon EC2 (Job Controller) Amazon EMR Amazon ElastiCache (Redis) Amazon Simple Storage Service (Amazon S3) Amazon Aurora Amazon EMR (Grid Computing) Amazon Elastic File System (Amazon EFS) ©2024 Simplex Inc. 16

17.

アプリケーション構成 ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_d Virtual private cloud (VPC) write data read result Amazon Elastic Compute Cloud (Amazon EC2) store data get result Amazon EFS Amazon S3 put result send http request Client use data store result read data store data use data Amazon Aurora (Data Storage) Amazon EC2 (API Server) push request Amazon ElastiCache (Message Broker) pop request run job Amazon EC2 (Job Controller) Amazon EMR Amazon ElastiCache (Redis) Amazon Simple Storage Service (Amazon S3) Amazon Aurora Amazon EMR (Grid Computing) Amazon Elastic File System (Amazon EFS) ©2024 Simplex Inc. 17

18.

アプリケーション構成 ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_d Apache Spark フレームワークを用いて実装された アプリケーションモジュールを、S3 上に配置しておく。 Amazon S3 Application Module Amazon EC2 (API Server/ Job Controller) Amazon EMR ©2024 Simplex Inc. 18

19.

アプリケーション構成 ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_d アプリケーションに対する入力データを S3 にアップロードする S3 put Amazon S3 Application Input Data Module Amazon EC2 (API Server/ Job Controller) 凡例 AWS API call ©2024 Simplex Inc. Amazon EMR 19

20.

アプリケーション構成 ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_d Apache Spark アプリケーションの実行を要求する。 Amazon S3 Amazon EC2 (API Server/ Job Controller) Application Input Data Module spark-submit 凡例 AWS API call ©2024 Simplex Inc. Amazon EMR 20

21.

アプリケーション構成 ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_d EMR 上で Spark アプリケーションプロセスが起動する。 EMR ステップ(ジョブ)の終了を検知するために状態の監視を始める。 Amazon S3 Amazon EC2 (API Server/ Job Controller) Application Input Data Module use list steps (=polling status) 凡例 AWS API call ©2024 Simplex Inc. Amazon EMR Cluster (Application) 21

22.

アプリケーション構成 ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_d アプリケーションプロセスが S3 上の入力データを参照して分散処理を行い、結果 をS3 に出力する。 Amazon S3 Amazon EC2 (API Server/ Job Controller) Application Input Data Module S3 get Output Data S3 put list steps (=polling status) 凡例 AWS API call ©2024 Simplex Inc. Amazon EMR Cluster (Application) 22

23.

アプリケーション構成 ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_d アプリケーションプロセスの終了を検知して、結果データを S3 からダウンロード する。 S3 get Amazon S3 Output Data Amazon EC2 (API Server/ Job Controller) Application Input Data Module Output Data list steps (=polling status) 凡例 AWS API call ©2024 Simplex Inc. Amazon EMR 23

24.

アプリケーション構成 ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_d Virtual private cloud (VPC) write data read result Amazon Elastic Compute Cloud (Amazon EC2) store data get result Amazon EFS Amazon S3 put result send http request Client use data store result read data store data use data Amazon Aurora (Data Storage) Amazon EC2 (API Server) push request Amazon ElastiCache (Message Broker) pop request run job Amazon EC2 (Job Controller) Amazon EMR Amazon ElastiCache (Redis) Amazon Simple Storage Service (Amazon S3) Amazon Aurora Amazon EMR (Grid Computing) Amazon Elastic File System (Amazon EFS) ©2024 Simplex Inc. 24

25.

開発を通じて得た学び ©2024 Simplex Inc. 25

26.

開発を通じて得た学び ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_d EMR を使用する上で気を付けるべき事 • ミドルウェアのバージョン • オートスケーリング • コスト • ネットワーク(ノード間・サービス間) • etc… ©2024 Simplex Inc. 26

27.

開発を通じて得た学び ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_d EMR を使用する上で気を付けるべき事 • ミドルウェアのバージョン • オートスケーリング • コスト • ネットワーク(ノード間・サービス間) • etc… → 一部について、開発中に発生した事象を交えて紹介 ©2024 Simplex Inc. 27

28.

1. ミドルウェアのバージョン ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_d 事象 EMR のジョブ起動直後に、 Hadoopのソースコード内で NullPointerException が発生する。 調査経緯 NullPointerException が発生した箇所のHadoopの実装を読んで、そもそもマル チスレッドについて考慮されていない点があり、極めて低い確率で上記事象が発生 する事が判明した。 ライブラリ(Hadoop)のバグのため修正はできず、EMR とライブラリのバージョ ンが密結合な状態でこのライブラリ実装を呼び出すのは EMR 側のため、ライブラ リを差し替える様な対応もできなかった。 また、当該エラーが発生した事を特定できる情報もなく、リトライ処理を実装する 事もできなかった。 ©2024 Simplex Inc. 28

29.

1. ミドルウェアのバージョン ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_d 事象 EMR のジョブ起動直後に、 Hadoopのソースコード内で NullPointerException が発生する。 対策 今後リトライ処理を入れるために、当該エラーが発生したことを特定できる情報が ないか調査するためのデバッグログ出力を増やしている。 ただし再現確率が極めて低いエラーの様で、再発していない。 ©2024 Simplex Inc. 29

30.

1. ミドルウェアのバージョン ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_d 事象 EMR のジョブ起動直後に、 Hadoopのソースコード内で NullPointerException が発生する。 学び EMR のバージョンと、各ライブラリのバージョンが密結合となっており、ライブ ラリだけバージョンを変更する等の対応が構造的にできない。 また、今回の場合はライブラリ側が未対応のバグだが、ライブラリ側にバグ対応が 入っても、そのバージョンを使用する EMR のバージョンがリリースされないと使 用できない。 マネージドサービスを使用する上でのリスクとして考慮する必要がある。 ©2024 Simplex Inc. 30

31.

2.オートスケーリング ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_d 課題 EMR が提供する自動スケーリングのオプションでは細やかな設定が行えず、要件 を満たすことができない。 解決策 EMR が提供する自動スケーリングは利用せずに、 Hadoop YARN リソースマネ ージャメトリクスを監視して EMR インスタンスフリートのスケーリングを自動化 する機能を自前で実装した。 ©2024 Simplex Inc. 31

32.

2.オートスケーリング ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_d 課題 EMR が提供する自動スケーリングのオプションでは細やかな設定が行えず、要件 を満たすことができない。 学び 分散処理の実行状況に応じたスケーリングの最適化は性能要件達成のためには不可 欠なものであり、また金銭的コストにも直結するためユースケースに応じた細やか なチューニングが必要になってくる。 EMR の中核と言える、分散リソース管理および分散アプリケーション実行環境と しての役割を担う Hadoop YARN に関する知見を深めることができた。 ©2024 Simplex Inc. 32

33.

まとめ ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_d Amazon EMR でグローバル規模の金融データを扱う分散処 理システムを構築した話 • EMR とは • 事例紹介 • 大手銀行向け 市場リスク管理システム • 開発を通じて得た学び ©2024 Simplex Inc. 33

34.

アンケートご記入のお願い ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_d 本日はご参加いただきありがとうございました。アンケートのご記入をお願いします。 ©2024 Simplex Inc. 34