大数据


云计算概念

一、课程资源

厦大课程:Spark编程基础(Python版)

优秀博文:Spark源码分析系列(目录)

二、大数据特点

大数据4V特性

Volumn, Variety, Velocity, Value。

思维方式

通过数据发现问题,再解决问题。

全样分析,精确度的要求降低。

三、分布式方案

分布式存储

    • 分布式文件系统:GFS/HDFS
    • 分布式数据库:BigTable/HBase
    • NoSql

分布式处理

    • map/reduce【面向批处理】
    • Spark【面向批处理】
    • Flink

四、大数据计算模式

(1) 批处理计算

(2) 流计算

S4, Flume, Storm

(3) 图计算

GIS系统,Google Pregel, 有专门图计算的工具。

(4) 查询分析计算

Google Dremel, Hive, Cassandra, Impala等。

五、大数据服务

SaaS, PaaS, IaaS

六、大数据分析环境

流程:ETL (Spark) --> Dataware house (HDFS, Cassandra, HBase) --> Data analysis (Spark) --> Reporting & visualization

Lambda 架构:同时处理“实时”和“离线”的部分。

生态系统

一、Hadoop 生态系统

Tez 构建有向无环图。
Hive 数据仓库,用于企业决策,表面上写得是sql,实际转换为了mapReduce语句。
Pig 类似sql语句的脚本语言,可以嵌套在其他语言中。(提供轻量级sql接口)
Oozie 先完成什么,再完成什么。
Zookeeper 集群管理,哪台机器是什么角色。
Hbase 面向列的存储,随机读写;HDFS是顺序读写。
Flume 日志收集。
Sqoop 关系型数据库导入Hadoop平台。主要用于在Hadoop(Hive)与传统的数据库间进行数据的传递
Ambari 部署和管理一整套的各个套件。

二、Spark 生态系统

三、Flink

Java派别的Spark竞争对手。

基于“流处理”模型,实时性比较好。

Goto: 第一次有人把Apache Flink说的这么明白!

四、Beam

翻译成Flink or Spark的形式,类似于 Keras,试图统一接口。

Goto: Apache Beam -- 简介

引入 Spark

一、年轻

二、代码简洁

// word count.
rdd = sc.textFile("input.csv") wordCounts = rdd.map(lambda line: line.split(","))  \
.map(lambda word: (word, 1))  \
.reduceByKey(lambda x, y: x+y).collect()

Spark的设计与运行原理


原理分析

一、基本概念

(1) RDD 数据抽象

RDD: 弹性分布式数据集(内存中),存储资料的基本形式

分区数量可以 动态变化

(2) DAG 有向无环图

(3) 运行在Executor上的工作单元 - Task

“进程”派生出很多“线程”,然后完成每一个任务。

Executor进程,驻留在每一个work node上的。

(4) 作业 - Job

一个作业包含多个RDD。

一个作业分解为多组任务,每一组的集合就是 Stage。

(5) Applicaiton

用户编写的spark程序。

二、鸟瞰图

基本运行框架。其中,Cluster Manager: spark自带的、Yarn等等。

三、申请资源过程

  1. 主节点 Spark Driver (指挥所, 创建sc即指挥官) 向 Cluster Manager (Yarn) 申请资源。
  2. 启动 Executor进程,并且向它发送 code 和 files。
  3. 应用程序在 Executor进程 上派发出线程去执行任务。
  4. 最后把结果返回给 主节点 Spark Driver,写入HDFS or etc.

四、运行基本流程

SparkContext解析代码后,生成DAG图。

DAG Scheduler

一、 Resilient Distributed Dataset (RDD)

(1) 高度受限 - 只读

本质是:一个 "只读的" 分区记录集合。

Transformation 过程中,RDD --> RDD,期间允许“修改”。

(2) 两种“粗粒度”操作

* Action类型。(触发计算得到结果)
* Transformation类型。(只是做了个意向记录)

"细粒度" 怎么办?例如:网页爬虫,细粒度更新。

因为提供了更多的操作,这些 “操作的组合” 也可以做“相同的事情“。

(3) 更多的"操作"

比如:map, filter, groupBy, join

之所以”高效“,是因为管道化机制。所以不需要保存磁盘,输入直接对接上一次输出即可。

(4) 天然容错机制

数据复制,记录日志(关系数据库),但,这样开销太大了。

Spark是天然容错性:DAG,可以根据前后节点反推出错误的节点内容。

二、RDD优化

根据 “宽依赖” 划分 “阶段” 的过程。

“宽依赖” 是啥

一个父亲对多个儿子。

例如:groupByKey, join操作。

要点:若是宽依赖,则可划分为多个”阶段“。

“阶段” 如何划分

因为这样符合优化原理。

为何要划分 “阶段”

(a) 窄依赖:不要”落地“,好比不用”写磁盘“,形成管道化的操作。

原本的 "窄依赖" 操作流程。

优化后的操作流程。

(b) 宽依赖:就会遇到shuffle操作,意味着“写磁盘”的一次操作。

划分阶段实战

“窄依赖”:多个父亲对应一个儿子,不会阻碍效率。

内存有限的情况下 Spark 如何处理 T 级别的数据?


Ref: https://www.zhihu.com/question/23079001

/* implement */

End.

[Spark] 01 - What is Spark的更多相关文章

  1. [Spark] 06 - What is Spark Streaming

    前言 Ref: 一文读懂 Spark 和 Spark Streaming[简明扼要的概览] 在讲解 "流计算" 之前,先做一个简单的回顾,亲! 一.MapReduce 的问题所在 ...

  2. [转] Spark快速入门指南 – Spark安装与基础使用

    [From] https://blog.csdn.net/w405722907/article/details/77943331 Spark快速入门指南 – Spark安装与基础使用 2017年09月 ...

  3. Spark踩坑记——Spark Streaming+Kafka

    [TOC] 前言 在WeTest舆情项目中,需要对每天千万级的游戏评论信息进行词频统计,在生产者一端,我们将数据按照每天的拉取时间存入了Kafka当中,而在消费者一端,我们利用了spark strea ...

  4. spark学习笔记总结-spark入门资料精化

    Spark学习笔记 Spark简介 spark 可以很容易和yarn结合,直接调用HDFS.Hbase上面的数据,和hadoop结合.配置很容易. spark发展迅猛,框架比hadoop更加灵活实用. ...

  5. Spark On Yarn中spark.yarn.jar属性的使用

    今天在测试spark-sql运行在yarn上的过程中,无意间从日志中发现了一个问题: spark-sql --master yarn // :: INFO Client: Requesting a n ...

  6. hadoop之Spark强有力竞争者Flink,Spark与Flink:对比与分析

    hadoop之Spark强有力竞争者Flink,Spark与Flink:对比与分析 Spark是一种快速.通用的计算集群系统,Spark提出的最主要抽象概念是弹性分布式数据集(RDD),它是一个元素集 ...

  7. 【译】Spark官方文档——Spark Configuration(Spark配置)

    注重版权,尊重他人劳动 转帖注明原文地址:http://www.cnblogs.com/vincent-hv/p/3316502.html   Spark主要提供三种位置配置系统: 环境变量:用来启动 ...

  8. 【Spark学习】Apache Spark配置

    Spark版本:1.1.1 本文系从官方文档翻译而来,转载请尊重译者的工作,注明以下链接: http://www.cnblogs.com/zhangningbo/p/4137969.html Spar ...

  9. Spark Streaming揭秘 Day35 Spark core思考

    Spark Streaming揭秘 Day35 Spark core思考 Spark上的子框架,都是后来加上去的.都是在Spark core上完成的,所有框架一切的实现最终还是由Spark core来 ...

随机推荐

  1. 重读《学习JavaScript数据结构与算法-第三版》- 第6章 链表(一)

    定场诗 伤情最是晚凉天,憔悴厮人不堪言: 邀酒摧肠三杯醉.寻香惊梦五更寒. 钗头凤斜卿有泪,荼蘼花了我无缘: 小楼寂寞新雨月.也难如钩也难圆. 前言 本章为重读<学习JavaScript数据结构 ...

  2. 调度系统Airflow1.10.4调研与介绍和docker安装

    Airflow1.10.4介绍与安装 现在是9102年,8月中旬.airflow当前版本是1.10.4. 随着公司调度任务增大,原有的,基于crontab和mysql的任务调度方案已经不太合适了,需要 ...

  3. Flutter学习笔记(24)--SingleChildScrollView滚动组件

    如需转载,请注明出处:Flutter学习笔记(23)--多 在我们实际的项目开发中,经常会遇到页面UI内容过多,导致手机一屏展示不完的情况出现,以Android为例,在Android中遇到这类情况的做 ...

  4. cython 第一次接触

    https://www.cnblogs.com/kaituorensheng/p/4452881.html

  5. Sqoop数据迁移工具的使用

    文章作者:foochane  原文链接:https://foochane.cn/article/2019063001.html Sqoop数据迁移工具的使用 sqoop简单介绍 sqoop数据到HDF ...

  6. 使用jQuery.extend创建一个简单的选项卡插件

    选项卡样式如图,请忽略丑陋的样式,样式可以随意更改 主要是基于jquery的extend扩展出的一个简单的选项卡插件,注意:这里封装的类使用的是es6中的class,所以不兼容ie8等低版本浏览器呦! ...

  7. 快应用list组件 scrollTo 方法的调用方式

    例如,滚动到list 的第4个list-item: this.$element('alist').scrollTo({index:3})

  8. Codeforces 1204C

    题意略. 思路:我的想法是逐步地找出这个序列中的重要点,我要判断当前这个点能不能删去,就要看上一个重要点和当前这个点 i 在序列中的下一个点 i + 1之间的距离 是否是最短距离,如果是,那么我们就可 ...

  9. HDU - 2121 Ice_cream’s world II 无根最小树形图

    HDU - 2121 :http://acm.hdu.edu.cn/showproblem.php?pid=2121 比较好的朱刘算法blog:https://blog.csdn.net/txl199 ...

  10. codeforces 465 C. No to Palindromes!(暴力+思维)

    题目链接:http://codeforces.com/contest/465/problem/C 题意:给出一个不存在2个或以上回文子串的字符串,全是由小写字母组成而且字母下表小于p,问刚好比这个字符 ...