2017-01-28 1 views
0

저는 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.masterspark.serializer 구성 옵션이 있습니다.

또한 메모리 관리를 조정하는 방법을 알아야합니다.이 문제가 발생하기 전에 메모리가 충분해야했을 때 Java 힙 공간 OOM 예외가 왼쪽 및 오른쪽으로 던져지기 때문입니다. 그러나 나는 다른 질문을 위해 그것을 구할 것입니다.

도와주세요!

답변

관련 문제