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

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

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 的架构思想。


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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值