一、spark介绍
1.为什么使用Spark
1.MapReduce编程模型的局限性
- 繁杂
只有Map和Reduce两个操作,复杂的逻辑需要大量的样板代码
- 处理效率低:
Map中间结果写磁盘,Reduce写HDFS,多个Map通过HDFS交换数据
任务调度与启动开销大
- 不适合迭代处理、交互式处理和流式处理
2.Spark是类Hadoop MapReduce的通用并行框架
- Job中间输出结果可以保存在内存,不再需要读写HDFS
- 比MapReduce平均快10倍以上
2.spark简介
- 诞生于加州大学伯克利分校AMP实验室,是一个基于内存的分布式计算框架
- 发展历程
2009年诞生于加州大学伯克利分校AMP实验室
2010年正式开源
2013年6月正式成为Apache孵化项目
2014年2月成为Apache顶级项目
2014年5月正式发布Spark 1.0版本
2014年10月Spark打破MapReduce保持的排序记录
2015年发布了1.3、1.4、1.5版本
2016年发布了1.6、2.x版本
3.spark优势
- 速度快
- 易用性
- 通用性
- 随处运行
(YARN、Mesos、EC2、Kubernetes、Standalone、Local)
4.spark技术栈
- Spark Core
核心组件,分布式计算引擎
- Spark SQL
高性能的基于Hadoop的SQL解决方案
- Spark Streaming
可以实现高吞吐量、具备容错机制的准实时流处理系统
- Spark GraphX
分布式图处理框架
- Spark MLlib
构建在Spark上的分布式机器学习库
二、安装
1.安装Scala
打开我们的虚拟机,上传我们的安装包,需要的小伙伴可以去官网下载
1.解压到opt目录下,然后重命名Scala
tar -zxvf scala... -C/opt
cd /opt
mv scala... scala
2.配置环境变量
vi /etc/profile
export SCALA_HOME=/opt/scala
export PATH=$SCALA_HOME/bin:$PATH
3.source一下后,输入Scala,如果进入到Scala模式,代表配置成功
2.安装spark
1.官网下载教新的版本
spark安装包下载地址 2.上传到moba,解压到opt目录下,然后重命名spark
tar -zxvf spark... -C/opt
cd /opt
mv spark... spark
3.配置环境变量
export SPARK_HOME=/opt/spark
export PATH=$SPARK_HOME/bin:$PATH
4.修改spark内部的配置文件
重命名为:spark-env.sh
重命名为:slaves
localhost=hadoop101(完全分布式每个节点都要写)
vi spark-env.sh
(最后一行输入:)
export JAVA_HOME=/opt/jdk1.8.0_221
export SCALA_HOME=/opt/scala
export SPARK_HOME=/opt/spark
export SPARK_MASTER_IP=hadoop20(本机的主机名)
export SPARK_EXECUTOR_MEMORY=1G(处理器的核数)
5.启动spark
三种启动方案
- 本机
spark-shell --master local[*]
- Standalone
先在spark的sbin目录下,启动:./start-all.sh
查看jps,出现了worker,master后
spark-shell --master spark://hadoop20:7077
- 直接启动
spark-shell
三、架构核心
- Spark架构设计
1.在驱动程序中,通过SparkContext主导应用的执行
2.SparkContext可以连接不同类型的Cluster Manager(Standalone、YARN、Mesos),连接后,获得集群节点上的Executor
3.一个Worker节点默认一个Executor,可通过SPARK_WORKER_INSTANCES调整
4.每个应用获取自己的Executor
5.每个Task处理一个RDD分区
- Spark架构核心组件