源码安装Spark

前提条件

Spark 使用的语言是 Scala,而 Scala 需要运行在 JVM 之上。因此,搭建 Spark 的运行环境应该是 JDK 和 Scala。由于学习 Spark 源码的参考书籍是《Spark内核设计的艺术架构设计与实现》,所以就按照作者安装的版本进行安装:

  • Java8
  • Scala2.11
  • Spark2.1.0

前两者的安装和环境配置就不做讲解了。

安装 Spark

Spark2.1.0 的版本下载地址:https://archive.apache.org/dist/spark/spark-2.1.0/,下载 spark-2.1.0-bin-hadoop2.6.tgz 即可,然后解压到你想要的位置,这里我解压到了 /usr/local/spark-2.1.0-bin-hadoop2.6

然后在配置环境变量 vim ~/.bash_profile,内容如下:

export SPARK_HOME=/usr/local/spark-2.1.0-bin-hadoop2.6
export PATH=$SPARK_HOME/bin:$PATH

添加完之后执行 source .bash_profile 即可,然后执行命令 spark-shell,结果如下:

Spark安装

  • 如果没有明确指定 log4j 的配置,那么默认使用 org/apache/spark/1og4j-defaults.properties,并且日志级别是 WARN。我们可以自己配置一份 log4j 的配置文件,也可以在 Spark-Shell 命令行中通过 sc.setLog-Level(newLevel) 来指定日志级别。
  • SparkContext 的 WebUI 地址是 http://172.26.49.190:4040
  • 指定的部署模式(即 master)为 local[*],当前应用的 ID 为 local-1689429758715
  • 可以在 Spark-Shell 命令行中通过 sc 来使用 SparkContext,通过 spark 来使用 SparkSession

配置日志文件

由于 Spark Core 默认日志级别是 WARN,所以给出的信息很少。因此,我们配置一份自己的日志配置文件。

  • cp log4j.properties.template log4j.properties:将 conf/log4j.properties.template 复制一份。
  • 然后修改复制出来的 log4j.properties,将 log4j.logger.org.apache.spark.repl.Main 修改为 INFO

然后再次执行命令 spark-shell,结果如下:

修改日志配置文件

Spark 源码编译与调试

下载 Spark 源码

在你想要安装的目录下克隆源码并指定分支为 2.1.0

git clone https://github.com/apache/spark.git -b branch-2.1

编译 Spark 源码

这里我使用的 idea 这个 IDE,所以就使用 Maven 来构建项目,下载相应的 Jar 包。进入 Spark 源码目录(pom.xml 所在目录下),执行如下编译命令:

mvn -T 6 -DskipTests clean package

直到出现 BUILD SUCCESS 就说明编译成功,然后用 idea 打开这个项目。

测试

打开 examples/src/main/java/org/apache/spark/examples/JavaWordCount.java 程序,进行测试。运行程序之前,添加一些运行程序所需的参数:

  • -Dspark.master=local:表示本地模式(-D 是 Java 的参数)
  • /Users/quanjunyi/Downloads/example.txt:则是要统计单词的文本

Spark测试

运行之后,报了如下错误:

单词统计运行错误

在以下地方右键选择 Generate Sources and Update Folders,然后再次运行程序,还是没变化。

单词统计运行错误解决方法

原来 Spark Project External Flume Sink排除的,在默认设置下导入 Spark 源代码时,因此只要进行如下修改即可:

单词统计运行错误解决方法1

再次运行程序,就会报新的错误:

单词统计运行错误1

解决办法,将项目的 assembly 目录下的 scala-2.11 下的 jar 包添加进来,具体目录为 assembly/target/scala-2.11/jars

单词统计运行错误解决方法2

然后就运行成功了。

posted @ 2023-07-16 20:40  FireOnFire  阅读(22)  评论(0编辑  收藏  举报