`
icetea
  • 浏览: 8933 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

hdfs吞吐率与iops测试

阅读更多

1.测试环境:

1ns+1secondaryns+4ds

操作系统:Red Hat 4.1.2-46

CPU:      16  Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz

MEM:    12 GB

网卡:      1000Gb/s

2.测试准备:

ulimit -n 655350(临时生效)

ulimit -u 65535   (临时生效)

3.iops测试:

3.1测试代码

import org.apache.hadoop.conf.*;    
import org.apache.hadoop.fs.*;    
import org.apache.hadoop.hdfs.*;    
import org.apache.hadoop.hdfs.protocol.*;    
import java.util.concurrent.*;    
import java.lang.InterruptedException.*;    
                                                     
class single_thread implements Runnable{    
   private final CountDownLatch doneSignal;     
   private int name;    
   private String src;    
   private String dst;    
   private int size;    
   private Configuration conf;    
   private FileSystem hdfs;    
   private FileSystem local;    
   private Path srcPath;    
   private Path dstPath;    
   private FSDataOutputStream out;    
   private FSDataInputStream in;    
   private byte buffer[];    
   private long i;    
   private int b;    
   //static runTime_sum=0;    
                                                     
   public single_thread(int na,String src,String dst,int numOfM,CountDownLatch doneSignal_,int count){    
  this.doneSignal = doneSignal_;    
  try{    
   name = na;    
   conf = new Configuration();    
   hdfs = FileSystem.get(conf);    
   local = FileSystem.getLocal(conf);    
   long runTime=0,startTime,endTime;    
   if(src.contains("dev")){    
       //srcPath = new Path(src);    
     //  in = local.open(srcPath);    
           //in.close();    
       }    
   else{    
       for(int i1=0;i1<count;i1++)    
       {    
           srcPath = new Path(src+"zero"+name+"."+i1);    
           //startTime=System.nanoTime();    
           in = hdfs.open(srcPath);    
               in.close();    
           //endTime=System.nanoTime();    
           //runTime=runTime+(endTime-startTime);    
       }    
       //runTime/=1;    
       //runTime_sum+=runTime;    
       //System.out.println("iops :"+1000000000/runTime);    
       }    
   if(dst.contains("dev")){    
       //dstPath = new Path(dst);    
     //  out = local.create(dstPath);    
           //out.close();    
       }    
   else{    
       for(int i1=0;i1<count;i1++)    
       {    
           dstPath = new Path(dst+"zero"+name+"."+i1);    
           //startTime=System.nanoTime();    
           out = hdfs.create(dstPath);    
               out.close();    
           //endTime=System.nanoTime();    
           //runTime=runTime+(endTime-startTime);    
       }    
                                                            
       //runTime/=1;    
       //runTime_sum+=runTime;    
       //System.out.println("iops :"+1000000000/runTime);    
       }    
                                                     
   buffer = new byte[1024];    
   i=0;    
   size = numOfM;    
   }catch(Exception e){    
     System.err.println("error:"+e.toString());    
     }    
   }    
   public void run(){    
   try{    
                                                        
   while(i<1024*size){    
      i++;    
   }    
                                                     
    doneSignal.countDown();    
   }catch(Exception e){    
       System.err.println("error:"+e.toString());    
      }    
                                                        
                                                     
    }    
}    
                                                     
                                                     
public class hdfs_iops{    
   public static void main(String[] args)  throws  InterruptedException ,  ExecutionException {    
   //System.out.println("test");    
   int fileSize = 0;    
   int count = Integer.parseInt(args[2]);    
   int threadNum = Integer.parseInt(args[3]);    
   long totalSize = fileSize*threadNum*1024*1024;    
   CountDownLatch doneSignal = new CountDownLatch(threadNum);    
                                                        
   Thread t[] = new Thread[threadNum];    
   long startTime=System.nanoTime();    
   for(int num=0;num<threadNum;num++){    
       t[num] = new Thread(new single_thread(num,args[0],args[1],fileSize,doneSignal,count));    
    }    
   long endTime=System.nanoTime();    
   long runTime=(endTime-startTime)/count;    
                                                           
   //long startTime=System.nanoTime();    
   for(int num=0;num<threadNum;num++){    
       t[num].start();    
    }    
    doneSignal.await();    
   System.out.println("thread :"+threadNum+"count :"+count+"iops :"+threadNum/((double)runTime/(double)1000000000.0));     
                                                     
}    
}

 

3.2编译

javac -cp hadoop-core-1.0.3.jar hdfs_iops.java

3.3执行:

在非namenode上

写:

方法1:hadoop hdfs_iops /dev/zero hdfs://ns:9000/ 10(每个线程io次数) 100(线程个数)

方法2:

java -cp :/home/hadoop/hadoop-1.0.3/lib/asm-3.2.jar:/home/hadoop/hadoop-1.0.3/lib/aspectjrt-1.6.5.jar:/home/hadoop/hadoop-1.0.3/lib/aspectjtools-1.6.5.jar:/home/hadoop/hadoop-1.0.3/lib/commons-beanutils-1.7.0.jar:/home/hadoop/hadoop-1.0.3/lib/commons-beanutils-core-1.8.0.jar:/home/hadoop/hadoop-1.0.3/lib/commons-cli-1.2.jar:/home/hadoop/hadoop-1.0.3/lib/commons-codec-1.4.jar:/home/hadoop/hadoop-1.0.3/lib/commons-collections-3.2.1.jar:/home/hadoop/hadoop-1.0.3/lib/commons-configuration-1.6.jar:/home/hadoop/hadoop-1.0.3/lib/commons-daemon-1.0.1.jar:/home/hadoop/hadoop-1.0.3/lib/commons-digester-1.8.jar:/home/hadoop/hadoop-1.0.3/lib/commons-el-1.0.jar:/home/hadoop/hadoop-1.0.3/lib/commons-httpclient-3.0.1.jar:/home/hadoop/hadoop-1.0.3/lib/commons-io-2.1.jar:/home/hadoop/hadoop-1.0.3/lib/commons-lang-2.4.jar:/home/hadoop/hadoop-1.0.3/lib/commons-logging-1.1.1.jar:/home/hadoop/hadoop-1.0.3/lib/commons-logging-api-1.0.4.jar:/home/hadoop/hadoop-1.0.3/lib/commons-math-2.1.jar:/home/hadoop/hadoop-1.0.3/lib/commons-net-1.4.1.jar:/home/hadoop/hadoop-1.0.3/lib/core-3.1.1.jar:/home/hadoop/hadoop-1.0.3/lib/hadoop-capacity-scheduler-1.0.3.jar:/home/hadoop/hadoop-1.0.3/lib/hadoop-fairscheduler-1.0.3.jar:/home/hadoop/hadoop-1.0.3/lib/hadoop-thriftfs-1.0.3.jar:/home/hadoop/hadoop-1.0.3/lib/hsqldb-1.8.0.10.jar:/home/hadoop/hadoop-1.0.3/lib/jackson-core-asl-1.8.8.jar:/home/hadoop/hadoop-1.0.3/lib/jackson-mapper-asl-1.8.8.jar:/home/hadoop/hadoop-1.0.3/lib/jasper-compiler-5.5.12.jar:/home/hadoop/hadoop-1.0.3/lib/jasper-runtime-5.5.12.jar:/home/hadoop/hadoop-1.0.3/lib/jdeb-0.8.jar:/home/hadoop/hadoop-1.0.3/lib/jersey-core-1.8.jar:/home/hadoop/hadoop-1.0.3/lib/jersey-json-1.8.jar:/home/hadoop/hadoop-1.0.3/lib/jersey-server-1.8.jar:/home/hadoop/hadoop-1.0.3/lib/jets3t-0.6.1.jar:/home/hadoop/hadoop-1.0.3/lib/jetty-6.1.26.jar:/home/hadoop/hadoop-1.0.3/lib/jetty-util-6.1.26.jar:/home/hadoop/hadoop-1.0.3/lib/jsch-0.1.42.jar:/home/hadoop/hadoop-1.0.3/lib/junit-4.5.jar:/home/hadoop/hadoop-1.0.3/lib/kfs-0.2.2.jar:/home/hadoop/hadoop-1.0.3/lib/log4j-1.2.15.jar:/home/hadoop/hadoop-1.0.3/lib/mockito-all-1.8.5.jar:/home/hadoop/hadoop-1.0.3/lib/oro-2.0.8.jar:/home/hadoop/hadoop-1.0.3/lib/servlet-api-2.5-20081211.jar:/home/hadoop/hadoop-1.0.3/lib/slf4j-api-1.4.3.jar:/home/hadoop/hadoop-1.0.3/lib/slf4j-log4j12-1.4.3.jar:/home/hadoop/hadoop-1.0.3/lib/xmlenc-0.52.jar  hdfs_iops  /dev/zero hdfs://ns:9000/  10  100

 

读:

方法1:

hadoop hdfs_iops  hdfs://ns:9000/  /dev/null 10(每个线程io次数) 100(线程个数)

方法2参见写方法2

 

iops测试结果:

 

4.吞吐率测试

测试代码

import org.apache.hadoop.conf.*;     
import org.apache.hadoop.fs.*;     
import org.apache.hadoop.hdfs.*;     
import org.apache.hadoop.hdfs.protocol.*;     
import java.util.concurrent.*;     
import java.lang.InterruptedException.*;     
                           
class single_thread implements Runnable{     
   private final CountDownLatch doneSignal;      
   private int name;     
   private String src;     
   private String dst;     
   private int size;     
   private Configuration conf;     
   private FileSystem hdfs;     
   private FileSystem local;     
   private Path srcPath;     
   private Path dstPath;     
   private FSDataOutputStream out;     
   private FSDataInputStream in;     
   private byte buffer[];     
   private long i;     
   private int b;     
                           
   public single_thread(int na,String src,String dst,int numOfM,CountDownLatch doneSignal_){     
  this.doneSignal = doneSignal_;     
  try{     
   name = na;     
   conf = new Configuration();     
   hdfs = FileSystem.get(conf);     
   local = FileSystem.getLocal(conf);     
   if(src.contains("dev")){     
       srcPath = new Path(src);     
       in = local.open(srcPath);     
       }     
   else{     
       srcPath = new Path(src+"pero"+name);     
       in = hdfs.open(srcPath);     
       }     
   if(dst.contains("dev")){     
       dstPath = new Path(dst);     
       out = local.create(dstPath);     
       }     
   else{     
       dstPath = new Path(dst+"pero"+name);     
       out = hdfs.create(dstPath);     
       }     
                           
   buffer = new byte[4096];     
   i=0;     
   size = numOfM;     
   }catch(Exception e){     
     System.err.println("error:"+e.toString());     
     }     
   }     
   public void run(){     
   try{     
   //long startTime=System.nanoTime();     
                              
   while(i<256*size){     
      b=in.read(buffer);     
      out.write(buffer,0,b);     
      i++;     
   }     
                              
  // long endTime=System.nanoTime();     
  // long runTime=endTime-startTime;     
  // System.out.println(name+":"+runTime/1000000+"ns");     
                           
   }catch(Exception e){     
       System.err.println("error:"+e.toString());     
      }finally{     
      try{     
     in.close();     
     out.close();}catch(Exception e){     
     System.err.println("error:"+e.toString());     
     }     
     doneSignal.countDown();     
      }     
                              
  // System.out.println(1024*1024*size);     
                           
    }     
}     
                           
                           
public class hdfs_test{     
   public static void main(String[] args)  throws  InterruptedException ,  ExecutionException {     
   //System.out.println("test");     
   int fileSize = Integer.parseInt(args[2]);     
   int threadNum = Integer.parseInt(args[3]);     
   double totalSize = fileSize*threadNum*1024.0*1024.0;     
   CountDownLatch doneSignal = new CountDownLatch(threadNum);     
                              
   Thread t[] = new Thread[threadNum];     
   long startTime=System.nanoTime();     
   for(int num=0;num<threadNum;num++){     
       t[num] = new Thread(new single_thread(num,args[0],args[1],fileSize,doneSignal));     
       t[num].start();     
    }     
                              
   //for(int num=0;num<threadNum;num++){     
                                  
    //}     
    doneSignal.await();     
   long endTime=System.nanoTime();     
   long runTime=endTime-startTime;     
   System.out.println("totalSize:"+fileSize*threadNum+"MB   "+"totalTime:"+runTime/1000000+"ms");     
   if(fileSize==0)     
   System.out.println("iops :"+threadNum/((double)runTime/(double)1000000000.0));     
   else
   System.out.println("speed: "+totalSize*1000.0/(double)runTime+"  totalsize: "+totalSize+"   runtime: "+runTime);     
}     
}

 

编译与执行参照iops测试

(测试程序后面两个数字参数分别代表测试文件大小(以M为单位)和线程数目。)

吞吐率测试结果(由于数据规模等原因,部分结果不全):

分享到:
评论

相关推荐

    HDFS测试案例v0.3

    这个文档是关于HDFS测试案例的v0.3版本,主要涵盖了HDFS的工作原理和性能测试的详细过程。 1. 工作原理: - **写入原理**:在HDFS中,数据被分割成块(Block),每个块通常为128MB或256MB。当一个文件被写入时,...

    CDH4.3.0 HDFS 读写性能测试

    描述中的“HDFS 读写性能测试”意味着测试的重点在于衡量在CDH4.3.0环境下,HDFS在读取和写入数据时的效率、吞吐量以及延迟。这种测试对于理解系统在大数据处理工作负载下的表现至关重要,有助于优化集群配置,确保...

    基于HDFS分布式文件系统的大数据存储优点与功能.pdf

    其中,HDFS作为Hadoop的核心子项目,具有高容错、高可靠性、高可扩展性和高吞吐率等特征,为海量数据提供了不怕故障的存储。 HDFS的优点主要体现在以下几个方面: 首先,HDFS提供了分布式存储的功能。通过HDFS,...

    HDFS性能压测工具浅析

    这些工具不仅帮助开发者了解系统的吞吐率,还能揭示不同组件的性能瓶颈。 Terasort是一种基于MapReduce的排序工具,它不仅测试HDFS的性能,还验证了MapReduce框架的自动排序能力。Terasort包括三个部分:teragen...

    《HDFS——Hadoop分布式文件系统深度实践》PDF

    6. HDFS与MapReduce的协同工作:解释如何利用HDFS进行大规模数据处理。 7. 实战案例:展示HDFS在实际业务场景中的应用,如日志分析、推荐系统等。 8. 故障排查和监控:如何监控HDFS的状态,以及面对问题时的解决方法...

    Hadoop学习总结之二:HDFS读写过程解析

    Hadoop的分布式文件系统(HDFS)是大数据存储与处理的重要基石,其读写机制的设计旨在优化大规模数据集的访问效率与容错性。本文将深入剖析HDFS文件读取流程,重点探讨客户端如何打开文件、NameNode的角色以及其内部...

    flime安装+配置+测试+案例(采集日志至HDFS)

    在本文中,我们将深入探讨 Flume 的安装、配置、测试以及如何将其应用于实际案例,即从不同节点采集日志并存储到 HDFS。 首先,我们从安装 Flume 开始。Flume 的安装包括解压安装包,重命名 Flume 目录,配置 `...

    HDFS Comics HDFS 漫画

    HDFS是Hadoop分布式计算的存储基础。HDFS具有高容错性,可以部署在通用硬件设备上,适合数据密集型应用,并且提供对数据读写的高吞 吐量。HDFS能 够提供对数据的可扩展访问,通过简单地往集群里添加节点就可以解决...

    java-Hdfs体系结构与基本概念

    Java-HDFS 体系结构与基本概念 HDFS(Hadoop Distributed File System)是一种分布式文件系统,主要用于存储和管理大规模数据。HDFS 的设计初衷是为了满足高性能、高可靠性和高可扩展性的需求。 HDFS 体系结构 ...

    Hadoop技术内幕 深入解析HADOOP COMMON和HDFS架构设计与实现原理.pdf

    《Hadoop技术内幕:深入解析HADOOP COMMON和HDFS架构设计与实现原理》这本书是Hadoop技术领域的一本深入解析之作,它详尽地探讨了Hadoop的两大核心组件——HADOOP COMMON和HDFS(Hadoop Distributed File System)的...

    HDFS实例基本操作

    四、HDFS的文件创建与删除 1. 创建文件夹:使用`hadoop fs -mkdir`命令创建目录,如`hadoop fs -mkdir /myfolder`。 2. 删除文件:使用`hadoop fs -rm`命令删除文件,如`hadoop fs -rm hdfs://namenode:port/...

    hdfs-文件读写测试

    #### 二、测试环境与实验步骤 **测试环境:** - **集群版本:** Hadoop2.6.0.2.2.6.0-2800 - **集群架构:** - **Client:** 172.29.6.17 (datanode-c1) - **DataNodes:** 172.29.6.20 (datanode1), 172.29.6.19 ...

    Hadoop技术内幕 深入解析HADOOP COMMON和HDFS架构设计与实现原理

    《Hadoop技术内幕:深入解析HADOOP COMMON和HDFS架构设计与实现原理》这本书是IT领域的经典之作,专门探讨了Hadoop的核心组件——Hadoop Common和HDFS(Hadoop Distributed File System)的设计理念、架构及其背后的...

    HDFS部署与Shell命令使用

    ### HDFS部署与Shell命令使用 #### HDFS部署 Hadoop分布式文件系统(Hadoop Distributed File System,简称HDFS)是Hadoop项目的核心之一,它为海量数据提供了高吞吐量访问能力,非常适合一次写入多次读取的应用...

    storm-hdfs, 用于与HDFS文件系统交互的风暴组件.zip

    storm-hdfs, 用于与HDFS文件系统交互的风暴组件 风暴 HDFS用于与HDFS文件系统交互的风暴组件用法以下示例将在每 1,000个元组同步后将管道("|") -delimited文件写入HDFS路径 hdfs://localhost:54310/foo.,使它的对...

    分布式文件系统Hadoop HDFS与传统文件系统Linux FS的比较与分析.pdf

    分布式文件系统Hadoop HDFS与传统文件系统Linux FS的比较与分析涉及的知识点包括: 1. Hadoop的定义及其在云计算中的作用:Hadoop是一个开源项目,其核心是分布式并行框架,能够利用普通配置的计算机集群进行高效的...

    HDFS管理工具HDFS Explorer下载地址、使用方法.docx

    **HDFS管理工具HDFS Explorer** HDFS Explorer是一款专为Windows平台设计的HDFS文件管理系统,它使得用户能够像操作本地文件系统一样便捷地管理和浏览Hadoop分布式文件系统(HDFS)。尽管官方已经停止更新此软件,...

    HDFS可靠性策略

    这样可以防止机架失效时数据丢失,也可以提高带宽利用率。 心跳机制策略 NameNode 周期性从 DataNode 接收心跳信号和块报告,NameNode 根据块报告验证元数据。如果 DataNode 失效造成副本数量下降,并且低于预先...

Global site tag (gtag.js) - Google Analytics