2017-04-16 57 views
1

我有7個datanodes和1個namenode。我們的每個節點都有32 Gb的內存和20個內核。因此,我將容器內存設置爲30 Gb,將容器虛擬CPU內核設置爲18.爲什麼只有很少的節點在apache的紗線上工作?

但是,只有三個datanode可以工作,其餘datanode不能工作。

下面的代碼是我的設置。

/opt/spark/bin/spark-submit \ 
--master yarn \ 
--deploy-mode cluster \ 
--driver-memory 4g \ 
--driver-cores 18 \ 
--executor-memory 8g \ 
--executor-cores 18 \ 
--num-executors 7 \ 

Java代碼

SQLContext sqlc = new SQLContext(spark); 

Dataset<Row> df = sqlc.read() 
     .format("com.databricks.spark.csv") 
     .option("inferSchema", "true") 
     .load(traFile); 

df.repartition(PartitionSize); //PartitionSize = 7 
df.persist(StorageLevel.MEMORY_ONLY()); 

這是我的數據信息:

this is my data information

,我嘗試下面的命令

sudo -u hdfs hdfs balancer 

然而,

Nodes of cluster

+0

在HDFS中有這種叫做「數據局部性」的東西... –

+0

哦,沒錯。謝謝。 – Navieclipse

+0

但我解決了「數據局部性」的問題,但只有三個datanode工作 – Navieclipse

回答

0

我可以加入我的腳本解決這個問題,

--conf "spark.locality.wait.node=0" 

下面的代碼是我的新劇本,

/opt/spark/bin/spark-submit \ 
--master yarn \ 
--deploy-mode cluster \ 
--driver-memory 4g \ 
--driver-cores $drivercores \ 
--executor-memory 8g \ 
--executor-cores $execores \ 
--num-executors $exes \ 
--conf "spark.locality.wait.node=0" \ 

感謝這個腳本,所有節點的工作。

+0

我加了--conf「spark.locality.wait.node = 0」 – Navieclipse

相關問題