Spark 3.4.0新特性--UI支持存储在RocksDB中

文章讨论了Spark默认在内存中存储事件信息导致的DriverOOM问题,以及SparkUI和SparkHistoryServer的性能瓶颈。提出使用RocksDB作为存储后,可以减少内存消耗,同时protobufserializer加速事件的读写,提高系统稳定性。

背景

对于Spark来说,目前存储所有的事件信息以及UI所需要的信息都是默认存储在内存中,这在CS中,对于以Spark作为 Server的模式下,会导致OOM,也会导致造成之前作者提交PR:Multi sparkSession should share single SQLAppStatusStore的问题。

分析

正如Better Spark UI scalability and Driver stability for large applications所说:目前的Spark UI和SHS存在如下问题:
在这里插入图片描述

  1. spark 存储的 UI信息都是在内存中(数据结构为InMemoryStore) ,这会占用大量的内存,会导致Drvier OOM,影响spark的稳定性
  2. spark的UI存储的SQL条数有限,导致完后的任务,如果想回去看看现场,是无迹可寻的
  3. Spark History Server必须从json格式的event中解析出所有的spark事件,尤其未被压缩的的时间日志会很大,导致SHS的启动需要等待很长一段时间

引入以RocksDB作为存储以后,能够减少driver所需内存,并且引进新的protobuf serializer能够大大加快spark事件的读写事件
在这里插入图片描述

<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,必须选择不带Hadoop的Spark版本,否则会有兼容性问题。 用户当前的需求是下载spark-3.4.0-bin-without-hadoop.tgz,需要确保提供的步骤正确,并且考虑到用户可能的环境配置。根据之前的回答,官网链接和镜像链接已经给出,但用户可能需要更明确的指导,比如如何选择正确的版本,验证文件完整性,解压步骤等。 需要注意,用户可能已经安装了Hadoop 3.x,所以必须选择不带Hadoop的Spark版本,这点在引用[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] ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值