Apache Spark如何了解HDFS数据节点?

Fri*_*izz 17 hadoop hdfs apache-spark

想象一下,我在HDFS托管的文件上做了一些Spark操作.像这样的东西:

var file = sc.textFile("hdfs://...")
val items = file.map(_.split('\t'))
...
Run Code Online (Sandbox Code Playgroud)

因为在Hadoop世界中,代码应该放在数据所在的位置,对吧?

所以我的问题是:Spark工作人员如何知道HDFS数据节点?Spark如何知道执行代码的数据节点?

G Q*_*ana 14

Spark重用Hadoop类:当你调用时textFile,它会创建一个TextInputFormat,它有一个getSplits方法(一个split大致是一个分区或块),然后每个InputSplit都有getLocationsgetLocationInfo方法.

  • 有趣.所以我可以相互独立地安装HDFS和Spark(首先安装我的HDFS数据节点,然后安装我的Spark工作人员)?由于"位置信息"在两个框架之间是兼容的,因此Spark会自动选择正确的工作者/数据节点 - 我可以这样说吗? (3认同)
  • 让我澄清一下:当我的文件在HDFS的某处时,Spark可以弄清楚它在哪个节点上,对吧?是否足以在我的所有HDFS数据节点上设置Spark工作人员 - 而Spark会自动将数据路由到正确的节点?或者我总是需要资源管理器(如Mesos或YARN)? (2认同)