为什么在hdfs上运行的spark wordcount应用程序中都有位置级别?

wa7juj8i  于 2021-06-03  发布在  Hadoop
关注(0)|答案(4)|浏览(258)

我运行了一个由12个节点组成的spark集群(8g内存,每个节点8个内核)进行了一些测试。
我试图弄明白为什么一个简单的wordcount应用程序在“map”阶段的数据位置都是“any”。14gb数据集存储在hdfs中。

mv1qrgav

mv1qrgav1#

我今天也遇到同样的问题。这是我的情况:
当我设置 --total-executor-cores 9 ,locality lever是node\ u local,但是当我将executor核心总数设置为9以下时,例如 --total-executor-cores 7 ,则Location lever变为any,总时间开销是node\u local lever的10倍。你可以试试。

irlmq6kh

irlmq6kh2#

不要这样做 start-all.sh . 你应该单独启动每个奴隶

$SPARK_HOME/sbin/start-slave.sh -h <hostname> <masterURI>
hk8txs48

hk8txs483#

我在ec2s上运行我的集群,我通过将以下内容添加到 spark-env.sh 在名称节点上

SPARK_MASTER_HOST=<name node hostname>

然后将以下内容添加到 spark-env.sh 在数据节点上

SPARK_LOCAL_HOSTNAME=<data node hostname>
nnt7mjpx

nnt7mjpx4#

我遇到了同样的问题,在我的情况下,这是一个配置问题。我在ec2上运行,我的名字不匹配。也许同样的事情也发生在你身上。
当您检查hdfs如何看待您的集群时,应该是这样的:

hdfs dfsadmin -printTopology
Rack: /default-rack
   172.31.xx.xx:50010 (ip-172-31-xx-xxx.eu-central-1.compute.internal)
   172.31.xx.xx:50010 (ip-172-31-xx-xxx.eu-central-1.compute.internal)

在ui中的executors地址中也应该看到相同的内容(默认情况下是http://your-cluster-public-dns:8080/).
在我的例子中,我使用的是spark slaves的公共主机名。我改变了主意 SPARK_LOCAL_IP$SPARK/conf/spark-env.sh 也用私人的名字,换了之后我 NODE_LOCAL 大多数时候。

相关问题