-
预备知识
1、如果要跑spark例子程序,最好配置环境变量时,加入如下内容。
省区频繁输入调用jar包。
注意不同的spark版本,对应路径不同。
2、修改配置文件(这里针对standalone模式)
host文件:
Master(Master):127.0.0.1(名称与IP对应关系)
slave1(Worker):127.0.0.1(名称与IP对应关系)
slave2(Worker):127.0.0.1(名称与IP对应关系)
注意:Master只有一个,slave有好几个。
spark-env.sh文件:
按官方文档要求设置Master,slave的配置参数
对于.sh脚本文件,设置后要用source命令让其马上生效。
slaves文件:
切记:spark根目录下配置文件夹conf下的文件都是.template,即都是模板。
根据需要,我们要对其修改,修改后的文件后缀名就不是template了,是我们自己要求的格式。
为了方便查看,建议复制文件,按照模板格式修改。
3、所有主机必须关闭防火墙。
-
spark运行shell和示例
-
spark支持四种语言:scala、java、python、R。对应分别有4中语言的版本。
-
注意加载时的路径(公共目录为spark根目录下的examples/src/main)、方式。
-
1、运行示例程序
-
1.1、运行scala、java示例程序
-
命令./bin/run-example <class> [params]
-
命令将调用spark-submit启动程序。
-
1.2、运行python示例程序
-
命令./bin/spark-submit <.py> [params]
-
示例如:
./bin/spark-submit examples/src/main/python/pi.py 10
-
1.3
、运行
R
示例程序
-
命令:
./bin/spark-submit <.R> [params]
-
示例如:
./bin/spark-submit examples/src/main/r/dataframe.R
-
-
-
-
2、交互方式调用spark.(java不是脚本语言,所有没有交互调用方式)
-
2.1、scala交互:调用./bin/spark-shell (--master local[n])
-
--master local[n]:明确master url即进行数量。
-
这里master设置为local本地,线程数量为n.
-
默认情况下,master也为local,线程数为1.
-
更多关于spark-shell使用方法,参考--help.
-
-
-
2.2、python交互:调用./bin/pyspark (--master local[n])
-
参数设置同上。
-
2.3、R交互:调用./bin/sparkR (--master local[n])
-
参数设置同上。
-
-
-
-
spark处理过程
-
1、spark程序有两个很重要的概念,或者说部件。
-
2、分别是sparkContext,RDD.
-
3、可以对应hadoop的map reduce函数来理解其重要性和执行顺序,但实际上不是一回事。
-
4、spark启动交互界面后会将source context简化为sc。
-
5、RDD是弹性分布式数据集的简写,是spark处理数据的方式。
-
-
spark部署方式
-
1、Amazon EC2:启动spark速度非常快,需要EC2脚本支持。
-
2、standalone:部署在私有集群上最简单的方式,便于程序开发和调试。
-
3、Apache mesos:更通用的方式,可以运行hadoop的map reduce程序和服务。
-
4、hadoop yarn:运行在yarn上(即mapreduce2.0版本)。
-
作为个人开发测试,建议standalone方式。
-
-
spark部署方式、交互界面、IDE编程
-
1、部署是在本机或者集群上,spark的布置方式。决定程序的运行和资源调度方式。
-
2、交互界面是用scala、python、R等脚本语言,调用spark,实现某项小功能。
-
3、java是程序设计语言,同c/c++.不是脚本语言,所以不能用于交互编程。
-
4、IDE编程是编写中大型程序是,为了加快速度和效率,在IDE集成环境下,编写基于spark的程序。
-
5、交互shell能快速看到运行结果,便于随时修改;IDE便于代码集成、打包.
-
这两者在编程中经常穿插使用,提高开发效率。
-
-
spark处理过程
-
1、获得外部数据
2、数据处理:用RDD API(包括transformation、actions)
2.1、转换为新数据(把外部数据)
2.2、启动job(在cluster执行)
补充说明:
1、RDD API是spark最基本的API。RDD是弹性分布式数据集Resilient Distributed Dataset。
2、在它之上更高级的API有machine learning API、DataFrame API.相比基本API,它们提供对数据更精确的操作。
-
spark程序调试几个疑问
-
1、现象:java.net.ConnectException: Call From peter-HP-ENVY-Notebook/127.0.1.1 to localhost:9000 failed on connection exception: java.net.ConnectException: 拒绝连接。
可能原因:没有访问hdfs的权限,可能是端口设置问题。
可能是hdfs.xml文件设置问题。
也可能是防火墙问题。(在一台机器上运行spark,应该不是防火墙)
2、示例程序(scala交互界面)中输入README.md。
没有设置文件路径啊,在哪里得到这个文件。
这个文件是在spark的根目录下。
-
spark编译两种方式
-
1、sbt:需要联网,需要git工具,编译较慢。对应scala语言程序。
2、maven:需要联网,需要maven工具,编译较快。对应java语言程序。