Hadoop 0.21如何运行单个test case

2019-03-28 13:49|来源: 网络

研究 Hadoop 0.21代码时,很多情况下需要运行单个test case,如果新增了功能要测试case能否通过或者自己写的test case需要测试等。而把test case全部运行一遍是很耗时的,严重影响开发效率。这里提供一个0.21 mapreduce的一个diff文件,用以修改build.xml文件,打上patch后即可在本地运行单个test case了。
  1. Index: build.xml  
  2. ===================================================================  
  3. --- build.xml   (revision 1102542)  
  4. +++ build.xml   (working copy)  
  5. @@ -685,6 +685,7 @@  
  6.                       value="@{hadoop.conf.dir.deployed}" />  
  7.          <classpath refid="@{classpath}"/>  
  8.          <formatter type="${test.junit.output.format}" />  
  9. +        <test name="${testcase}" todir="${test.build.dir}" if="testcase"/>  
  10.          <batchtest todir="@{test.dir}" unless="testcase">  
  11.            <fileset dir="@{fileset.dir}/@{suite.type}"  
  12.              excludes="**/${test.exclude}.java aop/** system/**">  
  13. @@ -776,7 +777,18 @@  
  14.        fileset.dir="${test.src.dir}"/>  
  15.     </target>  
  16.    
  17. +  <target name="run-ut"  
  18. +    depends="compile-mapred-test" if="testcase">  
  19. +    <macro-test-runner  
  20. +      test.file="${test.mapred.all.tests.file}"  
  21. +      suite.type="mapred"  
  22. +      classpath="${test.classpath.id}"  
  23. +      test.dir="${test.build.dir}"  
  24. +      fileset.dir="${test.src.dir}"/>  
  25. +  </target>  
  26.    
  27. +  
  28. +  
  29.    <target name="checkfailure" if="tests.failed">  
  30.      <touch file="${test.build.dir}/testsfailed"/>  
  31.      <fail unless="continueOnFailure">Tests failed!</fail>  
示例如下:

ant run-ut -Dtestcase="org.apache.hadoop.conf.TestJobConf"


运行结束后就可以在${test.build.dir},即build/test看到log文件了。如上面的示例的log文件为:

build/test/TEST-org.apache.hadoop.conf.TestJobConf.txt

更多Hadoop相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

相关问答

更多
  • 如何删除hadoop?[2024-03-03]

    命令:hadoop fs -rmr /home/mm/lily2(要求是你把hadoop的bin加到PATH中,并开启hadoop) rm -rf /home/mm/lily2(这是删除linux文件系统的文件夹)
  • hadoop 运行问题[2021-09-25]

    解决方案: 1. 格式化namenode: # hadoop namenode -format 2. 重新启动hadoop# sh stop-all.sh# sh start-all.sh 3. 查看后台进程# jps13508 NameNode11008 SecondaryNameNode14393 Jps11096 JobTracker此时namenode启动 4. 运行# hadoop fs -ls12/01/31 14:04:39 INFO security.Groups: Group mappin ...
  • Hadoop的默认(FIFO)调度程序的工作方式如下 :当节点具有空闲容量时,它会联系主服务器并要求更多的工作。 主服务器尝试分配数据本地任务或机架本地任务,但如果不能,它会将队列中的任何任务(等待任务)分配给该节点。 然而,当这个节点被分配了这个非本地任务(我们称之为任务X)时,另一个节点有可能还有剩余容量并联系主请求工作。 即使该节点实际上拥有X所需的本地数据副本,也不会分配该任务,因为其他节点能够比后者节点稍快地获得对主节点的锁定。 这会导致数据局部性较差,但会导致FAST任务分配 。 相比之下, 公 ...
  • 这些位与您注意到的相同。 不同之处在于默认运行的服务和Ambari组件集(在Spark上你将有额外的spark thrift,livy,jupyter)和这些服务的配置集。 因此,虽然技术上可以在hadoop集群上的纱线上运行火花作业,但不推荐使用,但某些配置可能未设置为最佳值。 反过来会更可靠 - 创建火花集群并在其上运行hadoop作业。 Maxim(HDInsight Spark PM) The bits are the same as you noticed. The difference is s ...
  • 您可以在这里看一下这个问题,了解为什么在运行hadoop jar命令时,在边缘节点(客户机节点)中提取jar的原因。 它是从客户端节点运行jar时支持'jar-within-jar'的想法。 把罐子推到HDFS,纱线和所有这些都发生在那之后但是,在这些发生之前,你的罐子必须先执行,对吧? 在你的情况下,你可能有jar-within-jar或者你可能没有,但是这个概念是受支持的。 关于自动删除,可能不会自动删除。 You can probably look at here and this question ...
  • 您需要考虑的几点: 你真的在Hadoop或其本地模式下运行代码吗? (看看你的工作是否在jobtracker和tasktracker上看到) 您是否在环境中导出了HADOOP变量? 群集是单个节点还是多个节点? 即使群集是多个节点,所有节点都健康吗? 其他节点有问题吗? 你正确使用setNumReduceTasks吗? 您可以通过删除详细信息(仅用于调试)将代码缩减为小型map-reduce代码。 运行。 走着瞧吧。 面对同样的问题,请在原始问题中提供简化代码。 Few points that you ne ...
  • 看起来像unix和windows之间的回车差异导致问题。 尝试在shell脚本上运行dos2unix 转到hadoop bin目录并尝试: dos2unix.exe hadoop.sh 然后尝试hadoop命令。 Seems like carriage return difference between unix and windows is causing the problem . Try running dos2unix on the shell script Go to the hadoop bi ...
  • 我不确定你要做什么但是logs不作为命令存在。 hadoop.sh的可用命令是: fs run a generic filesystem user client version print the version jar run a jar file note: please use "yarn jar" to launch ...
  • 猪可以以两种模式运行: 本地模式。 在这种模式下,根本不使用Hadoop集群。 所有进程都在单个JVM中运行,文件从本地文件系统中读取。 要以本地模式运行Pig,请使用以下命令: pig -x local MapReduce模式。 在此模式下,Pig将脚本转换为MapReduce作业并在Hadoop集群上运行它们。 这是默认模式。 群集可以是本地的或远程的。 Pig使用HADOOP_MAPRED_HOME环境变量在本地计算机上查找Hadoop安装(请参阅安装Pig )。 如果要连接到远程集群,则应在pi ...
  • 我能够使用版本1.1.2让Hadoop在NFS上运行。 它可能适用于其他版本,但我无法保证任何事情。 如果您有NFS文件系统,那么每个节点都应该有权访问文件系统。 fs.default.name告诉Hadoop要使用的文件系统URI,因此应该指向本地磁盘。 我假设你的NFS目录被挂载到/ nfs的每个节点。 在core-site.xml中,您应该定义: fs.default.name file:///