当前位置: 首页 > news >正文

spark

论文:Spark: Cluster Computing with Working Sets

1.背景:

解决一些hadoop无法胜任的工作,倒不是hadoop不能做,就是hadoop做这些事情效果不好,时间长。因为hadoop 每个map reduce都会把中间内容数据写到disk里面,之后再从disk里面读,太耗时间了。特别是下面两种情况:

Hadoop无法解决那些需要重复迭代使用数据的问题。

(1)Iterative  jops  迭代:重复在一个数据集上进行操作,比如Kmeans算法,那些在数据集上进行迭代运算,求梯度的算法等等。Hadoop 每次迭代都分解为map reduce。每次都需要从磁盘度数据,性能严重影响。

(2)Itrative  analytics:   那些比如要在一个数据集重复查询某些query进行分析。

说到底就是hadoop都是磁盘读数据,严重影响性能。要是能把数据放到内存里去就好了。

 

2.解决方案:

Spark框架,保留了hadoop的优点,还通过把数据放到内存里面,解决了这些问题,spark还是建立在hadoop生态全上的,数据存储还是用hdfs。


具体如何实现的呢?因为引入了RDD这个东西。

何为RDD:

RDD,RDD是spark的抽象数据结构类型,在spark里面,任何数据都是被表示为RDD,是一个只可读的分布式数据集合。可以认为就是个数组或者表,但是是分区存放的,并且RDD提供一下并行接口,保证可以并行map reduce。


spark在执行过程也是RDD->RDD->RDD->result。spark的过程其实就是把数据转为RDD然后对RDD进行一系列的相应的转换,操作最后输出结果。并且这些RDD都是存放在内存里面的。


可以持久化一个RDD到内存,cache它,下次就可以无须计算,直接使用内存cache的数据,


3.RDD的容错能力:

lineage(继承),可以通过记录的信息,从原始可靠数据还原出RDD,RDD不需要数据存在物理磁盘,只要保存足够的信息,可以从原数据及计算出RDD即可。

RDD可以被rebuild。因为RDD都是从一系列RDD转换过来的,这里涉及到惰性转换,其实就是在RDD转换的过程中,其实并没有执行,只是保存了一些信息,这些信息记录了前后RDD是如何转换的,只有当需要输出计算的action操作发生,才会执行。

(论文原话,RDD :store as a chain of object(pointer to parent,information how rdd transform)

和hadoop保留多份副本的方案不一致,这样简单还可以省空间。


4.如果构建和产生RDD:

(1)文件系统,hdfs,本地文件等

(2)parallelizing  直接产生数组

(3)transform from 已存在的RDD

 (4)   changing from 持久化的RDD




mac安装过程:

(1)安装java,配置环境变量,下个jdk7以上的

(2)安装scale,配置环境变量(直接下载解压,文件目录添加到HOME,简单)

 (3)   安装spark,下载解压,进入目录编译,sbt编译(稍微配置一下路径即可,简单,不过要编译很久,也可以下载编译好的直接运行)

网上可容易查找配置步骤,没难度。




1.创建RDD:

(1)从集合(数组)  parallelize(list[1,2,3,4,5])

(2)从外部文件(hdfs,普通文件系统)textFile(filePath)


RDD:包括  transform    ations 两种操作类型

转化,动作。

转化:就是从一个rdd变成另外一个rdd,并且会记住上次rdd,实际不执行,叫惰性转换。

          就看做是一个指针,记住了这些该做的操作可是没做,留着以后一起做。

动作:action阶段才会执行代码。value值。


Transform:

比如map,filter这些

Action:

count(),collection() 这些


2.运行spark,可以使用java python scala。

先使用scala的命令行来熟悉一下提供的API

API:

Transform:

Map(func):

     对RDD中的每个数据元素执行一个函数,产生一个新的RDD。和hadoop里面的map一样意思。map(x=>x*2)这边要说明,map只接受KV格式的RDD

MapValue:

    输入对应kv中的v,k保证不变,对v进行操作,组成一个新kv

Filter(func):

    对元素进行过滤,每个元素应用f函数,返回值为true的在rdd保留。

Distinct:

    去重


Action:

Reduce(func):

   reduce就是规约嘛,两两前后规约。[1,2,3,4,5,6,7]    1+2=3   3+3=6 6+4=10 sum

和hadoop里面的reduce的对应的是reducebykey。规约相同key的数据。

collect()  

   以数组形式 返回数据集的所有元素

count()

  返回数据集的个数

first()

take(n) :    top n




持久化RDD:

   spark可以持久化一个RDD,就是可以把一个数据集保存或者缓存到内存,使得之后用到这个数据集的时候速度非常快。







转载于:https://www.cnblogs.com/GuoJiaSheng/p/5644729.html

相关文章:

  • redis查看数据
  • C# 获取listview中选中一行的值
  • 火锅惹的祸
  • 使用sqlserver的游标功能来导数据的常见写法
  • 深入理解mybatis参数
  • 【Todo】Tomcat与Jetty的比较 以及Tomcat架构的学习
  • linux每日一学--复习日
  • java 类加载顺序
  • spring学习第二天
  • 翻译研讨VOA时事报道20091107 Karzai的第二次选举;美国失业率达10.2%
  • redis持久化RDB和AOF
  • pgadmin 的安装
  • IT技术风向标
  • Linux查看是否被入侵
  • 如何正确地处理时间
  • co.js - 让异步代码同步化
  • express.js的介绍及使用
  • gcc介绍及安装
  • HashMap ConcurrentHashMap
  • Less 日常用法
  • PHP面试之三:MySQL数据库
  • Service Worker
  • 简单易用的leetcode开发测试工具(npm)
  • 人脸识别最新开发经验demo
  • 入门级的git使用指北
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • Python 之网络式编程
  • 整理一些计算机基础知识!
  • #mysql 8.0 踩坑日记
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (27)4.8 习题课
  • (C++17) std算法之执行策略 execution
  • (day6) 319. 灯泡开关
  • (超详细)语音信号处理之特征提取
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (转)负载均衡,回话保持,cookie
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .Net Winform开发笔记(一)
  • .NetCore Flurl.Http 升级到4.0后 https 无法建立SSL连接
  • .NET中的Event与Delegates,从Publisher到Subscriber的衔接!
  • // an array of int
  • ??javascript里的变量问题
  • @private @protected @public
  • @RestController注解的使用
  • [ 隧道技术 ] 反弹shell的集中常见方式(二)bash反弹shell
  • [2018/11/18] Java数据结构(2) 简单排序 冒泡排序 选择排序 插入排序
  • [BZOJ1008][HNOI2008]越狱
  • [CareerCup][Google Interview] 实现一个具有get_min的Queue
  • [HTML]Web前端开发技术12(HTML5、CSS3、JavaScript )——喵喵画网页