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 中 HDFS 中的文件

    我一直在寻找一个磁盘密集型 Hadoop 应用程序来测试 Hadoop 中的 I O 活动 但我找不到任何此类应用程序可以使磁盘利用率保持在上述水平 例如 50 或者某些此类应用程序实际上使磁盘保持繁忙 我尝试了 randomwriter
  • Hadoop:如何将减速器输出合并到单个文件? [复制]

    这个问题在这里已经有答案了 我知道 shell 中的 getmerge 命令可以完成这项工作 但是 如果我想在作业结束后通过 HDFS API for java 合并这些输出 我该怎么办 我真正想要的是 HDFS 上的单个合并文件 我唯一能
  • sqoop导入多个表

    我们正在使用 Cloudera CDH 4 并且能够按预期将表从 Oracle 数据库导入到我们的 HDFS 仓库中 问题是我们的数据库中有数十万张表 而 sqoop 一次只支持导入一张表 有哪些选项可用于将多个表导入 HDFS 或 Hiv
  • 无法启动 CDH4 辅助名称节点:NameNode 地址的 URI 无效

    我一直在尝试设置 hadoop 的 CDH4 安装 我有 12 台机器 标记为 hadoop01 hadoop12 名称节点 作业跟踪器和所有数据节点都启动良好 我可以查看 dfshealth jsp 并看到它找到了所有数据节点 但是 每当
  • 更新 hadoop HDFS 文件

    我是 Hadoop 的新手 我一直读到 HDFS 主要是 一次写入 多次读取 我有一个用例 我可能需要对 HDFS 中存储的文件进行修改 我一直在研究是否有任何方法可以做到这一点 我的问题是是否可以将 HDFS 文件加载到 HBase 中
  • 一个目录中有多少个子目录?

    如何查找HDFS中指定目录下的子目录数量 当我做hadoop fs ls mydir 我收到 Java 堆空间错误 因为目录太大 但我感兴趣的是该目录中的子目录数量 我试过 gsamaras gwta3000 hadoop fs find
  • 当在HBase中反转Scan时,哪个是startKey,哪个是stopKey?

    我使用的是 HBase 0 98 它允许以相反的顺序进行扫描 这是我的代码 scan new Scan eventTimeKey nowKey scan setCaching 1 setting this to 1 since I only
  • Hive 数据存储在哪里?

    我对配置单元存储数据的位置有点困惑 它将数据存储在 HDFS 还是 RDBMS 中 Hive Meta 存储是否使用 RDBMS 来存储 Hive 表元数据 提前致谢 Hive 数据存储在其中之一Hadoop 兼容文件系统 https cw
  • 将 Solr HDFS 数据复制到另一个集群

    我有一个 solr 云 v 4 10 安装 位于 Cloudera CDH 5 4 2 HDFS 之上 有 3 个 solr 实例 每个实例托管每个核心的一个分片 我正在寻找一种将 solr 数据从生产集群增量复制到开发集群的方法 有 3
  • Hadoop put 性能 - 大文件(20GB)

    我正在使用 hdfs put 将一个 20GB 的大文件加载到 hdfs 中 目前该过程运行 4 分钟 我正在尝试缩短将数据加载到 hdfs 的写入时间 我尝试利用不同的块大小来提高写入速度 但得到以下结果 512M blocksize 4
  • 无法使用 scala 将字符串写入 hdfs 文件

    我编写了一些代码在 hdfs 中创建一个文件并向其写入字节 这是代码 def write uri String filePath String data String Unit System setProperty HADOOP USER
  • PySpark:使用 newAPIHadoopFile 从多行记录文本文件中读取、映射和减少

    我正在尝试解决一个类似于这个帖子 https stackoverflow com questions 31227363 creating spark data structure from multiline record 我的原始数据是一
  • Hadoop 块大小 vs 分割 vs 块大小

    我对 Hadoop 的概念有点困惑 有什么区别Hadoop Chunk size Split size and Block size 提前致谢 块大小和块大小是一样的 分体尺寸可能不同于块 块 size 地图缩减算法不适用于文件的物理块 它
  • 尝试在 h5py 中打开 pandas 创建的 hdf 时缺少列

    这就是我的数据框的样子 第一列是一个整数 第二列是 512 个整数的单个列表 IndexID Ids 1899317 0 47715 1757 9 38994 230 12 241 12228 22861131 0 48156 154 63
  • 如何从java通过hdfs协议访问hadoop?

    我找到了一种通过以下方式连接到hadoop的方法hftp 并且工作正常 只读 uri hftp 172 16 xxx xxx 50070 System out println uri uri Configuration conf new C
  • 使用 PySpark 在 HDFS 中保存并附加文件

    我在 PySpark 中有一个名为df 我已经注册了这个df as a temptable像下面这样 df registerTempTable mytempTable date datetime now strftime Y m d H M
  • HBase如何实现对HDFS的随机访问?

    鉴于HBase是一个数据库 其文件存储在HDFS中 那么它如何实现对HDFS中单个数据的随机访问呢 这是通过什么方法实现的呢 From Apache HBase 参考指南 http hbase apache org book archite
  • Spark 在 WholeTextFiles 上创建的分区少于 minPartitions 参数

    我有一个文件夹 里面有 14 个文件 我在一个集群上使用 10 个执行器运行 Spark Submit 该集群的资源管理器为 YARN 我创建了我的第一个 RDD 如下所示 JavaPairRDD
  • 非 hdfs 文件系统上的 hadoop/yarn 和任务并行化

    我已经实例化了 Hadoop 2 4 1 集群 并且发现运行 MapReduce 应用程序的并行化方式会有所不同 具体取决于输入数据所在的文件系统类型 使用 HDFS MapReduce 作业将生成足够的容器 以最大限度地利用所有可用内存
  • 运行时异常:java.lang.NoSuchMethodException:tfidf$Reduce.()

    如何解决这个问题 tfidf是我的主类 为什么运行jar文件后会出现这个错误 java lang RuntimeException java lang NoSuchMethodException tfidf Reduce

随机推荐