云计算与大数据课程笔记(二)之Google云计算框架辅助笔记(上)

Chunk & Block

在GFS中,Chunk默认大小是64MB。作者在参加云计算相关竞赛时发现有题目说Hadoop的Block默认是64MB,这和作者之前学的128MB不太一样,故进行以下整理:

在Hadoop分布式文件系统(HDFS)中,块(BLOCK)的默认大小曾经是64MB,在较新版本的Hadoop中,默认块大小通常是128MB。不过,这个值是可以配置的,具体取决于你使用的Hadoop发行版本以及系统的配置。

在Hadoop的较新版本中(例如2.x及之后),默认的块大小确实是128MB。这种较大的块大小可以减少文件系统的元数据数量,同时提高大规模数据处理的效率(这就说明现在的数据趋势是:单个文件的平均文件大小迅速上升,作者预估后续默认256MB不会遥远)块大小可以在Hadoop的配置文件中自定义设置,通常在hdfs-site.xml文件中配置dfs.blocksize属性来指定。

例如,要设置块大小为128MB,可以在hdfs-site.xml中设置如下:

<property><name>dfs.blocksize</name><value>134217728</value> <!-- 128MB in bytes -->
</property>

这个配置决定了HDFS在存储文件时的块分割策略。选择适当的块大小对于Hadoop集群的性能和效率至关重要,因为它影响到文件的并行处理能力和存储效率。在处理大量小文件时,较大的块大小可能导致存储空间的浪费,而在处理大文件时,较大的块大小可以提高处理效率。因此,选择块大小时需要根据具体的使用场景和数据特点来决定。


Master & Chunk Server:存储与计算的解耦?

不准确! 

作者在学习过程中发现这样一句话,GFS中的Master和Chunk Server的设立是一种存储与计算的解耦,作者觉得怪怪的。想起之前的SAN网络不知道RAID/SAN/NAS的小可爱来看看这个吧!_nas跟san都可以组成raid-CSDN博客,它确实实现了服务器(计算)与硬件资源(存储)的解耦。但是,Master没有进行计算的相关任务,重点就是元数据存储。所以作者认为,这句话的解耦主要指的是管理(元数据管理)与实际数据存储的物理隔离

在GFS中,"存储与计算的解耦"更多地指的是元数据管理与数据存储处理的分离。而在SAN框架中,解耦则是指物理存储资源与使用这些资源的服务器之间的物理和逻辑分离。两者都实现了解耦的概念,但侧重点和实现方式有所不同。GFS是为了大规模数据处理设计的文件系统,而SAN是为了提高大型网络中存储资源的使用效率和灵活性设计的存储网络。


调度与存储处理的解耦

综上,在GFS(Google File System)的上下文中,谈论“存储与计算的解耦”确实可能造成一些误解。更准确的描述应该是“元数据管理与数据存储/处理的解耦”,或者说是“调度与存储处理的解耦”。

解耦的具体含义

  • 元数据管理与数据存储/处理的解耦:在GFS中,master节点负责元数据的管理,这包括文件和块的命名空间、文件到块的映射、块的位置等,而chunk server节点负责实际数据块的存储和处理。这种设计意味着系统的管理操作(调度、命名空间管理等)与数据的实际存储和处理是分开的。

  • 调度与存储处理的解耦:调度指的是管理数据存储和访问的决策过程,例如决定哪个chunk server存储哪个数据块,或者如何处理读写请求。这些调度操作是由GFS的master节点负责的。存储处理则是指实际的数据读写操作,由chunk server节点完成。

为什么这样设计?

这种解耦设计有几个优点:

  1. 扩展性:通过解耦,GFS可以更容易地在多个chunk server上扩展数据存储,因为数据管理(由master负责)与数据存储(由chunk server负责)是分开的。

  2. 性能优化:元数据操作通常需要更快的访问速度和更多的计算资源,而数据存储则需要更大的存储空间和高效的数据传输。分开处理可以针对这些操作进行优化。

  3. 容错性:解耦还意味着系统的不同部分可以独立失败和恢复,从而提高了系统的总体可靠性。


NameNode & DataNode

Hadoop的HDFS(Hadoop Distributed File System)中的NameNode和DataNode体现了类似于GFS中master和chunk server的设计,实现了元数据管理与数据存储/处理的解耦。

NameNode(元数据管理)

  • NameNode 在HDFS中扮演的角色类似于GFS中的master节点。它负责管理文件系统的命名空间。具体而言,NameNode存储了文件系统树及所有文件和目录的元数据。这些信息包括文件的目录结构、文件的属性(如权限、修改时间等)以及文件的块(block)信息和它们对应的DataNode位置。
  • NameNode不存储实际的数据,而只管理元数据。这意味着,对于文件系统的结构和数据的查找、定位操作都是通过与NameNode交互来完成的。

DataNode(数据存储/处理)

  • DataNode 在HDFS中的作用类似于GFS的chunk server。它们负责存储实际的数据块。在HDFS中,文件被切分成一个或多个块,并且这些块存储在一组DataNode上。
  • DataNode负责处理文件系统客户端的读写请求,并执行与这些数据块相关的操作,比如创建、删除、复制块等。

作者的脑回路又开始工作了:我们完全可以将数据比作糖原NameNode比作大脑DataNode比作处理糖原的肌肉。NameNode负责文件系统的“大脑”部分,即元数据和命名空间的管理,而DataNode则承担了实际存储和处理数据的“肌肉”工作。这种设计模式是为了优化大规模数据处理的性能、可靠性和可管理性。

数据作为糖原

在这个类比中,数据(糖原)是能量的来源,就像在计算环境中,数据是进行计算和分析的基础资源糖原在生物体中被存储,并在需要时被转换为能量,类似地,数据被存储在分布式文件系统中,并在需要时被访问和处理。

NameNode作为大脑

NameNode(大脑)管理和控制整个系统的元数据信息,这包括数据的位置、状态等。就像大脑通过神经系统控制和协调身体的各个部分,NameNode通过网络协调DataNode的数据存储和处理活动。它不直接涉及能量(数据)的生产或消耗,但负责调度和指挥。

DataNode作为肌肉

DataNode(肌肉)负责存储和处理数据,类似于肌肉存储糖原并在需要时将其转化为能量。肌肉在需要时劳作以产生动力,DataNode在需要时进行数据的读写操作以提供服务。它们是执行具体任务的实体,负责实际的“工作负荷”。


高可用和高容错性有什么区别

在分布式存储系统中,高可用性(High Availability)和高容错性(High Fault Tolerance)是两个密切相关但有区别的概念。它们都是系统设计的重要目标,旨在确保系统能够持续稳定地提供服务,即使在面临故障和异常时也是如此。

高可用性(High Availability)

高可用性关注的是系统能够持续不间断地提供服务的能力。一个高可用的系统能够在面对硬件故障、软件故障或网络问题时,通过快速恢复或自动切换到备份系统来维持服务的连续性。目标是减少系统停机时间,确保用户或客户端能够尽可能持续地访问系统和数据。

在分布式存储系统中,高可用性通常通过如下方式实现:

  • 冗余:通过在不同节点或位置复制数据来确保数据的可用性。
  • 快速故障恢复:系统能够快速检测到故障并自动切换到正常运行的组件。
  • 负载均衡:分散请求,避免单点故障导致的服务中断。

高容错性(High Fault Tolerance)

高容错性指的是系统在部分组件发生故障时仍能正常运行的能力。容错性的重点在于系统设计应能够容纳一定程度的故障,而不影响整个系统的功能。高容错系统可以在不依赖立即修复故障的情况下继续运行。

在分布式存储系统中,高容错性可以通过以下方式实现:

  • 数据复制:在多个节点存储数据副本,从而在某些节点失败时仍能从其他节点访问数据。
  • 自动故障检测与恢复:系统可以自动检测到故障节点并将任务转移至健康节点。
  • 分布式设计:通过分布式架构减少单点故障的风险。

区别

  • 焦点差异高可用性更侧重于减少系统停机时间,确保服务的连续性而高容错性更侧重于系统对故障的抵抗能力,即使在部分系统组件失败的情况下仍能继续运行
  • 实现方式:虽然两者都可能涉及到如数据复制、故障切换等技术,但高可用性更注重快速恢复正常服务,而高容错性则强调即使在故障情况下也能保持服务运行

相互关系

  • 互补性:虽然高可用性和高容错性在技术和策略上可能有所不同,但它们在实现稳定可靠的系统中是互补的。高容错性通过降低系统对单点故障的敏感度来增强系统的整体鲁棒性,而高可用性则确保在出现故障时能够快速恢复服务。
  • 相辅相成:在实际应用中,强大的容错机制可以减少系统出现严重问题的频率,这反过来减轻了对高可用性机制的依赖。但即便有着强大的容错机制,系统仍然需要高可用性措施来处理无法预料或无法“容忍”的故障情况。

在设计分布式存储系统时,高可用性和高容错性都是重要的设计目标。它们共同确保了系统在面对故障和挑战时能够保持稳定和可靠的服务。尽管它们的关注点和实现策略有所不同,但在实践中,这两个概念往往是互相交织和支持的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/729977.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Threejs用下个点方法实现模型沿着轨道行驶

上一文中实现了用模型所在点的切线方式确定模型的朝向&#xff0c;这个章节是对上个章节的补充&#xff0c;用一种更简单的方式实现小车沿着轨道方向移动&#xff0c;如上文前半部分内容&#xff0c;需要创建场景&#xff0c;轨道&#xff0c;加载车的模型&#xff0c;一切就绪…

mac 配置.bash_profile不生效问题

1、问题描述 mac系统中配置了环境变量只能在当前终端生效&#xff0c;切换了终端就无效了&#xff0c;查了下问题所在。mac系统会预装一个终极shell - zsh&#xff0c;环境变量读取在 .zshrc 文件下。 2、解决方案 1、切换终端到bash 切换终端到bash chsh -s /bin/bash 切换终端…

【随笔】程序员的金三银四求职宝典,每个人都有最合适自己的求职宝典

大家好&#xff0c;我是全栈小5&#xff0c;欢迎阅读文章&#xff01; 此篇是【话题达人】系列文章&#xff0c;这一次的话题是《程序员的金三银四求职宝典》 目录 背景能力流程图求职宝典就业数据人数曲线图增长率柱状图 其他建议文章推荐 背景 随着春天的脚步渐近&#xff0…

【JavaEE初阶】 关于JVM垃圾回收

文章目录 &#x1f343;前言&#x1f38b;死亡对象的判断算法&#x1f6a9;引用计数算法&#x1f6a9;可达性分析算法 &#x1f333;垃圾回收算法&#x1f6a9;标记-清除算法&#x1f6a9;复制算法&#x1f6a9;标记-整理算法&#x1f6a9;分代算法&#x1f388;哪些对象会进入…

Redis与 Memcache区别

Redis与 Memcache区别 1 , Redis 和 Memcache 都是将数据存放在内存中&#xff0c;都是内存数据库。不过 Memcache 还可用于缓存 其他东西&#xff0c;例如图片、视频等等。 2 , Memcache 仅支持key-value结构的数据类型&#xff0c;Redis不仅仅支持简单的key-value类型的数据&…

STM32 | Proteus 8.6安装步骤(图文并茂)

01 Proteus 8.6 简介 Proteus 8.6 是一款功能强大的电子设计自动化软件&#xff0c;广泛用于电路设计、仿真和PCB布局。它为电子工程师和学生提供了一个全面的工具集&#xff0c;用于设计和验证各种电路和电子设备。Proteus 8.6 包括了以下几个主要特性&#xff1a; 1. 电路设…

低代码与微服务:重塑软件开发的未来

在软件开发的浩瀚宇宙中&#xff0c;新的技术和理念不断涌现&#xff0c;为开发者提供了更为广阔的创新空间。其中&#xff0c;“低代码”与“微服务”无疑是两颗璀璨的明星&#xff0c;它们正在改变着传统的软件开发模式&#xff0c;为开发者带来了更高效、更灵活的开发体验。…

Java实战:Spring Boot+Netty+Websocket实现后台向前端推送信息

本文将详细介绍如何使用Spring Boot集成Netty和Websocket&#xff0c;实现后台向前端推送信息的功能。我们将深入探讨Netty和Websocket的原理&#xff0c;以及如何利用Spring Boot简化Netty的集成和配置。 1. 引言 在当今的互联网应用中&#xff0c;实时通信变得越来越重要。…

力扣404. 左叶子之和(java)

//当前节点的左子树不为空 且是叶子节点 root.left ! null &&root.left.leftnull && root.left.rightnull/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* …

git分布式管理-头歌实验搭建Git服务器

一、Git服务器搭建 任务描述 虽然有提供托管代码服务的公共平台&#xff0c;但是对一部分开发团队来说&#xff0c;为了不泄露项目源代码、节省费用及为项目提供更好的安全保护&#xff0c;往往需要搭建私有Git服务器用做远程仓库。Git服务器为团队的开发者们&#xff0c;提供了…

洛谷 P8816 [CSP-J 2022] 上升点列(T4)

目录 题目传送门 算法解析 最终代码 提交结果 尾声 题目传送门 [CSP-J 2022] 上升点列 - 洛谷https://www.luogu.com.cn/problem/P8816 算法解析 k 0 且 xi, yi 值域不大时&#xff0c;这题是非常简单的 DP&#xff0c;类似「数字三角形」。 记 dp(x,y) 为「以 (x,y) …

Spring中SmartInitializingSingleton、SmartLifecycle和Lifecycle的作用和区别

相同点&#xff1a; ​ SmartInitializingSingleton和Lifecycle、SmartLifecycle都是在所有的单实例bean创建(getBean方法)之后执行。 不同点&#xff1a; SmartInitializingSingleton优先于Lifecycle、SmartLifecycle执行。SmartInitializingSingleton只有一个afterSinglet…

tomcat基础介绍

目录 一、Tomcat的基本介绍 1、Tomcat是什么&#xff1f; 2、Tomcat的配置文件详解 3、Tomcat的构成组件 6、Tomcat的请求过程 一、Tomcat的基本介绍 1、Tomcat是什么&#xff1f; Tomcat 服务器是一个免费的开放源代码的Web 应用服务器&#xff0c;属于轻量级应用服务器…

svg图标转组件引入项目中

svg图标转组件引入项目中 您想知道关于 的更多信息吗? 并不是一个特定的 HTML 元素,它更可能是一个占位符,代表一个在 Vue.js 中的动态组件。 在 Vue.js 中,动态组件可以根据不同的数据或状态加载不同的组件。 元素通常用于在模板中声明动态组件的占位符。具体来说,你可…

[leetcode 189][轮转数组]

[leetcode 189][轮转数组] 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右…

【深度学习|图像分割】读取并修改xml中的指定参数

读取并修改xml中的指定参数 1、背景2、代码 1、背景 <?xml version"1.0" ?><net name"Model4" version"11"><layers><layer id"0" name"args" type"Parameter" version"opset1"…

蓝桥集训之火柴排队

蓝桥集训之火柴排队 核心思想&#xff1a;离散化归并排序 由于数据范围较小10w 需要控制时间复杂度到nlogn 同时排两个数组会超时所以将a数组离散化成顺序数组 b数组离散化后再归并排序求逆序对数量 #include<iostream>#include <algorithm>#include <cstrin…

植物病虫害:YOLO玉米病虫害识别数据集

玉米病虫害识别数据集&#xff1a;玉米枯萎病&#xff0c;玉米灰斑病&#xff0c;玉米锈病叶&#xff0c;粘虫幼虫&#xff0c;玉米条斑病&#xff0c;黄二化螟&#xff0c;黄二化螟幼虫7类&#xff0c;yolo标注完整&#xff0c;3900多张图像&#xff0c;全部原始数据&#xff…

二、TensorFlow结构分析(4)

TF数据流图图与TensorBoard会话张量Tensor变量OP高级API 目录 1、变量 2、高级API 1、变量 2、高级API

RFID技术进阶:频段选择的艺术与科学

RFID技术进阶&#xff1a;频段选择的艺术与科学 在数字化、自动化的浪潮中&#xff0c;RFID&#xff08;无线射频识别&#xff09;技术以其独特的优势&#xff0c;逐渐在多个领域占据了一席之地。RFID&#xff08;Radio Frequency Identification&#xff09;&#xff0c;即无…