Windows下使用spark-without-hadoop版本安装

Windows下SparkwithoutHadoop环境配置与启动教程,
本文详细描述了在Windows环境下安装SparkwithoutHadoop版本时,如何修改环境变量、解决依赖问题以及启动单机版SparkStandalone的过程,包括配置文件的正确设置和启动命令的使用。

一、without-hadoop版本的含义

Spark的版本名称中的“without Hadoop”具有误导性:这意味着该版本不与特定的Hadoop发行版绑定,并不意味着没有hadoop即可运行:用户应指出在哪里可以找到Hadoop

二、windows环境下环境变量的修改

1、非without-hadoop版本配置修改方法

  • 找到SPARK_HOME目录下的conf/spark-env.sh.template,将该文件改名为spark-env.cmd(注意不是改名为spark-env.sh,因为window不认sh文件)
  • 编辑spark-env.cmd文件,将#全部替换为rem,windows环境下注释用rem
    在spark-env.cmd文件最后添加如下内容
set SPARK_MASTER_HOST=localhost
set SPARK_MASTER_PORT=7077

2、without-hadoop版本配置修改方法

without-hadoop版本如果只按上面的操作修改,执行spark-shell.cmd 会报错:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/fs/FSDataInputStream

这是因为without-hadoop版本没有直接包含依赖的hadoop的jar,所以需要在配置文件里指定hadoop的jar位置。

我之前在网上查到的教程中都是在$SPARK_HOME/conf/spark-env.cmd 中添加下列行(这是具有误导性的)

set SPARK_DIST_CLASSPATH=%HADOOP_HOME%/bin/hadoop classpath

实际应该是具体指明依赖的哪些hadoop下的lib文件,解决方案是在$SPARK_HOME/conf/spark-env.cmd 最后添加如下内容

set SPARK_DIST_CLASSPATH="%HADOOP_HOME%/etc/hadoop/*;%HADOOP_HOME%/share/hadoop/common/lib/*;%HADOOP_HOME%/share/hadoop/common/*;%HADOOP_HOME%/share/hadoop/hdfs/*;%HADOOP_HOME%/share/hadoop/hdfs/lib/*;%HADOOP_HOME%/share/hadoop/hdfs/*;%HADOOP_HOME%/share/hadoop/yarn/lib/*;%HADOOP_HOME%/share/hadoop/yarn/*;%HADOOP_HOME%/share/hadoop/mapreduce/lib/*;%HADOOP_HOME%/share/hadoop/mapreduce/*;%HADOOP_HOME%/share/hadoop/tools/lib/*"

这里注意2点:

  1. windows下环境变量的读取用%HADOOP_HOME%,Linux下用${HADOOP_HOME},不要用错了
  2. windows下环境变量的分隔符是分号’;‘,而Linux下环境变量的分割符是冒号’:',也不要用错了

三、windows下启动单机版Spark Standalone

由于%SPARK_HOME%\sbin目录没有start-all.cmd,也没有start-master.cmd和start-worker.cmd(start-all.sh,start-master.sh和start-worker.sh都是给Linux环境用的),所以我们需要使用%SPARK_HOME%\bin目录下的spark-class手动启动。

  1. 要启动主工作者,请在%SPARK_HOME%/bin目录中打开Windows命令提示符,然后复制并粘贴此命令,然后按Enter
spark-class org.apache.spark.deploy.master.Master
  1. 浏览http://localhost:8080,如果收到错误消息"找不到服务器",则刷新页面。从此页面,将获得唯一的URL。看起来像这样的URL:spark://localhost:7077
  2. 打开一个新终端,然后转到%SPARK_HOME%/bin,复制并粘贴此行代码,然后按Enter
spark-class org.apache.spark.deploy.worker.Worker spark://ip:port

这部分spark://ip:port,是从步骤2获得的URL。

最后,验证结果:
在%SPARK_HOME%/bin目录下,打开一个新的终端,执行下面命令:

spark-submit --class org.apache.spark.examples.SparkPi --master spark://localhost:7077 ../examples/jars/spark-examples_2.12-3.0.0.jar 10 

求得π的值,至此大功告成!

<think>好的,我需要帮用户解决如何下载Spark 3.4.0不含Hadoop的二进制版本的问题。用户之前已经问过类似的问题,我之前给出了官网的下载链接和配置注意事项。现在用户再次询问,可能希望得到更详细的步骤或者确认某些信息。 首先,查看用户提供的引用内容。引用[1]提到安装Spark前需要先安装Linux系统、JDK和Hadoop,并给出解压和配置文件的步骤。引用[2]提供了官网的下载链接和清华大学的镜像链接,还提到需要安装Python和Hadoop,并测试spark-shell。引用[3]强调要选择不带Hive的Spark版本Hadoop版本用2.x即可。引用[4]指出如果使用Hadoop 3.x,必须选择不带HadoopSpark版本,否则会有兼容性问题。 用户当前的需求是下载spark-3.4.0-bin-without-hadoop.tgz,需要确保提供的步骤正确,并且考虑到用户可能的环境配置。根据之前的回答,官网链接和镜像链接已经给出,但用户可能需要更明确的指导,比如如何选择正确的版本,验证文件完整性,解压步骤等。 需要注意,用户可能已经安装Hadoop 3.x,所以必须选择不带HadoopSpark版本,这点在引用[4]中强调过。另外,用户可能需要配置环境变量,如SPARK_HOME,以及处理依赖项,如Hadoop的类路径。 还要检查用户是否已经安装了JDK和Hadoop,因为引用[1]提到这是前提条件。可能需要提醒用户确认这些依赖是否已安装,并提供验证方法,比如运行java -version和hadoop version命令。 另外,引用[2]提到需要安装Python,但用户的问题中没有提到Python的需求,可能需要询问或提示用户是否需要Python支持。 最后,确保回答结构清晰,分步骤说明下载、验证、解压、配置和环境变量设置,并生成相关问题帮助用户进一步操作。</think>### 详细下载步骤及注意事项 根据引用内容并结合 Spark 官方文档要求,以下是下载 `spark-3.4.0-bin-without-hadoop.tgz` 的完整流程: #### 1. 下载地址确认 - **官方下载页面** 访问 [Apache Spark 3.4.0 官方发布页](https://spark.apache.org/downloads.html),选择以下配置: ```plaintext Spark release: 3.4.0 Package type: "Pre-built for Apache Hadoop without Hadoop" Download type: .tgz ``` 最终文件名为 `spark-3.4.0-bin-without-hadoop.tgz`[^1][^4]。 - **镜像加速** 若官网下载速度慢,可使用清华大学镜像站: ```plaintext https://mirrors.tuna.tsinghua.edu.cn/apache/spark/spark-3.4.0/ ``` #### 2. 文件完整性验证 下载完成后,**必须校验文件哈希值**以避免损坏或篡改: ```bash # 下载校验文件 wget https://downloads.apache.org/spark/spark-3.4.0/spark-3.4.0-bin-without-hadoop.tgz.sha512 # 计算本地文件哈希 sha512sum spark-3.4.0-bin-without-hadoop.tgz # 对比结果(需完全一致) cat spark-3.4.0-bin-without-hadoop.tgz.sha512 ``` #### 3. 解压与目录配置 ```bash # 解压至 /usr/local(需管理员权限) sudo tar -zxvf spark-3.4.0-bin-without-hadoop.tgz -C /usr/local/ # 重命名目录(避免版本号干扰) sudo mv /usr/local/spark-3.4.0-bin-without-hadoop /usr/local/spark ``` #### 4. 环境变量配置 编辑 `~/.bashrc` 或 `/etc/profile`,添加以下内容: ```bash export SPARK_HOME=/usr/local/spark export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin ``` 执行 `source ~/.bashrc` 使配置生效。 #### 5. 依赖配置(关键步骤) 由于未捆绑 Hadoop,需**手动指定 Hadoop 类路径**: - **方式 1**:通过 `spark-env.sh` 配置 ```bash cd $SPARK_HOME/conf cp spark-env.sh.template spark-env.sh echo "export SPARK_DIST_CLASSPATH=$(hadoop classpath)" >> spark-env.sh ``` - **方式 2**:提交任务时动态指定 ```bash spark-submit --conf spark.driver.extraClassPath=$(hadoop classpath) \ --conf spark.executor.extraClassPath=$(hadoop classpath) \ YourApp.jar ``` #### 6. 验证安装 ```bash # 检查 Spark 版本 spark-submit --version # 启动本地模式测试 spark-shell ``` 若成功进入 Scala REPL 并显示 `Spark context Web UI` 地址,则安装成功[^2][^3]。 --- ### 版本兼容性说明 | 组件 | 要求版本 | 验证命令 | |-------------|-------------------------|--------------------| | **JDK** | >= 1.8 (推荐 OpenJDK 11)| `java -version` | | **Hadoop** | 3.x (需与集群版本一致) | `hadoop version` | | **Python** | >= 3.6 (可选) | `python3 --version`| --- ### 常见问题解答 **Q1:为何必须选择 `without Hadoop` 版本?** 当已部署 Hadoop 3.x 时,若使用捆绑 Hadoop 2.x 的 Spark 版本,会导致库冲突(如 `guava` 版本不兼容)[^4]。 **Q2:如何解决 `ClassNotFoundException` 错误?** 需确保: 1. `hadoop classpath` 输出包含所有必要依赖 2. Spark 配置文件中正确引用了 Hadoop 类路径[^3] ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值