Cấp phép và sử dụng cụm Hadoop/Spark được quản lý bằng Cloud Dataproc (Dòng lệnh)

1. Tổng quan

Cloud Dataproc là một dịch vụ Spark và Hadoop được quản lý, giúp bạn khai thác các công cụ dữ liệu nguồn mở để xử lý hàng loạt, truy vấn, truyền trực tuyến và học máy. Tính năng tự động hoá của Cloud Dataproc giúp bạn nhanh chóng tạo các cụm, quản lý chúng dễ dàng và tiết kiệm chi phí bằng cách tắt các cụm khi bạn không cần đến. Nhờ tiết kiệm thời gian và tiền bạc cho việc quản trị, bạn có thể tập trung vào công việc và dữ liệu của mình.

Hướng dẫn này được điều chỉnh từ https://cloud.google.com/dataproc/overview

Kiến thức bạn sẽ học được

  • Cách tạo cụm Cloud Dataproc được quản lý (bằng Apache Spark được cài đặt sẵn).
  • Cách gửi công việc Spark
  • Cách đổi kích thước cụm
  • Cách chuyển ssh vào nút chính của cụm Dataproc
  • Cách sử dụng gcloud để kiểm tra cụm, công việc và quy tắc về tường lửa
  • Cách tắt cụm

Bạn cần có

Bạn sẽ dùng hướng dẫn này như thế nào?

Chỉ có thể đọc Đọc và hoàn thành bài tập

Bạn đánh giá trải nghiệm sử dụng các dịch vụ của Google Cloud Platform như thế nào?

Người mới tập Trung cấp Thành thạo

2. Thiết lập và yêu cầu

Thiết lập môi trường theo tiến độ riêng

  1. Đăng nhập vào Cloud Console rồi tạo dự án mới hoặc sử dụng lại dự án hiện có. (Nếu chưa có tài khoản Gmail hoặc G Suite, bạn phải tạo một tài khoản.)

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdkuzGp4rsQTan7F01iePL5DtqQ

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

Xin lưu ý rằng mã dự án là một tên riêng biệt trong tất cả dự án Google Cloud (tên ở trên đã được sử dụng nên sẽ không phù hợp với bạn!). Lớp này sẽ được đề cập sau trong lớp học lập trình này là PROJECT_ID.

  1. Tiếp theo, bạn sẽ cần bật tính năng thanh toán trong Cloud Console để sử dụng tài nguyên của Google Cloud.

Việc chạy qua lớp học lập trình này sẽ không tốn nhiều chi phí. Hãy nhớ làm theo mọi hướng dẫn trong phần "Dọn dẹp" sẽ tư vấn cho bạn cách tắt tài nguyên để bạn không phải chịu thanh toán ngoài hướng dẫn này. Người dùng mới của Google Cloud đủ điều kiện tham gia chương trình Dùng thử miễn phí 300 USD.

3. Bật Cloud Dataproc và Google Compute Engine API

Nhấp vào biểu tượng trình đơn ở trên cùng bên trái màn hình.

2bfc27ef9ba2ec7d.png.

Chọn Trình quản lý API trong trình đơn thả xuống.

408af5f32c4b7c25.pngS

Nhấp vào Enable APIs and Services (Bật API và dịch vụ).

a9c0e84296a7ba5b.png

Tìm kiếm "Compute Engine" vào hộp tìm kiếm. Nhấp vào "Google Compute Engine API" trong danh sách kết quả xuất hiện.

b6adf859758d76b3.png

Trên trang Google Compute Engine, hãy nhấp vào Enable (Bật)

da5584a1cbc77104.png

Sau khi bật chế độ này, hãy nhấp vào mũi tên chỉ sang trái để quay lại.

Bây giờ, hãy tìm kiếm "Google Cloud Dataproc API" cũng như bật tính năng này.

f782195d8e3d732a.png

4. Khởi động Cloud Shell

Máy ảo dựa trên Debian này được tải tất cả các công cụ phát triển mà bạn cần. Dịch vụ này cung cấp thư mục gốc 5 GB ổn định và chạy trong Google Cloud, giúp nâng cao đáng kể hiệu suất và khả năng xác thực của mạng. Tức là tất cả những gì bạn cần để thực hiện lớp học lập trình này là một trình duyệt (vâng, trình duyệt này hoạt động trên Chromebook).

  1. Để kích hoạt Cloud Shell trong Cloud Console, bạn chỉ cần nhấp vào Kích hoạt Cloud Shell fEbHefbRynwXpq1vj2wJw6Dr17O0np8l-WOekxAZYlZQIORsWQE_xJl-cNhogjATLn-YxLVz8CgLvIW1Ncc0yXKJsfzJGMYgUeLsVB7zSwz7p6ItNgx4tXqQjag7BfWPcZN5kP-X3Q (chỉ mất vài phút để cấp phép và kết nối với môi trường).

I5aEsuNurCxHoDFjZRZrKBdarPPKPoKuExYpdagmdaOLKe7eig3DAKJitIKyuOpuwmrMAyZhp5AXpmD_k66cBuc1aUnWlJeSfo_aTKPY9aNMurhfegg1CYaE11jdpSTYNNIYARe01A

Ảnh chụp màn hình lúc 10:13.43 chiều 14/6/2017.png

Sau khi kết nối với Cloud Shell, bạn sẽ thấy mình đã được xác thực và dự án đã được đặt thành PROJECT_ID.

gcloud auth list

Kết quả lệnh

Credentialed accounts:
 - <myaccount>@<mydomain>.com (active)
gcloud config list project

Kết quả lệnh

[core]
project = <PROJECT_ID>

Nếu vì lý do nào đó mà dự án không được thiết lập, chỉ cần phát hành lệnh sau:

gcloud config set project <PROJECT_ID>

Bạn đang tìm PROJECT_ID? Hãy xem mã nhận dạng bạn đã sử dụng ở các bước thiết lập hoặc tra cứu trong trang tổng quan Cloud Console:

R7chO4PKQfLC3bvFBNZJALLTUiCgyLEq_67ECX7ohs_0ZnSjC7GxDNxWrJJUaoM53LnqABYamrBJhCuXF-J9XBzuUgaz7VvaxNrkP2TAn93Drxccyj2-5zz4AxL-G3hzxZ4PsM5HHQ

Cloud Shell cũng đặt một số biến môi trường theo mặc định. Điều này có thể hữu ích khi bạn chạy các lệnh sau này.

echo $GOOGLE_CLOUD_PROJECT

Kết quả lệnh

<PROJECT_ID>
  1. Cuối cùng, đặt cấu hình dự án và vùng mặc định.
gcloud config set compute/zone us-central1-f

Bạn có thể chọn nhiều vùng khác nhau. Để biết thêm thông tin, hãy xem Khu vực và Vùng.

5. Tạo cụm Cloud Dataproc

Sau khi Cloud Shell chạy, bạn có thể sử dụng dòng lệnh để gọi lệnh gcloud của Cloud SDK hoặc các công cụ khác có trên phiên bản máy ảo.

Chọn tên cụm để sử dụng trong phòng thí nghiệm này:

$ CLUSTERNAME=${USER}-dplab

Hãy bắt đầu bằng cách tạo một cụm mới:

$ gcloud dataproc clusters create ${CLUSTERNAME} \
  --region=us-central1 \
  --scopes=cloud-platform \
  --tags codelab \
  --zone=us-central1-c

Hướng dẫn này là đủ về các chế độ cài đặt cụm mặc định, bao gồm các nút hai nhân. Lệnh ở trên bao gồm tuỳ chọn --zone để chỉ định vùng địa lý mà cụm sẽ được tạo, cũng như hai tuỳ chọn nâng cao (--scopes--tags) sẽ được giải thích ở bên dưới khi bạn sử dụng các tính năng mà cụm sẽ bật. Hãy xem lệnh gcloud dataproc clusters create của SDK đám mây để biết thông tin về cách sử dụng cờ dòng lệnh nhằm tuỳ chỉnh chế độ cài đặt cụm.

6. Gửi công việc Spark tới cụm của bạn

Bạn có thể gửi công việc thông qua yêu cầu Cloud Dataproc API jobs.submit, sử dụng công cụ dòng lệnh gcloud hoặc trong Bảng điều khiển Google Cloud Platform. Bạn cũng có thể kết nối với một thực thể máy trong cụm của mình bằng cách sử dụng SSH, sau đó chạy công việc từ thực thể đó.

Hãy gửi công việc bằng công cụ gcloud từ dòng lệnh Cloud Shell:

$ gcloud dataproc jobs submit spark --cluster ${CLUSTERNAME} \
  --class org.apache.spark.examples.SparkPi \
  --jars file:///usr/lib/spark/examples/jars/spark-examples.jar -- 1000

Khi công việc chạy, bạn sẽ thấy kết quả trong cửa sổ Cloud Shell.

Ngắt đầu ra bằng cách nhập Control-C. Thao tác này sẽ dừng lệnh gcloud, nhưng công việc sẽ vẫn chạy trên cụm Dataproc.

7. Liệt kê công việc và kết nối lại

In danh sách công việc:

$ gcloud dataproc jobs list --cluster ${CLUSTERNAME}

Công việc được gửi gần đây nhất nằm ở đầu danh sách. Sao chép mã công việc rồi dán vào vị trí "jobId" trong lệnh bên dưới. Lệnh này sẽ kết nối lại với công việc đã chỉ định và hiển thị kết quả của lệnh đó:

$ gcloud dataproc jobs wait jobId

Khi công việc kết thúc, kết quả sẽ bao gồm giá trị gần đúng của số Pi.

493928df54f61386.pngS

8. Đổi kích thước cụm

Để chạy các phép tính lớn hơn, bạn nên thêm nhiều nút hơn vào cụm của mình để tăng tốc độ. Dataproc cho phép bạn thêm các nút vào và xoá các nút khỏi cụm bất cứ lúc nào.

Kiểm tra cấu hình cụm:

$ gcloud dataproc clusters describe ${CLUSTERNAME}

Phóng to cụm bằng cách thêm một số nút có thể giành trước:

$ gcloud dataproc clusters update ${CLUSTERNAME} --num-secondary-workers=2

Kiểm tra lại cụm:

$ gcloud dataproc clusters describe ${CLUSTERNAME}

Lưu ý rằng ngoài workerConfig trong nội dung mô tả cụm ban đầu, giờ đây còn có một secondaryWorkerConfig bao gồm 2 instanceNames cho các worker có thể bị giành quyền. Dataproc hiển thị trạng thái của cụm là đã sẵn sàng trong khi các nút mới đang khởi động.

Vì bạn đã bắt đầu với 2 nút và bây giờ đã có 4 nút, nên các công việc trong Spark của bạn sẽ chạy nhanh hơn khoảng gấp đôi.

9. SSH vào Cluster

Kết nối qua ssh với nút chính có tên thực thể luôn là tên cụm có -m đi kèm:

$ gcloud compute ssh ${CLUSTERNAME}-m --zone=us-central1-c

Vào lần đầu tiên bạn chạy một lệnh ssh trên Cloud Shell, lệnh này sẽ tạo khoá ssh cho tài khoản của bạn tại đó. Bạn có thể chọn một cụm mật khẩu hoặc sử dụng một cụm mật khẩu trống ngay bây giờ rồi thay đổi sau bằng cách sử dụng ssh-keygen nếu muốn.

Trong trường hợp này, hãy kiểm tra tên máy chủ:

$ hostname

Vì bạn đã chỉ định --scopes=cloud-platform khi tạo cụm, nên bạn có thể chạy các lệnh gcloud trên cụm của mình. Liệt kê các cụm trong dự án của bạn:

$ gcloud dataproc clusters list

Đăng xuất khỏi kết nối ssh khi bạn hoàn tất:

$ logout

10. Kiểm tra thẻ

Khi tạo cụm, bạn đã thêm tuỳ chọn --tags để thêm một thẻ vào mỗi nút trong cụm. Thẻ được dùng để đính kèm các quy tắc tường lửa vào mỗi nút. Bạn chưa tạo bất kỳ quy tắc tường lửa nào phù hợp trong lớp học lập trình này, nhưng bạn vẫn có thể kiểm tra các thẻ trên một nút và các quy tắc tường lửa trên mạng.

In nội dung mô tả của nút chính:

$ gcloud compute instances describe ${CLUSTERNAME}-m --zone us-central1-c

Tìm tags: ở gần cuối kết quả và thấy rằng kết quả này bao gồm codelab.

In quy tắc tường lửa:

$ gcloud compute firewall-rules list

Hãy lưu ý cột SRC_TAGSTARGET_TAGS. Bằng cách đính kèm thẻ vào quy tắc tường lửa, bạn có thể chỉ định rằng thẻ sẽ được sử dụng trên tất cả các nút có thẻ đó.

11. Tắt cụm

Bạn có thể tắt cụm thông qua yêu cầu API Cloud Dataproc clusters.delete, từ dòng lệnh bằng tệp thực thi gcloud dataproc clusters delete hoặc trong Bảng điều khiển Google Cloud Platform.

Hãy tắt cụm bằng cách sử dụng dòng lệnh Cloud Shell:

$ gcloud dataproc clusters delete ${CLUSTERNAME} --region us-central1

12. Xin chúc mừng!

Bạn đã tìm hiểu cách tạo cụm Dataproc, gửi công việc Spark, đổi kích thước cụm, sử dụng ssh để đăng nhập vào nút chính, sử dụng gcloud để kiểm tra cụm, công việc và quy tắc tường lửa, cũng như cách tắt cụm bằng gcloud!

Tìm hiểu thêm

Giấy phép

Tác phẩm này được cấp phép theo Giấy phép Creative Commons ghi nhận tác giả 3.0 chung và giấy phép Apache 2.0.