AmosCloud

Library

Have a Question?

If you have any question you can ask below or enter what you are looking for!

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生态的组件,提供了数百种数据的访问方式

file

集群搭建

  • 关于版本
    • 经典版本: 1.6.3
    • 企业中常见版本: 2.1.x 2.4.x 3.1.x
    • 当前: 3.1.2
  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
  1. 分发安装包
#!/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
  1. 配置环境变量
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
  1. 启动集群

执行Spark任务

spark-shell

  • Spark中提供了类似scala解释器的工具spark-shell,可以在命令行中直接连接集群并提交执行任务
spark-shell --master spark://bd0701

file

编译器中编写Spark程序