从0开始学习spark的学习笔记(1)

美女所谓学习是要在快乐中进行的,这是我用了多年的桌面壁纸现在传给大家。

1.大数据生态简介:

首先我们先来看看我们这个大数据生态吧:在这里插入图片描述

2.Spark 简介:

看到了大数据的神态结构:然后了解了我们spark的重要性,所以我们开始学习spark吧:
首先我们进Spark的官网看看简介:
官方网址: http://spark.apache.org
中文文档: http://spark.apachecn.org
首先我们进入官网就会看到我们Spark的优势和特点:
在这里插入图片描述

3. spark 本地安装和集群安装:

然后就是开始安装我们的spark:
sparkHA集群安装这个我之前写了博客可以参考:
Spark集群HA环境搭建教程
然后我们现在开始window的本地安装:

3.1 spark下载选择

spark2.2.2下载地址
在这里插入图片描述
然后下载好了之后:
本地启动(windows):
将下载到的软件解压之后,直接启动bin/spark-shell2.cmd
在这里插入图片描述

测试代码:
sc.textFile("E:/data/date.log").flatMap(_.split(" "))
.map((_, 1)).reduceByKey(_+_).foreach(println)

4. spark的关键概念:

在spark集群中首先会有

4.1 Master

同名字一样是spark集群的管理职,或者管理节点,在spark基于yarn的方式运行过程中,master就是ResourcesManager,基于自身的standalone模式运行就是集群中查看到的master节点。
master的主要作用就是:集群整体的资源调度。

4.2 Worker

这个如同命名一样,是Spark的工作节点,在spark中基于yarn的运行模式中,worker就是Nodemanager,基于自身standalone模式就是集群的worker节点。
Worker:作用:本台机器上的资源调度。

4.3 Application

提交到spark集群中去运行的完整的应用就是一个Application,当然一个Application有多个job来组成。

4.4 RDD:弹性式分布式数据集(resilient distributed dataset)

rdd就是能够被并行计算的,被分区存储在集群中各个节点的数据集。
分布式:数据存储在rdd对应的各个partition分区中。
弹性:Spark的数据在内存中进行存储或者计算,当内存存储不了的时候,会将对应的数据外溢到磁盘进行存储和计算。
rdd的创建方式:可以hdfs文件创建,还可以通过并行的scala的集合创建,在编码过程中还可以通过转化,将一个rdd转化为其他的rdd。

4.5 job

每提交到集群一次,就会提交一个spark的job作业,或者说每触发一次action操作,就会提交一次spark作业job,从这个角度而言,一个applicaiton由多个job组成。这里个这个Job,就可以理解为MapReduce中的Job

4.6 SparkContext

  1. 1.SparkContext是整个一个Application的应用上下文对象。
  2. 一个spark应用的入口就是sparkContext,是Spark作业中最重要的概念。
  3. Driver+jobs就是Application。

4.7 Driver

driver:驱动,简单理解,就是用来提交代码,提交job作业。
在换句话说:jobs实在集群中运行的,而这些driver是在本地来提交这些job作业的。
再换句话说:driver的部分就是在一个application中除去job的部分。

5. saprk名词解释:

名词解释:

  • ClusterManager:在Standalone模式中即为Master(主节点),控制整个集群,监控Worker。在YARN模式中为资源管理器。
  • Worker:从节点,负责控制计算节点,启动Executor。在YARN模式中为NodeManager,负责计算节点的控制。
  • Driver:运行Application的main()函数并创建SparkContext。
  • Executor:执行器,在worker
    node上执行任务的组件、用于启动线程池运行任务。每个Application拥有独立的一组Executors。
  • SparkContext:整个应用的上下文,控制应用的生命周期。
  • RDD:Spark的基本计算单元,一组RDD可形成执行的有向无环图RDD Graph。 **DAG
  • Scheduler:实现将Spark作业分解成一到多个Stage,每个Stage根据RDD的Partition个数决定Task的个数,然后生成相应的Task
    set放到TaskScheduler中。
  • TaskScheduler:将任务(Task)分发给Executor执行。
  • Stage:一个Spark作业一般包含一到多个Stage。
  • Task:一个Stage包含一到多个Task,通过多个Task实现并行运行的功能。
  • Transformations:转换(Transformations) (如:map, filter, groupBy,
    join等),Transformations操作是Lazy的,也就是说从一个RDD转换生成另一个RDD的操作不是马上执行,Spark在遇到Transformations操作时只会记录需要这样的操作,并不会去执行,需要等到有Actions操作的时候才会真正启动计算过程进行计算。
  • Actions:操作(Actions) (如:count, collect,
    save等),Actions操作会返回结果或把RDD数据写到存储系统中。Actions是触发Spark启动计算的动因。
  • SparkEnv:线程级别的上下文,存储运行时的重要组件的引用。
  • SparkEnv:内创建并包含如下一些重要组件的引用。
  • MapOutPutTracker:负责Shuffle元信息的存储。
  • BroadcastManager:负责广播变量的控制与元信息的存储。
  • BlockManager:负责存储管理、创建和查找块。
  • MetricsSystem:监控运行时性能指标信息。
  • SparkConf:负责存储配置信息。

在spark集群中部署spark作业,加载hdfs文件的时候:
Caused by: java.net.UnknownHostException: ns1
解决之道:
将$SPARK_HOME/conf/spark-default.conf.template cp成为$SPARK_HOME/conf/spark-default.conf
然后在该文件的最后一行添加一句话:
spark.files $HADOOP_HOME/etc/hadoop/hdfs-site.xml,$HADOOP_HOME/etc/hadoop/core-site.xml

6. SparkRdd运行时架构图

SparkRdd运行时架构图

发布了52 篇原创文章 · 获赞 31 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_39361934/article/details/105668381