저는 4 대의 다른 머신에 스파크 클러스터를 설치했습니다. 각 기계는 8 코어 i7 프로세서를 갖춘 7.7GB의 메모리를 갖추고 있습니다. 나는 Pyspark를 사용 중이며 5 개의 numpy 배열 (각각 2.9gb)을 클러스터에로드하려고합니다. 그것들은 모두 별도의 기계에서 생성 된 더 큰 14GB짜리 배열의 일부입니다. 내 클러스터가 제대로 실행되고 있는지 확인하기 위해 첫 번째 rdd에 간단한 카운트 기능을 실행하려고합니다. 나는 실행시 다음과 같은 경고를 얻을 : 내 클러스터 UI를 검사 할 때, 그것은 (내 마스터 IP와 관련된 드라이버) 3 명 기능 근로자, 만 1 집행자가 말한다스파크 : 초기 작업이 어떤 자원도 받아 들여지지 않았습니다.
>>> import numpy as np
>>> gen1 = sc.parallelize(np.load('/home/hduser/gen1.npy'),512)
>>> gen1.count()
[Stage 0:> (0 + 0)/512]
17/01/28 13:07:07 WARN scheduler.TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
17/01/28 13:07:22 WARN scheduler.TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
17/01/28 13:07:37 WARN scheduler.TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
[Stage 0:> (0 + 0)/512]
17/01/28 13:07:52 WARN scheduler.TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
^C
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/opt/spark/python/pyspark/rdd.py", line 1008, in count
return self.mapPartitions(lambda i: [sum(1 for _ in i)]).sum()
File "/opt/spark/python/pyspark/rdd.py", line 999, in sum
return self.mapPartitions(lambda x: [sum(x)]).fold(0, operator.add)
File "/opt/spark/python/pyspark/rdd.py", line 873, in fold
vals = self.mapPartitions(func).collect()
File "/opt/spark/python/pyspark/rdd.py", line 776, in collect
port = self.ctx._jvm.PythonRDD.collectAndServe(self._jrdd.rdd())
File "/opt/spark/python/lib/py4j-0.10.1-src.zip/py4j/java_gateway.py", line 931, in __call__
File "/opt/spark/python/lib/py4j-0.10.1-src.zip/py4j/java_gateway.py", line 695, in send_command
File "/opt/spark/python/lib/py4j-0.10.1-src.zip/py4j/java_gateway.py", line 828, in send_command
File "/home/hduser/anaconda2/lib/python2.7/socket.py", line 451, in readline
data = self._sock.recv(self._rbufsize)
File "/opt/spark/python/pyspark/context.py", line 223, in signal_handler
raise KeyboardInterrupt()
KeyboardInterrupt
. 이것이 구성 문제라고 가정합니다. spark-env.sh (마스터)에서
내 설정 :
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export SPARK_MASTER_IP=192.168.1.2
이러한 설정은 작업자 각 시스템에 동일합니다. 불꽃은 defaults.conf (마스터)에서
내 설정 :
spark.master spark://lebron:7077
spark.serializer org.apache.spark.serializer.KryoSerializer
spark.driver.memory 5g
spark.dynamicAllocation.enabled true
spark.shuffle.service.enabled true
spark.kryoserializer.buffer.max 128m
각 근로자가 위와 같이 설정 한 경우에만 spark.master
및 spark.serializer
구성 옵션이 있습니다.
또한 메모리 관리를 조정하는 방법을 알아야합니다.이 문제가 발생하기 전에 메모리가 충분해야했을 때 Java 힙 공간 OOM 예외가 왼쪽 및 오른쪽으로 던져지기 때문입니다. 그러나 나는 다른 질문을 위해 그것을 구할 것입니다.
도와주세요!