spark特点
1、快
与Hadoop的MapReduce相比,Spark基于内存的运算要快100倍以上,基于硬盘的运算也要快10倍以上。Apache Spark使用最先进的DAG调度程序,查询优化器和物理执行引擎,实现批处理和流数据的高性能
2、便于使用
Spark支持Java、Python和Scala的API,还支持超过80种高级算法,使用户可以快速构建不同的应用。还支持交互式的Scala,Python,R和SQL shell
3、通用
Spark提供了统一的解决方案。Spark可以用于批处理、交互式查询(Spark SQL)、实时流处理(Spark Streaming)、机器学习(Spark MLlib)和图计算(GraphX)。这些不同类型的处理都可以在同一个应用中无缝使用。
4、兼容
Spark可以非常方便地与其他的开源产品进行融合。比如,Spark可以使用Hadoop的YARN和Apache Mesos作为它的资源管理和调度器,器,并且可以处理所有Hadoop支持的数据,包括HDFS、HBase和Cassandra等。
集群安装
首先是得明白怎么选择版本,包括怎么选择Hadoop版本,怎么选择Spark版本,Spark版本之间的差异是什么,怎么选择 Scala,怎么选择Java
www.baidu.com(手动滑稽)
1、机器部署
准备两台安装JDK的机器并配置环境变量、多台机器互通互联,免密登录,时间同步,
2、下载Spark安装包
稳定版及最新版http://spark.apache.org/downloads.html
旧版本http://spark.apache.org/news/index.html
3、解压并安装
上传安装包并解压到指定目录
tar -xvf spark-2.2.0-bin-hadoop2.7.tar -C /usr/local
4、配置
进入Spark安装目录
cd /usr/local/spark-2.2.0-bin-hadoop2.7
进入conf目录,重命名并修改spark-env.sh.template文件
cd conf
mv spark-env.sh.template spark-env.sh
vi spark-env.sh
添加一下配置
export JAVA_HOME=/usr/local/jdk1.8.0_181 //jdk路径
export SPARK_MASTER_IP=centos1 //centos1为自己的主机名
export SPARK_MASTER_PORT=7077
新建slaves文件
vi slaves
添加子节点所在位置(Workers)
centos2 //子机名
centos3 //子机名
5、文件分发
scp -r spark-2.2.0-bin-hadoop2.7/ centos2:$PWD //修改以上任意一项都需重新分发
scp -r spark-2.2.0-bin-hadoop2.7/ centos3:$PWD
Spark集群配置完毕
启动
可以写绝对路径也可以配置到环境变量里面,小编因为有hadoop所以写了觉得路径
start-all.sh //配置了环境变量使用
/usr/local/spark-2.2.0-bin-hadoop2.7/sbin/start-all.sh /没有配置环境变量
问题:如果环境变量没问题,而启动的时候总是需要绝对路径才能正常启动则应是主机上装了hadoop,那么这样的话可以写一个shell脚本来启动Spark(shell脚本中写绝对路径)
执行jps查看,登录Spark管理界面查看集群状态(主节点):http://centos1:8080
jps //主节点上有Master进程,其他子节点上有Work进程
调试
执行一个spark程序
该算法是利用蒙特·卡罗算法求PI
./spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://centos1:7077 \ //填写自己的主机名
/usr/local/spark-2.2.0-bin-hadoop2.7/examples/jars/spark-examples_2.11-2.2.0.jar 1000 //自己的spark-examplrs jar包,个版本不一样
启动spark shell
/usr/local/spark-1.6.1-bin-hadoop2.6/bin/spark-shell \
--master spark://centos1:7077 \ //指定Master的地址
--executor-memory 2g \ //指定每个worker可用内存
--total-executor-cores 2 //整个集群使用的cpu核数