Spark
Spark
是什么
Spark是一个基于内存运算的分布式计算框架,
包含多个模块提供各种场景的数据统计分析计算,统一分析引擎
-
速度快
开发效率高运行速度快:Spark支持使用Scala、Java、Python、SQL、R进行快速分布式应用程序构建,并提供了基于内存的资源调度方式,可以将所有的计算步骤在网络和内存中完成,任务过程中不需要使用磁盘IO -
简单易用
类似Scala中的集合,Spark中提供了近百种高级算子,和4种数据抽象,完成数据处理任务的编排 -
通用性
Spark提供了SparkCore(批处理),SparkSQL(结构化数据运算),SparkStreaming(流式计算),MLlib(机器学习库),GraphX(图计算) -
兼容性
Spark提供了多种任务管理方式:HadoopYARN、Mesos、K8s
Spark也提供了独立的集群模式:
主从架构
主: Master
从: Worker
Spark为了兼容Hadoop生态的组件,提供了数百种数据的访问方式
集群搭建
- 关于版本
- 经典版本: 1.6.3
- 企业中常见版本: 2.1.x 2.4.x 3.1.x
- 当前: 3.1.2
- 下载解压
-
修改配置文件
- spark-env.sh
# hadoop集群配置文件所在路径
HADOOP_CONF_DIR=/opt/hadoop-2.7.7/etc/hadoop
# SparkStandalone集群模式的主节点服务端口
SPARK_MASTER_PORT=7077
# 主节点WebUI端口
SPARK_MASTER_WEBUI_PORT=8080
# JDK
JAVA_HOME=/opt/jdk1.8
- spark-defaults.conf
# Spark客户端连接集群时使用的默认配置
spark.master spark://bd0701:7077
- workers
# 配置所有需要启动Worker服务的机器
bd0701
bd0702
bd0703
- 分发安装包
#!/bin/bash
HOSTNAME=`hostname`
HOSTS=`cat /etc/hosts | grep bd |awk '{print $2}' | grep -v $HOSTNAME`
# for 循环变量 in 集合
# do
# 循环体
# done
for HOST in $HOSTS
do
echo "正在将${1}发送到${HOST}的$2"
scp -rq $1 $HOST:$2
echo "发送完成"
done
- 配置环境变量
echo 'export SPARK_HOME=/opt/spark-3.1.2' >> /etc/profile
echo 'export PATH=$SPARK_HOME/bin:$SPARK_HOME/sbin:$PATH' >> /etc/profile
source /etc/profile
- 启动集群
执行Spark任务
spark-shell
- Spark中提供了类似scala解释器的工具spark-shell,可以在命令行中直接连接集群并提交执行任务
spark-shell --master spark://bd0701