目录
1. spark简介:
2. spark特点:
2.1 Speed:速度快
2.2 Easy of Use:易用性
2.3 Generality:通用性
2.4 Runs Everywhere:到处运行
3. Spark的应用场景
4. 环境要求及准备工作
5. spark搭建模式:
5.1 local模式在解压缩安装后
5.2 Standalone模式搭建(基于hdfs文件存储)
5.1.1 首先配置spark环境变量: vim /etc/profiles
5.1.2 编辑spark-env.sh文件
5.1.3 复制并编辑slaves文件
5.1.4 向目标节点(woker)远程下发spark文件
5.1.5 在master上启动所有节点
5.2 基于yarn安装spark集群
5.2.1 配置环境变量
5.2.2 spark-env.sh 添加如下内容(核心)
5.2.3 修改 hadoop yarn 的配置
6. 基于yarn方式HIVE元数据metastore启动spark
7 . 命令行提交任务参数解析
8. 部署模式对比:
9. spark相关服务端口号
什么是Spark:Spark是一个用于大规模数据处理的统一计算引擎
注意:Spark不仅仅可以做类似于MapReduce的离线数据计算,还可以做实时数据计算,并且它还可以实现类似于Hive的SQL计算,等等,所以说它是一个统一的计算引擎
spark里面最重要的一个特性:内存计算
Spark中一个最重要的特性就是基于内存进行计算,从而让它的计算速度可以达到MapReduce的几十倍甚至上百倍
由于Spark是基于内存进行计算的,所以它的计算性能理论上可以比MapReduce快100倍
Spark使用最先进的DAG调度器、查询优化器和物理执行引擎,实现了高性能的批处理和流处理。
注意:批处理其实就是离线计算,流处理就是实时计算,只是说法不一样罢了,意思是一样的
Spark提供了Core、SQL、Streaming、MLlib、GraphX等技术组件,可以一站式地完成大数据领域的离线批处理、SQL交互式查询、流式实时计算,机器学习、图计算等常见的任务
从这可以看出来Spark也是一个具备完整生态圈的技术框架.
你可以在Hadoop YARN、Mesos或Kubernetes上使用Spark集群。
并且可以访问HDFS、Alluxio、Apache Cassandra、Apache HBase、Apache Hive和数百个其它数据源中的数据。
Spark主要应用在以下这些应用场景中:
之前有一种说法,说Spark将会替代Hadoop,这个说法是错误的,其实它们两个的定位是不一样的,Spark是一个通用的计算引擎,而Hadoop是一个包含HDFS、MapRedcue和YARN的框架,所以说Spark就算替代也只是替代Hadoop中的MapReduce,也不会整个替代Hadoop,因为Spark还需要依赖于Hadoop中的HDFS和YARN。
所以在实际工作中Hadoop会作为一个提供分布式存储和分布式资源管理的角色存在
Spark会在它之上去执行。
首先要确保基础环境是具备的:
spark版本2.3.4
linux7:三台(hadoop安装的机器,免密时间同步等基本要求)
jdk版本:1.8.xxx 三位小版本以上的(为了兼容scala环境)
获取spark安装包:wget https://archive.apache.org/dist/spark/spark-2.3.4/spark-2.3.4-bin-hadoop2.7.tgz
解压后目录结构:
local 和 standalone 模式必须启动 spark,yarn 模式无需启动 spark
./bin/spark-shell
可以通过wordcount来测试:
sc.textFile("data/data.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect
官方手册:https://spark.apache.org/docs/2.3.4/spark-standalone.html#cluster-launch-scripts
export SPARK=/usr/local/bigdata/spark-2.3.4-bin-hadoop2.7
export PATH=$JAVA_HOME/bin:$PATH:$ZOOKEEPER/bin:$HADOOP/bin:$HADOOP/sbin:$SPARK/bin:$SPARK/sbin
cp spark-env.sh.template spark-env.sh
设置 spark 的主节点 和 端口;
spark_worker_memory 表示计算时使用的内存,越大越好,spark 是基于内存的计算
export JAVA_HOME=/usr/local/jdk1.8.0
export HADOOP_CONF_DIR=/usr/local/bigdata/hadoop-2.8.5/etc/hadoop/
export SPARK_MASTER_HOST=node1 # 每台master改成自己的主机名
export SPARK_MASTER_PORT=7077
export SPARK_MASTER_WEBUI_PORT=8080
export SPARK_WORKER_CORES=2
export SPARK_WORKER_MEMORY=2g
worker进程启动的目标机器
node2
node3
scp -r spark-2.3.4-bin-hadoop2.7 node2:`pwd`
scp -r spark-2.3.4-bin-hadoop2.7 node3:`pwd`
spark on yarn 模式只需在 hadoop 集群的任一节点安装 spark 即可,不需要 spark 集群;
因为 spark 应用提交到 yarn 后,yarn 负责集群资源调度。
spark 安装参照 Standalone 模式,大致如下:
YARN_CONF_DIR=/usr/local/bigdata/hadoop-2.8.5/etc/hadoop/
修改 yarn-site.xml,添加如下内容:
不配置这步可能报错,特别是分配内存较小时,如虚拟机情况下。
yarn.nodemanager.pmem-check-enabled
false
yarn.nodemanager.vmem-check-enabled
false
操作 yarn 模式
spark-shell --master yarn-client # 这种方式在 spark2.x 中被废弃,替代命令为下面这句
spark-shell --master yarn --deploy-mode client
yarn 模式 不在 spark UI 上监控,而是在 hadoop UI 上,地址为 http://node1:8088
5.2.4 wordcount测试
# 使用spark-shell的方式启动spark
#使用wordcount 测试下功能
./spark-shell --master yarn
sc.textFile("hdfs://node1:9000/sparktest/data.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect().foreach(println)
spark on hive sparksql
在spark的conf目录下增加hive-site.xml文件
hive.metastore.uris
thrift://node3:9083
启动后可以直接读到元数据
参数 |
解释 |
可选值举例 |
--class |
Spark 程序中包含主函数的类 |
|
--master |
Spark 程序运行的模式(环境) |
模式:local[*]、spark://nameNode:7077、 Yarn |
--executor-memory 1G |
指定每个 executor 可用内存为 1G |
符合集群内存配置即可,具体情况具体分析。 |
--total-executor-cores 2 |
指定所有executor 使用的cpu 核数 为 2 个 |
|
--executor-cores |
指定每个executor 使用的cpu 核数 |
|
application-jar |
打包好的应用 jar,包含依赖。这 个 URL 在集群中全局可见。 比如 hdfs:// 共享存储系统,如果是 |
|
file:// path , 那么所有的节点的 path 都包含同样的 jar |
||
application-arguments | 传给 main()方法的参数 |
提交到本地和集群的示例
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master local[2] \
./examples/jars/spark-examples_2.12-3.0.0.jar 10
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://hadoop11:7077 \
./examples/jars/spark-examples_2.12-3.0.0.jar 10
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
./examples/jars/spark-examples_2.12-3.0.0.jar 10
模式 |
Spark 安装机器数 |
需启动的进程 |
所属者 |
应用场景 |
Local |
1 |
无 |
Spark |
测试 |
Standalone |
3 |
Master 及 Worker |
Spark |
单独部署 |
Yarn |
1 |
Yarn 及 HDFS |
Hadoop |
混合部署 |