简介
- 快速,通用,大数据处理分析框架
- scala编写
- 采用DAG引擎,支持内存计算,速度快
- 可以运行scala,java,python,r等开发的程序
- 集成多种数据源
spark组件
- spark core
实现了 Spark 的基本功能,包含任务调度、内存管理、错误恢复、与存储系统交互等模块。
Spark Core 中还包含了对弹性分布式数据集(resilient distributed dataset,简称RDD)的API定义。 - spark sql
是 Spark 用来操作结构化数据的程序包。通过 Spark SQL,我们可以使用 SQL 或者 Apache Hive版本 - spark streaming
是 Spark 提供的对实时数据进行流式计算的组件。提供了用来操作数据流的 API,并且与 Spark Core 中的 RDD API 高度对应。 - spark MLlib
提供常见的机器学习(ML)功能的程序库。 - spark GRAPHX
GraphX在Spark基础上提供了一站式的数据解决方案,可以高效地完成图计算的完整流水作业。
StandAlone模式搭建
以三台机器为例,mypc01为master,mypc02,mypc03为slave
[root@mypc01 ~]# tar -zxvf spark-2.2.3-bin-hadoop2.7.tgz -C /usr/local/ && cd /usr/local
[root@mypc01 local]# mv spark-2.2.3-bin-hadoop2.7/ spark
配置环境变量
[root@mypc01 local]# vim /etc/profile
.........省略.........
# spark environment
export SPARK_HOME=/usr/local/spark
export PATH=$SPARK_HOME/sbin:$SPARK_HOME/bin:$PATH
[root@mypc01 local]# source /etc/profile
配置spark的环境脚本,确定master机器位置及端口
[root@mypc01 spark]# cd conf
[root@mypc01 conf]# cp spark-env.sh.template spark-env.sh
export JAVA_HOME=/usr/local/jdk
export SPARK_MASTER_HOST=mypc01
export SPARK_MASTER_PORT=7077
设置slaves文件
[root@mypc01 conf]# cp slaves.template slaves
[root@mypc01 conf]# vim slaves
mypc02
mypc03
分发到其余两个节点
启动
[root@mypc01 spark]# start-all.sh
StandAlone模式集群模型
master进程:管理整个集群,分配资源
worker进程: 真正执行spark程序的节点, 与master进行心跳反馈
driver: 进程,spark程序在哪启动,driver就在哪里.
executor: 位于worker节点, 执行spark的task.
yarn模式搭建
在上述基础上修改修改hadoop的yarn-site.xml
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
修改spark-env.sh,告诉spark hadoop和yarn的位置
export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop
export YARN_CONF_DIR=/usr/local/hadoop/etc/hadoop
运行测试
yarn Client模式运行
其中spark-submit
为命令,100表示执行100次,--deploy-mode client
表示模式为yarn client,jar
为所执行的程序
spark-submit --class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode client \
--driver-memory 2g \
--executor-memory 2g \
--executor-cores 2 \
/usr/local/spark/examples/jars/spark-examples_2.11-2.2.3.jar \
100
执行流程概述
1 client向yarn的RM申请启动APP Master (因为要执行程序嘛,入口只能是client申请
2 RM表示同意并找到一个NM.给该NM分配一个container用于启动AppMaster
3 AM启动后开始干活,启动Excutor执行task
4 Driver分配task并监控task的执行情况
5任务执行完后通知RM申请注销任务.
yarn cluster模式运行
spark-submit --class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
--driver-memory 2g \
--executor-memory 2g \
--executor-cores 2 \
/usr/local/spark/examples/jars/spark-examples_2.11-2.2.3.jar \
100
执行流程
1 client向yarn的RM申请启动APP Master (因为要执行程序嘛,入口只能是client申请
2 RM表示同意并找到一个NM.给该NM分配一个container用于启动AppMaster
3 AM启动后开始干活,启动Excutor执行task
4 Driver分配task并监控task的执行情况
5任务执行完后通知RM申请注销任务.