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?
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?
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
- Đă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.)
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.
- 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.

Chọn API Manager trong trình đơn thả xuống.

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

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.

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

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.

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.
- Để 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
(mất vài phút để cung cấp và kết nối với môi trường).
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:
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>
- 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 và --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.

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_TAGS và TARGET_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
- Tài liệu về Dataproc: https://cloud.google.com/dataproc/overview
- Lớp học lập trình Bắt đầu sử dụng Dataproc bằng Bảng điều khiển
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.