database - 对Hadoop DFS和MapReduce的一些疑问

标签 database algorithm hadoop mapreduce

  • HDFS将数据存储在64MB / 128MB的块中,并以这些块大小在任务节点之间复制数据。该块存储在节点的硬盘中。如果我在此陈述中有误,请纠正我。
  • 该块是否已完全加载到RAM中,还是需要逐行流式传输?还是两者都有可能?
  • 可以说,我有一个1GB的CSV文件,我想在该文件上执行一些与该CSV文件中的每一行都不独立的计算。我的意思是计算需要处理10个连续的行。例如:在行1:10,然后在2:11,然后在3:12等上进行计算。我有什么选择?将这个1 GB的多行数据转换为单行数据,然后将其作为一个矩阵加载是个好主意吗(如果要在整个64MB / 128MB块上计算复杂的计算,我想这会使RAM溢出)?
  • 最佳答案

    1)沿数据节点复制数据。在大多数配置中,您希望任务节点也成为数据节点。是的,它是物理存储的。

    2)Hadoop用户,例如输入拆分中的bufferedreaders,如果使用标准阅读器,则逐行“流式处理”数据。还有其他读者,您也可以实现自己的读者

    3)如果您要处理一个文件的10行,有几种方法可以处理。一种方法是将文件设置为不可拆分。这样就可以确保整个CSV由一个映射器处理。您可以自己拆分文件,以使很多映射器都能正常工作。我能想到的其他方法要复杂得多,或者在区块边界存在问题。我认为加载整个文件不是最好的主意,因为将来您的.csv变得更大时,您的方法必定会失败。

    如果您的工作是仅 map 工作,则可以添加化简阶段并为那10行计算一个特殊键(例如它们与特殊问题有关,等等),并在化简器中获取所有相关行。不幸的是,我对您的工作了解得不够多,更具体

    如果您不熟悉hadoop,那link可能会帮助您进入它

    关于database - 对Hadoop DFS和MapReduce的一些疑问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13954176/

    相关文章:

    redis - 在 Redis 中分离数据

    java - 如何使用 Java 8 Stream/Lambda 计算整数中尾随零的数量?

    hadoop - 在 HDFS 中使用 -addMount 时找不到类 org.apache.hadoop.fs.azurebfs.AzureBlobFileSystem

    hadoop - 有什么办法可以在 Windows 环境中从虚拟机的 hdfs 系统打开文件?

    hadoop - Map 和 Reduce 是否在单独的 JVM 中运行?

    Android sqlite 插入错误代码 19 : constraint failed

    sql - Postgres 更新规则返回受影响的行数

    mysql - 我需要在我的存储过程中执行 varchar SQLcode

    基于统计/模式问题的算法

    java - 两个数之和等于给定数