Làm cách nào để tôi đặt / nhận kích thước heap cho Spark (thông qua sổ ghi chép Python)


7

Tôi đang sử dụng Spark (1.5.1) từ máy tính xách tay IPython trên macbook pro. Sau khi cài đặt Spark và Anaconda, tôi khởi động IPython từ một thiết bị đầu cuối bằng cách thực thi : IPYTHON_OPTS="notebook" pyspark. Điều này mở ra một trang web liệt kê tất cả các máy tính xách tay IPython của tôi. Tôi có thể chọn một trong số họ, mở nó trong một trang web thứ hai. SparkContext (sc) đã có sẵn và lệnh đầu tiên của tôi trong sổ ghi chép là help(sc)chạy tốt. Vấn đề tôi gặp phải là tôi đang gặp lỗi không gian heap Java mà tôi không biết cách giải quyết. Làm cách nào để tôi xem cài đặt heap Java hiện tại của mình và làm cách nào để tăng nó trong bối cảnh thiết lập của tôi. Thông báo lỗi tôi nhận được sau:

Py4JJavaError: An error occurred while calling z:org.apache.spark.api.python.PythonRDD.collectAndServe.
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 19 in stage 247.0 failed 1 times, most recent failure: Lost task 19.0 in stage 247.0 (TID 953, localhost): java.lang.OutOfMemoryError: Java heap space

khi nào bạn gặp lỗi cố gắng làm gì
eliasah

Tạo một RDD của LabeledPoint. Nó không phải là đặc biệt lớn, 100K vectơ quan sát x2K.
Kai

Câu trả lời:


17

Bạn có thể quản lý giới hạn bộ nhớ Spark theo chương trình (bằng API).

Vì SparkContext đã có sẵn trong Notebook của bạn:

sc._conf.get('spark.driver.memory')

Bạn cũng có thể thiết lập, nhưng trước tiên bạn phải tắt SparkContext:

conf = SparkConf().setAppName("App")
conf = (conf.setMaster('local[*]')
        .set('spark.executor.memory', '4G')
        .set('spark.driver.memory', '45G')
        .set('spark.driver.maxResultSize', '10G'))
sc = SparkContext(conf=conf)

Nếu khối lượng công việc của bạn là như nhau cho tất cả các phân tích, thì chỉnh sửa spark-defaults.conf như được trích dẫn ở trên là cách để đi.


6

Tôi đã giải quyết nó bằng cách tạo một spark-defaults.conftệp trong apache-spark/1.5.1/libexec/conf/và thêm dòng sau vào nó: spark.driver.memory 14g

Điều đó đã giải quyết vấn đề của tôi. Nhưng sau đó tôi gặp phải một vấn đề khác exceeding max result size of 1024MB. Giải pháp là thêm một dòng khác trong tệp trên: spark.driver.maxResultSize 2g


14g có nhiều không ??? Đó không phải là dữ liệu lớn nhưng nó thực sự rất nhiều!
eliasah

Câu trả lời tuyệt vời và duy nhất làm việc cho tôi. Cảm ơn.
Francesco Boi

1

Chỉ cần sử dụng configtùy chọn khi cài đặt SparkSession (kể từ 2.4)

MAX_MEMORY = "5g"

spark = SparkSession \
    .builder \
    .appName("Foo") \
    .config("spark.executor.memory", MAX_MEMORY) \
    .config("spark.driver.memory", MAX_MEMORY) \
    .getOrCreate()

Tôi gặp lỗi: SparkContext này có thể là một cái hiện có.
Arash

Chỉ cần thay thế mã của bạn bằng cái này, thay vì thêm nó. Thông báo nói rằng bạn đã tạo một phiên,
LaSul
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.