Logo Zephyrnet

Cách Amazon tối ưu hóa quy trình đối chiếu tài chính khối lượng lớn với Amazon EMR để có khả năng mở rộng và hiệu suất cao hơn | Dịch vụ web của Amazon

Ngày:

Đối chiếu tài khoản là một bước quan trọng để đảm bảo tính đầy đủ và chính xác của báo cáo tài chính. Cụ thể, doanh nghiệp phải hòa giải Bảng cân đối các tài khoản có thể chứa sai sót trọng yếu hoặc đáng kể. Kế toán viên sẽ xem xét từng tài khoản trong sổ cái chung của các tài khoản và xác minh số dư được liệt kê là đầy đủ và chính xác. Khi phát hiện có sự khác biệt, kế toán viên sẽ điều tra và thực hiện hành động khắc phục thích hợp.

Là một phần của tổ chức FinTech của Amazon, chúng tôi cung cấp một nền tảng phần mềm hỗ trợ các nhóm kế toán nội bộ tại Amazon tiến hành đối chiếu tài khoản. Để tối ưu hóa quá trình đối chiếu, những người dùng này yêu cầu chuyển đổi hiệu suất cao với khả năng mở rộng quy mô theo yêu cầu cũng như khả năng xử lý các kích thước tệp khác nhau, từ mức thấp nhất là vài MB đến hơn 100 GB. Không phải lúc nào cũng có thể đưa dữ liệu vào một máy hoặc xử lý dữ liệu bằng một chương trình duy nhất trong khung thời gian hợp lý. Việc tính toán này phải được thực hiện đủ nhanh để cung cấp các dịch vụ thực tế trong đó logic lập trình và các chi tiết cơ bản (phân phối dữ liệu, khả năng chịu lỗi và lập kế hoạch) có thể được tách riêng.

Chúng ta có thể đạt được các tính toán đồng thời này trên nhiều máy hoặc luồng có cùng chức năng trên các nhóm phần tử của tập dữ liệu bằng cách sử dụng các giải pháp xử lý dữ liệu phân tán. Điều này đã khuyến khích chúng tôi phát minh lại dịch vụ đối chiếu được cung cấp bởi các dịch vụ AWS, bao gồm Amazon EMRApache Spark khung xử lý phân tán, sử dụng PySpark. Dịch vụ này cho phép người dùng xử lý các tệp trên 100 GB chứa tới 100 triệu giao dịch trong vòng chưa đầy 30 phút. Dịch vụ đối chiếu đã trở thành một công cụ mạnh mẽ để xử lý dữ liệu và giờ đây người dùng có thể thực hiện liền mạch nhiều thao tác khác nhau, chẳng hạn như Trục, THAM GIA (giống như thao tác VLOOKUP trong Excel), số học hoạt động và chi tiết, cung cấp giải pháp linh hoạt và hiệu quả để điều chỉnh các tập dữ liệu khổng lồ. Cải tiến này là minh chứng cho khả năng mở rộng và tốc độ đạt được thông qua việc áp dụng các giải pháp xử lý dữ liệu phân tán.

Trong bài đăng này, chúng tôi giải thích cách chúng tôi tích hợp Amazon EMR để xây dựng một hệ thống có tính khả dụng cao và có thể mở rộng, cho phép chúng tôi chạy quy trình đối chiếu tài chính với khối lượng lớn.

Kiến trúc trước khi di chuyển

Sơ đồ sau minh họa kiến ​​trúc trước đây của chúng tôi.

Dịch vụ kế thừa của chúng tôi được xây dựng với Dịch vụ container đàn hồi Amazon (Amazon ECS) trên Cổng xa AWS. Chúng tôi xử lý dữ liệu tuần tự bằng Python. Tuy nhiên, do thiếu khả năng xử lý song song nên chúng tôi thường phải tăng kích thước cụm theo chiều dọc để hỗ trợ các bộ dữ liệu lớn hơn. Đối với ngữ cảnh, 5 GB dữ liệu với 50 thao tác mất khoảng 3 giờ để xử lý. Dịch vụ này được định cấu hình để mở rộng quy mô theo chiều ngang thành năm phiên bản ECS thăm dò tin nhắn từ Dịch vụ xếp hàng đơn giản trên Amazon (Amazon SQS), nơi cung cấp các yêu cầu chuyển đổi. Mỗi phiên bản được cấu hình với 4 vCPU và 30 GB bộ nhớ để cho phép mở rộng theo chiều ngang. Tuy nhiên, chúng tôi không thể mở rộng khả năng về hiệu suất của nó vì quá trình này diễn ra tuần tự, chọn các khối dữ liệu từ Dịch vụ lưu trữ đơn giản của Amazon (Amazon S3) để xử lý. Ví dụ: một thao tác VLOOKUP trong đó hai tệp được nối yêu cầu cả hai tệp phải được đọc theo từng đoạn trong bộ nhớ để có được kết quả đầu ra. Điều này trở thành trở ngại cho người dùng vì họ phải chờ trong thời gian dài để xử lý bộ dữ liệu của mình.

Là một phần trong quá trình tái kiến ​​trúc và hiện đại hóa, chúng tôi muốn đạt được những điều sau:

  • Tính sẵn sàng cao – Các cụm xử lý dữ liệu phải có tính sẵn sàng cao, cung cấp ba mức sẵn sàng 9 (99.9%)
  • Thông lượng – Dịch vụ sẽ xử lý 1,500 lượt chạy mỗi ngày
  • Độ trễ – Nó có thể xử lý 100 GB dữ liệu trong vòng 30 phút
  • Tính không đồng nhất – Cụm phải có thể hỗ trợ nhiều khối lượng công việc khác nhau, với các tệp có kích thước từ vài MB đến hàng trăm GB
  • Truy vấn đồng thời – Việc triển khai đòi hỏi khả năng hỗ trợ tối thiểu 10 độ đồng thời
  • Độ tin cậy của công việc và tính nhất quán của dữ liệu – Công việc cần chạy ổn định và nhất quán để tránh vi phạm Thỏa thuận cấp độ dịch vụ (SLA)
  • Tiết kiệm chi phí và có thể mở rộng – Nó phải có khả năng mở rộng dựa trên khối lượng công việc, giúp tiết kiệm chi phí
  • Bảo mật và tuân thủ – Do tính nhạy cảm của dữ liệu, nó phải hỗ trợ kiểm soát truy cập chi tiết và triển khai bảo mật phù hợp
  • Giám sát – Giải pháp phải cung cấp khả năng giám sát từ đầu đến cuối các cụm và công việc

Tại sao là Amazon EMR

Amazon EMR là giải pháp dữ liệu lớn trên đám mây hàng đầu trong ngành để xử lý dữ liệu ở quy mô petabyte, phân tích tương tác và học máy (ML) bằng cách sử dụng các khung nguồn mở như Apache Spark, Tổ ong ApacheMau. Với các khung này và các dự án nguồn mở có liên quan, bạn có thể xử lý dữ liệu cho mục đích phân tích và khối lượng công việc BI. Amazon EMR cho phép bạn chuyển đổi và di chuyển lượng lớn dữ liệu vào và ra khỏi các kho dữ liệu và cơ sở dữ liệu AWS khác, chẳng hạn như Amazon S3 và Máy phát điện Amazon.

Ưu điểm đáng chú ý của Amazon EMR nằm ở việc sử dụng hiệu quả khả năng xử lý song song với PySpark, đánh dấu sự cải tiến đáng kể so với mã Python tuần tự truyền thống. Cách tiếp cận đổi mới này hợp lý hóa việc triển khai và mở rộng quy mô các cụm Apache Spark, cho phép song song hóa hiệu quả trên các tập dữ liệu lớn. Cơ sở hạ tầng điện toán phân tán không chỉ nâng cao hiệu suất mà còn cho phép xử lý lượng dữ liệu khổng lồ với tốc độ chưa từng có. Được trang bị các thư viện, PySpark hỗ trợ các hoạt động giống như Excel trên khung dữ liệuvà tính trừu tượng ở cấp độ cao hơn của DataFrames giúp đơn giản hóa các thao tác dữ liệu phức tạp, giảm độ phức tạp của mã. Kết hợp với việc cung cấp cụm tự động, phân bổ tài nguyên động và tích hợp với các dịch vụ AWS khác, Amazon EMR chứng tỏ là một giải pháp linh hoạt phù hợp với khối lượng công việc đa dạng, từ xử lý hàng loạt đến ML. Khả năng chịu lỗi cố hữu trong PySpark và Amazon EMR thúc đẩy tính mạnh mẽ, ngay cả trong trường hợp nút bị lỗi, khiến nó trở thành lựa chọn có quy mô linh hoạt, tiết kiệm chi phí và hiệu suất cao để xử lý dữ liệu song song trên AWS.

Amazon EMR mở rộng khả năng của mình vượt xa những điều cơ bản, cung cấp nhiều tùy chọn triển khai khác nhau để phục vụ các nhu cầu đa dạng. Cho dù đó là Amazon EMR trên EC2, Amazon EMR trên EKS, Amazon EMR không có máy chủ, hoặc là Amazon EMR trên AWS Outposts, bạn có thể điều chỉnh cách tiếp cận của mình cho phù hợp với các yêu cầu cụ thể. Đối với những người đang tìm kiếm môi trường không có máy chủ cho công việc Spark, việc tích hợp Keo AWS cũng là một phương án khả thi. Ngoài việc hỗ trợ nhiều khung nguồn mở khác nhau, bao gồm Spark, Amazon EMR còn mang đến sự linh hoạt trong việc lựa chọn chế độ triển khai, Đám mây điện toán đàn hồi Amazon (Amazon EC2), cơ chế mở rộng quy mô và nhiều kỹ thuật tối ưu hóa tiết kiệm chi phí.

Amazon EMR được coi là một thế lực năng động trong đám mây, mang lại khả năng chưa từng có cho các tổ chức đang tìm kiếm giải pháp dữ liệu lớn mạnh mẽ. Khả năng tích hợp liền mạch, các tính năng mạnh mẽ và khả năng thích ứng khiến nó trở thành công cụ không thể thiếu để điều hướng sự phức tạp của phân tích dữ liệu và ML trên AWS.

Kiến trúc được thiết kế lại

Sơ đồ sau minh họa kiến ​​trúc được thiết kế lại của chúng tôi.

Giải pháp này hoạt động theo hợp đồng API, trong đó khách hàng có thể gửi cấu hình chuyển đổi, xác định tập hợp các thao tác cùng với vị trí tập dữ liệu S3 để xử lý. Yêu cầu được xếp hàng qua Amazon SQS, sau đó được chuyển hướng đến Amazon EMR thông qua chức năng Lambda. Quá trình này bắt đầu tạo bước Amazon EMR để triển khai khung Spark trên cụm EMR chuyên dụng. Mặc dù Amazon EMR cung cấp số bước không giới hạn trong suốt thời gian hoạt động của cụm dài hạn nhưng chỉ có 256 bước có thể chạy hoặc chờ xử lý đồng thời. Để song song hóa tối ưu, đồng thời bước được đặt ở mức 10, cho phép 10 bước chạy đồng thời. Trong trường hợp yêu cầu không thành công, Amazon SQS hàng đợi chữ cái chết (DLQ) giữ lại sự kiện. Spark xử lý yêu cầu, dịch các thao tác giống Excel sang mã PySpark để có kế hoạch truy vấn hiệu quả. DataFrame linh hoạt lưu trữ dữ liệu đầu vào, đầu ra và dữ liệu trung gian trong bộ nhớ, tối ưu hóa tốc độ xử lý, giảm chi phí I/O ổ đĩa, nâng cao hiệu suất khối lượng công việc và phân phối đầu ra cuối cùng đến vị trí Amazon S3 được chỉ định.

Chúng tôi xác định SLA của mình theo hai chiều: độ trễ và thông lượng. Độ trễ được định nghĩa là lượng thời gian thực hiện một công việc so với kích thước tập dữ liệu xác định và số lượng thao tác được thực hiện trên tập dữ liệu. Thông lượng được định nghĩa là số lượng công việc đồng thời tối đa mà dịch vụ có thể thực hiện mà không vi phạm SLA về độ trễ của một công việc. Khả năng mở rộng tổng thể SLA của dịch vụ phụ thuộc vào sự cân bằng giữa khả năng mở rộng theo chiều ngang của tài nguyên điện toán đàn hồi và khả năng mở rộng theo chiều dọc của từng máy chủ.

Vì chúng tôi phải chạy 1,500 quy trình mỗi ngày với độ trễ tối thiểu và hiệu suất cao nên chúng tôi chọn tích hợp Amazon EMR trên chế độ triển khai EC2 với tính năng điều chỉnh quy mô được quản lý để hỗ trợ xử lý các kích thước tệp khác nhau.

Cấu hình cụm EMR cung cấp nhiều lựa chọn khác nhau:

  • Các loại nút EMR – Các nút chính, lõi hoặc nhiệm vụ
  • Tùy chọn mua phiên bản – Phiên bản theo yêu cầu, Phiên bản dự trữ hoặc Phiên bản Spot
  • Tùy chọn cấu hình – Nhóm phiên bản EMR hoặc nhóm phiên bản thống nhất
  • Tùy chọn chia tỷ lệTự động mở rộng quy mô hoặc thay đổi quy mô được quản lý bởi Amazon EMR

Dựa trên khối lượng công việc thay đổi của chúng tôi, chúng tôi đã đặt cấu hình nhóm phiên bản EMR (để biết các biện pháp thực hành tốt nhất, hãy xem Độ tin cậy). Chúng tôi cũng đã quyết định sử dụng khả năng thay đổi quy mô được quản lý của Amazon EMR để thay đổi quy mô các nút lõi và nhiệm vụ (để biết các kịch bản thay đổi quy mô, hãy tham khảo Kịch bản phân bổ nút). Cuối cùng, chúng tôi đã chọn tối ưu hóa bộ nhớ AWS trọng lực trường hợp, trong đó cung cấp lên đến Chi phí thấp hơn 30% và hiệu suất được cải thiện lên tới 15% cho khối lượng công việc Spark.

Đoạn mã sau cung cấp ảnh chụp nhanh về cấu hình cụm của chúng tôi:

Concurrent steps:10

EMR Managed Scaling:
minimumCapacityUnits: 64
maximumCapacityUnits: 512
maximumOnDemandCapacityUnits: 512
maximumCoreCapacityUnits: 512

Master Instance Fleet:
r6g.xlarge
- 4 vCore, 30.5 GiB memory, EBS only storage
- EBS Storage:250 GiB
- Maximum Spot price: 100 % of On-demand price
- Each instance counts as 1 units
r6g.2xlarge
- 8 vCore, 61 GiB memory, EBS only storage
- EBS Storage:250 GiB
- Maximum Spot price: 100 % of On-demand price
- Each instance counts as 1 units

Core Instance Fleet:
r6g.2xlarge
- 8 vCore, 61 GiB memory, EBS only storage
- EBS Storage:100 GiB
- Maximum Spot price: 100 % of On-demand price
- Each instance counts as 8 units
r6g.4xlarge
- 16 vCore, 122 GiB memory, EBS only storage
- EBS Storage:100 GiB
- Maximum Spot price: 100 % of On-demand price
- Each instance counts as 16 units

Task Instances:
r6g.2xlarge
- 8 vCore, 61 GiB memory, EBS only storage
- EBS Storage:100 GiB
- Maximum Spot price: 100 % of On-demand price
- Each instance counts as 8 units
r6g.4xlarge
- 16 vCore, 122 GiB memory, EBS only storage
- EBS Storage:100 GiB
- Maximum Spot price: 100 % of On-demand price
- Each instance counts as 16 units

HIỆU QUẢ

Với việc di chuyển sang Amazon EMR, chúng tôi có thể đạt được hiệu năng hệ thống có khả năng xử lý nhiều bộ dữ liệu khác nhau, từ mức thấp nhất là 273 B đến cao nhất là 88.5 GB với p99 trong 491 giây (khoảng 8 phút).

Hình dưới đây minh họa sự đa dạng của kích thước tệp được xử lý.

Hình dưới đây cho thấy độ trễ của chúng tôi.

Để so sánh với quá trình xử lý tuần tự, chúng tôi đã lấy hai tập dữ liệu chứa 53 triệu bản ghi và chạy thao tác VLOOKUP với nhau, cùng với 49 thao tác giống Excel khác. Quá trình này mất 26 phút để xử lý trong dịch vụ mới, so với 5 ngày để xử lý trong dịch vụ cũ. Sự cải tiến này lớn hơn gần 300 lần so với kiến ​​trúc trước đó về mặt hiệu suất.

Những cân nhắc

Hãy ghi nhớ những điều sau khi xem xét giải pháp này:

  • Các cụm có kích thước phù hợp – Mặc dù Amazon EMR có thể thay đổi kích thước nhưng điều quan trọng là phải điều chỉnh kích thước các cụm phù hợp. Việc định cỡ phù hợp sẽ giảm thiểu tình trạng cụm chậm nếu quy mô nhỏ hoặc chi phí cao hơn nếu cụm có quy mô quá lớn. Để lường trước những vấn đề này, bạn có thể tính toán số lượng và loại nút cần thiết cho khối lượng công việc.
  • Các bước song song – Chạy song song các bước cho phép bạn chạy khối lượng công việc nâng cao hơn, tăng mức sử dụng tài nguyên cụm và giảm lượng thời gian cần thiết để hoàn thành khối lượng công việc của bạn. Số bước được phép chạy cùng một lúc có thể định cấu hình và có thể được đặt khi cụm được khởi chạy và bất kỳ lúc nào sau khi cụm đã bắt đầu. Bạn cần xem xét và tối ưu hóa việc sử dụng CPU/bộ nhớ cho mỗi công việc khi có nhiều công việc đang chạy trong một cụm chia sẻ.
  • Cụm EMR tạm thời dựa trên công việc – Nếu có thể, bạn nên sử dụng cụm EMR nhất thời dựa trên công việc để mang lại khả năng cách ly vượt trội, xác minh rằng mỗi tác vụ đều hoạt động trong môi trường chuyên dụng của nó. Cách tiếp cận này tối ưu hóa việc sử dụng tài nguyên, giúp ngăn chặn sự can thiệp giữa các công việc và nâng cao hiệu suất cũng như độ tin cậy tổng thể. Bản chất nhất thời cho phép mở rộng quy mô hiệu quả, cung cấp giải pháp mạnh mẽ và biệt lập cho các nhu cầu xử lý dữ liệu đa dạng.
  • EMR không có máy chủ – EMR Serverless là lựa chọn lý tưởng nếu bạn không muốn xử lý việc quản lý và vận hành các cụm. Nó cho phép bạn dễ dàng chạy các ứng dụng bằng cách sử dụng các khung nguồn mở có sẵn trong EMR Serverless, mang lại trải nghiệm đơn giản và không rắc rối.
  • đàn bà gan dạ EMR trên EKS – Amazon EMR trên EKS mang lại những lợi thế khác biệt, chẳng hạn như thời gian khởi động nhanh hơn và khả năng mở rộng được cải thiện để giải quyết các thách thức về năng lực điện toán—điều này đặc biệt có lợi cho người dùng Graviton và Spot Instance. Việc đưa vào phạm vi rộng hơn các loại điện toán sẽ nâng cao hiệu quả chi phí, cho phép phân bổ nguồn lực phù hợp. Hơn nữa, hỗ trợ Multi-AZ giúp tăng tính khả dụng. Những tính năng hấp dẫn này cung cấp giải pháp mạnh mẽ để quản lý khối lượng công việc dữ liệu lớn với hiệu suất được cải thiện, tối ưu hóa chi phí và độ tin cậy trong nhiều tình huống điện toán khác nhau.

Kết luận

Trong bài đăng này, chúng tôi đã giải thích cách Amazon tối ưu hóa quy trình đối chiếu tài chính khối lượng lớn với Amazon EMR để có khả năng mở rộng và hiệu suất cao hơn. Nếu bạn có một ứng dụng nguyên khối phụ thuộc vào quy mô theo chiều dọc để xử lý các yêu cầu hoặc tập dữ liệu bổ sung thì việc di chuyển ứng dụng đó sang khung xử lý phân tán như Apache Spark và chọn dịch vụ được quản lý như Amazon EMR cho điện toán có thể giúp giảm thời gian chạy để giảm thời gian phân phối của bạn SLA và cũng có thể giúp giảm Tổng chi phí sở hữu (TCO).

Khi chúng tôi sử dụng Amazon EMR cho trường hợp sử dụng cụ thể này, chúng tôi khuyến khích bạn khám phá những khả năng khác trong hành trình đổi mới dữ liệu của mình. Hãy cân nhắc việc đánh giá AWS Glue, cùng với các tùy chọn triển khai Amazon EMR động khác như EMR Serverless hoặc Amazon EMR trên EKS, để khám phá dịch vụ AWS tốt nhất phù hợp với trường hợp sử dụng riêng của bạn. Tương lai của hành trình đổi mới dữ liệu chứa đựng những khả năng và tiến bộ thú vị cần được khám phá thêm.


Về các tác giả

Jeeshan Khetrapal là Kỹ sư phát triển phần mềm cấp cao tại Amazon, nơi ông phát triển các sản phẩm fintech dựa trên kiến ​​trúc không có máy chủ của điện toán đám mây, chịu trách nhiệm kiểm soát chung về CNTT, báo cáo tài chính và kiểm soát quản trị, rủi ro và tuân thủ của công ty.

Sakti Mishra là Kiến trúc sư giải pháp chính tại AWS, nơi ông giúp khách hàng hiện đại hóa kiến ​​trúc dữ liệu và xác định chiến lược dữ liệu toàn diện, bao gồm bảo mật dữ liệu, khả năng truy cập, quản trị, v.v. Ông cũng là tác giả cuốn sách Đơn giản hóa phân tích dữ liệu lớn với Amazon EMR. Ngoài công việc, Sakti thích học hỏi những công nghệ mới, xem phim và đi thăm thú các địa điểm cùng gia đình.

tại chỗ_img

Tin tức mới nhất

tại chỗ_img