赞
踩
Hadoop的安装与使用:https://blog.csdn.net/weixin_67281754/article/details/130544582
Hadoop伪分布式的安装:https://blog.csdn.net/weixin_67281754/article/details/130544874
1.解压spark-3.5.1,然后改名赋予权限:
sudo tar -zxf ~/Downloads/spark-3.5.1-bin-without-hadoop.tgz -C /usr/local
cd /usr/local
sudo mv ./spark-3.5.1-bin-without-hadoop/ ./spark
sudo chown -R hadoop:hadoop ./spark //此处的Hadoop为你的用户名
Cd /usr/local/spark
cp ./conf/spark-env.sh.template ./conf/spark-env.sh
vim ./conf/spark-env.sh
在第一行加入:export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath)
Cd /usr/local/spark
bin/run-example SparkPi
bin/spark-shell
使用命令“:quit”退出Spark Shell
(注意:此处的spark和scala版本号后面要用)
sudo mkdir /usr/local/sbt //创建安装目录
cd ~/Downloads/
sudo tar -zxvf ./sbt-1.9.9.tgz -C /usr/local
cd /usr/local/sbt
sudo chown -R hadoop /usr/local/sbt //此处的Hadoop为当前用户名
cp ./bin/sbt-launch.jar ./ //把bin目录下的sbt-launch.jar复制到sbt的安装目录下
vim /usr/local/sbt/sbt
在脚本文件加入的代码如下:
#!/bin/bash
SBT_OPTS="-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M"
java $SBT_OPTS -jar `dirname $0`/sbt-launch.jar "$@"
为该Shell脚本文件增加可执行权限:
chmod u+x /usr/local/sbt/sbt
可以使用如下命令查看sbt版本信息(可能需要几分钟):
Cd /usr/local/sbt
sudo ./sbt sbtVersion //如果有权限可以不用加sudo
在终端中执行如下命令创建一个文件夹 sparkapp 作为应用程序根目录:
Cd ~
mkdir ./sparkapp
mkdir -p ./sparkapp/src/main/scala
在 ./sparkapp/src/main/scala 下建立一个名为 SimpleApp.scala 的文件:
vim ./sparkapp/src/main/scala/SimpleApp.scala
添加代码如下(目前不需要理解代码的具体含义,只需要理解如何编译运行代码就可以):
/* SimpleApp.scala */
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
object SimpleApp {
def main(args: Array[String]) {
val logFile = "file:///usr/local/spark/README.md" // Should be some file on your system
val conf = new SparkConf().setAppName("Simple Application")
val sc = new SparkContext(conf)
val logData = sc.textFile(logFile, 2).cache()
val numAs = logData.filter(line => line.contains("a")).count()
val numBs = logData.filter(line => line.contains("b")).count()
println("Lines with a: %s, Lines with b: %s".format(numAs, numBs))
}
}
(该程序计算 /usr/local/spark/README 文件中包含 "a" 的行数 和包含 "b" 的行数。代码第8行的 /usr/local/spark 为 Spark 的安装目录,如果不是该目录请自行修改。不同于 Spark shell,独立应用程序需要通过 `val sc = new SparkContext(conf)` 初始化 SparkContext,SparkContext 的参数 SparkConf 包含了应用程序的信息。)
在./sparkapp 中新建文件 simple.sbt:
vim ./sparkapp/simple.sbt
添加内容如下,声明该独立应用程序的信息以及与 Spark 的依赖关系(注意:此时的版本号需要改成上面提到过的版本号):
name := "Simple Project"
version := "1.0"
scalaVersion := "2.12.18"
libraryDependencies += "org.apache.spark" %% "spark-core" % "3.5.1"
为保证 sbt 能正常运行,先执行如下命令检查整个应用程序的文件结构:
cd ~/sparkapp
Find .
文件结构应如下图所示:
接着,就可以通过如下代码将整个应用程序打包成 JAR(首次运行同样需要下载依赖包,需要几分钟 ):
/usr/local/sbt/sbt package //如果没有权限需要加sudo
打包成功的话,会输出如下内容:
生成的 jar 包的位置为 ~/sparkapp/target/scala-2.12/simple-project_2.12-1.0.jar
最后,就可以将生成的 jar 包通过 spark-submit 提交到 Spark 中运行了,命令如下:
/usr/local/spark/bin/spark-submit --class "SimpleApp" ~/sparkapp/target/scala-2.12/simple-project_2.12-1.0.jar
最终得到的结果如下:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。