Chuyển đến nội dung chính

Amazon EMR: Hướng dẫn thực hành hoàn chỉnh cho người mới bắt đầu

Hướng dẫn thực tế về Amazon EMR giải thích cách thiết lập, quản lý và tối ưu cụm dữ liệu lớn, giúp xử lý dữ liệu quy mô lớn trở nên dễ dàng và hiệu quả!
· 15 phút đọc

Khám phá cùng AI

Hãy tưởng tượng bạn đang quản lý hàng terabyte dữ liệu giao dịch khách hàng, và hệ thống hiện tại của bạn đang chao đảo dưới áp lực. 

Bạn cần một giải pháp có thể mở rộng theo nhu cầu, tối ưu chi phí và tích hợp với hạ tầng AWS hiện có. Amazon Elastic MapReduce (EMR) có thể giúp bạn. Khi tôi mới bắt đầu làm việc với dữ liệu lớn, tôi cũng gặp thách thức tương tự—cho đến khi tôi khám phá ra EMR.

Trong hướng dẫn này, chúng ta sẽ đi từ việc thiết lập cụm EMR đến thực thi khối lượng công việc, tối ưu hiệu năng, đảm bảo bảo mật, xử lý sự cố và quản lý chi phí.

Amazon EMR là gì?

Amazon EMR là dịch vụ cụm được quản lý hoàn toàn, giúp đơn giản hóa xử lý dữ liệu lớn bằng cách cung cấp khả năng cung cấp, mở rộng và cấu hình tự động cho các bộ khung mã nguồn mở.

Bạn có thể phân tích lượng lớn dữ liệu có cấu trúc và phi cấu trúc mà không cần vất vả quản lý các cụm on-premises thủ công.

Hình ảnh dưới đây minh họa cách Amazon EMR trên EKS hoạt động với các dịch vụ AWS khác, cung cấp cái nhìn trực quan về tích hợp và quy trình làm việc.

Sơ đồ minh họa cách Amazon EMR tích hợp với Amazon EKS và các dịch vụ AWS khác cho xử lý dữ liệu lớn.

Sơ đồ minh họa cách Amazon EMR tích hợp với Amazon EKS và các dịch vụ AWS khác cho xử lý dữ liệu lớn. Nenguồn: AWS Docs

Nếu bạn mới làm quen với AWS, tôi khuyên bạn nên xem khóa học Introduction to AWS để xây dựng kiến thức nền tảng.

Một số tính năng chính của Amazon EMR bao gồm:

  • Khả năng mở rộng: EMR cho phép bạn thêm hoặc bớt máy chủ động theo yêu cầu khối lượng công việc.
  • Hiệu quả chi phí: Tận dụng Spot Instances và tự động mở rộng giúp bạn tối ưu chi phí tính toán.
  • Tích hợp với các dịch vụ AWS: EMR tích hợp liền mạch với các dịch vụ như Amazon S3 (lưu trữ dữ liệu), AWS Lambda (điện toán phi máy chủ), Amazon RDS (cơ sở dữ liệu quan hệ) và Amazon CloudWatch (giám sát).
  • Hỗ trợ các bộ khung phổ biến: EMR hỗ trợ Apache Spark, Hadoop, Hive, Pig, Presto, v.v., cho phép bạn làm việc với các công cụ dữ liệu lớn quen thuộc.

Sơ đồ liệt kê các tính năng chính của Amazon EMR.Sơ đồ liệt kê các tính năng chính của Amazon EMR. Ảnh được tạo bằng Napkin AI

Tự động hóa quản lý cụm và mở rộng giúp bạn giảm độ phức tạp vận hành và tập trung vào xử lý dữ liệu và phân tích.

Nếu bạn muốn hiểu rõ hơn các dịch vụ lưu trữ AWS như Amazon S3 trước khi tiếp tục với Amazon EMR, hãy xem AWS Storage Tutorial.

Thiết lập cụm Amazon EMR

Để thiết lập một cụm Amazon EMR, bạn cần truy cập dịch vụ EMR, tạo cụm và cấu hình phù hợp với khối lượng công việc của mình. 

Tạo một cụm EMR

Để bắt đầu, đăng nhập vào AWS Management Console và điều hướng đến dịch vụ EMR. 

Bạn có thể làm điều này bằng cách tìm kiếm "EMR" trong ô tìm kiếm của AWS Management Console—như minh họa trong hình dưới đây.

Ảnh chụp màn hình AWS Management Console với từ 'EMR' trong ô tìm kiếm.

Khi đã vào, nhấp vào “Create Cluster” — như trong hình dưới đây.

Ảnh chụp màn hình AWS Management Console hiển thị trang "Create Cluster" để thiết lập Amazon EMR.

Hình dưới đây chụp giao diện EMR hiện tại—dù có thể thay đổi theo thời gian, các thiết lập cốt lõi vẫn sẽ tương tự.

Ảnh chụp giao diện AWS EMR hiển thị các lựa chọn framework như Apache Spark, Hadoop và Presto.

Để cấu hình cụm Amazon EMR, bạn cần điều chỉnh một số thiết lập phù hợp với yêu cầu khối lượng công việc cụ thể. Hãy làm theo các bước sau:

01: Chọn bộ khung dữ liệu lớn

EMR cung cấp nhiều bộ khung, như Apache Spark cho xử lý trong bộ nhớ, Hadoop cho lưu trữ và xử lý phân tán, và Presto cho truy vấn SQL tương tác. 

Hãy chọn bộ khung phù hợp nhất với trường hợp sử dụng của bạn.

02: Chọn loại máy chủ

Loại máy ảnh hưởng đến hiệu năng và chi phí. Lựa chọn phổ biến là m5.xlarge vì cân bằng giữa sức mạnh tính toán và chi phí. 

Với khối lượng công việc nặng về bộ nhớ, dùng r5.xlarge, trong khi c5.xlarge phù hợp hơn cho tác vụ nặng về tính toán.

03: Cấu hình các nút trong cụm

Cụm EMR gồm ba loại nút:

  • Nút Master: Quản lý cụm và điều phối các job xử lý. (Thường là một máy đơn).
  • Các nút Core: Thực hiện xử lý dữ liệu và lưu trữ dữ liệu HDFS. (Tối thiểu một, có thể mở rộng theo nhu cầu).
  • Các nút Task: Tùy chọn, xử lý thêm khối lượng công việc mà không lưu dữ liệu. Số lượng nút core và task nên chọn theo quy mô khối lượng công việc.

04: Cấu hình bảo mật và truy cập

Thiết lập cặp khóa EC2 để truy cập SSH và cấu hình vai trò IAM để kiểm soát quyền.

Bạn nên bật xác thực Kerberos hoặc AWS Lake Formation để tăng cường bảo mật.

05: Thiết lập mạng và lưu trữ

Định nghĩa thiết lập VPC, bật auto-scaling để tự động điều chỉnh kích thước cụm, và chỉ định Amazon S3 là vị trí lưu trữ chính (s3://your-bucket-name/).

06: Khởi chạy cụm

Sau khi xem lại cấu hình, nhấp "Create Cluster" để khởi chạy. 

Cụm sẽ mất vài phút để khởi tạo trước khi sẵn sàng.

Hình dưới đây làm nổi bật giao diện nơi bạn có thể tạo cụm.

Ảnh chụp màn hình AWS Management Console hiển thị nút 'Create Cluster' để khởi chạy cụm Amazon EMR mới.

Cấu hình ứng dụng và phụ thuộc

Khi cụm đã hoạt động, bạn có thể tinh chỉnh bằng cách chọn các ứng dụng cài sẵn và cấu hình bootstrap actions:

  • Ứng dụng cài sẵn: Chọn từ nhiều ứng dụng như Hive cho truy vấn dựa trên SQL, Pig cho scripting bậc cao, và HBase cho hỗ trợ cơ sở dữ liệu NoSQL.
  • Bootstrap actions: Bạn có thể tùy biến cụm bằng cách cài thêm thư viện, chỉnh sửa thiết lập hệ thống hoặc chuẩn bị dữ liệu. Ví dụ bootstrap actions gồm:
    • Cài thư viện Python (pip install pandas numpy)
    • Cấu hình logging
    • Tinh chỉnh thiết lập JVM cho Hadoop/Spark

Cấu hình phù hợp giúp cụm EMR tối ưu cho khối lượng công việc, giảm thời gian xử lý và chi phí vận hành.

Làm việc với Amazon EMR

Khi cụm EMR đã được thiết lập và cấu hình, bước tiếp theo là bắt đầu làm việc với dữ liệu của bạn. 

Tải dữ liệu lên Amazon EMR

Amazon EMR chủ yếu dựa vào Amazon S3 để lưu trữ bộ dữ liệu đầu vào và kết quả đầu ra. 

Khác với HDFS lưu trữ dữ liệu trong cụm, S3 mang lại độ bền, khả năng mở rộng và hiệu quả chi phí, trở thành lựa chọn ưu tiên để quản lý dữ liệu trong EMR.

Để tải dữ liệu lên Amazon S3, thực hiện các bước sau:

01: Truy cập bảng điều khiển S3

Đăng nhập AWS Management Console và mở dịch vụ Amazon S3.

02: Tạo hoặc chọn bucket

Chọn một bucket hiện có hoặc tạo bucket mới. Đảm bảo bucket cùng vùng với cụm EMR để giảm độ trễ.

Hình dưới đây hiển thị quy trình tạo một bucket Amazon S3. 

Khi tạo bucket, hãy nhớ tên bucket phải là duy nhất toàn cầu và tuân thủ quy ước đặt tên của AWS. Hãy chọn tên phản ánh trường hợp sử dụng của bạn đồng thời đáp ứng các yêu cầu này.

Ảnh chụp bảng điều khiển AWS S3 hiển thị cách tạo bucket mới.

03: Tải tệp dữ liệu

Nhấp "Upload", chọn các tệp cần thiết và đặt quyền truy cập. 

Hình dưới đây làm nổi bật giao diện nơi bạn có thể tải tệp lên một bucket Amazon S3. 

Ảnh chụp hiển thị giao diện AWS S3 với nút tải lên để thêm tệp dữ liệu vào một bucket S3.

Ngoài ra, bạn có thể dùng AWS CLI để tải tệp theo cách lập trình. 

Trước khi làm vậy, bạn cần đảm bảo AWS CLI đã được cài đặt và cấu hình với thông tin xác thực phù hợp bằng cách chạy:

aws configure

Lệnh này sẽ yêu cầu bạn nhập AWS Access Key ID, Secret Access Key, vùng và định dạng đầu ra để xác thực phiên làm việc. Bạn có thể bỏ qua bước trên nếu AWS CLI đã được cấu hình.

Sau khi cấu hình, bạn có thể tải tệp bằng lệnh sau:

aws s3 cp local_file.csv s3://your-bucket-name/data/

04: Truy cập dữ liệu từ EMR

Sau khi tải lên, dữ liệu có thể được truy cập từ EMR bằng đường dẫn S3: s3://your-bucket-name/data/

Các ứng dụng như Spark, Hadoop và Hive có thể xử lý dữ liệu trực tiếp từ S3.

Các tùy chọn lưu trữ dữ liệu thay thế

  • HDFS (Hadoop Distributed File System): Dùng cho lưu trữ tạm thời trong quá trình xử lý, nhưng dữ liệu sẽ mất khi cụm bị kết thúc.
  • Amazon DynamoDB: Lưu trữ NoSQL và truy xuất dữ liệu theo thời gian thực.
  • AWS Glue Data Catalog: Dùng để tổ chức và quản lý siêu dữ liệu cho các bộ dữ liệu lưu trữ trong S3.

Chạy job Spark hoặc Hadoop

Sau khi tải dữ liệu, bạn có thể xử lý bằng Apache Spark, Hadoop hoặc các bộ khung dữ liệu lớn khác. 

EMR cho phép thực thi job qua AWS CLI, bảng điều khiển EMR hoặc SSH trực tiếp.

Chạy một job Spark

Để gửi một job Spark, SSH vào cụm và dùng lệnh spark-submit:

spark-submit --deploy-mode cluster s3://your-bucket-name/scripts/sample_job.py

Ngoài ra, bạn có thể gửi job qua tính năng "Steps" của AWS EMR—cho phép tự động hóa job mà không cần truy cập thủ công vào cụm.

Để tìm hiểu các khái niệm nền tảng trước khi chạy job Spark trên EMR, khóa học Big Data Fundamentals with PySpark là điểm khởi đầu tuyệt vời. Nếu quy trình làm việc của bạn bao gồm xử lý các bộ dữ liệu lộn xộn, bạn có thể quan tâm đến khóa học Cleaning Data with PySpark đặc biệt hữu ích.

Chạy một job Hadoop MapReduce

Với các job Hadoop, dùng giao diện dòng lệnh:

hadoop jar s3://your-bucket-name/jars/sample_job.jar input_dir output_dir

Các job Hadoop cũng có thể được quản lý bằng AWS Step Functions để tự động hóa quy trình.

Bảo mật và kiểm soát truy cập hiệu quả là điều tối quan trọng khi chạy job dữ liệu lớn. 

Vì các job Spark và Hadoop tương tác với dữ liệu nhạy cảm, Amazon EMR tích hợp với Apache Ranger để thực thi kiểm soát truy cập và quyền hạn chi tiết. 

Hình dưới đây minh họa kiến trúc ví dụ của tích hợp này, làm nổi bật cách các chính sách bảo mật được áp dụng trên các cụm EMR.

Sơ đồ minh họa cách Apache Ranger thực thi các chính sách bảo mật trên các cụm Amazon EMR.Sơ đồ minh họa cách Apache Ranger thực thi các chính sách bảo mật trên các cụm Amazon EMR. Nenguồn: AWS Docs

Giám sát hiệu năng cụm

Để đảm bảo xử lý hiệu quả, hãy giám sát cụm EMR bằng Amazon CloudWatch, Ganglia và Spark UI.

Các công cụ này cung cấp thông tin theo thời gian thực về mức sử dụng tài nguyên, tiến độ job và các nút thắt cổ chai tiềm ẩn.

Các công cụ giám sát chính

  • Amazon CloudWatch: Theo dõi mức sử dụng CPU, bộ nhớ, I/O đĩa và hoạt động mạng. Bạn có thể đặt cảnh báo CloudWatch để nhận thông báo về vấn đề hiệu năng.
  • Nhật ký EMR: Truy cập nhật ký hệ thống trong Amazon S3 để gỡ lỗi lỗi job. Có thể bật nhật ký trong phần "Cluster Logging" khi tạo cụm.
  • Ganglia: Cung cấp trực quan hóa chi tiết hiệu năng cụm, có trong thẻ "Monitoring" trên bảng điều khiển EMR.
  • Spark UI:  Nếu bạn đang chạy job Spark, dùng Spark Web UI để kiểm tra kế hoạch thực thi, phụ thuộc giữa các giai đoạn và mức tiêu thụ tài nguyên.

Thực hành tốt để tối ưu hiệu năng

  • Bật tự động mở rộng: Tự động thêm hoặc bớt nút cụm theo nhu cầu khối lượng công việc.
  • Dùng spot instances: Giảm chi phí bằng cách dùng EC2 Spot Instances cho các nút task.
  • Tinh chỉnh cấu hình Spark và Hadoop: Điều chỉnh bộ nhớ (spark.executor.memory), mức song song (spark.default.parallelism) và kích thước khối Hadoop để đạt hiệu năng tối ưu.

Bằng cách làm theo các bước này, bạn có thể xử lý hiệu quả các bộ dữ liệu lớn trong khi giữ cho cụm EMR tiết kiệm chi phí và hiệu năng cao.

Mở rộng quy mô cụm Amazon EMR

Khi nhu cầu xử lý dữ liệu phát triển, bạn có thể cần điều chỉnh tài nguyên của cụm EMR để duy trì hiệu năng và hiệu quả chi phí.

EMR cung cấp các tùy chọn mở rộng thủ công và tự động, cho phép bạn thay đổi số lượng máy theo nhu cầu khối lượng công việc. 

Bên cạnh đó, tận dụng Spot Instances có thể giúp tối ưu chi phí đồng thời đảm bảo khả năng mở rộng.

Mở rộng thủ công

Mở rộng thủ công cho phép bạn tăng hoặc giảm số lượng máy trong cụm theo nhu cầu thời gian thực. 

Bạn có thể thực hiện điều chỉnh này qua bảng điều khiển EMR, AWS CLI hoặc EMR API.

  • Dùng bảng điều khiển EMR: Điều hướng đến cụm của bạn, chọn "Resize" và chỉ định số lượng máy mong muốn.
  • Dùng AWS CLI: Chạy lệnh sau để thay đổi kích thước cụm:
aws emr modify-instance-groups --cluster-id <your-cluster-id> --instance-groups InstanceGroupId=<your-instance-group-id>,InstanceCount=<new-instance-count>
  • Dùng EMR API: Bạn có thể dùng API ModifyInstanceGroups để điều chỉnh động số lượng máy.

Mở rộng thủ công phù hợp nhất với khối lượng công việc dự đoán được, nơi bạn có thể ước tính trước nhu cầu tài nguyên. 

Ví dụ, tôi dùng mở rộng thủ công khi biết job xử lý dữ liệu sẽ có nhu cầu ổn định, cho phép tôi điều chỉnh số lượng máy theo khối lượng dự kiến và đảm bảo sử dụng tài nguyên tối ưu.

Tự động mở rộng trong Amazon EMR

Tự động mở rộng trong EMR điều chỉnh động số lượng máy theo thay đổi khối lượng công việc, đảm bảo sử dụng tài nguyên hiệu quả trong khi kiểm soát chi phí. 

Các chính sách tự động mở rộng xác định thời điểm thêm hoặc bớt máy dựa trên các chỉ số cụ thể như mức sử dụng CPU, bộ nhớ YARN hoặc độ dài hàng đợi tác vụ.

Các cấu hình tự động mở rộng chính:

  • Scale-out policy: Thêm máy khi khối lượng công việc tăng, đảm bảo xử lý job kịp thời.
  • Scale-in policy: Giảm máy khi nhu cầu giảm, tránh chi phí không cần thiết.
  • Thời gian hồi (cooldown): Ngăn hành động mở rộng quá dày trong khoảng thời gian ngắn.

Để bật tự động mở rộng, cấu hình Auto-Scaling Policy qua AWS Management Console, CLI hoặc API. 

Ví dụ lệnh AWS CLI để đặt chính sách tự động mở rộng:

aws emr put-auto-scaling-policy --cluster-id <your-cluster-id> --instance-group-id <your-instance-group-id> --auto-scaling-policy file://policy.json

Tự động mở rộng đặc biệt hữu ích cho khối lượng công việc biến động, như phân tích luồng, xử lý theo lô và các tác vụ học máy có yêu cầu tài nguyên dao động. 

Chẳng hạn, tôi dùng tự động mở rộng khi chạy một mô hình học máy có các đợt tăng đột biến không lường trước. Hệ thống tự động mở rộng khi cao điểm và thu hẹp khi nhu cầu giảm, giúp tối ưu cả chi phí lẫn hiệu năng.

Spot instances để tối ưu chi phí

Amazon EC2 Spot Instances cung cấp cách tiết kiệm chi phí để chạy cụm EMR bằng cách tận dụng năng lực EC2 dư thừa với mức giá giảm đáng kể. 

Sơ đồ cho thấy cách sử dụng Spot Instances.

Những máy chủ này lý tưởng nếu bạn có khối lượng công việc chịu lỗi, như xử lý dữ liệu lớn và học máy.

Lợi ích khi dùng Spot Instances trong EMR:

  • Tiết kiệm chi phí: Spot Instances có thể rẻ hơn tới 90% so với On-Demand.
  • Khả năng mở rộng: Bạn có thể bổ sung sức mạnh tính toán linh hoạt với chi phí thấp hơn.
  • Kết hợp loại máy: EMR cho phép pha trộn Spot, On-Demand và Reserved Instances để cân bằng chi phí và độ tin cậy.

Tuy nhiên, Spot Instances có thể bị gián đoạn nếu AWS thu hồi năng lực. Để giảm thiểu:

  • Dùng Instance Fleets thay vì Instance Groups để kết hợp Spot và On-Demand linh hoạt.
  • Triển khai checkpointing trong khối lượng công việc để phục hồi sau gián đoạn tiềm ẩn.
  • Thiết lập yêu cầu Spot đa dạng trên nhiều Vùng sẵn sàng và loại máy để tăng ổn định.

Để cấu hình Spot Instances trong EMR, dùng lệnh AWS CLI sau:

aws emr create-cluster --instance-fleets file://instance-fleet-config.json

Kết hợp mở rộng thủ công, tự động mở rộng và Spot Instances có thể giúp bạn tối ưu cụm EMR về hiệu năng, chi phí và độ tin cậy.

Bảo mật và kiểm soát truy cập trong Amazon EMR

Cấu hình sai vai trò IAM trong EMR có thể khiến dữ liệu nhạy cảm lộ ra cho người dùng không mong muốn. Do đó, bạn luôn nên áp dụng nguyên tắc đặc quyền tối thiểu và giới hạn truy cập SSH chỉ cho IP đáng tin cậy.

AWS cung cấp các tính năng bảo mật mạnh mẽ, bao gồm vai trò IAM để kiểm soát truy cập, mã hóa để bảo vệ dữ liệu và các thực hành tốt để bảo vệ môi trường của bạn.

Vai trò và chính sách IAM

AWS Identity and Access Management (IAM) kiểm soát truy cập vào các cụm EMR và tài nguyên liên quan. 

Khi tạo cụm, bạn phải gán các vai trò IAM cấp quyền tương tác với S3, DynamoDB và các dịch vụ AWS khác. 

Xác định các chính sách đặc quyền tối thiểu đảm bảo bảo mật bằng cách giới hạn truy cập chỉ với tài nguyên cần thiết.

Hình dưới đây hiển thị các managed policy và cách chúng có thể được dùng với EMR.

Ảnh chụp cài đặt chính sách AWS IAM hiển thị cách phân quyền.

Ảnh chụp cài đặt chính sách AWS IAM hiển thị cách phân quyền. Nenguồn: AWS Docs

Mã hóa dữ liệu và thực hành bảo mật tốt

Amazon EMR hỗ trợ mã hóa dữ liệu khi lưu trữ bằng Amazon S3 server-side encryption (SSE) hoặc AWS Key Management Service (KMS). Dữ liệu khi truyền có thể được bảo vệ bằng giao thức SSL/TLS.

Các thực hành bảo mật tốt bao gồm dùng xác thực đa yếu tố (MFA) khi truy cập bảng điều khiển AWS, hạn chế truy cập SSH và quản lý khóa API an toàn.

Nếu bạn muốn tìm hiểu thêm về bảo mật AWS, hãy xem khóa học AWS Security and Cost Management.

Xử lý sự cố Amazon EMR

Mặc dù Amazon EMR được thiết kế để mở rộng và tin cậy, sự cố vẫn có thể xảy ra trong quá trình vận hành cụm và thực thi job. 

Các thách thức phổ biến gồm nút thắt cổ chai hiệu năng, lỗi job và hạn chế tài nguyên. Hiểu cách chẩn đoán và khắc phục những vấn đề này sẽ giúp bạn duy trì quy trình làm việc hiệu quả.

Vấn đề thường gặp với các cụm EMR

Người dùng thường gặp các vấn đề như job chạy chậm, phân bổ bộ nhớ không đủ, hỏng máy và hoán đổi dữ liệu kém hiệu quả. 

Các vấn đề hiệu năng có thể bắt nguồn từ việc chọn sai loại máy, cụm cấp phát thiếu hoặc I/O đĩa quá mức. Để giải quyết:

  • Tối ưu tham số job: Điều chỉnh các thiết lập như bộ nhớ executor, mức song song và số phân vùng shuffle để cân bằng sử dụng tài nguyên.
  • Mở rộng số máy phù hợp: Sử dụng chính sách tự động mở rộng để điều chỉnh động kích thước cụm theo nhu cầu công việc.
  • Giám sát và xem xét nhật ký: Dùng Amazon CloudWatch, bảng điều khiển EMR hoặc phân tích nhật ký trực tiếp trong Amazon S3 để xác định nút thắt và điểm lỗi.

Chẩn đoán các job Spark và Hadoop

Khi các job Spark hoặc Hadoop thất bại, hiểu rõ nguyên nhân gốc rễ là rất quan trọng để khắc phục. 

Nhật ký lưu trong Amazon S3 hoặc truy cập qua bảng điều khiển EMR cung cấp thông tin hữu ích về lỗi thực thi, vấn đề bộ nhớ và sự chậm trễ tác vụ.

  • Dùng Spark history server: Công cụ này giúp phân tích dòng thời gian thực thi job, hoạt động shuffle và phân phối tác vụ để phát hiện nút thắt hiệu năng.
  • Tận dụng Hadoop job tracker: Với khối lượng công việc MapReduce, Job Tracker cung cấp thống kê thực thi chi tiết, giúp xác định vấn đề như tác vụ chạy lâu hoặc lệch dữ liệu.
  • Tinh chỉnh hiệu năng với Dr. Elephant và Sparklens: Các công cụ này đưa ra khuyến nghị tối ưu hóa khối lượng công việc Spark và Hadoop bằng cách phân tích số liệu thực thi trong quá khứ.

Hình dưới đây cho thấy cách Dr. Elephant và Sparklens có thể được dùng để tinh chỉnh hiệu năng Hadoop và Spark trên Amazon EMR.creenshot hiển thị giao diện Dr. Elephant và Sparklens với các thông tin tinh chỉnh hiệu năng cho các job Hadoop và Spark trên Amazon EMR.

Giao diện Dr. Elephant và Sparklens hiển thị thông tin tinh chỉnh hiệu năng cho các job Hadoop và Spark trên Amazon EMR. Nenguồn: AWS Blogs

Tình trạng cụm và khôi phục

Nếu một cụm gặp sự cố, chẩn đoán nhanh vấn đề có thể giảm thiểu thời gian ngừng hoạt động và ngăn mất dữ liệu. 

Amazon CloudWatch và AWS CloudTrail cung cấp khả năng giám sát và cảnh báo giúp xác định vấn đề cơ bản.

  • Kiểm tra chỉ số CloudWatch: Xem mức sử dụng CPU, bộ nhớ và I/O đĩa để xác định tài nguyên đang bị sử dụng quá mức hay chưa đủ.
  • Khởi động lại máy lỗi: Nếu một máy gặp lỗi do phần cứng hoặc phần mềm, khởi động lại hoặc thay bằng máy mới có thể khôi phục ổn định cụm.
  • Khởi chạy cụm mới từ cấu hình đã lưu: Để khôi phục sau sự cố nghiêm trọng, bạn có thể dùng tính năng nhân bản (cloning) của Amazon EMR để khởi chạy cụm mới với cùng thiết lập và bootstrap actions.

Sơ đồ minh họa các cách tối ưu tình trạng cụm và khôi phục trong Amazon EMR.Sơ đồ minh họa các cách tối ưu tình trạng cụm và khôi phục trong Amazon EMR. Ảnh được tạo bằng Napkin AI

Quản lý chi phí với Amazon EMR

Quản lý chi phí hiệu quả là điều quan trọng khi chạy khối lượng công việc trên Amazon EMR. Giá phụ thuộc vào các yếu tố như loại máy, lưu trữ và truyền dữ liệu, nhưng có những chiến lược để tối ưu chi tiêu. 

Hiểu về giá

Chi phí Amazon EMR chủ yếu dựa trên một số yếu tố chính: máy tính, lưu trữ và truyền dữ liệu. 

  • On-Demand Instances cho phép bạn mở rộng cụm theo nhu cầu, mang lại tính linh hoạt mà không cần cam kết dài hạn. Tuy nhiên, mô hình này có thể đắt với khối lượng công việc liên tục. 
  • Spot Instances là lựa chọn tiết kiệm bằng cách đặt mua năng lực EC2 chưa dùng với mức giá thấp hơn đáng kể. Dù mang lại tiết kiệm lớn, Spot Instances phụ thuộc vào khả dụng và có thể bị gián đoạn.

Để ước tính chi phí chính xác, bạn có thể dùng AWS Pricing Calculator, công cụ tính đến cấu hình cụm, loại máy và nhu cầu khối lượng công việc. 

Bạn cần hiểu cấu trúc giá này để dự báo và lập ngân sách tốt hơn, đảm bảo phân bổ tài nguyên hiệu quả.

Ngoài ra, tận dụng AWS Savings Plans hoặc Reserved Instances cho khối lượng công việc dự đoán được có thể cố định mức giá thấp hơn và giảm tổng chi phí.

Chiến lược tối ưu chi phí

Để tối ưu chi phí, bạn nên áp dụng một số thực hành tốt khi chạy khối lượng công việc Amazon EMR:

  1. Tự động mở rộng: Điều chỉnh kích thước cụm động theo nhu cầu giúp bạn chỉ dùng đúng tài nguyên cần thiết tại mọi thời điểm. Điều này ngăn cấp phát quá mức và giảm lãng phí.
  2. Chọn đúng kích cỡ máy: Chọn loại máy phù hợp nhất với khối lượng công việc có thể cải thiện hiệu năng đồng thời giảm chi phí. Ví dụ, máy tối ưu tính toán phù hợp với tác vụ nặng xử lý, trong khi máy tối ưu bộ nhớ phù hợp cho phân tích trong bộ nhớ.
  3. Spot instances để tiết kiệm: Dùng Spot Instances khi có thể để giảm đáng kể chi phí tính toán. Để giảm gián đoạn, cân nhắc chạy khối lượng công việc chịu lỗi có thể xử lý việc chấm dứt máy và tái cân bằng.
  4. Tối ưu cụm: Cấu hình cụm hiệu quả bằng cách chọn đúng số lượng nút và điều chỉnh thiết lập Hadoop hoặc Spark có thể cải thiện hiệu năng mà không tốn kém quá mức.
  5. Kết thúc cụm nhàn rỗi: Giám sát hoạt động cụm và tắt các cụm không hoạt động để tránh phát sinh chi phí không cần thiết.
  6. Tận dụng dịch vụ quản lý: Chuyển một số tác vụ ETL sang AWS Glue có thể là lựa chọn tiết kiệm so với chạy cùng quy trình trên Amazon EMR. AWS Glue là dịch vụ serverless có thể tự động mở rộng theo nhu cầu, loại bỏ việc quản lý và chi trả cho tài nguyên tính toán nhàn rỗi.

Áp dụng các chiến lược tối ưu chi phí này sẽ giúp bạn cân bằng giữa hiệu năng và hiệu quả chi tiêu.

Để có cái nhìn rộng hơn về quản lý chi phí đám mây AWS, hãy xem AWS Cloud Technology and Services.

Kết luận

Sau khi làm việc với Amazon EMR, tôi đánh giá cao cách dịch vụ này đơn giản hóa xử lý dữ liệu lớn bằng cách tự động hóa quản lý cụm, mở rộng và tích hợp dịch vụ AWS. Đây là công cụ thiết yếu cho bất kỳ ai xử lý khối lượng dữ liệu lớn, dù bạn mới bắt đầu hay đang tối ưu một pipeline hiện có.

Nếu bạn đang khám phá các giải pháp dữ liệu lớn trên đám mây, EMR là lựa chọn mạnh mẽ và linh hoạt đáng để cân nhắc!

Don Kaluarachchi

Tác giả

Don Kaluarachchi

Tôi là Don—một Tư vấn, Nhà phát triển, Kỹ sư, Kiến trúc sư số và Tác giả (nói chung là đội rất nhiều mũ 👨‍💻🎩). Tôi yêu việc giữ cho các nền tảng số vận hành mượt mà và luôn tìm cách cải thiện chúng. Khi không viết code, tôi viết về trí tuệ nhân tạo, khoa học dữ liệu và mọi thứ liên quan đến công nghệ.
 
Trong nhiều năm, tôi đã làm mọi thứ từ xây dựng và tối ưu hóa phần mềm đến triển khai mô hình AI và thiết kế giải pháp đám mây. Tôi có bằng Thạc sĩ Khoa học về Trí tuệ nhân tạo và Cử nhân Khoa học Máy tính, đều từ Brunel University London.

Chủ đề

Liên quan