大数据


云计算概念

一、课程资源

厦大课程: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. 微服务SpringCloud之Spring Cloud Config配置中心服务化

    在前面两篇Spring Cloud Config配置中心的博客中都是需要指定配置服务的地址url:spring.cloud.config.uri,客户端都是直接调用配置中心的server端来获取配置文 ...

  2. Linux Capabilities 简介

    为了执行权限检查,Linux 区分两类进程:特权进程(其有效用户标识为 0,也就是超级用户 root)和非特权进程(其有效用户标识为非零). 特权进程绕过所有内核权限检查,而非特权进程则根据进程凭证( ...

  3. Codeforces 220C

    题意略. 思路: 我们可以把 bi[ i ] 在 ai[ ] 中的位置记录下来,然后算出 i - mp[ bi[i] ] ,再将它压入一个multiset.每次我们就二分地来寻找离0最近的数字来作为答 ...

  4. IDEA-Maven项目的jdk版本设置

    在 Intellij IDEA 中,我们需要设置 Settings 中的 Java Compiler 和 Project Structure 中的 Language Level 中的 jdk 版本为自 ...

  5. session一致性的解决方案

    更多内容,欢迎关注微信公众号:全菜工程师小辉.公众号回复关键词,领取免费学习资料. 什么是session? 服务器为每个用户创建一个会话,存储用户的相关信息,以便多次请求能够定位到同一个上下文,这个相 ...

  6. 为什么有了Compose和Swarm,还会有Kubernetes的出现?

    一.k8s设计思想更先进 k8s的主要设置思想,是从更宏观的角度,以统一的方式来定义任务之间的各种关系 1.k8s的核心功能图 2.k8s的全局架构图 kube-apiserver:API服务 Kub ...

  7. SCRUM术语

    http://www.scrumcn.com/agile/scrum-knowledge-library/scrum.html#tab-id-2 Scrum: Scrum无对应中文翻译 Agile: ...

  8. Go语言os标准库常用方法

    1. os.Getwd()函数 原型:func Getwd()(pwd string, err error) 作用:获取当前文件路径 返回:当前文件路径的字符串和一个err信息 示例: package ...

  9. CentOS7.6中mysql实践

    cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) 使用:yum -y install mysql mysql-server 安装 ...

  10. SSM框架使用分页插件显示信息

    1.在该SSM工程的pom.xml中加入PageHelper的分页插件依赖(若是版本号不对,可以尝试修改一下) <!-- 分页插件 --> <dependency> <g ...