大数据


云计算概念

一、课程资源

厦大课程: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. Linux下Kafka下载与安装教程

    原文链接:http://www.studyshare.cn/software/details/1176/0 一.预备环境 Kafka是java生态圈中的一员,运行在java虚拟机上,按Kafka官方说 ...

  2. Oracle面对“数据倾斜列使用绑定变量”场景的解决方案

    1.背景知识介绍 2.构造测试用例 3.场景测试 4.总结 1.背景知识介绍     我们知道,Oracle在传统的OLTP(在线事务处理)类系统中,强烈推荐使用绑定变量,这样可以有效的减少硬解析从而 ...

  3. Oracle 12c Adoption Discussion — Summary

    Morning (@9:30) Oracle 12c Overview & Features for Developers Oracle Database In-Memory Deep Div ...

  4. 电话面试总结(问的很细).md

    String 和其他基本类型有什么区别 Tip 基本类型有几种 为什么要给String创建一个常量池而不给其他类创建常量池 常量池的定义是什么 垃圾回收机制是如何运行的 对新生代和老年代不同的处理机制 ...

  5. 《Java 8 in Action》Chapter 8:重构、测试和调试

    我们会介绍几种方法,帮助你重构代码,以适配使用Lambda表达式,让你的代码具备更好的可读性和灵活性.除此之外,我们还会讨论目前比较流行的几种面向对象的设计模式, 包括策略模式.模板方法模式.观察者模 ...

  6. 2013-2014 ACM-ICPC Pacific Northwest Regional Contest L.Languages

    题意略. 思路: 这种字符串的模拟题,应该熟练使用stringstream. 详见代码: #include<bits/stdc++.h> using namespace std; map& ...

  7. 怎样使用U盘安装Windows系统

    准备工作 一个8G及以上的U盘: 软碟通UltraISO,下载地址,非免费,但试用就够了: 系统镜像,推荐去MSDN下载: 安装过程 利用U盘制作启动盘,准备好上述的东西,然后开始制作启动盘: 注意: ...

  8. list 分批

    public class TestList { public static void main(String[] args){ List<Integer> list = new Array ...

  9. 洛谷P1196[NOI2002]银河英雄传说-并查集扩展

    银河英雄传说 题意:在并查集的基础上,还要求出同一集合的两个点的距离 这道题用并查集自己是知道的,但是竟然可以这么骚的操作. 下面转自大佬的查详细题解 初见这道题,首先想到的方法当然是直接模拟,模拟每 ...

  10. CodeForces 834D The Bakery

    The Bakery 题意:将N个数分成K块, 每块的价值为不同数字的个数, 现在求总价值最大. 题解:dp[i][j] 表示 长度为j 且分成 i 块的价值总和. 那么 dp[i][j] = max ...