Apache Spark 如何知道 HDFS 数据节点?
How does Apache Spark know about HDFS data nodes?
假设我对托管在 HDFS 中的文件执行了一些 Spark 操作。像这样:
var file = sc.textFile("hdfs://...")
val items = file.map(_.split('\t'))
...
因为在 Hadoop 世界中,代码应该放在数据所在的地方,对吗?
所以我的问题是:Spark workers 如何知道 HDFS 数据节点? Spark 如何知道在哪些数据节点上执行代码?
Spark 重用 Hadoop 类:当您调用 textFile
时,它会创建一个 TextInputFormat which has a getSplits
method (a split is roughly a partition or block), and then each InputSplit 具有 getLocations
和 getLocationInfo
方法。
假设我对托管在 HDFS 中的文件执行了一些 Spark 操作。像这样:
var file = sc.textFile("hdfs://...")
val items = file.map(_.split('\t'))
...
因为在 Hadoop 世界中,代码应该放在数据所在的地方,对吗?
所以我的问题是:Spark workers 如何知道 HDFS 数据节点? Spark 如何知道在哪些数据节点上执行代码?
Spark 重用 Hadoop 类:当您调用 textFile
时,它会创建一个 TextInputFormat which has a getSplits
method (a split is roughly a partition or block), and then each InputSplit 具有 getLocations
和 getLocationInfo
方法。