fylanyu 发表于 2013-10-25 10:45:17

写文件到HDFS中的测试流程及问题

昨天对hdfs的文件写入做了一个性能的测试。使用的是nutch-1.0里面带的hadoop,没有使用hadoop-0.20.X版本。入文件的方式是采用的hdfs自带的API,我也贴在后面了。
硬件环境:
master:1台
slave:   4台
网卡:      百兆的网卡
网络环境:局域网
硬件环境都一般。配置很杂,反正不是很高的配置。

配置文件(主要就是hadoop-site.xml):
[*]
[*]
[*]
[*]
[*]
[*]
[*]
[*]
[*]fs.default.name
[*]hdfs://10.0.14.27:9000
[*]
[*]
[*]
[*]mapred.job.tracker
[*]hdfs://10.0.14.27:9001
[*]
[*]
[*]
[*]hadoop.tmp.dir
[*]/data/hadoopdata/tmp
[*]
[*]
[*]
[*]dfs.data.dir
[*]/data/hadoopdata/data
[*]
[*]
[*]
[*]dfs.name.dir
[*]/data/hadoopdata/name
[*]
[*]
[*]
[*]dfs.replication
[*]1
[*]
[*]
[*]
[*]dfs.block.size
[*]51200
[*]51.2M
[*]
[*]
[*]复制代码
写文件代码(就贴了最关键的一个方法,大家看看,如果要其他的我再发上来):
[*]/**
[*]* 移动本地文件到hdfs文件系统中
[*]*
[*]* @param src
[*]* @param dst
[*]*/
[*]public static void MoveLocalToHDFS(String src,String dst) {
[*]Configuration conf = new Configuration();
[*]FileSystem fs = null;
[*]try {
[*]fs = FileSystem.get(conf);
[*]Path srcPath = new Path(src);
[*]Path dstPath = new Path(dst);
[*]fs.copyFromLocalFile(srcPath, dstPath);
[*]System.out.println("Move " + src + " to hdfs://" + dst + " successful!");
[*]} catch (Exception e) {
[*]System.err.println("Move file fail!");
[*]e.printStackTrace();
[*]} finally {
[*]try {
[*]fs.close();
[*]} catch (IOException e) {
[*]System.err.println("Close FileSystem fail!");
[*]e.printStackTrace();
[*]}
[*]}
[*]}复制代码
测试结果(就是我写的一个日志文件):
[*]File Path:/data/192.168.1.20/001/
[*]File Size:138781(byte)
[*]Backup:1
[*]Block:5120(byte)
[*]Total:1151 (ms)
[*]---------------------------------------------------
[*]File Path:/usr/java/
[*]File Size:779274867(byte)
[*]Backup:1
[*]Block:5120(byte)
[*]Total:552776 (ms)
[*]---------------------------------------------------
[*]File Path:/usr/java/
[*]File Size:779274867(byte)
[*]Backup:1
[*]Block:51200(byte)
[*]Total:226141 (ms)
[*]---------------------------------------------------
[*]File Path:/usr/java/
[*]File Size:779274867(byte)
[*]Backup:1
[*]Block:102400(byte)
[*]Total:190598 (ms)
[*]---------------------------------------------------
[*]File Path:/root/inputhadoop/
[*]File Size:77584134(byte)
[*]Backup:1
[*]Block:102400(byte)
[*]Total:13089 (ms)
[*]---------------------------------------------------
[*]File Path:/root/inputhadoop/
[*]File Size:77584134(byte)
[*]Backup:1
[*]Block:51200(byte)
[*]Total:16642 (ms)
[*]---------------------------------------------------
[*]File Path:/root/inputhadoop/
[*]File Size:77584134(byte)
[*]Backup:3
[*]Block:51200(byte)
[*]Total:38917 (ms)
[*]---------------------------------------------------
[*]File Path:/usr/test/
[*]File Size:2604269568(byte)
[*]Backup:1
[*]Block:51200(byte)
[*]Total:463945 (ms)
[*]---------------------------------------------------复制代码
      对于测试的结果大家看下,我认为测试的入文件的速率还是不很满意,大家是否能给点建议,比如测试的方式和配置文件的修改,谢谢大家。有疑问可回帖讨论也可给我发个邮件:dajuezhao@gmail.com

cryst2l 发表于 2013-10-25 10:45:17

这份测试数据很不错,性能很多时候还需要通过调优配置来提升。

shihailong123 发表于 2013-10-25 10:45:17

[*]
[*]
[*]dfs.block.size
[*]
[*]51200
[*]
[*]51.2M
[*]
[*]复制代码
这里的单位是字节,后面描述的51.2M是错误的
发帖超过了60分钟不能改了!跟帖修正!

wscl1213 发表于 2013-10-25 10:45:17

请问lz,测试数据是如何得到的呢吗?通过自己在程序里判断开始和结束时间吗?

wscl1213 发表于 2013-10-25 10:45:17

这个测试做的很早了,数据就是一些文件内容。测试内容是通过代码实现,所以一些时间的记录都是通过代码直接写到日志文件

starrycheng 发表于 2013-10-25 10:45:17

你的本地文件指什么吗?一台没有安装hadoop机子上的文件吗吗?
页: [1]
查看完整版本: 写文件到HDFS中的测试流程及问题