软件名称 |
版本 |
ubuntu |
18.04 64 位 |
Hadoop:hadoop-3.1.3.tar.gz |
3.1.3 |
Jdk:jdk-8u212-linux-x64.tar.gz |
1.8 |
Spark:spark-3.1.1-bin-hadoop3.2.tgz |
3.1.1 |
Hive:apache-hive-3.1.2-bin.tar.gz |
3.1.2 |
MySQL |
5.7 |
Scala:scala-2.12.x.tgz |
2.12 |
Vue.js |
3.2 |
ECharts |
5.1 |
JDBC驱动: mysql-connector-java-5.1.37.jar |
|
集成开发工具:IDEA 2022 社区版 |
Spark是一种通用的大数据计算框架,是基于RDD(弹性分布式数据集)的一种计算模型。那到底是什么呢?可能很多人还不是太理解,通俗讲就是可以分布式处理大量集数据的,将大量集数据先拆分,分别进行计算,然后再将计算后的结果进行合并。
Spark在存储器内运行程序的运算速度能做到比Hadoop MapReduce的运算速度快上100倍,即便是运行程序于硬盘时,Spark也能快上10倍速度。Spark允许用户将数据加载至集群存储器,并多次对其进行查询,非常适合用于机器学习算法。
Spark也支持伪分布式(pseudo-distributed)本地模式,不过通常只用于开发或测试时以本机文件系统取代分布式存储系统。在这样的情况下,Spark仅在一台机器上使用每个CPU核心运行程序。
更高的性能。因为数据被加载到集群主机的分布式内存中。数据可以被快速的转换迭代,并缓存用以后续的频繁访问需求。在数据全部加载到内存的情况下,Spark可以比Hadoop快100倍,在内存不够存放所有数据的情况下快hadoop10倍。
通过建立在Java,Scala,Python,SQL(应对交互式查询)的标准API以方便各行各业使用,同时还含有大量开箱即用的机器学习库。
与现有Hadoop 1和2.x(YARN)生态兼容,因此机构可以无缝迁移。
方便下载和安装。方便的shell(REPL: Read-Eval-Print-Loop)可以对API进行交互式的学习。
借助高等级的架构提高生产力,从而可以讲精力放到计算上。
Driver
Spark的驱动器,它是执行程序的main方法的进程,它负责创建SparkContext、RDD,以及RDD的转化操作和代码的执行。shell模式下,后台会制动创建Spark驱动器,创建SparkContext对象。
Master
主节点,用于与Worker节点通信,进行资源的调度与分配,接受Driver发来的任务请求,在Standalone模式下才会有Worker节点。
Worker
工作节点,主要用于创建执行器,接受Master的领导,在Worker接收到Matser的请求后会自动启动Executor进程。在standlone节点下才会有Worker节点。
Executor
执行Job Task,返回结果给Driver
Executor是一个工作进程,负责在Spark作业中完成运行任务,任务间互相独立,并行运行 。Executor启动后会反向向Driver注册自己,这样Driver就能更好的服务于自己的Executor。
Task
Task是一个工作任务,一个任务会发给一个Executor
tar -zxf /usr/local/intsall/spark-3.1.1-bin-hadoop3.2.tgz -C /opt/
vi /root/.bash_profile
export SPARK_HOME=/opt/spark-3.1.1-bin-hadoop3.2
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
启动spark
22/09/25 08:28:04 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
Spark context Web UI available at http://master:4040
Spark context available as 'sc' (master = local[*], app id = local-1664094491831).
Spark session available as 'spark'.
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/___/ .__/\_,_/_/ /_/\_\ version 2.4.5
/_/
Using Scala version 2.11.12 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_231)
Type in expressions to have them evaluated.
Type :help for more information.
scala>
修改配置文件
mv spark-env.sh.template spark-env.sh
vi spark-env.sh
export JAVA_HOME=/usr/java/jdk1.8.0_162
export SPARK_MASTER_IP=master
export SPARK_MASTER_HOST=master
export SPARK_MASTER_PORT=7077
mv workers.template workers
vi workers
master
slave1
slave2
scp -r /opt/spark-3.1.1-bin-hadoop3.2 slave1:/opt/
scp -r /opt/spark-3.1.1-bin-hadoop3.2 slave2:/opt/
./sbin/start-all.sh
./spark-submit --master spark://master:7077 --class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.12-3.1.1.jar
#出现 Pi is roughly 3.1335756678783393 表示运行成功
#配置HADOOP_CONF_DIR
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
./spark-submit --master yarn --class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.12-3.1.1.jar
#出现 Pi is roughly 3.129915649578248 表示启动成功