分享

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

fylanyu 发表于 2013-10-25 10:45:17 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 5 6052
昨天对hdfs的文件写入做了一个性能的测试。使用的是nutch-1.0里面带的hadoop,没有使用hadoop-0.20.X版本。入文件的方式是采用的hdfs自带的API,我也贴在后面了。
硬件环境:
master:  1台
slave:     4台
网卡:      百兆的网卡
网络环境:局域网
硬件环境都一般。配置很杂,反正不是很高的配置。

配置文件(主要就是hadoop-site.xml):
[ol]
  • 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
  • [/ol]复制代码
    写文件代码(就贴了最关键的一个方法,大家看看,如果要其他的我再发上来):
    [ol]
  • /**
  • * 移动本地文件到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();
  • }
  • }
  • }[/ol]复制代码
    测试结果(就是我写的一个日志文件):
    [ol]
  • 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)
  • ---------------------------------------------------[/ol]复制代码
          对于测试的结果大家看下,我认为测试的入文件的速率还是不很满意,大家是否能给点建议,比如测试的方式和配置文件的修改,谢谢大家。有疑问可回帖讨论也可给我发个邮件:dajuezhao@gmail.com
  • 已有(5)人评论

    跳转到指定楼层
    cryst2l 发表于 2013-10-25 10:45:17
    这份测试数据很不错,性能很多时候还需要通过调优配置来提升。
    回复

    使用道具 举报

    shihailong123 发表于 2013-10-25 10:45:17
    [ol]
  • dfs.block.size
  • 51200
  • 51.2M
  • [/ol]复制代码
    这里的单位是字节,后面描述的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机子上的文件吗吗?
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关闭

    推荐上一条 /2 下一条