当前位置: 首页 > 知识库问答 >
问题:

Hadoop:从其他数据阳极读取非本地数据的成本

淳于凯
2023-03-14

默认情况下,Hadoop在文件的块边界上拆分映射器要处理的文件。也就是说,这就是FileInputFormat实现为getSplits()所做的事情。然后,Hadoop确保映射器要处理的块被复制到映射器运行的Datanode上。

现在我想知道,如果我需要在InputSplit外部读取(在RecordReader中,但这是不相关的),与在InputSplit内部读取相比,这花费了我多少钱--假设它外部的数据不存在于读取数据阳极上?

谢谢:)

共有1个答案

何涵畅
2023-03-14

据我所知,如果数据不驻留在本地datanode上,则不会涉及到读取数据。HDFS客户机将询问NameNode块位于哪里,并将直接与相关的数据阳极对话,以便获得这些块。
所以成本将是--在远程数据阳极上:从磁盘读取,计算CRC,发送到网络,在代码读取数据上--从网络获取。
我认为集群的价格只是网络带宽和一些花费在发送和接收上的CPU。

 类似资料:
  • 我从网上下载了一个文件,并复制到ubuntu本地目录/lab/data中 我已经在Ubuntu中创建了名称为namenodep和datanode的namenode和datanode文件夹(不是hadoop文件夹)。我还在hdfs中创建了一个文件夹作为/input。 当我将文件从ubuntu local复制到hdfs时,为什么该文件同时出现在下面的两个目录中?

  • 在这里阅读SQLite文档时,当进程想要写入SQLite数据库时,它会获得一个保留的锁。然后,一旦进程准备好写入磁盘,它就会获得一个挂起的锁,在此期间,没有新的进程可以获得共享锁,但允许现有的共享锁完成它们的业务。一旦剩余的共享锁清除,进程就可以写。 然而,当我试图编写一个数据库,而其他进程正在从该数据库中读取时,我只会立即得到一个“错误:dataset被锁定”。 为什么SQLite不执行我上面概

  • ...或在namenode文件中。jobtracker只是重复在datanode日志中发现的错误。在失败之前几分钟的一个错误是EOF错误,对于PartialBuilder来说,这可能是问题,也可能不是问题: 我能够直接读写文件到DFS。我甚至可以在数据的一个很小的子集上运行这个作业,但是我不能让这个map/reduce作业正确工作。知道我做错了什么吗? 有关我得安装得说明: null dfs.re

  • 我创建了一个名为的类来从firebase数据库中获取所有用户数据。下面是我用来获取firebase数据(用户名)的方法。 而firebase链接也没有问题。它还提供了用户名。 当我用一些虚拟的预定义字符串数据替换username时,这段代码就可以工作了。但是当我添加用户名时,它会给我以下错误。

  • 我试图从Firebase数据库中读取数据,我已经到处阅读和查找,但我已经走到了死胡同。 这就是我所做的一切。 依赖项: 实现'com.google.firebase: Firebase存储: 9.2.1' 实现'com。谷歌。firebase:firebase数据库:9.2。1' 实现'com。谷歌。firebase:firebase授权:9.2。1' 实现'com。谷歌。火基:火基核心:9.2。

  • 问题内容: 我有一个不断从网站获取信息并不断更新的程序。到目前为止,我将所有这些信息存储在中,然后在完成后将其写入文本文件。 我需要操纵这些信息;但是,它创建了一个庞大的文本文件,并且我花时间太长,因此无法不断地将信息写入文本文件。因此有人告诉我要研究使用数据库。我曾经使用过的唯一数据库是网站的MySQL数据库,从来没有使用过Java。 有什么办法可以使数据库本地化?就像仅在我的计算机上一样(当我