我想知道以下行为是否应该如此(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安装之间切换(我希望也不认为这是必要的)。
1条答案
按热度按时间qnakjoqk1#
首先通过定制的hdfs大小(不是默认的128mb)加载hdfs中的数据,然后当您通过java访问该数据时,您将获得正确的大小。
hadoop fs-d dfs.block.size=16777216-put。