- 浏览: 8933 次
- 性别:
- 来自: 武汉
文章分类
最新评论
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的工作原理和性能测试的详细过程。 1. 工作原理: - **写入原理**:在HDFS中,数据被分割成块(Block),每个块通常为128MB或256MB。当一个文件被写入时,...
描述中的“HDFS 读写性能测试”意味着测试的重点在于衡量在CDH4.3.0环境下,HDFS在读取和写入数据时的效率、吞吐量以及延迟。这种测试对于理解系统在大数据处理工作负载下的表现至关重要,有助于优化集群配置,确保...
其中,HDFS作为Hadoop的核心子项目,具有高容错、高可靠性、高可扩展性和高吞吐率等特征,为海量数据提供了不怕故障的存储。 HDFS的优点主要体现在以下几个方面: 首先,HDFS提供了分布式存储的功能。通过HDFS,...
这些工具不仅帮助开发者了解系统的吞吐率,还能揭示不同组件的性能瓶颈。 Terasort是一种基于MapReduce的排序工具,它不仅测试HDFS的性能,还验证了MapReduce框架的自动排序能力。Terasort包括三个部分:teragen...
6. HDFS与MapReduce的协同工作:解释如何利用HDFS进行大规模数据处理。 7. 实战案例:展示HDFS在实际业务场景中的应用,如日志分析、推荐系统等。 8. 故障排查和监控:如何监控HDFS的状态,以及面对问题时的解决方法...
Hadoop的分布式文件系统(HDFS)是大数据存储与处理的重要基石,其读写机制的设计旨在优化大规模数据集的访问效率与容错性。本文将深入剖析HDFS文件读取流程,重点探讨客户端如何打开文件、NameNode的角色以及其内部...
在本文中,我们将深入探讨 Flume 的安装、配置、测试以及如何将其应用于实际案例,即从不同节点采集日志并存储到 HDFS。 首先,我们从安装 Flume 开始。Flume 的安装包括解压安装包,重命名 Flume 目录,配置 `...
HDFS是Hadoop分布式计算的存储基础。HDFS具有高容错性,可以部署在通用硬件设备上,适合数据密集型应用,并且提供对数据读写的高吞 吐量。HDFS能 够提供对数据的可扩展访问,通过简单地往集群里添加节点就可以解决...
Java-HDFS 体系结构与基本概念 HDFS(Hadoop Distributed File System)是一种分布式文件系统,主要用于存储和管理大规模数据。HDFS 的设计初衷是为了满足高性能、高可靠性和高可扩展性的需求。 HDFS 体系结构 ...
《Hadoop技术内幕:深入解析HADOOP COMMON和HDFS架构设计与实现原理》这本书是Hadoop技术领域的一本深入解析之作,它详尽地探讨了Hadoop的两大核心组件——HADOOP COMMON和HDFS(Hadoop Distributed File System)的...
四、HDFS的文件创建与删除 1. 创建文件夹:使用`hadoop fs -mkdir`命令创建目录,如`hadoop fs -mkdir /myfolder`。 2. 删除文件:使用`hadoop fs -rm`命令删除文件,如`hadoop fs -rm hdfs://namenode:port/...
#### 二、测试环境与实验步骤 **测试环境:** - **集群版本:** 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架构设计与实现原理》这本书是IT领域的经典之作,专门探讨了Hadoop的核心组件——Hadoop Common和HDFS(Hadoop Distributed File System)的设计理念、架构及其背后的...
### HDFS部署与Shell命令使用 #### HDFS部署 Hadoop分布式文件系统(Hadoop Distributed File System,简称HDFS)是Hadoop项目的核心之一,它为海量数据提供了高吞吐量访问能力,非常适合一次写入多次读取的应用...
storm-hdfs, 用于与HDFS文件系统交互的风暴组件 风暴 HDFS用于与HDFS文件系统交互的风暴组件用法以下示例将在每 1,000个元组同步后将管道("|") -delimited文件写入HDFS路径 hdfs://localhost:54310/foo.,使它的对...
分布式文件系统Hadoop HDFS与传统文件系统Linux FS的比较与分析涉及的知识点包括: 1. Hadoop的定义及其在云计算中的作用:Hadoop是一个开源项目,其核心是分布式并行框架,能够利用普通配置的计算机集群进行高效的...
**HDFS管理工具HDFS Explorer** HDFS Explorer是一款专为Windows平台设计的HDFS文件管理系统,它使得用户能够像操作本地文件系统一样便捷地管理和浏览Hadoop分布式文件系统(HDFS)。尽管官方已经停止更新此软件,...
这样可以防止机架失效时数据丢失,也可以提高带宽利用率。 心跳机制策略 NameNode 周期性从 DataNode 接收心跳信号和块报告,NameNode 根据块报告验证元数据。如果 DataNode 失效造成副本数量下降,并且低于预先...