大数据专栏

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

  • 互联网公司不能用垂直扩展的方式扩展硬件
  • 是数据靠向计算还是计算靠向数据
  • 在单机时代主要的解决方案是RAID, 在分布式时代主要的解决方式是分布式文件系统

在这里插入图片描述

  • raid5和raid3

在这里插入图片描述

  • raid可以软件实现也可以硬件实现
  • 磁盘读写过程中, 最消耗时间的地方就是寻址的过程, 顺序写入只需要一次寻址, 随机写入需要多次寻址.
  • 通常一块磁盘的使用寿命是一年
  • 大数据的王者依然是HDFS
  • raid将数据分片后在多块磁盘上并发进行读写访问, 从而提高了存储容量, 加快了访问速度, 通过数据冗余提高了数据的可靠性, 将raid的设计理念扩大到整个分布式服务器集群就产生了分布式文件系统.

在这里插入图片描述

  • HDFS的关键组件: DataNode和NameNode
  • DataNode负责文件数据的存储和读写操作, HDFS将文件数据分割成若干块, 每个DataNode存储一部分数据块
  • NameNode 负责整个分布式文件系统的元数据(MetaData)管理,也就是文件路径名、数据块的 ID 以及存储位置等信息,相当于操作系统中文件分配表(FAT)的角色。
  • NameNode是HDFS的核心

在这里插入图片描述

  • 两个NameNode通过zookeeper选举通过争夺znode锁决定谁是主服务器, 并通过心跳维持通信, 但是只有主NameNode才能控制DataNode
  • 在运行期间主从NameNode之间通过一个共享存储系统shared edits来同步元数据信息.当主NameNode服务器宕机另一个NameNode会顶上来, 保证集群元数据信息, 也就是文件分配表信息的完整一致
  • 对于软件系统而言性能差一点, 体验差一点用户可能都会接受, 但是数据丢失那开发运维工程师绝对要背锅
  • 在分布式系统中可能出现的故障会很多, 保证系统可用性的策略有冗余备份, 失效转移和降级限流
  • 任何的数据都要有冗余备份, 数据中心的备份:异地多活和时效转移
  • 如果从服务器错误的认为主服务器已经宕机并对NameNode发送指令的时候就会引起集群内部的混乱,也就是所谓的脑裂.这也是引入zookeeper的原因

07 | 为什么说MapReduce既是编程模型又是计算框架?

  • 大数据的思维是移动计算比移动数据更加划算
  • 大规模数据分布式解决方案: MapReduce, 开发人员基于MapReduce编程模型进行编程开发, 通过MapReduce计算框架分发到Hadoop集群中
  • 编程模型就是map和reduce两个过程, map主要是输入一对 Key Value 经过map计算后输出一对key value 将相同的合并, 形成key value集合, 再将集合输入reduce 经过计算输出0ge或多个key value对

08 | MapReduce如何让数据完成一次旅行?

  • MapReduce 的主服务器就是 JobTracker,从服务器就是 TaskTracker
  • 一主多从是大数据领域经典的架构模式
  • MapReduce 计算框架处理数据合并与连接操作,这个操作有个专门的词汇叫shuffle。
  • shuffle让数据关联起来

09 | 为什么我们管Yarn叫作资源调度框架?

  • 分布式文件系统 HDFS、分布式计算框架 MapReduce,还有一个是分布式集群资源调度框架 Yarn

在这里插入图片描述

10 | 模块答疑:我们能从Hadoop学到什么?

  • 互联网和业务结合, 业务要熟

11 | Hive是如何让MapReduce实现SQL操作的?

  • Hive可以将输入的SQL转化成MapReduce可以处理的数据
  • 网站最主要的大数据处理就是SQL分析
  • Spark是王者, Hive推出了Hive on Spark
  • Hadoop大数据仓库Hive

12 | 我们并没有觉得MapReduce速度慢,直到Spark出现

  • 我们常常意识不到问题的存在,直到有人解决了这些问题。
  • 所以顶尖的产品大师(问题解决专家),并不会拿着个小本本四处去做需求调研,问人们想要什么。而是在旁边默默观察人们是如何使用产品(解决问题)的,然后思考更好的产品体验(解决问题的办法)是什么。最后当他拿出新的产品设计(解决方案)的时候,人们就会视他为知己:你最懂我的需求(我最懂你的设计)。
  • 乔布斯是这样的大师,Spark 的作者马铁也是这样的专家。
  • RDD 是 Spark 的核心概念,是弹性数据集(Resilient Distributed Datasets)的缩写。RDD 既是 Spark 面向开发者的编程模型,又是 Spark 自身架构的核心元素。
  • MapReduce是面向过程的大数据计算
  • Spark是面向对象
  • RDD定义了很多转换函数的操作
  • 以Spark为基础, 有Spark SQL Spark Streaming:流式计算 机器学习MLlib 图计算框架:GraphX

在这里插入图片描述

在这里插入图片描述

  • spark优势在于迭代式的内存运算,适合于做大数据分析,机器学习之类的,flink是流式计算框架,对于实时性任务也许更好,对于机器学习内任务,spark还是要好点

13 | 同样的本质,为何Spark可以更高效?

  • 在计算阶段组成有向无环图
  • Spark尽可能使用内存, 并减少访问HDFS的次数
  • Spark的RDD编程模型更加简单, DAG切分多阶段计算更加迅速, 使用内存存储中间计算结果更加高效
  • 一个成功的开源项目需要吸引大量的高质量开发者参与到其中, 还要有很多用户

14 | BigTable的开源实现:HBase

  • 在传统的关系型数据库有范式,约束,包含逻辑, 而NoSQL数据库认为数据就是数据, 业务逻辑应该由应用程序来处理.
  • HBase的伸缩性主要依赖其可分裂的HRegion及可伸缩的分布式文件系统HDFS实现的.

在这里插入图片描述

  • HRegion是HBase负责数据存储的主要进程, 应用程序对数据的读写都是通过和HRegion通信完成的.
  • 每个HRegionServer可以起多个HRegion服务, 当写入的数据过多, 达到配置的阈值时, 一个HRegion会分裂成两个HRegion并将HRegion在整个集群进行迁移, 使得HRegionServer的负载均衡
  • 每个HRegion存储一段Key值区间, 所有的HRegion信息都记录在HMaster中并通过zookeeper选主

在这里插入图片描述

  • 应用程序通过Zookeeper获得主HMaster的地址, 输入key获得HRegionServer的地址, 然后再请求HREgion获得想要的数据
  • HRegion把数据存储在HFile格式的文件中, 这些文件使用HDFS存储
  • 当有新的HRegionServer, HRegion迁移过去记录到HMaster从而实现HBase的线性伸缩
  • HBase是解决海量数据的分布式存储, HBase的做法是按Key的区域进行分片, 也就是HRegion.
  • 应用程序通过master查找到分片, 得到HRegion所在的服务器server, 然后和该服务器通信得到数据
  • 列族数据库采用稀疏矩阵, 不需要制定字段的名字.指定列族的名字相当于表名. 查询的时候通过指定字段的名字就可以
  • HBase这种列族数据库是存储的key-value值
  • 为了提高数据的写入速度HBase采用LSM树的数据结构进行存储, 全称是logstructed merge tree: log结构合并树.数据写入的时候以log方式连续写入, 然后异步对磁盘上的多个LSM树进行合并.
  • 列族数据库的缺点是什么?

15 | 流式计算的代表:Storm、Flink、Spark Streaming

  • 之前都是批处理计算一般一次计算需要花费几分钟到几小时
  • 业务场景, 视频监控违章车辆可以用流式计算
  • 数据是流过来的
  • storm:最开始用消息队列实现, 将生产者消费者串联起来
  • 随着后来的发展能不能做一个通用的框架, 我们定义好处理流程和逻辑, 将代码部署到处理系统中, storm应运而生
  • 其实难的都是对业务领域的抽象

在这里插入图片描述

  • nimbus是master, supervisor是slave, 每个supervisor启动多个worker, 每个worker运行多个task就是spout或者bolt

在这里插入图片描述

  • Spark streaming利用spark的分片和快速计算的特性,
  • 利用分片将流转化成批数据
  • 批处理也是离线计算
  • 业务和技术分离的方式
  • 淘宝等互联网企业已经在尝试一种类似流计算的、异步的、基于消息的服务调用与依赖架构

18 | 如何自己开发一个大数据SQL引擎?

19 | Spark的性能优化案例分析(上)

20 | Spark的性能优化案例分析(下)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值