iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Hadoop中HDFS适用于什么场景
  • 549
分享到

Hadoop中HDFS适用于什么场景

2023-06-03 01:06:40 549人浏览 独家记忆
摘要

这篇文章给大家分享的是有关hadoop中hdfs适用于什么场景的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Hadoop生态系统一直是大数据领域的热点,其中包括今天要聊的HDFS,和计划以后想聊的yarn, ma

这篇文章给大家分享的是有关hadoophdfs适用于什么场景的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

Hadoop生态系统一直是大数据领域的热点,其中包括今天要聊的HDFS,和计划以后想聊的yarn, mapReduce, spark, Hive, HBase, 已经聊过的ZooKeeper,等等。

Hadoop中HDFS适用于什么场景

今天主聊HDFS,hadoop distributed file system, 起源于Google 的 GFS,只不过GFS是用c++写的,Hadoop是Doug Cutting在yahoo用Java写的。2008 年 Hadoop成为Apache top-level project。

应用

HDFS适用于什么场景呢? 非常大的文件存储,比如以G或T为单位,因为HDFS内部的block的基本单位已经是128MB。注意这里有一个小文件问题,误区是说怕1K的小文件也能占用128MB的硬盘,其实不是的,它还是占用1K硬盘,但是小文件问题的bottle neck是在name node里,因为name node要存储文件和block的相关信息在内存里,文件数量一多,name node的内存就不够了(比如,百万小文件要占用300MB 内存),当然hdfs federation能够通过sharding的方式解决name node内存不够用的问题,接下来会细说。HDFS还适用于“write once,read-many”的场景,而且它的写是append only,所以想改也没法改。如果是多次写的话,应该考虑一下cassandra(参见我的上一篇文章)。同时HDFS的文件通常只能允许single writer写入(是通过lease的方式来保证只有一个writer能够当前写某个文件)。HDFS因为只需要普通的commodity hardware而不需要昂贵的高可用硬件而被企业欢迎。HDFS不适用于需要low latency的数据访问方式,因为HDFS是拿延迟交换高throughput。

概念

Blocks

HDFS里,文件是被分割成block大小的chunk,每个block是128MB,有人会问了,为什么非要搞这么大,主要是要缩短寻道时间在总硬盘读写时间中的比例,比如寻道时间需要5 ms,而寻到时间只能占总时间0.5%的比例,那么硬盘读写时间差不多在1s左右,1s中能穿多少文件呢,如果硬盘的读写为128MB/s,那么就能传128MB,所以block大小就定义为128MB,这样可以保证硬盘操作的时间有效的应用在读写上而不是花费在寻道上。当然太大了也不行,mapreduce的map通常是以block为单位,如果block太少,mapreduce的效率会比较低。

hdfs fsck $path -files -blocks -locations

上面的命令可以用来提供文件的block信息,比如block在哪台机器,名字是什么,方便你进一步查询block的具体信息。

Namenodes and datanodes

Hadoop中HDFS适用于什么场景

namenode管理namespace, 管理文件系统树状结构和文件/目录的metadata,这些信息以如下方式持久化在硬盘里:namespace image 和 edit log。同时block的metadata也存放在namd node,存放于内存中。前面提到过百万小文件,会占用300MB内存的例子。block信息为什么不持久化呢,因为它会变动,系统重启的时候会从datanode那里重新构建。

name node的备份有几种方式,一种是把持久化存放于硬盘的信息既写到本地硬盘也同时写到远程NFS mount。另一种方式是运行secondary namenode,它其实并没有扮演namenode的角色,而是周期性的merge namesapce image以及edit log来防止edit log过大。它会保存一份merged namespace image,一旦primary fail了,就把NFS上的metadata copy到secondary namenode上,这样secondary就成为了新的primary。

具体过程如下图所示,edit log和fsimage都是在硬盘中,edit log就是WAL(cassandra写操作也用到了WAL的手段,WAL很流行,可以单拉出来讲一次),fsimage是check point of the filesystem metadata。写的时候先写edit log,然后update in-memory representation of filesystem metadata(用来serve读请求),图中没有画出这部分操作。

Hadoop中HDFS适用于什么场景

有没有更好的方法呢?上述方法没能提供HA, namenode仍然是single point of failure。新的primary需要(1)load namespace image into memory (2)replay edit log (3)从datanode那边接收足够的block reports(前文提到block信息是在内存中的)。这个过程有可能会话费30分钟或更久。client等不了啊~~

Hadoop 2提供了HA的support。namenode采用active-standby的配置方式:

  • namenodes使用高可用共享存储来存edit log。active每次写入都会被standby读出并synchronize到自己的内存中。

  • datanodes在发送block reports时会同时发给所有的name nodes,记住block mapping是在内存中。

  • 客户端需要配置来handle namenode failover,其实就是watch zookeeper的leader election(参见我之前讲的zookeeper)

  • 这样就不需要secondary namenode啦,standby取代了它的作用会周期性的产生check points

上面提到的共享存储主要指的是QJM(quorum journal manager),通常配置3个(当然我也见过50个node配5个journal nodes),写的时候需要满足quorum。

这样当active namenode fail时,standby可以马上扛住,因为latest edit log和 up-to-date block mapping都在内存中。

HDFS write

Hadoop中HDFS适用于什么场景

HDFS read

Hadoop中HDFS适用于什么场景

CLI Example

touch test.txthdfs dfs -mkdir /user/qingge/testdirhdfs dfs -copyFromLocal ./test.txt /user/qingge/testdir/ hdfs dfs -ls /user/qingge/testdir/test.txthdfs dfs -chmod o-r /user/qingge/testdir/test.txt hdfs dfs -cat /user/qingge/testdir/test.txt | head -10 hdfs dfs -mv /user/qingge/testdir/test.txt /user/qingge/testdir/test2.txthdfs fsck /data/lalala -files -blocks -locationshdfs fsck -blockId blk_10101010

Http 访问

(1) direct access: HDFS daemons server HTTP requests, embedded WEB servers in the name node and datanodes act as WebHDFS endpoionts.

Hadoop中HDFS适用于什么场景

(2) proxy access: 中间有多个HDFS proxy,for strictr firewall and bandwidth-limiting policies, proxy和node之间使用rpc request和block request。

Hadoop中HDFS适用于什么场景

HDFS Federation

相当于namenode sharding了,如果不想用HA,然后namenode内存又要爆了怎么办,答分区呀,每个namenode从根目录下划走几个子目录,无线分区无线扩充,每个namenode之间井水不犯河水,一个爆了或废了丝毫不影响另一个。

思考题:

如果HDFS有1PB容量,每个block大小是64MB,平均的metadata大小是每个block300B,replication factor是3, 那么namenode最小的内存是多少呢?

答:差不多需要1.56G, 1024*1024*1024 MB/(64MB*3)*300B/(1024 * 1024 * 1024) = 1.56 GB

感谢各位的阅读!关于“Hadoop中HDFS适用于什么场景”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: Hadoop中HDFS适用于什么场景

本文链接: https://www.lsjlt.com/news/231973.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Hadoop中HDFS适用于什么场景
    这篇文章给大家分享的是有关Hadoop中HDFS适用于什么场景的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Hadoop生态系统一直是大数据领域的热点,其中包括今天要聊的HDFS,和计划以后想聊的yarn, ma...
    99+
    2023-06-03
  • node常用于什么场景
    Node.js 在许多不同的场景中都有广泛的应用。以下是 Node.js 常用的一些场景:服务器端开发:Node.js 的高性能和事件驱动的非阻塞 I/O 模型使其非常适合构建服务器端应用程序。它可以用于开发 Web 应用、API 服务、实...
    99+
    2023-07-10
  • Nodejs能够应用于什么场景
    这篇文章给大家分享的是有关Nodejs能够应用于什么场景的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Apache 的多线程高并发模式优点:支持多线程并发缺点:阻塞什么是线程线程是可以独立运行的最小的 CPU 单...
    99+
    2023-06-15
  • swoole协程的适用场景是什么
    这篇文章主要介绍“swoole协程的适用场景是什么”,在日常操作中,相信很多人在swoole协程的适用场景是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”swoole协程的适用场景是什么”的疑惑有所帮助!...
    99+
    2023-06-29
  • svg和canvas的适用场景是什么
    今天小编给大家分享一下svg和canvas的适用场景是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起...
    99+
    2022-10-19
  • Prototype模式的适用场景是什么
    本篇内容介绍了“Prototype模式的适用场景是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Prototype模式的适用场景为:当一...
    99+
    2023-06-19
  • JavaScript中防抖和节流的区别及适用场景是什么
    这篇文章主要介绍“JavaScript中防抖和节流的区别及适用场景是什么”,在日常操作中,相信很多人在JavaScript中防抖和节流的区别及适用场景是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Jav...
    99+
    2023-06-30
  • ASP 中有哪些常见的数据类型,分别适用于哪些场景?
    ASP 是一种非常流行的 Web 开发技术,它使用 VBScript 或 JScript 作为脚本语言,可以方便地与数据库进行交互。在 ASP 中,数据类型是非常重要的一个概念,它决定了我们可以处理哪些数据以及如何处理它们。在本篇文章中,我...
    99+
    2023-07-28
    数据类型 分布式 关键字
  • Java中关于OOM的场景及解决方法是什么
    这期内容当中小编将会给大家带来有关Java中关于OOM的场景及解决方法是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。OOM for Heap=>例如:java.lang.OutOfMemory...
    99+
    2023-06-17
  • java中@Configuration使用场景是什么
    这篇文章主要讲解了“java中@Configuration使用场景是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“java中@Configuration使用场景是什么”吧!一、简单介绍@...
    99+
    2023-07-05
  • Mysql中锁的使用场景是什么
    这篇文章主要讲解了“Mysql中锁的使用场景是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Mysql中锁的使用场景是什么”吧!一、常见锁类型表级锁,锁...
    99+
    2022-10-19
  • Python中的迭代器和生成器的优劣势和适用场景是什么?
    Python中的迭代器和生成器的优劣势和适用场景是什么?迭代器和生成器是Python中常用的编程概念,它们可以帮助我们更有效地处理大量数据,提高程序的性能和可读性。这篇文章将详细介绍迭代器和生成器的优劣势,并给出一些适用场景的具体代码示例。...
    99+
    2023-10-22
    生成器 迭代器 优势 适用场景
  • Python中的迭代器模式和生成器模式的适用场景是什么?
    Python中的迭代器模式和生成器模式的适用场景是什么?迭代器模式和生成器模式是两种常用的设计模式,它们都用于处理集合(容器)中的元素,使得对集合的遍历更加简洁高效。下面将具体介绍这两种模式的适用场景,并提供相应的代码示例。迭代器模式是一种...
    99+
    2023-10-22
    迭代器模式 适用场景 生成器模式
  • Go中sync包Cond使用场景是什么
    本篇内容介绍了“Go中sync包Cond使用场景是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!背景编写代码过程中, 通常有主协程和多个...
    99+
    2023-07-05
  • Python中的进程池和线程池的适用场景和实现原理是什么?
    Python中的进程池和线程池的适用场景和实现原理是什么?引言:在编写程序时,为了提高执行效率,经常会使用并发编程来同时执行多个任务。Python提供了进程池和线程池这两种用于并发处理任务的工具。本文将详细介绍进程池和线程池的适用场景和实现...
    99+
    2023-10-22
    线程池 实现原理 进程池 适用场景
  • Redis在项目中的应用场景是什么
    这篇文章将为大家详细讲解有关Redis在项目中的应用场景是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。相信对于绝大多数程序员来说,redis中间件应该是大家非常熟悉...
    99+
    2022-10-18
  • React中memo、useCallback和useMemo的使用场景是什么
    这篇“React中memo、useCallback和useMemo的使用场景是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这...
    99+
    2023-07-05
  • php中门户系统的应用场景是什么
    这篇文章主要讲解了“php中门户系统的应用场景是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php中门户系统的应用场景是什么”吧!一、PHP门户的历史及发展PHP门户系统的诞生并不是在...
    99+
    2023-07-05
  • Vue3中reactive与ref函数使用场景是什么
    本文小编为大家详细介绍“Vue3中reactive与ref函数使用场景是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Vue3中reactive与ref函数使用场景是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习...
    99+
    2023-07-02
  • Java Load接口在Linux中的应用场景是什么?
    Java Load接口是Java语言中一个重要的接口,其主要作用是在Java程序中加载动态库文件,以实现与本地C/C++代码的交互。在Linux操作系统中,Java Load接口的应用场景非常广泛,本文将着重探讨Java Load接口在L...
    99+
    2023-10-14
    load 接口 linux
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作