首页 > 其他分享 >分布式系统框架

分布式系统框架

时间:2023-03-01 22:24:49浏览次数:41  
标签:文件 存储 副本 框架 切分 数组 分布式系统 数据

Hadoop Model

  • Hadoop Common 基础型功能

  • Hadoop Distributed File System 负责存放数据

  • YARN 负责资源的调配

  • MapReduce 大数据的计算框架

  • Ozone 数据存放到仓库

  • Hadoop Submarine 机器学习引擎

分布式文件系统架构

FS - File System

  • 文件系统是基于硬盘之上的一个文件管理的工具

  • 我们用户操作文件系统可以和硬盘进行解耦

DFS - Distributed File System

  • 分布式文件系统
  • 将我们的数据存放在多台电脑上存储
  • 分布式文件系统有很多
  • HDFS是mapreduce计算的基础

文件切分思想

文件存放在一个磁盘上效率肯定是低的

  • 读取效率低
  • 如果文件特别大会超出单机的存储范围

字节数组

  • 文件在磁盘真实存储文件的抽象概念
  • 数组可以进行拆分和组装,源文件不会受到影响

切分数据

  • 对字节数组进行切分

拼接数据

  • 按照数组的偏移量将数据连接到一起,将字节数组链接到一起

偏移量

  • 当前数据在数组中的相对位置,可以理解为下标
  • 数组都有对应的索引(下标)可以快速的定位数据

数据存储的原理

  • 不管文件的的大小,所有的文件都是由字节数组构成
  • 如果我们要切分文件,就是将一个字节数组分成多份
  • 我们将切分后的数据拼接到一起,数据可以继续使用
  • 我们需要根据数据的偏移量将他们重新拼接到一起

Block拆分标准

拆分的数据块需要等大

  • 数据计算的时候简化问题的复杂度
    • 进行分布式算法设计的时候,数据不统一,算法很难设计
  • 数据拉取的时候时间相对一致
  • 通过偏移量就知道这个块的位置
  • 相同文件,分成的数据块大小应该相等

数据块 Block

  • 数据被切分后的一个整体称之为块
  • 在H1默认大小为64M,在H2及其以后默认大小为128M
  • 同一个文件中,每个数据块大小要一致除了最后一个节点外
    • 不同文件中,块的大小可以不一致
  • 文件大小不同可以设置不同的块的数量
  • 真实情况下,会根据文件大小和集群节点的数量综合考虑块的大小
  • 数据块的个数 =Ceil( 文件大小 / 每个块的大小)

注意事项

  • HDFS中一旦文件被存储,数据不允许被修改

    • 修改会影响偏移量
    • 修改会导致数据倾斜
    • 修改数据会导致蝴蝶效益

    但是可以被追加,但是不推荐

    • 追加设置需要手动打开
  • 一般HDFS存储的都是历史数据。所以 将来Hadoop的mr都用来进行离线数据的处理

  • 块的大小一旦文件上传之后就不允许被修改

    • 128m -512M

Block数据安全

  • 肯定要对存储数据做备份
  • 备份的数据肯定不能存放在一个节点上
  • 使用数据的时候可以就近获取数据
  • 所以备份的数量要小于等于节点的数量
  • 每个数据块会有3个副本,相同副本是不会存放在同一个节点上
  • 副本的数量可以变更
    • 可能近期的数据被分析的可能性跟大,副本数可以多设置几个
    • 后期数据很少被分析,可以减少副本数

Block的管理效率

需要专门给节点进行分工

  • 存储 DataNode
  • 记录 NameNode
  • 日志 secondaryNameNode

HDFS的特点

优点

高容错性

  • 保存多个副本,且提供容错机制。
  • 副本丢失或宕机自动恢复。默认存3份。

运行在廉价的机器上(商用机)

  • 通过副本提高可靠性
  • 提供了容错和恢复机制

适合批处理

  • 移动计算而非数据
  • 数据位置暴露给计算框架。NameNode上有位置

适合大数据的处理

  • TB,甚至PB级数据
  • 百万规模以上的文件数量
  • 10K+节点规模

流式数据访问

  • 一次写入,多次读取,高吞吐量,所以可以同时处理大量数据

缺点

不擅长低延迟数据访问

  • 比如毫秒级

不擅长小文件的分区

  • 占用NameNode大量内存
  • 磁盘寻道时间超过读取时间

不擅长并发写入,文件随机修改

  • 一个文件只能有一个写入者
  • 仅支持append,也就是添加(有组件实现删等)

标签:文件,存储,副本,框架,切分,数组,分布式系统,数据
From: https://www.cnblogs.com/thankcat/p/17170095.html

相关文章

  • 框架串讲四
    SpringBootSpringBoot提供了哪些核心功能?起步依赖自动配置jar包快速启动SpringBoot核心注解是什么?由哪几个注解组成?@SpringBootApplication @SpringBootConfi......
  • 模拟浏览器与服务器交互(简易TomCat框架)
    模拟浏览器发送请求到服务器获取资源的思想和代码实现浏览器发送请求到服务器获取资源的流程和概念日常我们使用的浏览器,底层都是帮我们做了很多事情,我们只需要用,比如......
  • SSM框架整合
    SSM框架整合1.环境要求环境要求IDEAMysqlTomcatMaven2.数据库环境创建存放数据的数据库以及数据库表例子:创建一个存放书籍数据的数据库和数据库表CREATEDATAB......
  • 前端框架vue中的v-on和v-bind的区别
    1.v-on指令监听DOM事件,并在触发时运行一些JavaScript代码"v-on:"的语法糖为"@",语法糖就是简写的意思。例如:<!--事件处理函数--><divid="app"> <!--语法:v-on:事......
  • 推荐系统[八]算法实践总结V2:排序学习框架(特征提取标签获取方式)以及京东推荐算法精排
    0.前言「排序学习(LearningtoRank,LTR)」,也称「机器排序学习(Machine-learnedRanking,MLR)」,就是使用机器学习的技术解决排序问题。自从机器学习的思想逐步到信息检索等领域......
  • 自动化框架搭建(Gitlab CI运行Robot Framework)(待更新完善......)
     搭建并使用自动化框架,整体上一般需要完成以下五部分内容: 一、安装Gitlab仓库管理系统 二、安装Gitlab-runner运行工具 三、注册Gitlab-runner(需要填写Gitlab......
  • SSM框架-MyBatis学习日记6
    多对一的处理多对一的理解:多个学生对应一个老师如果对于学生这边,就是一个多对一的现象,即从学生这边关联一个老师!数据库设计CREATE TABLE `teacher`(`id` INT(10)......
  • 【6】手机自动化框架介绍
                  unittest_test_addnote.py#使用unittest框架完成新增笔记的脚本##导入appium类库fromappium.webdriver.webdriverimport......
  • 单兵 Web 快速开发框架!
    Jmix是低代码?自从Jmix2018年在中国推广以来(那时叫CUBA平台),很多开发者会在使用之前询问我们,Jmix是不是低代码,扩展性怎么样?低代码应用程序平台(LCAP)是当今最流行的企......
  • 【必看】RuoYiVuek框架-数据源动态新增、配置如此简单!
    应用场景系统用户只能访问系统配置的数据源(可动态新增修改的)RuoYiVue框架源码点我跳转实现方式1.系统提供Yml文件配置+Druid加载数据源+@DataSource注解+D......