spark的运行模式之 ==> 本地运行模式

时间:2022-06-25 12:55:30

spark目前有四种运行模式:本地运行、在yarn上运行、standalone、mesos。

所谓运行模式,就是指spark应用跑在什么地方。mr程序可以在本地运行,也可以提交给yarn运行。这个概念是一样的。

跟其他Hadoop生态圈的组件一样,spark也需要JDK的环境,此外还需要SCALA环境。所以在安装spark之前要先安装好JDK和SCALA。

( 我的 jdk 版本是 1.8  scala 版本是 2.11.8  hadoop 版本是 2.7.3  spark 版本是 2.2.1 都是源生的apache版本)

1、本地模式:

只要下载编译好的tar包,上传到服务器,在指定目录下解压,编辑 spark-env.sh即可。

解压后在spark的conf目录下有一个spark-env.sh.template文件,这是一个模板文件,最好不要直接修改,自己复制一份。

cp  spark-env.sh.template   spark-env.sh

spark的运行模式之 ==> 本地运行模式

在配置文件中找到 launching programs locally 这一行。它表示如果是本地运行模式,需要配置哪些参数。

为了安全起见,又声明了一下JAVA_HOME和SCALA_HOME。

spark和mr一样,只是一个计算框架,本身不提供数据存储功能,数据可以是存储在本地的,也可以是存储在HDFS上的。

一般来说,数据都是存储在HDFS上,我们就需要建立spark和HDFS之间的连接,告诉spark HDFS在哪里。

而HDFS的信息,是配置在core-site.xml 和 hdfs-site.xml 这两个文件里的,只要能找到这两个文件,spark就可以知道HDFS的位置。所以我们只要告诉spark去哪里找这两个文件就行了。

到这里,本地运行模式就配置好了。测试一下:

既然是要使用HDFS,就需要先启动HDFS。

spark的运行模式之 ==> 本地运行模式

启动好HDFS,到spark的安装目录下,找到bin目录里面的命令 spark-shell 。 执行这个命令

spark的运行模式之 ==> 本地运行模式

 

看到这个界面,spark本地模式就可以成功运行了。

可以看到提示符是 scala,说明这里可以敲scala代码。红框框里面的信息也比较重要。

敲一下spark官网的示例代码:

spark的运行模式之 ==> 本地运行模式

发现报错了,说文件不存在,给出的路径是 hdfs://bd27-server.ibeifeng.com:8020/user/bigdata/README.md。 也就是说 spark是到这个目录下面找输入文件的(我们只给了一个相对路径)。

[bigdata@bd27-server hadoop-2.7.3]$ bin/hdfs dfs -put /opt/moudles/spark-2.2.1-bin-hadoop2.7/README.md /user/bigdata/README.md

把这个文件上传到HDFS上,放到它默认去找的那个目录下面。

spark的运行模式之 ==> 本地运行模式

执行成功。

从这里我们可以看到,spark默认是到 HDFS 的 /user/用户名(我的用户名是 bigdata )/ 下面去找输入文件。

spark的运行模式之 ==> 本地运行模式

如果我们给它一个本地文件系统的路径,它也可以读取。但是我们要明确的给出 file:/// 这个schema。

为什么它默认读取HDFS呢? 就是因为我们给出了 HADOOP_CONF_DIR=/opt/moudles/hadoop-2.7.3/etc/hadoop  这个配置参数。相当于给出了 fs.defaultFS=hdfs://XXXXXXX

至于为什么执行第一句话不报错,执行第二句话会报错,那就是另一个话题了。