goldtimes 发表于 2013-10-25 10:43:24

请教:Java客户端并发访问HDFS的问题。

刚刚开始看HDFS,对客户端访问HDFS做了一个简单的并发测试,对测试结果比较疑惑,请各位帮忙看看;

测试环境描述:HDFS由一个NameNode(一台物理机)和两个DataNode(两台物理机)组成,客户端在区域网内的另一台机器;
测试过程描述:
首先,HDFS上已经存在了一个大约12M的文件;
然后,客户端启动多根线程,每根线程都去分别获取文件;
测试结果是:
当客户端为1根线程时,客户端获取到文件的处理时间为672ms:
当客户端为5根线程时,客户端每根线程获取到文件的平均处理时间为1800ms:
当客户端为10根线程时,客户端每根线程获取到文件的平均处理时间为3500ms:
下面是我的测试代码:
[*]package hdfs;
[*]
[*]import java.io.ByteArrayOutputStream;
[*]import java.io.FileNotFoundException;
[*]import java.io.IOException;
[*]import java.net.URI;
[*]import java.util.concurrent.ExecutorService;
[*]import java.util.concurrent.Executors;
[*]
[*]import org.apache.hadoop.conf.Configuration;
[*]import org.apache.hadoop.fs.FSDataInputStream;
[*]import org.apache.hadoop.fs.FileSystem;
[*]import org.apache.hadoop.fs.Path;
[*]import org.apache.hadoop.io.IOUtils;
[*]
[*]public class TestProblem {
[*]
[*]      public static void main(String[] args) throws FileNotFoundException, IOException {
[*]                final String dst = "hdfs://172.16.4.14:9000/user/hdfs/apk/20.apk";
[*]                final Configuration conf = new Configuration();
[*]                final FileSystem fs = FileSystem.get(URI.create(dst), conf);
[*]
[*]                //客户端请求线程数
[*]                int count = 10;
[*]
[*]                ExecutorService es = Executors.newCachedThreadPool();
[*]                for (int i = 0; i 复制代码
非常奇怪,随着客户端处理线程的增加,处理时间很急剧上升,是我的代码有吗?瓶颈在哪儿吗?
日志看起来似乎都是正常的;
请各位帮忙看看,谢谢。
补充说明:我只通过bin/start-dfs.sh脚本启动服务,并没有开启hadoop的其他功能。

JavaShoote 发表于 2013-10-25 10:43:24

怎么没人呢。。。。

mexiang 发表于 2013-10-25 10:43:24

请各位帮帮忙看看哦,呵呵。

sq331335144 发表于 2013-10-25 10:43:24

都到编码阶段了,我还没开始编码,方便的话留个联系方式交流下,我的邮箱fly542@163.com

mituan2008 发表于 2013-10-25 10:43:24

扣扣:4五40六047九,欢迎交流啊。

fylanyu 发表于 2013-10-25 10:43:24

怎么的都没人的呢吗?吗?

mituan2008 发表于 2013-10-25 10:43:24

随着客户端处理线程的增加,你的namnode就是这个,要处理的数据多了,当然时间会长,namenode的rpc服务器是采用nio,本质是一个队列处理的,当然要一个一个请求排队

JavaShoote 发表于 2013-10-25 10:43:24

随着客户端处理线程的增加,你的namnode就是这个,要处理的数据多了,当然时间会长,namenode的rpc服务器是 ...
sunshine 发表于 2011-9-29 16:47

http://www.hadoopor.com/images/common/back.gif

ipc.server.read.threadpool.size默认1
dfs.namenode.handler.count      默认3
以上设置 增加数目试试
页: [1]
查看完整版本: 请教:Java客户端并发访问HDFS的问题。