HDFS详解一

2023-05-16

前言:
一、HDFS的一些基本概念:
数据块(block):大文件会被分割成多个block进行存储,block大小默认为128MB。每一个block会在多个datanode上存储多份副本,默认是3份。
namenode:namenode负责管理文件目录、文件和block的对应关系以及block和datanode的对应关系。
datanode:datanode就负责存储了,当然大部分容错机制都是在datanode上实现的。
二、HDFS基本架构
在这里插入图片描述
Rack 是指机柜的意思,一个block的三个副本通常会保存到两个或者两个以上的机柜中(当然是机柜中的服务器),这样做的目的是做防灾容错,因为发生一个机柜掉电或者一个机柜的交换机挂了的概率还是蛮高的
1.block块
1、block:block是物理切块,在文件上传到HDFS文件系统后,对大文件将以每128MB的大小切分若干,存放在不同的DataNode上。例如一个文件130M,那么他会存被切分成2个块,一个块128M,另一个块2M.
2.小文件
1、HDFS 适应场景: 大文件存储,小文件是致命的
2、如果小文件很多的,则有可能将NN(4G=42亿字节)撑爆。例如:1个小文件(阈值<=30M),那么NN节点维护的字节大约250字节。一亿个小文件则是250b1亿=250亿.将会把NN节点撑爆。如果一亿个小文件合并成100万个大文件:250b1百万=2亿字节。
3、在生产上一般会:

1)调整小文件阈值
2)合并小文件:
a.数据未落地到hdfs之前合并
b.数据已经落到hdfs,调用spark service服务 。每天调度去合并 (-15天  业务周期)
3)小文件的危害:
a.撑爆NN。
b.影响hive、spark的计算。占用集群计算资源

3.副本数
1、如果是伪分布式,那么副本数只能为一。
2、生成上副本数一般也是官方默认参数: 3份

<property>
      <name>dfs.replication</name>
      <value>3</value>
</property>

如果一个文件130M,副本数为3。那么第一个block128M,有三份。另外一个block2M,也有三份。
题目:
blockSize128M,副本数3份,那么一个文件260M,请问多少块,多少实际存储?
260%128=2…4M 3个块3个副本=9块
260M3=780M

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HDFS详解一 的相关文章

  • 将 Hadoop 中的文件获取到 Web 应用程序中

    我是 Hadoop 新手 现在我正在尝试在 eclipse 中做一个应用程序 我想在其中使用 HDFS 中存在的数据 如果我们想用Java连接数据库 我们有JDBC连接 那么 我需要做什么才能直接连接HDFS呢 在 Hadoop 中 首先
  • Hadoop put 性能 - 大文件(20GB)

    我正在使用 hdfs put 将一个 20GB 的大文件加载到 hdfs 中 目前该过程运行 4 分钟 我正在尝试缩短将数据加载到 hdfs 的写入时间 我尝试利用不同的块大小来提高写入速度 但得到以下结果 512M blocksize 4
  • 如何在Hadoop中设置数据块大小?改变它有好处吗?

    如果我们可以更改 Hadoop 中的数据块大小 请告诉我如何操作 更改块大小是否有利 如果是 请告诉我为什么以及如何更改 如果没有 请告诉我为什么以及如何 您可以随时更改块大小 除非dfs blocksize参数在 hdfs site xm
  • 如何将小型 ORC 文件组合或合并为较大的 ORC 文件?

    SO 和网络上的大多数问题 答案都讨论使用 Hive 将一堆小 ORC 文件合并为一个较大的文件 但是 我的 ORC 文件是按天分隔的日志文件 我需要将它们分开 我只想每天 汇总 ORC 文件 HDFS 中的目录 我最有可能需要用 Java
  • PySpark:使用 newAPIHadoopFile 从多行记录文本文件中读取、映射和减少

    我正在尝试解决一个类似于这个帖子 https stackoverflow com questions 31227363 creating spark data structure from multiline record 我的原始数据是一
  • 尝试在 h5py 中打开 pandas 创建的 hdf 时缺少列

    这就是我的数据框的样子 第一列是一个整数 第二列是 512 个整数的单个列表 IndexID Ids 1899317 0 47715 1757 9 38994 230 12 241 12228 22861131 0 48156 154 63
  • HDFS 作为 cloudera 快速入门 docker 中的卷

    我对 hadoop 和 docker 都很陌生 我一直致力于扩展 cloudera quickstart docker 镜像 docker 文件 并希望从主机挂载一个目录并将其映射到 hdfs 位置 以便提高性能并将数据保存在本地 当我在任
  • 是否可以将 Flume 标头写入 HDFS 接收器并删除主体?

    text with headers 序列化器 HDFS 接收器序列化器 允许保存 Flume 事件标头而不是丢弃它们 输出格式由标头 后跟空格和正文有效负载组成 我们想删除正文并仅保留标题 对于 HBase 接收器 RegexHbaseEv
  • 如何更有效地从spark重命名hdfs中的文件?

    我有 450K JSON 我想根据某些规则在 hdfs 中重命名它们 为了简单起见 我只添加一个后缀 finished给他们每个人 A 成功地做到了这一点 代码如下 import org apache hadoop fs val hdfs
  • 无法创建目录 /home/hadoop/hadoopinfra/hdfs/namenode/current

    我收到错误 Cannot create directory home hadoop hadoopinfra hdfs namenode current 尝试在我的本地 Mac 上安装 hadoop 时 这可能是什么原因 仅供参考 我将我的
  • HDFS如何计算可用块?

    假设块大小为 128MB 则集群有 10GB 因此大约 80 个可用块 假设我创建了 10 个小文件 这些文件总共占用磁盘上 128MB 块文件 校验和 复制 和 10 个 HDFS 块 如果我想向HDFS添加另一个小文件 那么HDFS使用
  • 格式化 HDFS 时出现 UnknownHostException

    我已经使用以下命令在伪分布式模式下在 CentOS 6 3 64 位上安装了 CDH4指示 https ccp cloudera com display CDH4DOC Installing CDH4 on a Single Linux N
  • 如何访问Hadoop HDFS中的文件?

    我的 Hadoop HDFS 中有一个 jar 文件 包含我想要修改的 Java 项目 我想在 Eclipse 中打开它 当我打字时hdfs dfs ls user 我可以看到 jar 文件在那里 但是 当我打开 Eclipse 并尝试导入
  • 如何将 Jar 文件传递​​到 OOZIE shell 节点中的 shell 脚本

    您好 我在 oozie shell 操作工作流程中执行的脚本中运行 java 程序时遇到以下错误 Stdoutput 2015 08 25 03 36 02 636 INFO pool 1 thread 1 ProcessExecute j
  • 连接到 Hive 时使用 Spark 进行 Kinit

    我正在尝试从独立的 Spark 连接到 Hive hadoop 集群具有 kerberos 身份验证 有人可以让我知道如何在 Spark 程序中执行 kinit 我可以连接到配置单元吗 更新 我的 Spark 与 Hadoop 位于不同的集
  • 尝试将稀疏 df 保存到 hdf5 时,获取“SparseDtype”对象没有属性“itemsize”?

    我正在尝试将大型稀疏数据帧保存到 hdf5 文件 但出现归因错误 one hot pd get dummies my DF columns cat sparse True one hot to hdf content data h5 tab
  • Namenode高可用客户端请求

    谁能告诉我 如果我使用java应用程序请求一些文件上传 下载操作到带有Namenode HA设置的HDFS 这个请求首先去哪里 我的意思是客户端如何知道哪个名称节点处于活动状态 如果您提供一些工作流程类型图或详细解释请求步骤 从开始到结束
  • 非 hdfs 文件系统上的 hadoop/yarn 和任务并行化

    我已经实例化了 Hadoop 2 4 1 集群 并且发现运行 MapReduce 应用程序的并行化方式会有所不同 具体取决于输入数据所在的文件系统类型 使用 HDFS MapReduce 作业将生成足够的容器 以最大限度地利用所有可用内存
  • 如何从hdfs读取文件[重复]

    这个问题在这里已经有答案了 我在 project1目录下的hadoop文件系统中有一个文本文件名mr txt 我需要编写 python 代码来读取文本文件的第一行 而不将 mr txt 文件下载到本地 但我无法从 hdfs 打开 mr tx
  • 使用 Java API 在 Hadoop 中移动文件?

    我想使用 Java API 在 HDFS 中移动文件 我想不出办法做到这一点 FileSystem 类似乎只想允许在本地文件系统之间移动 但我想将它们保留在 HDFS 中并将它们移动到那里 我错过了一些基本的东西吗 我能想到的唯一方法是从输

随机推荐