如何使用Hadoop和本地文件系统上的数据实现所需的块大小

如何使用Hadoop和本地文件系统上的数据实现所需的块大小,hadoop,Hadoop,我有一个2TB的序列文件,我正试图用Hadoop处理它,它位于一个集群上,该集群设置为使用本地lustre文件系统来存储,而不是HDFS。我的问题是,无论我尝试什么,当我使用这些数据作为输入运行map/reduce作业时,我总是被迫执行大约66000个map任务。这似乎与2TB/66000=~32MB的块大小相对应。每个map任务中的实际计算执行得非常快,但是与如此多的map任务相关联的开销大大降低了速度 对于创建数据的作业和所有后续作业,我有dfs.block.size=536870912和f

我有一个2TB的序列文件,我正试图用Hadoop处理它,它位于一个集群上,该集群设置为使用本地lustre文件系统来存储,而不是HDFS。我的问题是,无论我尝试什么,当我使用这些数据作为输入运行map/reduce作业时,我总是被迫执行大约66000个map任务。这似乎与2TB/66000=~32MB的块大小相对应。每个map任务中的实际计算执行得非常快,但是与如此多的map任务相关联的开销大大降低了速度

对于创建数据的作业和所有后续作业,我有dfs.block.size=536870912和fs.local.block.size=536870912 512MB。我还发现了一些建议,建议尝试以下方法:

hadoop fs -D fs.local.block.size=536870912 -put local_name remote_location
用更大的块制作一个新的副本,但我没有这样做。我还更改了lustre上文件的条纹大小。对于本地文件系统,似乎忽略了与块大小有关的任何参数

我知道使用lustre而不是HDFS是hadoop的一种非传统用法,但这正是我必须解决的问题。我想知道其他人是否有这方面的经验,或者除了我提到的以外还有什么想法可以尝试


如果有用的话,我正在使用cdh3u5。

你不认为这是光泽的问题吗?我很确定他们有这些问题的邮件列表。是的,我也认为这与光泽本身有关。