Làm gì setMaster(local[*]) nghĩa là trong Spark? Tôi sẽ giải thích hàm setMaster () được sử dụng để làm gì và ý nghĩa của value local[*] trong Spark. Apache Spark là dự án mã nguồn mở lớn nhất với công cụ phân tích thống nhất để xử lý dữ liệu quy mô lớn.

Hiểu kiến ​​trúc cốt lõi của Spark giúp chúng tôi biết chính xác setMaster () và param local[*] trong Spark, vì vậy chúng ta hãy xem qua nó một lần.

1. Kiến trúc Spark

Simply Spark hoạt động bằng cách sử dụng Master-Slave cơ chế.

setMaster cục bộ[*] trong tia lửa
Kiến trúc Spark
nguồn: Spark

Ở đây, các khái niệm chính cần nhớ là

 Master or Driver : Heart of the spark application. Run’s your main() function and analyze the code and executor’s required to complete this work and distributes the work to Slaves(executor’s) in terms of Task

Cluster Manager: A cluster or group of machines, pools the resources of many machines together allowing us to use all the cumulative resources as if they were one. It provides executor resources as requested by the Master or Driver.

Executor or Slave: The executors are responsible for carrying out the work that the driver assigns them and reporting the state of the computation on that executor back to driver.

Core elements of spark.

Vì vậy, ở cấp độ cao, bậc thầy trong spark phân tích công việc cần thiết và người thực thi sẽ hoàn thành công việc mà bậc thầy giao cho nó.

2. Task / Cores / Slots / Threads là gì?

Task: Nó là đoạn mã mà người thực thi có thể chạy. Lõi là số tác vụ tối đa mà một người thực thi có thể chạy song song. Slot: Nó đôi khi được gọi là số lõi có sẵn trên mỗi trình thực thi. Mặc dù các khe cắm thường được gọi là lõi trong Spark, chúng được triển khai dưới dạng các luồng hoạt động trên luồng của lõi vật lý và không cần phải tương ứng với số lõi CPU vật lý trên máy (vì các nhà sản xuất CPU khác nhau có thể kiến ​​trúc đa chip ren khác nhau).

Threads: là các thành phần hoặc mã ảo, chia lõi vật lý của CPU thành nhiều lõi ảo.

Chúng ta hãy cùng nhau tìm hiểu bằng cách sử dụng sơ đồ trên, sơ đồ trên hiển thị 2 nút Core Executor

  • Nhiệm vụ là một đoạn mã chạy trên trình thực thi. Đơn giản, trong spark, một Task được tạo để xử lý một phân vùng
    1 Task = 1 Partition
    Bằng cách tạo Công việc, Driver có thể chỉ định các đơn vị công việc cho Slots trên mỗi Executor để thực hiện song song.
  • Số lõi trên mỗi người thực thi = Số Công việc mà nó có thể chạy song song trên mỗi người thực thi.
    Ở đây trong trường hợp của chúng tôi, mỗi người thực thi có thể chạy 2 tác vụ
    1 Executor = 2 Cores = 2 Tasks (in parallel)
  • Hầu hết các bộ vi xử lý ngày nay là đa luồng. Nếu CPU của bạn chia 1 lõi vật lý thành 2 lõi ảo tức là 2 luồng
    1 Executor = 2 Cores = 4 Threads

Vì vậy, về tổng thể, mỗi Executor có thể chạy n Partitions(Nhiệm vụ) song song sử dụng n lõi cho mỗi trình thực thi.

3. SetMaster (cục bộ[*]) trong Spark?

Nó được sử dụng khi bạn đang tạo SparkSession hoặc SparkConf sự vật.

setMaster cục bộ[*] trong tia lửa
SparkConf

Ở đây, setMaster () biểu thị nơi chạy cục bộ hoặc cụm ứng dụng spark của bạn. Khi bạn chạy trên một cụm, bạn cần chỉ định địa chỉ của URL chính của Spark hoặc Trình điều khiển cho một cụm phân tán. Chúng tôi thường chỉ định local[*] để setMaster () trong tia lửa trong khi thực hiện thử nghiệm nội bộ. Ví dụ: chạy ứng dụng spark trên hệ thống của bạn (không phải cụm). Dưới đây là các giá trị khả thi bạn có thể sử dụng với setMaster ().

Spark Master URL's
MasterURLs

setMaster(local[*]) là Chạy Spark cục bộ với nhiều luồng công nhân như lõi lôgic trên máy của bạn.

Chúng tôi có thể kiểm tra số luồng có sẵn trên máy tính windows của bạn bằng Trình quản lý tác vụ.

  • Mở Task Manager (nhấn Ctrl+Shift+Esc)
  • Lựa chọn Performance .
  • Tìm kiếm Cores and Logical Processors (Threads)
setMaster cục bộ[*] trong tia lửa
Cốt lõi và Chủ đề

Nếu bạn muốn chạy ứng dụng spark trên máy của mình với 4 lõi và 8 luồng như trong hình trên, hãy cấu hình setMaster (cục bộ[*]) trong spark sẽ sử dụng 8 luồng có sẵn trên máy.

Để có hình ảnh đẹp hơn, tôi có thể thiết lập cấu hình của mình là

Số người thực thi (A) = 1 Người thực thi Số lõi trên mỗi người thực thi (B) = 2 lõi (coi Trình điều khiển đã chiếm 2 lõi) Số luồng / người thực thi (C) = 4 Chủ đề (2 * B) Giá trị setMaster sẽ là = cục bộ[1]

Tại đây Chạy Spark cục bộ với 2 luồng công nhân (lý tưởng là đặt điều này thành số lõi trên máy của bạn).
Bài viết trên mình đã chia sẻ thông tin về What does setMaster (local[*]) nghĩa là trong Spark. Nếu bạn có bất kỳ câu hỏi nào liên quan đến các bước nói trên, hãy signalfix.net biết trong phần bình luận. Chúng tôi sẽ liên hệ với bạn trong thời gian sớm nhất để có giải pháp.