【Hadoop系列】HDFS

Hadoop的前世今生

什么是大数据

各行各业都会产生大量的数据,比如社交网站的意见观点,电商平台人们浏览网页停留的时间,交通运输每天产生的数据等等。这些数据大多不是结构化的,一般来说都是半结构化或者非结构化的

在以前,我们的处理能力达不到,所以很多数据要么没有存起来,要么没有利用起来。而现在数据越来越集中在云端的服务器上,并且计算能力已经今非昔比了,我们完全有能力对大数据进行存储和分析。

所以所谓的大数据指的就是,原有的计算能力无法处理的大批量的数据,而大数据技术研究的是如何快速有效的处理这些结构化、半结构化数据的技术。

处理大数据的架构

下图是传统的集中式架构

image.png

它的主要问题在于扩展性不强而且数据库将成为很大的瓶颈。

所以谷歌提出了

  • MapReduce算法

  • BigTable

  • GFS

合称“三剑客”。

那么相对于传统的架构,有什么样的变化呢?

  • 首先它可以使用大量的x86服务器,而不是使用性能强健的大型机来完成计算,也就是Scale-out的

  • 另外它使用软件方案来保证硬件故障容错

    我们知道x86服务器的稳定性不如小型机,存在一定的故障的可能,但是小型机实在太贵了。我们完全可以让x86服务器组成集群,然后使用上层软件来保障整体的硬件故障容错。

  • 简化并行分布式计算,不需要再控制节点的同步和数据的交换。

image.png

Hadoop模仿Google的实现方式,最终演变成一系列的开源项目。

总结一下:

大数据既是一个概念又是一门技术,它是以Hadoop和Spark为代表的大数据基础框架,可以实现数据分析、挖掘、预测。

Hadoop

上面说到Hadoop是一种分布式计算解决方案,含有若干组件,其中最著名的当属

  • HDFS分布式文件系统:存储海量数据

    存储技术是大数据的基础,因为对于大量的数据,我们希望能找的一种比较廉价的方式来保存我们的数据,那么分布式文件系统当属首选。

  • MapReduce编程模型:

    并行处理框架,实现任务分解和调度

所以Hadoop的优势在于:

  • 高扩展性,也就是可以通过增加节点来活动性能提升,比如说性能不够了,就怼新的服务器上去。

  • 低成本,可以基于便宜的x86服务器

  • 成熟的生态圈,里面有大量的工具集可以使用

下面分别介绍一下HDFS和MapReduce
image.png

HDFS

在【大话存储II】学习笔记(15章),文件级集群系统中我们介绍了分布式集群的基本概念。

分布式文件系统可以等价于非共享存储集群文件系统,也就是说同一个文件系统下的文件是存放在不同的节点里面,而且Sharing-nothing

那么分布式文件系统应该解决

  • 统一的命名空间,也就是对外显现同一个文件目录。

    这样用户不用管数据是如何存放的,分布式文件系统已经帮它解决存放的问题了,用户用起来就像使用本地文件一样简单。

  • 缓存一致,因为数据都缓存在各自的节点,不存在不缓存不一致的情况。

  • 分布式锁,也就是多个连接并发访问的时候,如何控制文件的数据会出现不一致的情况。

若要理解HDFS,我们需要知道如下的基本概念。

基本概念

分布式设计

HDFS这样的架构,非常类似于【大话存储II】学习笔记(15章),块级集群存储系统中的XIV,当然XIV是提供块存储的,不过XIV也利用了文件系统的思想,对每个块像一个文件一样。

HDFS的基本存储和操作单位是数据块, 默认大小64MB,一般设置为128M。为什么要这么设计呢?因为一个文件会比较大,为了分布式存放,可以分成若干小块。那么最好就切成相同大小,比如说64MB。
image.png

而且为了保证数据块不丢失,对每个数据块会保存3副本,分布在两个机架的三个节点中。 其中两份在同一个机架,一份在另一个机架。

比如下图中两个A数据块放在机架1,另一份副本放到了机架2 。
image.png

角色

在【大话存储II】学习笔记(15章),文件级集群系统我们介绍过,分布式文件系统有对称和非对称的两种。

对称集群中所有节点的地位相同,互相维护通信链接进行数据同步,也正因为如此,不适合扩展。

而HDFS采用的是非对称集群,所以有Master和Slave两种角色。

Master就是HDFS中的NameNode,它的作用是 存放元数据,管理文件系统的命名空间。也就是一个注册中心,其他的Slave都要到它这边注册。

Master和Slave组成集群以后,可以自服务,也可以对外提供服务。

它会记录两种信息:

  • 文件与数据块的映射关系

  • 数据块与服务器的对应关系,也就是每个块存放的节点的信息

Slave则是DataNode,它的主要作用就是存放数据块,是具体的执行者。

当块存储信息改变了以后,DataNode会向NameNode主动更新信息

image.png

另外,在这种主从架构里面,NameNode的地位很超然,非常的重要,一旦他挂了则整个系统就宕了。

所以从HDFS 2x就可以为NameNode配置HA了。

如下图所示,出现了一个Secondary NameNode。

image.png

二级NameNode定期同步元数据镜像文件和修改日志,当NameNode发生故障时,备胎转正。
image.png

HDFS的读与写

下面我们来看一下写流程。

image.png

  • 客户端向NameNode发出请求,表示自己要发送文件了,然后NameNode会返回现在空余存储的信息

  • 然后客户端将文件分块,

  • 接着,客户端将数据块1以及相应的元数据信息发给DataNode1

  • 然后开启流水线复制,将数据同步给另外的节点

  • 写完了以后,DataNode才返回更新信息,最后NameNode向客户端返回成功。

image.png
image.png

读文件

下图展示了HDFS的读流程

image.png

  • 首先客户端向NameNode发起读请求,将路径+文件名发过去

  • NameNode返回元数据,告诉客户端可以从哪些地方取

  • 然后由客户端自己向DataNode读取数据

image.png

HDFS的特点

了解了HDFS的架构以及读写流程以后,我们可以总结一下HDFS的特点。

本质上HDFS就是一个分布式文件系统,它

  • 通过三副本机制进行冗余,类似于的分布式的RAID10

  • 它的写比较的复杂,需要复制2份,还要同步各种信息,而且修改也比较麻烦,只能删除以后再写。所以比较适合于一次写入,多次读取的场景,现在的OLAP就比较契合

  • 因为每次写或者读都需要向NameNode发起请求,所以NameNode是整个系统的瓶颈,所以如果是小文件的话,NameNode压力非常大。

也就是说HDFS适合于批量读,这样吞吐量高,因为可以并发读嘛。

但是不支持多用户写相同的文件,因为没有加锁。

也就是不适合交互应用以及那些实时性要求高的地方。
image.png

转载于:https://www.cnblogs.com/dy2903/p/8492304.html

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

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

相关文章

phpstudy使用(80端口被system占用,无法关闭和删除)

在使用phpstudy的时候直接一键启动,显示提示80端口已被占用,在尝试关闭和删除后显示被system占用,无法关闭。 这里我首先试着去用任务管理器彻底关闭删除这个进程,后来发现提示,如果删除可能会影响系统正常运行&#…

kingbase自带的驱动在哪_德国制造到底强在哪?从工博会上伺服驱动的创新上能看出真相!...

随着2014年协作机器人在中国兴起,UR、新松、达明、遨博、大族激光等企业积极布局协作机器人市场。2014-2019年,我国协作机器人销量复合增速一度超过了50%,2019年我国协作机器人产量超过8000台。但目前协作机器人和AGV的核心零部件高端市场&am…

phpstudy(自己电脑主机做服务器,手机网站界面打不开)

可能有多种原因, 1.手机电脑并没有连接同一个局域网。 2.我这里是因为修改了80端口,在登录时忘记修改登录的网址。 因为80端口被占用,于是我修改了phpstudy的端口为8080,在上传成功后,使用手机输入电脑的Ip地址死活打…

3结构介绍_豹驰(BOACH)声学材料吸隔声方法介绍—(下)材料隔声特性曲线

基于前两个章节(《豹驰声学材料吸/隔测试方法基础介绍—(上)》&《豹驰声学材料吸/隔声测试方法介绍—(中)》的声学材料吸隔声测试方法介绍,可以了解材料的检测手段及如何有效的采用测试获取数字化模型搭建的输入,支持吸隔声材料制品的设计开发&#…

jQuery基本语法

一、jQuery基础1.为什么要用jquery? 写起来简单,省事,开发效率高,兼容性好2、什么是jQuery? jQuery是一个兼容多浏览器的JavaScript库(类似python里面的模块)3、如何使用jQuery? 1、导…

如何去掉文章里的非关键词c++_B2B/B2C网站:文章标题如何写才能促进搜索排名...

为网站增加高质量内容目的之一是网站在搜索引擎上获得良好曝光机会。创作内容时首先引起我们困惑的是:“这篇文章的标题如何写才能更好?”的确,一个好的文章标题对排名的帮助巨大。尽管没有数据来说明一个好标题对排名的影响程度。但随着时间…

基于DBUtils实现数据库连接池

小知识: 1、子类继承父类的三种方式 class Dog(Animal): #子类 派生类def __init__(self,name,breed, life_value,aggr):# Animal.__init__(self,name,breed, life_value,aggr)#让子类执行父类的方法 就是父类名.方法名(参数),连…

1-2 三位数反转(算法竞赛入门经典)

简单的三位数反转代码如下: #include<iostream> #include<bits/stdc.h> using namespace std; int main() {int n;cin>>n;cout<<n%10<<n/10%10<<n/100<<endl;return 0; }但是这里需要考虑一下的细节是题目中是否明确对个位为零的情…

个人博客网页设计_博客个人网页制作网页设计-1

CSS3仿Flash动画个人博客模板是一款横向全屏切换的个人博客模板。

uniapp滑动切换tab标签_Web前端,Tab切换,缓存,页面处理的几种方式

前言相信tab切换对于大家来说都不算陌生&#xff0c;后台管理系统中多会用到。如果不知道的话&#xff0c;可以看一下浏览器上方的标签页切换&#xff0c;大概效果就是这样。1.如何切换使用动态组件,相信大家都能看懂(部分代码省略)//通过点击就可以实现两个组件来回切换 切换v…

20165203 2017-2018-2 《Java程序设计》第一周学习总结

20165203 2017-2018-2《Java程序设计》第一周学习总结 教材学习内容总结 &#xff08;一&#xff09;Java的地位 Java是面向对象编程&#xff0c;并涉及网络、多线程等重要的基础知识&#xff0c;是一门很好的面向对象的语言。 &#xff08;二&#xff09;Java的特点 简单 面向…

C语言中printf输出特殊字符(“%d“或者“\n“)

在C语言中&#xff0c;相信很多人尝试过进行“%”的输出&#xff0c;常规的 printf("%d\n"); 肯定是行不通的&#xff0c;这里需要注意的是在c语言中对“%”和“\”的输出是可以的&#xff0c;但是输出格式不能直接进行输出&#xff0c;编译器在编译的时候会把"…

此处不允许使用分组函数_Excel中使用Vlookup函数实现数据分组

Vlookup匹配函数&#xff1a;在表格的首列查找指定的数据&#xff0c;并返回指定的数据所在行中的指定列处的单元格内容。该函数的语法规则如下&#xff1a;VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)draft-node"block" data-draft-type"ta…

C#细说多线程(下)

本文主要从线程的基础用法&#xff0c;CLR线程池当中工作者线程与I/O线程的开发&#xff0c;并行操作PLINQ等多个方面介绍多线程的开发。 其中委托的BeginInvoke方法以及回调函数最为常用。而 I/O线程可能容易遭到大家的忽略&#xff0c;其实在开发多线程系统&#xff0c;更应该…

cpp [Error] reference to ‘count‘ is ambiguous(全局变量的使用模糊不清)

在编写汉诺塔实验的时候&#xff0c;自己设计了一个全局的计数变量count用来计数移动次数&#xff0c;结果运行的时候报了这样的错误&#xff0c;错误也锁定在全局变量的定义那里。 没想通为什么会有语法错误&#xff0c;去查了一下发下是c的库函数有关键字count&#xff0c;所…

InfluxDB学习之InfluxDB数据保留策略(Retention Policies)

InfluxDB每秒可以处理成千上万条数据&#xff0c;要将这些数据全部保存下来会占用大量的存储空间&#xff0c;有时我们可能并不需要将所有历史数据进行存储&#xff0c;因此&#xff0c;InfluxDB推出了数据保留策略&#xff08;Retention Policies&#xff09;&#xff0c;用来…

车牌识别数据集_行人再识别数据集

目前行人再识别的数据集比较常用的有&#xff1a;Market-1501、 DukeMTMC-reID、CUHK03&#xff0c;后面有时间会上传如何处理数据集的代码。目前常使用的方式&#xff1a;数据集下有以下几个文件夹&#xff1a;train&#xff1a;包含n个子文件夹&#xff0c;每个文件夹是对应标…

浅谈web前端理解一(前端学习路线)

提到学习web前端&#xff0c;在外行人或者初学者的眼里&#xff0c;应该是绚丽的画面&#xff0c;精彩的布局&#xff0c;或者各种UI以及依据前端开发出来的小游戏。但经过一段时间的学习&#xff0c;你会发现其实本质上是一种搬砖经验的积累&#xff0c;以及布局框架的积累。 …

最长非降子序列(动态规划dp dynamic programming)

首先要理解一下什么叫做非降子序列 非降子序列&#xff0c;简单来说就是指给出一个数字序列&#xff0c;在不改变整体顺序的情况下摘出几个来组成一个子序列&#xff0c;这个序列满足从小到大的排序顺序。 所以&#xff0c;最长非降子序列&#xff0c;不难理解就是从这些子序列…

textarea回车不换行 小程序_微信小程序商城到底值得不值得开通?

微信小程序商城到底值得不值得开通&#xff1f;小程序不用下载&#xff0c;而且具有自带流量功能&#xff0c;成为线下店铺和移动互联网的营销利器。众多企业为了提高知名度&#xff0c;开发了小程序商城&#xff0c;在此&#xff0c;建议&#xff0c;不管有没有微信商城&#…