为什么Spark需要在本地或独立模式下使用hadoop库?

时间:2018-12-28 05:06:28

标签: java apache-spark hadoop

我下载了 spark-2.4.0-bin-without-hadoop.tgz 软件包并安装在我的系统中。我想在本地模式下运行简单的Apache Spark代码,但这给了我 NoClassDefFoundError

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/conf/Configuration
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.conf.Configuration

在谷歌搜索之后,我发现需要将SPARK_DIST_CLASSPATH设置为hadoop类路径。我遵循了指示,并且有效。

我想知道为什么需要hadoop库在独立模式或本地模式下运行spark。

1 个答案:

答案 0 :(得分:1)

Spark主要使用Hadoop Configuration类和FileSystem API,以便更轻松地与Hadoop生态系统中的其他系统集成,并且本质上不需要将所有这些类本地复制到Spark代码库中。换句话说,Spark是一个数据处理框架,而不是Filesytem接口或配置管理库。

当您下载无hadoop 版本的Spark时,这实际上意味着您已经在scales = "free_x", space = "free_x"和类路径(通过PATH)上安装了Hadoop并且可以使用Hadoop。另外,Spark下载页面显示了“用户提供的” Hadoop,以明确这一点。