我们可以在 Apache Spark 中访问 HDFS 文件系统和 YA​​RN 调度程序吗?

数据挖掘 大数据 apache-hadoop
2021-10-06 09:06:28

我们可以访问 Apache-Hadoop 中的 HDFS 文件系统和 YA​​RN 调度程序。但 Spark 的编码水平更高。是否也可以在 Apache-Spark 中访问 HDFS 和 YARN?

谢谢

2个回答

高密度文件系统

Spark 是作为 MapReduce 的替代品而构建的,因此支持其大部分功能。特别是,它意味着“Spark 可以从 Hadoop 支持的任何存储源创建分布式数据集,包括您的本地文件系统、HDFS、Cassandra、HBase、Amazon S3 等。” 1 . 对于最常见的数据源(如 HDFS 或 S3),Spark 会自动识别模式,例如:

val sc = SparkContext(...)
val localRDD = sc.textFile("file://...")
val hdfsRDD  = sc.textFile("hdfs://...")
val s3RDD    = sc.textFile("s3://...")

对于更复杂的情况,您可能需要使用较低级别的函数,例如newAPIHadoopFile

val hBaseRDD = sc.newAPIHadoopRDD(conf, classOf[TableInputFormat], 
      classOf[org.apache.hadoop.hbase.io.ImmutableBytesWritable],
      classOf[org.apache.hadoop.hbase.client.Result])
val customRDD = sc.newAPIHadoopRDD(conf, classOf[MyCustomInputFormat], 
      classOf[MyCustomKeyClass],
      classOf[MyCustomValueClass]) 

但一般规则是,如果某些数据源可用于 MapReduce,则可以轻松地在 Spark 中重用它。

目前 Spark 支持 3 种集群管理器/模式:

  • 独立
  • 梅索斯

Standalone 模式使用 Spark 自己的主服务器并且仅适用于 Spark,而 YARN 和 Mesos 模式旨在在多个框架(例如 Spark、MapReduce、Impala 等)之间共享同一组系统资源。YARN 和 Mesos 的比较可以在这里找到,在 YARN 上的 Spark 的详细描述在这里

而且,按照 Spark 的最佳传统,您只需更改主 URL即可在不同模式之间切换。

是的。

spark官方文档中有示例:https ://spark.apache.org/examples.html 只需将您的HDFS文件uri放在您的输入文件路径中,如下所示(scala语法)。

val file = spark.textFile("hdfs://train_data")