我想知道以下行为是否应该如此(hadoop 2.1.0-beta):
我在 hdfs-site.xml 中将 dfs.blocksize 更改为 64m。如果我通过块大小上传文件hdfs dfs -put src dst
正确显示为 64mb(在网络界面中)。但是,如果我使用 java api(这里通过 scala),文件的块大小是 128mb(默认)。
我的应用程序的类路径中没有配置文件,因为我希望名称节点应该知道它的块大小。以下是我使用 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的方式:
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_CONF_DIR,因为我在这台机器上的多个 hadoop 安装之间切换(我希望并且不认为这是必要的)。