极客时间从零学习大数据:

Yarn将MapReduce执行引擎和资源调度分离开来, yarn是大数据平台上最主流的资源调度系统

MapReduce,Spark 这类计算框架处理的业务场景都背称作批处理计算,因为它们通常针对以“天”为单位产生的数据进行一次计算,然后得到需要的结果,这中间计算需要花费的时间大概是几十分钟甚至更长的时间,因为计算的数据是非在线得到的实时数据,而是历史数据,所以这类计算也被称为大数据离线计算

而在大数据领域,还有另外一类应用场景,它们需要对实时产生的大量数据进行即时计算,比如对于遍布城市的监控摄像头进行人脸识别和嫌犯追踪。这类计算称为大数据流计算,相应地,有Storm,Flikn,Spark Streaming等流计算框架来满足此类大数据应用的场景。流式计算要处理的数据是实时在线产生的数据,所以这类计算也被称为大数据实时计算。

在典型的大数据的业务场景下,数据业务最通用的做法是,采用批处理的技术处理历史全量 数据,采用流式计算处理实时新增数据。而像 Flink 这样的计算引擎,可以同时支持流式计 算和批处理计算。

HBase 是从 Hadoop 中分离出来的、基于 HDFS 的 NoSQL 系统。

这些基本上都可以归类为大数据引擎或者大数据框架。而大数据处理的主要应用 场景包括数据分析、数据挖掘与机器学习。数据分析主要使用 Hive、Spark SQL 等 SQL 引擎完成;数据挖掘与机器学习则有专门的机器学习框架 TensorFlow、Mahout 以及 MLlib 等,内置了主要的机器学习和数据挖掘算法。

此外,大数据要存入分布式文件系统(HDFS),要有序调度MapReduce和Spark作业执行,并能把执行结果写入到各个应用系统的数据库中,还需要有一个大数据平台整合所有这些大数据组件和企业应用系统

04:移动计算比移动数据更划算

大数据计算处理通常针对的是网站的存量数据
网站大数据系统要做的就是将这些统计规律和关联关系计算出来,并由此进一步改善网站的用户体验和运营决策

将程序分发到数据所在的地方进行计算,也就是所谓的移动计算比移动数据更划算(当一匹马拉不动车的时候,用两匹马拉)

移动计算程序到数据所在位置进行计算是如何实现的呢?

1.将待处理的大规模数据存储在服务器集群的所有服务器上,主要是用HDFS分布式文件存储系统,将文件分成很多块(Block),以块为单位存储在集群的服务器上。

2.大数据引擎根据集群里不同服务器的计算能力,在每台服务器上启动若干分布式任务执行进程,这些进程会等待给它们分配执行任务

3.使用大数据计算框架支持的编程模型进行编程,比如Hadoop的MapReduce编程模型,或者Spark的RDD编程模型。应用程序编写好以后,将其打包,MapReduce和Spark都是在JVM环境中运行,所在打包出来的是一个Java的JAR包

4.用Hadoop或者Spark的启动命令执行这个应用程序的JAR包,首先执行引擎会解析程序要处理的数据输入路径,首先执行引擎会解析程序要处理的数据输入路径,根据输入数据量的大小,将数据分成若干片(Split),每一个数据片都分配给一个任务执行进程区处理

5.任务执行进程收到分配的任务后,检查自己是否有任务对应的程序包,如果没有就去下载程序包,下载以后通过反射的方式加载程序。走到这里,最重要的一步,也就是移动计算就完成了。

6.加载程序后,任务执行进程根据分配的数据片的文件地址和数据在文件内的偏移量读取数据,并把数据输入给应用程序相应的方法去执行,从而实现在分布式服务器集群中移动计算程序,对大规模数据进行并行处理的计算目标。

思考题
互联网应用系统架构中有一种重要架构原则是尽量使用无状态的服务,不同服务实例之间不
共享状态,也就是不持有数据,用户请求交给任何一个服务实例计算,处理的结果都是一样的,为什么要这样设计?这种架构有什么好处?

无状态服务的主要好处是服务间无需同步状态或者数据,便于扩缩容。

05 从RAID看垂直伸缩到水平伸缩的演化

如果一个文件的大小超过了一张磁盘的大小,如何存储:

(单机时代),主要的解决方案是RAID;分布式时代,主要解决方案是分布式文件系统。

无论单机还是分布式,主要需要解决的是那个方面问题:
1.数据存储容量的问题。既然大数据要解决的是数以PB计的数据计算问题,而一般的服务器磁盘容量通常1-2TB,那么如何存储这么大规模的数据呢

2.数据读写速度的问题,一般磁盘的连续读写速度为几十MB,以这样的速度,几十PB的数据恐怕要读写到天荒地老。

3.数据可靠性的问题。磁盘大约是计算机设备中最易损坏的硬件了,通常情况一块磁盘使用寿命大概是一年,如果磁盘坏了,数据怎么办?

大数据技术出现前,对应的解决方案就是RAID技术

RAID(独立磁盘冗余阵列)技术是将对块普通磁盘组成一个阵列,共同对外提供服务。主要是为了改善磁盘的存储容量、读写速度,增强磁盘的可用性和容错能力。在RAID之前,要使用大容量、高可用、高速访问的存储系统需要专门的存储设备,这类设备价格要比RAID的几块普通磁盘贵几十倍。

RAID 0是数据在从内存缓冲区写入磁盘时,根据磁 盘数量将数据分成 N 份,这些数据同时并发写入 N 块磁盘,使得数据整体写入速度是一块 磁盘的 N 倍;读取的时候也一样,因此 RAID 0 具有极快的数据读写速度。但是 RAID 0 不做数据备份,N 块磁盘中只要有一块损坏,数据完整性就被破坏,其他磁盘的数据也都 无法使用了。

RAID 1是数据在写入磁盘时,将一份数据同时写入两块磁盘,这样任何一块磁盘损坏都不 会导致数据丢失,插入一块新磁盘就可以通过复制数据的方式自动修复,具有极高的可靠性

结合 RAID 0 和 RAID 1 两种方案构成了RAID 10,它是将所有磁盘 N 平均分成两份,数 据同时在两份磁盘写入,相当于 RAID 1;但是平分成两份,在每一份磁盘(也就是 N/2 块磁盘)里面,利用 RAID 0 技术并发读写,这样既提高可靠性又改善性能。不过 RAID 10 的磁盘利用率较低,有一半的磁盘用来写备份数据。

顺着这个思路,RAID 3可以在数据写入磁盘的时候,将数据分成 N-1 份,并发写入 N-1 块磁盘,并在第 N 块磁盘记录校验数据,这样任何一块磁盘损坏(包括校验数据磁盘), 都可以利用其他 N-1 块磁盘的数据修复。

如果数据需要很高的可靠性,在出现同时损坏两块磁盘的情况下(或者运维管理水平比较落 后,坏了一块磁盘但是迟迟没有更换,导致又坏了一块磁盘),仍然需要修复数据,这时候 可以使用RAID 6。

RAID 6 和 RAID 5 类似,但是数据只写入 N-2 块磁盘,并螺旋式地在两块磁盘中写入校验 信息(使用不同算法生成)。

垂直伸缩 VS 水平伸缩

垂直伸缩就是换更强的计算机

水平伸缩就是不断添加计算机

RAID 可以看作是一种垂直伸缩,一台计算机集成更多的磁盘实现数据更大规模、更安全可 靠的存储以及更快的访问速度。而 HDFS 则是水平伸缩,通过添加更多的服务器实现数据 更大、更快、更安全存储与访问。

RAID 技术只是在单台服务器的多块磁盘上组成阵列,大数据需要更大规模的存储空间和更 快的访问速度。将 RAID 思想原理应用到分布式服务器集群上,就形成了 Hadoop 分布式 文件系统 HDFS 的架构思想。

思考题
传统机械磁盘进行数据连续写入的时候,比如磁盘以日志格式连续写入操作,其写入速度远
远大于磁盘随机写入的速度,比如关系数据库连续更新若干条数据记录,你知道这是为什么
吗?

连续写入:写入只寻址一次 存储位置与逻辑位置相邻 不用多次寻址 随机写入:每写一次 便寻址一次 增加了磁盘的寻址时间

20200814极客时间从零学习大数据相关推荐

  1. 极客时间《从零开始学大数据》学习总结

    2019-05-22 关键字:无 花了一周多的时间学习了李智慧老师在极客时间上开设的<从零开始学习大数据>课程后感触良多,特意花了一天的时间写了一份总结,算是为我的这份课程的学习告个别. ...

  2. <极客时间:零基础入门Spark> 学习笔记(持续更新中...)

    看的是极客时间的课,讲得很不错 零基础入门 Spark (geekbang.org) 基础知识 01 Spark:从"大数据的Hello World"开始 准备工作 IDEA安装S ...

  3. 极客时间计算机组成原理学习笔记

    文章目录 0章-我对学计算机组成原理的思考 学习底层知识对于技术成长来说是复利行为 计算机组成原理是计算机科学的超级目录 第一章 冯诺依曼 在极客时间购买了计算机组成原理的blog专栏,尝试写一下笔记 ...

  4. 打包带走极客时间大数据课程的正确姿势

    "如何持续学习大数据 ,实现高效进阶?" 经常有读者让我推荐学习资源,非常开心大家能一直保持学习的习惯.其实不仅仅是大数据工程师需要学习大数据,每个软件工程师都应该学习一些大数据知 ...

  5. 【极客时间】《Java并发编程实战》学习笔记

    目录: 开篇词 | 你为什么需要学习并发编程? 内容来源:开篇词 | 你为什么需要学习并发编程?-极客时间 例如,Java 里 synchronized.wait()/notify() 相关的知识很琐 ...

  6. 极客时间-算法训练营1.2 实战题目解析:移动零

    一 序 本文属于极客时间-算法训练营 学习笔记系列. 二 刷题步骤 第一遍 五分钟:读题 + 思考 直接看解法:多看几种,比较解法优劣 背诵.默写好的解法 第二遍 马上自己写 --> Leetc ...

  7. 极客时间App安卓版上线,让知识获取更加简单

    在12月8日于京举办的 ArchSummit 全球架构师峰会上,极客邦科技正式宣布旗下 IT 知识服务产品-极客时间 App 继 iOS 版本发布后,蓄势一个月,安卓强势上线,已全面登陆各大应用市场. ...

  8. 极客时间和极客学院_极客奔跑

    极客时间和极客学院 I'm not a natural runner. I'm reasonably fit given that I spend most of the day sat in my ...

  9. Vue3和Vite实现极客时间官网首页

    近日各大公众号都推vite的文章,也看了尤大大做客GitHub Open Source Friday的直播视频(https://www.bilibili.com/video/BV1kh411Q7WN) ...

最新文章

  1. Codeforces Round #653 (Div. 3)部分题解
  2. AAAI 2020 论文接收结果出炉,得分 997 论文被拒,388 反而中了?
  3. 高颜值的神经网络可视化工具:3D、彩色、可定制,还能可视化参数重要性 | 开源...
  4. Java去除掉HTML里面所有标签的两种方法——开源jar包和自己写正则表达式
  5. math.js:灵活强大的JavaScript数学库
  6. 慎用ToLower和ToUpper,小心把你的系统给拖垮了
  7. 【GPU编程】体绘制传输函数-分类(Volume Rendering Transfer function:Pre- VS Post-Classification)
  8. Android笔记 杀死进程demo
  9. 新书问答:Agile Management
  10. 如何创建支持不同屏幕尺寸的Android应用(转载)
  11. Android从assets和res中读取文件
  12. python植物大战僵尸代码例_python实现植物大战僵尸游戏实例代码
  13. 机器人卫士密码箱密码忘了怎么办_幼儿园来了“晨检”机器人卫士
  14. Android Banner图片轮播第三方框架
  15. 销量反弹,高管离职,苹果真的要改变高定价策略了?
  16. 图像轮廓提取算法(Opencv基于C++实现)
  17. OpenCV粘连对象计数
  18. CDH6.0.1环境Hadoop集群性能测试
  19. MySQL异常一之: You can‘t specify target table for update in FROM clause解决办法
  20. 2018中国汽车企业排行榜TOP10

热门文章

  1. 大数据基础之Scala——Scala数组方法,史上最全,只要你能全部背上即可成为万人敬仰的大佬,任何Scala随便戳戳!!!
  2. sizeof是函数吗,具体使用方法
  3. laravel进行单元测试的时候如何模拟数据库以及mockery的调用
  4. [leetcode]排列组合子集(python)
  5. Spring框架四AOP
  6. git rebase 和revert
  7. 标准差与标准误的区别(标准误也称标准误差)
  8. 带有示例Linux Netstat命令
  9. 学习vue饿了吗之模拟后台数据
  10. wince程序转Linux,Qt在程序WinCE5.0下部署时“XXX不是有效的Windows CE应用程序”