hdfs块大小默认为128MB

o2g1uqev  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(544)

我想知道以下行为是否应该如此(hadoop 2.1.0-beta):
我在hdfs-site.xml中将dfs.blocksize更改为64m。如果我通过 hdfs dfs -put src dst 块大小正确显示为64mb(在webinterface中)。但是,如果我使用javaapi(这里通过scala),文件的块大小是128mb(默认值)。
我的应用程序的类路径中没有配置文件,因为我希望namenode应该知道它的blocksize。下面是我如何使用java api:

val hdfsConf = new Configuration()
hdfsConf.set("fs.defaultFS", hdfsAddress)
FileSystem.get(hdfsConf)
...
val delSource = false; val overWrite = false
fs.copyFromLocalFile(delSource, overWrite, new Path(localPath), new Path(destinationPath))

是不是我的namenode配置错误,导致它没有应用正确的块大小?或者这是预期的行为?
另外:这是我如何启动namenode的:

hadoop-2.1.0-beta/sbin/hadoop-daemon.sh --config /home/andre/experiments/suts/hadoop-2.1.0-beta/conf --script hdfs start namenod

hdfs-site.xml位于指定的文件夹中,其中包含以下属性:

<property>
  <name>dfs.blocksize</name>
  <value>64m</value>
</property>

我没有指定$hadoop\u conf\u dir,因为我在这台机器上的多个hadoop安装之间切换(我希望也不认为这是必要的)。

qnakjoqk

qnakjoqk1#

首先通过定制的hdfs大小(不是默认的128mb)加载hdfs中的数据,然后当您通过java访问该数据时,您将获得正确的大小。
hadoop fs-d dfs.block.size=16777216-put。

相关问题