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 tận dụng các công cụ dữ liệu nguồn mở để xử lý hàng loạt, truy vấn, truyền dữ liệu và học máy. Tính năng tự động hoá của Cloud Dataproc giúp bạn tạo cụm một cách nhanh chóng, quản lý dễ dàng và tiết kiệm chi phí bằng cách tắt cụm khi không cần. Khi tốn ít thời gian và tiền bạc hơn 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 một cụm Cloud Dataproc được quản lý (với Apache Spark được cài đặt sẵn).
  • Cách gửi một công việc Spark
  • Cách đổi kích thước cụm
  • Cách ssh vào nút chính của một cụm Dataproc
  • Cách sử dụng gcloud để kiểm tra các cụm, công việc và quy tắc tường lửa
  • Cách tắt cụm

Bạn cần có

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

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

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

Người mới bắt đầu 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 tốc độ của riêng bạn

  1. Đăng nhập vào Cloud Console rồi tạo một dự án mới hoặc sử dụng lại một 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

Hãy nhớ mã dự án, một tên duy nhất trên tất cả các dự án trên Google Cloud (tên ở trên đã được sử dụng và sẽ không hoạt động đối với bạn, xin lỗi!). Sau này trong lớp học lập trình này, chúng ta sẽ gọi nó là PROJECT_ID.

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

Việc thực hiện lớp học lập trình này sẽ không tốn nhiều chi phí, nếu có. Hãy nhớ làm theo mọi hướng dẫn trong phần "Dọn dẹp" để biết cách tắt các tài nguyên nhằm tránh bị tính phí ngoài phạm vi 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í trị giá 300 USD.

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

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 API Manager trong trình đơn thả xuống.

408af5f32c4b7c25.png

Nhấp vào Bật API và dịch vụ.

a9c0e84296a7ba5b.png

Tìm "Compute Engine" trong 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 Bật

da5584a1cbc77104.png

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

Giờ đây, hãy tìm kiếm "Google Cloud Dataproc API" rồi bật API này.

f782195d8e3d732a.png

4. Khởi động Cloud Shell

Máy ảo dựa trên Debian này được trang bị tất cả các công cụ phát triển mà bạn cần. Nền tảng này cung cấp một thư mục chính có dung lượng 5 GB và chạy trong Google Cloud, giúp tăng cường đáng kể hiệu suất mạng và hoạt động xác thực. Điều này có nghĩa là bạn chỉ cần một trình duyệt (có, trình duyệt này hoạt động trên Chromebook) cho lớp học lập trình này.

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

I5aEsuNurCxHoDFjZRZrKBdarPPKPoKuExYpdagmdaOLKe7eig3DAKJitIKyuOpuwmrMAyZhp5AXpmD_k66cBuc1aUnWlJeSfo_aTKPY9aNMurhfegg1CYaE11jdpSTYNNIYARe01A

Screen Shot 2017-06-14 at 10.13.43 PM.png

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

gcloud auth list

Đầu ra của lệnh

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

Đầu ra của lệnh

[core]
project = <PROJECT_ID>

Nếu vì lý do nào đó mà dự án chưa được thiết lập, bạn chỉ cần đưa ra lệnh sau:

gcloud config set project <PROJECT_ID>

Bạn đang tìm PROJECT_ID? Kiểm tra mã nhận dạng bạn đã dùng trong các bước thiết lập hoặc tìm mã nhận dạng đó trong trang tổng quan của 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, có thể hữu ích khi bạn chạy các lệnh trong tương lai.

echo $GOOGLE_CLOUD_PROJECT

Đầu ra của lệnh

<PROJECT_ID>
  1. Cuối cùng, hãy đặ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 múi giờ khác nhau. Để biết thêm thông tin, hãy xem phần Khu vực và vùng.

5. Tạo một cụm Cloud Dataproc

Sau khi Cloud Shell khởi chạy, bạn có thể 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

Các chế độ cài đặt cụm mặc định (bao gồm cả 2 nút worker) là đủ cho hướng dẫn này. Lệnh trên bao gồm lựa chọn --zone để chỉ định khu vực địa lý mà cụm sẽ được tạo và 2 lựa chọn nâng cao là --scopes--tags. Các lựa chọn này sẽ được giải thích bên dưới khi bạn sử dụng các tính năng mà chúng cho phép. Hãy xem lệnh Cloud SDK gcloud dataproc clusters create để 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 một lệnh Spark đến cụm của bạn

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

Hãy gửi một 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 chạy lệnh, bạn sẽ thấy kết quả đầu ra trong cửa sổ Cloud Shell.

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

7. Liệt kê các lệnh 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ã nhận dạng công việc rồi dán vào vị trí của "jobId" trong lệnh bên dưới. Lệnh này sẽ kết nối lại với lệnh đã chỉ định và hiển thị đầu ra của lệnh đó:

$ gcloud dataproc jobs wait jobId

Khi công việc hoàn tất, đầu ra sẽ bao gồm giá trị gần đúng của số Pi.

493928df54f61386.png

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

Để chạy các phép tính lớn hơn, bạn có thể muốn thêm nhiều nút hơn vào cụm để tăng tốc độ. Dataproc cho phép bạn thêm 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}

Tăng kích thước cụm bằng cách thêm một số nút có thể bị ưu tiên:

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

Kiểm tra lại cụm:

$ gcloud dataproc clusters describe ${CLUSTERNAME}

Xin lưu ý rằng ngoài workerConfig trong nội dung mô tả cụm ban đầu, giờ đây còn có secondaryWorkerConfig bao gồm 2 instanceNames cho các worker có thể bị ưu tiên. Dataproc cho biết 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à hiện có 4 nút, nên các công việc Spark của bạn sẽ chạy nhanh hơn khoảng 2 lần.

9. SSH vào Cụm

Kết nối qua ssh với nút chính. Tên phiên bản của nút này luôn là tên cụm có thêm -m:

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

Trong lần đầu tiên bạn chạy 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. 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ờ và thay đổi sau này bằng cách sử dụng ssh-keygen nếu muốn.

Trên phiên bản, 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. 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 đã chọn --tags để thêm thẻ vào từng nút trong cụm. Thẻ được dùng để đính kèm các quy tắc tường lửa vào từng nút. Bạn không 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ả về nút chính:

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

Tìm tags: ở gần cuối đầu ra và xem liệu nó có chứa codelab hay không.

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

$ gcloud compute firewall-rules list

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

11. Tắt cụm

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

Hãy tắt cụm bằ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 một cụm Dataproc, gửi một công việc Spark, đổi kích thước một cụm, sử dụng ssh để đăng nhập vào nút chính, sử dụng gcloud để kiểm tra các cụm, công việc và quy tắc tường lửa, đồng thời 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 Ghi công theo Creative Commons 3.0 và giấy phép Apache 2.0.