我installed本地DEV盒上的spark-2.0.2-bin-without-hadoop.tgz包但未能run下面的<{p}}
$ ./bin/spark-shell
NoClassDefFoundError: org/apache/hadoop/fs/FSDataInputStream
$ ./sbin/start-master.sh
NoClassDefFoundError: org/slf4j/Logger
我是否误解了Spark可以在下面旋转without Hadoop?
“我需要Hadoop来运行Spark吗? 不,但如果您在群集上运行,则需要某种形式的共享文件系统(例如,NFS安装在每个节点上的相同路径上)。如果您有这种类型的文件系统,则可以在独立模式下部署Spark。“
答案 0 :(得分:4)
关于FSDataInputStream的第一个问题,如此Stack Overflow响应https://stackoverflow.com/a/31331528中所述,
“没有Hadoop”有点误导,因为这个Spark版本没有绑定到Hadoop的特定版本,而不是没有它运行。要使用“without Hadoop”版本运行Spark,您应该将其绑定到您自己的Hadoop发行版。
关于缺少SLF4J的第二个问题,如此Stack Overflow响应https://stackoverflow.com/a/39277696中所述 - 您可以包含SLF4J jar,或者如果您已经安装了Hadoop发行版,那么您应该已经启动并运行了它。
说到这里,您可以下载使用Hadoop预构建的Apache Spark,而不是使用Hadoop本身。它包含所有必需的jar,您可以指定Spark从文件系统中读取,例如访问数据时使用[
{
'_id': '18f292072b7555965e0f61a0331a3a43',
assets: [
{
"_id": "8ed6dc473e331d895ecbdea7f9bbd55e",
"created": 1479463428837247,
"updated": 1479463428837247,
"catalog_id": "4b5ce056175151e3f0aa1741eedb7f12",
"albums": {
"id": "18f292072b7555965e0f61a0331a3a43",
"order": "D1"
}
},
{
"_id": "aec701d23dfe5f3a100d678e1a04f716",
"created": 1479463428902155,
"updated": 1479463428902155,
"catalog_id": "4b5ce056175151e3f0aa1741eedb7f12",
"albums": {
"id": "18f292072b7555965e0f61a0331a3a43",
"order": "D2"
}
},
{
"_id": "b2fe8f9dcf8f3f92f6396cfa574ef71c",
"created": 1479463428971650,
"updated": 1479463428971650,
"catalog_id": "4b5ce056175151e3f0aa1741eedb7f12",
"albums": {
"id": "18f292072b7555965e0f61a0331a3a43",
"order": "E1"
}
}
],
{
"_id": "78c72b85944e5085a4a3be77a2d175fe",
"assets": [
{
"_id": "050b550fb23bf780f93eec43cbc667f1",
"created": 1479463428065297,
"updated": 1479463428065297,
"catalog_id": "4b5ce056175151e3f0aa1741eedb7f12",
"albums": {
"id": "78c72b85944e5085a4a3be77a2d175fe",
"order": "D1"
}
},
{
"_id": "dc54279bc0318f41808b65d1fe7142b2",
"created": 1479463428134560,
"updated": 1479463428134560,
"catalog_id": "4b5ce056175151e3f0aa1741eedb7f12",
"albums": {
"id": "78c72b85944e5085a4a3be77a2d175fe",
"order": "D2"
}
}
]
}
]
(而不是HDFS)。
答案 1 :(得分:1)
是的,从 Spark 的 downloads page 开始,截至今天,对于 Spark 3.1.1,存在以下包类型可供下载:
这个 (spark-3.1.1-bin-hadoop2.7.tgz) 版本的 spark 在 Hadoop 2.7 上运行
这个 (spark-3.1.1-bin-hadoop3.2.tgz) 版本的 spark 运行于 Hadoop 3.2 及更高版本
这个 (spark-3.1.1-bin-without-hadoop.tgz) 版本的 spark 可以与任何用户提供的 Hadoop 版本一起运行。
从上一个版本(spark-3.1.1-bin-without-hadoop.tgz)的名称来看,我们似乎需要这个spark版本(即3.)而不是其他版本(即, 1. 和 2.)。然而,命名是模棱两可的。只有当我们想要支持 HDFS 和 YARN 时,我们才需要 Hadoop。在独立模式下,Spark 可以在没有 Hadoop 的情况下在真正的分布式环境中运行(或在单台机器上运行守护进程)。
对于 1. 和 2.,您可以在不安装 Hadoop 的情况下运行 Spark,因为一些核心 Hadoop 库与 spark 预构建二进制文件捆绑在一起,因此 spark-shell
可以正常工作而不会引发任何异常);对于 3.,除非提供 HADOOP 安装,否则 spark 将无法工作(因为 3. 没有 Hadoop 运行时)。
本质上,
有关详细信息,请参阅文档中的 this
<块引用>您可以下载两种 Spark 二进制发行版的变体。一种是使用特定版本的 Apache Hadoop 预先构建的;这个 Spark 发行版包含内置的 Hadoop 运行时,所以我们称之为 with-hadoop Spark 发行版。另一个是使用用户提供的 Hadoop 预先构建的;由于这个 Spark 发行版不包含内置的 Hadoop 运行时,所以它更小,但用户必须单独提供 Hadoop 安装。我们称这种变体为 no-hadoop Spark 发行版。对于with-hadoop Spark发行版,由于它已经包含了一个内置的Hadoop运行时,默认情况下,当一个作业提交到Hadoop Yarn集群时,为了防止jar冲突,它不会将Yarn的类路径填充到Spark中......