亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何設置Apache Spark執行器內存

如何設置Apache Spark執行器內存

守候你守候我 2020-02-04 16:10:45
如何增加可用于Apache Spark執行器節點的內存?我有一個2 GB的文件,適合加載到Apache Spark。我目前在1臺機器上運行apache spark,因此驅動程序和執行程序在同一臺機器上。本機具有8 GB的內存。設置要緩存在內存中的文件后,當我嘗試計算文件的行數時,出現以下錯誤:2014-10-25 22:25:12 WARN  CacheManager:71 - Not enough space to cache partition rdd_1_1 in memory! Free memory is 278099801 bytes.我看了看文檔,這里并設置spark.executor.memory到4g在$SPARK_HOME/conf/spark-defaults.conf用戶界面顯示此變量是在Spark環境中設置的。你可以在這里找到截圖但是,當我轉到“ 執行器”選項卡時,單個執行器的內存限制仍然設置為265.4 MB。我也仍然遇到相同的錯誤。我嘗試了這里提到的各種方法,但是仍然出現錯誤,并且不清楚應該在哪里更改設置。我正在從spark-shell交互式運行我的代碼
查看完整描述

3 回答

?
慕森王

TA貢獻1777條經驗 獲得超3個贊

由于您已經在本地模式下運行Spark,因此設置spark.executor.memory不會產生任何影響。這樣做的原因是,在啟動spark-shell時,Worker在啟動的驅動程序JVM進程中“存在”,并且默認內存為512M。您可以通過將其設置spark.driver.memory為更高的值(例如5g)來增加該值。您可以通過以下任一方法來做到這一點:


在屬性文件中進行設置(默認為$SPARK_HOME/conf/spark-defaults.conf),


spark.driver.memory              5g

或在運行時提供配置設置


$ ./bin/spark-shell --driver-memory 5g

請注意,這無法通過在應用程序中進行設置來實現,因為到那時已經為時已晚,該過程已經以一定數量的內存開始。


之所以要使用265.4 MB,是因為Spark 會將spark.storage.memoryFraction * spark.storage.safetyFraction專用于存儲內存總量,默認情況下為0.6和0.9。


512 MB * 0.6 * 0.9 ~ 265.4 MB

因此請注意,并非所有驅動程序內存都可用于RDD存儲。


但是,當您開始在群集上運行此spark.executor.memory設置時,該設置將在計算專用于Spark的內存緩存的數量時接管。


查看完整回答
反對 回復 2020-02-04
?
忽然笑

TA貢獻1806條經驗 獲得超5個贊

Grega提交的答案幫助我解決了我的問題。我正在從Docker容器內的python腳本本地運行Spark。最初,在Spark中處理某些數據時,我遇到了Java內存不足錯誤。但是,我可以通過在腳本中添加以下行來分配更多的內存:


conf=SparkConf()

conf.set("spark.driver.memory", "4g") 

這是我用來啟動Spark的python腳本的完整示例:


import os

import sys

import glob


spark_home = '<DIRECTORY WHERE SPARK FILES EXIST>/spark-2.0.0-bin-hadoop2.7/'

driver_home = '<DIRECTORY WHERE DRIVERS EXIST>'


if 'SPARK_HOME' not in os.environ:

    os.environ['SPARK_HOME'] = spark_home 


SPARK_HOME = os.environ['SPARK_HOME']


sys.path.insert(0,os.path.join(SPARK_HOME,"python"))

for lib in glob.glob(os.path.join(SPARK_HOME, "python", "lib", "*.zip")):

    sys.path.insert(0,lib);


from pyspark import SparkContext

from pyspark import SparkConf

from pyspark.sql import SQLContext


conf=SparkConf()

conf.set("spark.executor.memory", "4g")

conf.set("spark.driver.memory", "4g")

conf.set("spark.cores.max", "2")

conf.set("spark.driver.extraClassPath",

    driver_home+'/jdbc/postgresql-9.4-1201-jdbc41.jar:'\

    +driver_home+'/jdbc/clickhouse-jdbc-0.1.52.jar:'\

    +driver_home+'/mongo/mongo-spark-connector_2.11-2.2.3.jar:'\

    +driver_home+'/mongo/mongo-java-driver-3.8.0.jar') 


sc = SparkContext.getOrCreate(conf)


spark = SQLContext(sc)


查看完整回答
反對 回復 2020-02-04
  • 3 回答
  • 0 關注
  • 942 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號