spark笔记

spark简介

saprk 有六个核心组件:

SparkCore、SparkSQL、SparkStreaming、StructedStreaming、MLlib,Graphx

SparkCore

相当于Hadoop中的MapReduce,用于大规模离线批处理计算

SparkSQL

相当于Hive(稍微类似),用于交互式计算

注意:
1.交互式计算:用户界面中的查询条件进行过滤查询,然后交给SparkSQL进行处理,产生输出数据。速度比较快
2.交互式计算框架:Presto、Impala、Kylin、Druid等

SparkStreaming

相当于storm,用于实时流式计算。(准实时)

实时流式计算
1.实时:处理速度快,秒级别或毫秒级别
2.流式:处理数据比较少,但是是持续不断的,作业job不能停止。

StructedStreaming

类似SparkStreaming,不同点在于StructedStreaming基于SparkSQL,而SparkStreaming基于SpringCore。

Mllib

类似scikit-learning,Hadoop中的Mahout,用于分布式的机器学习算法

Graphx

用于图计算,主要适用于神经网络,图遍历之类的场景。

spark基本概念

application

应用程序,可以有多个job

job

一个作业,可以有多个stage阶段

stage

一个阶段,可以有多个task任务

task

一个任务,执行逻辑计算

clustermanager

集群管理器,譬如yarn、mesos、k8s、standalone等。

1.master
主节点,比如Yarn中的ResourceManager(RM)
2.worker
从节点,比如Yarn中的NodeManager(NM)

executor

1.执行器,一个运行某个stage中的各个task的进程。类似Yarn中的Container。

2.Yarn中的Container运行的一个task,task运行后就杀死进程。executor运行一个stage钟的所有taskset,整个stage阶段完成后就杀死进程。executor中有个线程池,每个线程运行一个task

driver

1.驱动器,有一部分功能类似于Yarn中的ApplicationMaster。

2.Driver功能:

a)将一个job中的各个 RDD串联起来,成为一个DAG(有向无环图)调度图
b)将DAG图拆分成各个Stage阶段(DAGScheduler)
c)类似于ApplicationMaster,任务申请与调度。(TaskScheduler)

spark分布式环境

配置

修改conf目录下的slaves、spark-default.conf、spark-env.sh

slaves:
slave1、slave2
spark-default.conf
spark.master spark://master:7077 (没有Ip映射写主机ip地址)
spark-env.sh
JAVA_HOME=xxxx (本机jdk目录)

启动

sbin/start-all.sh

访问

<master主机名/ip>:8080

说明

端口号:
7077:master rpc端口号
8080:master http端口号

注:rpc(remote process call)远程过程调用

启动流程

【start-all.sh】-> 加载【spark-config.sh】->调用
【start-master.sh】及【start-slaves.sh】->加载【spark-config.sh】及【load-spark-env.sh】->调用【spark-daemon.sh】->调用【spark-class.sh】或(【spark-submit.sh】->【spark-class.sh】)

运行模式

local、local-cluster、standalone、yarn、mesos

注:https://www.iteblog.com/archives/1223.html (yarn-client与yarn-cluster区别)

入门实例

单词统计

sc.textFile("/home/hduser/app/spark/README.md").flatMap(line=>line.split(" ")).map(word => (word,1)).reduceByKey((x,y) => x+y).collect()

RDD 概念

RDD:弹性分布式数据集,spark的第一个数据结构。只读的。

RDD特性

a)RDD是各个分区的集合,包含多个分区Partition

b)RDD的分区使用多种算子操作进行计算

c)RDD之间存在依赖关系
根据是否经过shuffle流程拆分成窄依赖和宽依赖 d)<k,v>形式的RDD需要重新分区,可指定分区器Partitioner,默认是HashPartitioner
单值形式的RDD中的分区数,依赖于父RDD中的分区数 e)数据本地性(RDD中的分区优先加载本地的数据)

创建RDD

集合并行化

val list = List(1,2,3,4,5)
val rdd = sc.parallelize(list)
rdd.collect

读取外部数据源

val rdd = sc.textFile(README.md)
rdd.collect

算子操作

rdd算子根据生成的数据类型分成transformation(转换)和action(动作)

tarnsformation

从RDD转换为另一个RDD

ation

将RDD中的数据进行输出

简单案例

开发工具

IDEA + maven

Manven简介

功能

maven:自动化构建工具

1.依赖包管理
2.自动构建(编译->测试->打包->安装->发布->运行)

安装配置

配置conf/setttings.xml

    <!—本地仓库位置-->
<localRepository>D:/repository</localRepository>
<!—配置中央仓库与远程仓库的镜像,主要原因是仓库访问比较慢,使用镜像快 mirrorOf如果是*,这个镜像是所有中央仓库和远程仓库的镜像;
mirrorOf如果是central,只是中央仓库的镜像
-->
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

配置环境变量

【计算机】->【高级系统设置】->【高级】->【环境变量】

MAVEN_HOME=D:\apache-maven

path=xxx;%MAVEN_HOME%\bin

测试

命令行中执行 mvn –v

正确显示

Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-25T02:41:47+08:00)
Maven home: C:\Program Files\apache-maven-3.6.0\bin\..
Java version: 12, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk-12
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"

spark笔记 环境配置的更多相关文章

  1. windows下spark开发环境配置

    http://www.cnblogs.com/davidwang456/p/5032766.html windows下spark开发环境配置 --本篇随笔由同事葛同学提供. windows下spark ...

  2. Spark 单机环境配置

    概要 Spark 单机环境配置 JDK 环境配置 Spark 环境配置 python 环境配置 Spark 使用示例 示例代码 (order_stat.py) 测试用的 csv 文件内容 (order ...

  3. Windows下Spark单机环境配置

    1. 环境配置 a)  java环境配置: JDK版本为1.7,64位: 环境变量配置如下: JAVA_HOME为JDK安装路径,例如D:\software\workSoftware\JAVA 在pa ...

  4. spark开发环境配置

    以后spark,mapreduce,mpi可能三者集于同一平台,各自的侧重点有所不用,相当于云计算与高性能计算的集合,互补,把spark的基础看了看,现在把开发环境看看,主要是看源码,最近Apache ...

  5. [Struts2学习笔记] -- 环境配置

    在创建好WebProject后,就可以开始进行Struts2的环境配置,可以到Struts2官网下载,本环境使用struts-2.3.24.1版本. 首先导入必要的jar包到WebProject的/W ...

  6. mac下spark单机环境配置笔记

    1.安装scala 从http://www.scala-lang.org下载scala-2.11.7.tgz并解压缩 将解压缩的文件夹用mv指令移动到/usr/local/share mv [scal ...

  7. Hadoop/Spark开发环境配置

    修改hostname bogon 为localhost 查看ip地址 [training@bogon ~]$ sudo hostname localhost [training@bogon ~]$ h ...

  8. 02-tornado学习笔记-环境配置

    Ubuntu16.04开发环境 1.ubuntu默认root用户没有激活,激活root用户,就要为root用户创建密码   $sudo passwd root   2.修改主机名   $vi /etc ...

  9. Metasploit学习笔记——环境配置

    <Metasploit渗透测试魔鬼训练营>书56页开始配置网络环境,一共五台机器,攻击机换成了自己更常用的kali,配置方法和back track相同. kali(攻击机) 10.10.1 ...

随机推荐

  1. c#接口interface学习

    好久没学习C#了,上次已经学习到了接口这块,感觉有点不太好理解,因此重新学习,在vs上面运行了,本来不想写博客的,但是正好看到网上有人说,写博客可以加深印象,因此,写吧. 下面是菜鸟教程的实例 usi ...

  2. Angular vs React---React-ing to change

    这篇文章的全局观和思路一级棒! The Fairy Tale Cast your mind back to 2010 when users started to demand interactive ...

  3. nginx,apache,tomcat的区别

    nginx与apache 这里说的apche指apache http server ,与nginx都属于http服务器软件,主要处理静态资源. http server关心的是http协议层面的传输和访 ...

  4. Euclid`s Game

    题目 给定两个整数 a 和 b,Stan和Ollie轮流从较大的数字中减去较小的数的倍数.这里的倍数是指1倍.2倍这样的整数倍,并且相减后的结果不能小于0.Stan先手,在自己的回合将其中一个数变成零 ...

  5. idea中隐藏.iml文件

    在创建父子工程或者聚合工程时产生的大量 .iml 文件,有时会对我们的操作产生干扰,所以,一般情况下,我们都将其隐藏掉,步骤如下: File——>settings——>Editor——&g ...

  6. 一个.java文件中是否可以有多个类

    前段时间,有个同事问到我这个问题:一个.java文件中是否可以有多个类? 答案:可以有多个类,但最多只能有一个被public修饰的class. 且若这个.java文件中有一个public类型的clas ...

  7. mknod

  8. ABP 基本操作

    基本信息: 官网:https://aspnetboilerplate.com api:https://aspnetboilerplate.com/Pages/Documents/Articles-Tu ...

  9. A1016 | 磨人的大模拟

    这题写得头晕……明天我再评价 #include <stdio.h> #include <memory.h> #include <math.h> #include & ...

  10. mark一下咕掉的题目

    蒟蒻才普及组呀~ 大佬别D我 等集中补一下 CF980F:咋说捏,我觉得要联赛了做这题有点浪费时间,等想颓废了再来写写叭qwq 215E/279D/288E/331C3/431D/433E/750G/ ...