本文共 15854 字,大约阅读时间需要 52 分钟。
本文讲的是Hadoop On Demand用户指南,【IT168 资讯】后面的文档包括一个快速入门指南能让你快速上手HOD,一个所有HOD特性的详细手册,命令行选项,一些已知问题和故障排除的信息。
HOD使用入门 在这部分,我们将会逐步骤地介绍使用HOD涉及到的最基本的操作。在开始遵循这些步骤之前,我们假定HOD及其依赖的软硬件均已被正确安装和配置。这步通常由集群的系统管理员负责。 HOD的用户界面是一个命令行工具,叫做hod。它被一个通常由系统管理员为用户设置好的配置文件所驱动。用户在使用hod的时候可以覆盖这个配置,文档的后面会由介绍。使用hod时有如下两种方式可以指定配置文件: 在命令行中指定,使用 -c 选项。例如hod -c path-to-the-configuration-file [ohter-options] 在运行hod的地方设置环境变量HOD_CONF_DIR。这个变量应指向指向一个本地目录,其中有名为hodrc的文件。这与Hadoop中的HADOOP_CONF_DIR与hadoop-site.xml文件是类似的。如果命令行中未指定配置文件,hod会查找HOD_CONF_DIR环境变量指定目录下的hodrc文件。 下面的例子中,我们将不会明确指出这个配置选项,假定其已正确指定。一个典型HOD会话 一个典型HOD会话至少包括三个步骤:分配,执行Hadoop作业,回收。为此,执行如下步骤。创建一个集群目录 集群目录是本地文件系统上的一个目录,hod会为它分配的集群产生对应的Hadoop配置hadoop-site.xml,放在这个目录下。这个目录可以按下文所述方式传递给hod操作。如果这个目录不存在,HOD会自动创建这个目录。一但分配好了集群,用户可通过Hadoop --config选项指定集群目录,在之上运行Hadoop作业。allocate操作 allocate操作用来分配一组节点并在之上安装和提供Hadoop。它的语法如下。注意它要求指定参数集群目录(-d, --hod.clusterdir)和节点个数(-n, --hod.nodecount):$ hod allocate -d cluster_dir -n number_of_nodes [OPTIONS] 如果命令成功执行,cluster_dir/hadoop-site.xml会被生成,文件中包含了分配出的集群的信息。它也会打印出关于Hadoop的web UI的信息。 试运行这个命令会产生如下输出。注意在这个例子中集群目录是~/hod-clusters/test,我们要分配5个节点:$ hod allocate -d ~/hod-clusters/test -n 5 INFO - HDFS UI on INFO - Mapred UI on 在分配的集群上执行Hadoop作业 现在,可以用一般的方式在分配的集群上执行Hadoop作业了。这是假定像JAVA_HOME,指向Hadoop安装的路径已被正确地设置了:$ hadoop --config cluster_dir hadoop_command hadoop_command_args或者$ export HADOOP_CONF_DIR=cluster_dir $ hadoop hadoop_command hadoop_command_args 继续我们的例子,下面的命令会在分配的集群上运行wordcount的例子:$ hadoop --config ~/hod-clusters/test jar /path/to/hadoop/hadoop-examples.jar wordcount /path/to/input /path/to/output或者$ export HADOOP_CONF_DIR=~/hod-clusters/test $ hadoop jar /path/to/hadoop/hadoop-examples.jar wordcount /path/to/input /path/to/outputdeallocate操作 deallocate操作用来回收分配到的集群。当完成集群使用之后,必须执行回收操作使这些节点可以为其他用户所用。deallocate操作的语法如下。注意它需要集群目录(-d, --hod.clusterdir)作为参数:$ hod deallocate -d cluster_dir 继续我们的例子,如下命令会回收集群:$ hod deallocate -d ~/hod-clusters/test 如你所见,HOD允许用户分配一个集群,随意的使用它来运行Hadoop作业。例如,通过从多个shell中启动使用同一个配置的hadoop,用户可以做到在同一个集群上并发运行多个作业。使用HOD运行Hadoop脚本 HOD的script操作能将集群的分配,使用和回收组织在一起。这对那些想运行Hadoop作业脚本,期望HOD能在脚本结束后自动完成清理操作的用户特别管用。用hod执行Hadoop脚本,需要这么做:创建脚本文件 这是一个普通的shell脚本,通常里面会包含hadoop命令,如:$ hadoop jar jar_file options 当然,用户可以向脚本中添加任何有效的命令。HOD会在执行这个脚本时自动地设置HADOOP_CONF_DIR指向分配的集群。用户不必对此担心。不过,像分配操作时一样,用户需要指定一个集群目录。运行脚本 脚本操作的语法如下。注意它需要集群目录(-d, --hod.clusterdir),节点个数(-n, --hod.nodecount)以及脚本文件(-s, --hod.script)作为参数:$ hod script -d cluster_directory -n number_of_nodes -s script_file 注意一但脚本执行完毕,HOD就会回收集群,这意味着脚本必须要做到等hadoop作业完成后脚本才结束。用户写脚本时必须注意这点。HOD的功能供应与管理Hadoop集群 HOD主要功能是供应Hadoop的Map/Reduce和HDFS集群。这些在见入门一节已经做过描述。 此外,要是还有节点可用,并且组织上也批准,一个用户可以在同一时间内使用HOD分配多个Map/Reduce集群。对于分配到的不同集群,用户需要为上面提到的cluster_dir参数指定不同的路径。HOD提供list和info操作可以管理多个集群。list操作 list操作能列举到目前为止用户所创建的所有集群。存放hadoop-site.xml的集群目录,与JobTracker和/或HDFS的连接及状态也会被显示出来。list操作的使用语法如下:$ hod listinfo操作 info操作会显示指定集群相关的信息。这些信息包括Torque作业id,HOD Ringmaster进程,Hadoop的JobTracker和NameNode守护进程等重要守护进程的位置。info操作的语法如下。注意它需要集群目录(-d, --hod.clusterdir)作为参数:$ hod info -d cluster_dir cluster_dir应为前面allocate操作中指定的有效集群目录。使用tarball分发Hadoop 供应Hadoop时,HOD可以使用集群节点上已经安装好的Hadoop,也可以将hadoop的tarball作为供应操作的一部分在节点上进行分发和安装。如果使用tarball选项,就不必非得使用预装的Hadoop了,也不要求集群节点上必须有一个预装的版本。这对开发/QE环境下在一个共享集群上测试不同版本hadoop的开发者尤其有用。 要使用预装的Hadoop,你必须在hodrc中的gridservice-hdfs部分和gridservice-mapred部分指定pkgs选项。它必须指向集群中所有节点上Hadoop的安装路径。 指定Tarball的语法如下:$ hod allocate -d cluster_dir -n number_of_nodes -t hadoop_tarball_location 例如,下面的命令根据tarball~/share/hadoop.tar.gz分配Hadoop:$ hod allocate -d ~/hadoop-cluster -n 10 -t ~/share/hadoop.tar.gz 类似地,使用hod脚本的语法如下:$ hod script -d cluster_directory -s scritp_file -n number_of_nodes -t hadoop_tarball_location 上面语法中指定的hadoop_tarball_location应指向从所有计算节点都可以访问的共享文件系统的路径。当前,HOD只支持挂载的NFS。注意: 为了获得更好分发性能,建议Hadoop tarball只包含库与二进制文件,不包含源代码或文档。 当你希望在用tarball方式分配的集群上执行作业,你必须使用兼容的Hadoop版本提交你的作业。最好的方式是解压,使用Tarball中的版本。 你需要确保在tar分发包的conf目录下没有Hadoop配置文件hadoop-env.sh和hadoop-site.xml。如果这些文件存在并包含错误的值,集群分配可能会失败。使用外部HDFS 在典型的由HOD提供的Hadoop集群中,HDFS已经被静态地(未使用HOD)设置好。这能使数据在HOD提供的集群被回收后还可以持久保存在HDFS中。为使用静态配置的HDFS,你的hodrc必须指向一个外部HDFS。具体就是,在hodrc的gridservice-hdfs部分将下面选项设置为正确的值:external = true host = HDFS NameNode主机名 fs_port = HDFS NameNode端口 info_port = HDFS NameNode web UI的端口 注意:你也可以从命令行开启这个选项。即,你这样去使用一个静态HDFS:$ hod allocate -d cluster_dir -n number_of_nodes --gridservice-hdfs.external 如果需要,HOD即可以供应HDFS集群也可以供应Map/Reduce的集群HOD。这需要设置hodrc中的gridservice-hdfs部分的下列选项:external = false配置Hadoop的选项 HOD提供一个非常方便的机制能配置它提供的Hadoop守护进程和它在客户端生成的hadoop-site.xml。通过在HOD配置文件中指定配置参数,或在分配集群时在命令行指定都可做到这点。配置Hadoop守护进程 要配置Hadoop守护进程,你可以这么做:对于Map/Reduce,指定gridservice-mapred部分的server-params项的指为一个以逗号分割的key-value对列表。同配置动态HDFS集群一样,设置gridservice-hdfs部分的server-params项。如果这些参数应被标记成final,将这些参数包含到相应部分的final-server-params项中。例如:server-params = mapred.reduce.parallel.copies=20,io.sort.factor=100,io.sort.mb=128,io.file.buffer.size=131072 final-server-params = mapred.child.java.opts=-Xmx512m,dfs.block.size=134217728,fs.inmemory.size.mb=128 要从命令行指定选项,你可以用如下语法: 配置Map/Reduce守护进程:$ hod allocate -d cluster_dir -n number_of_nodes -Mmapred.reduce.parallel.copies=20 -Mio.sort.factor=100 在上述例子中,mapred.reduce.parallel.copies参数和io.sort.factor参数将会被添加到server-params中,如果已经在server-params中存在,则它们会被覆盖。要将这些参数指定成final类型,你可以:$ hod allocate -d cluster_dir -n number_of_nodes -Fmapred.reduce.parallel.copies=20 -Fio.sort.factor=100 不过,应注意final参数无法被命令行改写的,只有在未指定的情形才能追加。 配置动态供应的HDFS守护进程的选项与此相似。用-H替换-M以,用-S替换-F即可。 配置Hadoop的作业提交(客户端)程序 如上所述,当allocate操作成功后,cluster_dir/hadoop-site.xml将会生成,其中会包含分配的集群的JobTracker和NameNode的信息。这个配置用于向集群提交作业。HOD提供选项可将其它的hadoop配置参数添加到该文件,其语法如下:$ hod allocate -d cluster_dir -n number_of_nodes -Cmapred.userlog.limit.kb=200 -Cmapred.child.java.opts=-Xmx512m 上例中,mapred.userlog.limit.kb和mapred.child.java.opts会被添加到hod产生的hadoop-site.xml中。查看Hadoop的Web-UI HOD的allocate操作会打印出JobTracker和NameNode的Web UI的URL。例如:$ hod allocate -d ~/hadoop-cluster -n 10 -c ~/hod-conf-dir/hodrc INFO - HDFS UI on INFO - Mapred UI on 上面提到的info操作可以给你同样的信息。收集和查看Hadoop日志 要获取在某些分配节点上运行的守护进程的Hadoop日志: 登录感兴趣的节点。如果你想查看JobTracker或者NameNode的日志,list和info操作能告诉你这些进程在那些节点上运行。 获取感兴趣的守护进程的进程信息(例如,ps ux | grep TaskTracker) 在这些进程信息中,查找变量-Dhadoop.log.dir的值。通常是hod配置文件里hodring.temp-dir目录的一个子目录 。 切换到hadoop.log.dir目录以查看守护进程日志和用户日志。 HOD也提供了一个机制,能让你在集群回收后将日志收集存放到文件系统,或者一个在外部配置的HDFS中。这样的话,在作业完成,节点回收后你还可以看这些日志。要做到这点,像下面一样为log-destination-uri指定一个URI:log-destination-uri= hdfs://host123:45678/user/hod/logs或者 log-destination-uri= file://path/to/store/log/files 在上面指定的的根目录中,HOD会创建路径user_name/torque_jobid,把作业涉及到的每个节点上的日志文件gzip压缩,存放在里面。 注意要在HDFS上存储这些文件,你得将hodring.pkgs项配置为和刚才提到的HDFS兼容的版本。否则,HOD会尝试使用它供应Hadoop集群时用到的Hadoop版本。闲置集群的自动回收 HOD会自动回收在一段时间内没有运行Hadoop作业的集群。每次的HOD分配会带有一个监控设施不停地检查Hadoop作业的执行。如果侦测到在一定时间内没Hadoop作业在执行,它就回收这个集群,释放那些未被有效利用的节点。 注意:当集群被回收时,集群目录没有被自动清空。用户须通过一个正式的deallcocate操作清理它。指定额外的作业属性 HOD允许用户为一个Torque作业指定一个时钟时间和一个名称(或者标题)。 时钟时间是对Torque作业有效时间的一个估计。这个时间过期后,Torque将自动删除这个作业,释放其节点。指定这个时钟时间还能帮助作业调度程序更好的安排作业,提高对集群资源的使用率。 指定时钟时间的语法如下:$ hod allocate -d cluster_dir -n number_of_nodes -l time_in_seconds Torque作业的名称或标题能给用户以友好的作业标识。每次展示Torque作业的属性的时候,这个字符串就会出现,包括qstat命令。 指定名称或标题的语法如下:$ hod allocate -d cluster_dir -n number_of_nodes -N name_of_job 注意:由于底层Torque资源管理器的限制,不以字母开头或者包含空格的名字将导致作业失败。失败信息会表明问题存在于指定的作业名称中。捕获HOD在Torque中的退出码 HOD退出码出现在Torque的exit_status字段中。这有助于使用者和系统管理员区分成功的HOD执行和失败的HOD执行。如果分配成功且所有Hadoop作业在所分配的集群上正确的执行,退出码为0。如果分配失败或者部分hadoop作业在分配集群上运行失败,退出码非0。下表列出了可能出现的退出码。注意:只有所使用的Hadoop版本是0.16或以上时,Hadoop作业状态才可以被捕获。退出码 含义 6 Ringmaster故障 7 DFS故障 8 Job tracker故障 10 集群死亡 12 集群已分配 13 HDFS死亡 14 Mapred死亡 16 集群中所有的Map/Reduce作业失败。查看hadoop日志了解更多细节。 17 集群中部分的Map/Reduce作业失败。查看hadoop日志了解更多细节。命令行 HOD命令行的通用的语法如下:hod [ARGS] [OPTIONS]允许的操作有‘allocate’,‘deallocate’,‘info’,‘list’,‘script’以及‘help’。要获取某特定操作的帮助你可以执行:hod help 。要查看可能的操作你可以执行hod help options。allocate 用法:hod allocate -d cluster_dir -n number_of_nodes [OPTIONS] 分配一个指定节点数目的集群,把分配信息存放在cluster_dir方便后续hadoop命令使用。注意cluster_dir必须在运行该命令前已经存在。list 用法:hod list [OPTIONS] 列举出用户分配的所有集群。提供的信息包括集群对应的的Torque作业标识,存储分配信息的集群目录,Map/Reduce守护进程是否存活。info 用法:hod info -d cluster_dir [OPTIONS] 列举集群分配信息存放于某指定集群目录的集群信息。deallocate 用法:hod deallocate -d cluster_dir [OPTIONS] 回收集群分配信息存放于某指定集群目录的集群。script 用法:hod script -s script_file -d cluster_directory -n number_of_node [OPTIONS] 用HODscript操作执行一个hadoop脚本。在给定数目的节点上提供Hadoop,在提交的节点执行这个脚本,并在脚本执行结束后回收集群。help 用法:hod help [operation | 'options'] 未指定参数时,hod help给出用法以及基本选项,等同于hod --help (见下文)。当指定参数‘options’时,显示hod的基本选项。当指定operation时,它会显示出该特定operation的用法和相应的描述。例如,希望了解allocate操作,你可以执行hod help allocate 除上面的操作外,HOD还能接受下列命令行选项。--help 打印出用法和基本选项的帮助信息。--verbose-help hodrc文件中所有的配置项均可通过命令行传递,使用语法--section_name.option_name[=vlaue]。这种方式下,命令行传递的参数会覆盖hodrc中的配置项。verbose-help命令会列出hodrc文件中全部可用项。这也是一个了解配置选项含义的好方法。 下一部分有多数重要的hod配置项的描述。对于基本选项,你可以通过hod help options了解,对于所有的hod配置中的可能选项,你可以参看hod --verbose-help的输出。了解所有选项的描述,请参看配置指南。HOD配置选项 如上所述,HOD的配置是通过系统管理员设置配置文件完成。这是一个INI风格的配置文件,文件分成多个段,每个段包含一些配置项。这些段分别和HOD的进程:client,ringmaster,hodring,mapreduce或hdfs相关。每一个配置项有选项名和值构成。 有两种方式可让用户覆盖默认配置文件里的设定: 在每条命令前,用户可以向HOD提供自己的配置文件,使用-c选项。 用户可以在命令行指定HOD的配置选项覆盖正使用的配置文件中提供的值。 这一节介绍一些最常用的配置项。为了指定方便,这些常用选项通常会有一个短选项名。所有其它选项可能用随后介绍的长选项指定。-c config_file 提供要使用的配置文件。可与其他任何的HOD选项一起使用。此外,可定义HOD_CONF_DIR环境变量为一个包含hodrc文件的目录,避免每条HOD命令都要指定配置文件。-d cluster_dir 大多数hod操作都要求这个选项。如此处描述的,集群目录是在本地文件系统上的一个目录,hod将它分配集群的相应Hadoop配置产生在这个目录里,即hadoop-site.xml。使用-d或者--hod.clusterdir将这个参数传递给hod操作,如果目录不存在,HOD会自动创建该目录。集群分配好后,用户可在这个集群上,通过指定hadoop--config为集群目录来执行Hadoop作业。-n number_of_nodes hod allocation操作和script操作要求这个选项。表示要分配的节点数。-s script-file 脚本操作时需要,用于指定要执行的脚本文件。-b 1|2|3|4 启用给定的调试级别。能与其他HOD选项一起使用。级别4最为详尽。-t hadoop_tarball 从指定tar.gz文件提供Hadoop分发。此选项值只适用于allocate操作。为获得更好的分发性能,强烈推荐创建Hadoop tarball前删除其中的源代码或文档。-N job-name 内部使用的资源管理作业名。比如,对于Torque作为资源管理器的情况,会被解释成qsub -N选项,使用qstat命令时可以看到这个作业名。-l wall-clock-time 用户希望在分配的集群作业的时间总量。它被传递给HOD底层的资源管理器,用于更有效地调度和利用集群。注意对于Torque的情形,这个时间到期后,集群会在被自动回收。-j java-home JAVA_HOME环境变量里指定的路径。在script操作中使用。HOD将JAVA_HOME环境变量设置为这个值,并在此环境下启动用户脚本。-A account-string 传递给后台资源管理器的核计信息。-Q queue-name 接受作业提交的后台资源管理器中队列的名称。-Mkey1=value1 -Mkey2=value2 为供应的Map/Reduce守护进程(JobTracker以及TaskTracker)提供配置参数。在集群节点上,会根据这些值产生一个hadoop-site.xml。 注意:值中的下列字符:空格,逗号,等号,分号需要使用‘’转义, 且放置在引号中。你也可以使用‘’来转义‘’。-Hkey1=value1 -Hkey2=value2 为供应的HDFS守护进程(NameNode以及DataNode)提供配置参数。在集群节点上,会根据这些值产生一个hadoop-site.xml。 注意:值中的下列字符:空格,逗号,等号,分号需要使用‘’转义, 且放置在引号中。你也可以使用‘’来转义‘’。-Ckey1=value1 -Ckey2=value2 为提交作业的客户端提供配置参数。在提交节点上,会根据这些值产生一个hadoop-site.xml。 注意:参数值可以使用以下符号:空格,逗号,等号,需要‘’做转义符的分号,上述符号要用引号进行分割。你也可以使用‘’转义‘’。--section-name.option-name=value 这是用长格式提供配置选项的方法。比如,你可以--hod.script-wait-time=20故障排除 下节列出了一些用户使用HOD时可能碰到的多发错误的条件以及解决问题的方法分配操作时hod挂起 可能原因:HOD或Hadoop的一个组件启动失败。这种情况下,hod命令会在一段时间(通常是2-3分钟)后返回,退出码是错误代码部分定义的错误码7或8。参考该部分以获得更多细节。 可能原因:使用tarball模式申请了大规模的集群。有时由于网络负载,或者是分配节点上的负载,tarball分发过程可能会慢的比较明显,需要几分钟才能响应。等待命令完成。还可以检查一下tarball,看是否不含Hadoop源码或文档。 可能原因:Torque相关的问题。如果原因与Torque相关,hod命令5分钟内是不会返回的。在调试模式下运行hod你会发现qstat命令被重复执行。在另一个shell中执行qstat命令你会发现作业处于Q(排队)状态。这通常说明Torque出现了问题。可能原因有个别节点宕机,或者增加了新节点但Torque不知。通常,需要系统管理员帮助解决此问题。回收操作时hod挂起 可能原因:Torque相关的问题,通常是Torque server上的负载较大,或者是分配的集群非常大。一般来说,你唯一能做的是等待命令执行完成。hod失败时的错误代码和错误信息 如果hod命令的退出码不是0,参考下面的退出代码表确定此情况发生的原因和相应的调试方法。错误代码错误代码 含义 可能原因及补救方法1 配置错误 hodrc中的参数错误,或者其他与HOD配置相关的错误。此类情况下,错误信息已经足够帮你发现和解决问题。 2 无效操作 执行hod help查看有效的操作列表。 3 无效操作参数 执行hod help operation查看特定操作的用法。 4 调度失败你可以登录到HOD失败信息中给出的ringmaster主机,根据错误信息的提示解决问题。如果错误信息没有给出完整的信息,ringmaster日志也可能帮助找到问题的根源。参考下面定位Ringmaster日志一节了解更多信息。
7 DFS故障 当HOD由于DFS故障(或者Job tracker失败,错误码8,下文有介绍)分配失败时,它会打印错误信息 "Hodring at failed with following errors:",并给出真正的错误信息,这个信息可能表明下列情形中的一种:8 Job tracker故障 与DFS故障情形中的原因类似。
10 集群死亡13 HDFS死亡 无法与HDFS的NameNode通信。HDFS的NameNode停掉了。
14 Mapred死亡15 集群未分配 一个需要已分配集群的操作被指以一个没有状态信息的集群目录。
任意非0退出代码 HOD脚本错误 如果使用了hod的脚本选项,很可能这个退出代码是脚本的退出吗。不幸的是,这可能会与hod自己的退出码冲突。为帮助用户区分两者,如果脚本返回了一个退出码,hod将此退出码写到了集群目录下的script.exitcode文件。你可以cat这个文件以确定脚本的退出码。如果文件不存在,则退出代码是hod命令的退出码。Hadoop DFSClient警告NotReplicatedYetException信息 有时,当你申请到一个HOD集群后马上尝试上传文件到HDFS时,DFSClient会警告NotReplicatedYetException。通常会有一个这样的信息 -WARN hdfs.DFSClient: NotReplicatedYetException sleeping retries left 3 08/01/25 16:31:40 INFO hdfs.DFSClient: org.apache.hadoop.ipc.RemoteException: java.io.IOException: File could only be replicated to 0 nodes, instead of 1 当你向一个DataNodes正在和NameNode联络的集群上传文件的时候,这种现象就会发生。在上传新文件到HDFS之前多等待一段时间就可以解决这个问题,因为这使得足够多的DataNode启动并且联络上了NameNode。成功分配的集群上无法运行Hadoop作业 这一情景通常发生在这种情形:一个集群已经分配,并且一段时间内处于不活跃状态,之后hadoop作业试图在这个集群上运行。Hadoop作业会失败,产生如下异常信息:08/01/25 16:31:40 INFO ipc.Client: Retrying connect to server: foo.bar.com/1.1.1.1:53567. Already tried 1 time(s). 可能原因:相当长的时间内无hadoop作业运行,集群会如闲置集群的自动回收一节介绍的那样被自动回收。回收该集群,然后重新分配。 可能原因:从分配开始算起,Torque管理员指定的或指定额外的作业属性一节中定义的-l选项指定的时间上限过期。这种情况下集群可能已被释放。回收集群,然后重新分配。 可能原因:提交作业使用的hadoop版本和供应集群的Hadoop版本(通常通过tarball选项)不匹配。确保使用的兼容的版本。 可能原因: 提交job的hadoop客户端与提供的hadoop(通常通过tarball选项)版本不兼容。 确保所使用hadoop软件版本兼容。 可能原因: 你使用了-M or -H中的一个指定Hadoop配置,其中有未正确转义的字符比如空格或逗号。参考HOD配置选项一节以了解如何正确指定这些选项。我的Hadoop作业被中止了 可能原因:从分配开始算起,Torque管理员指定的或指定额外的作业属性一节中定义的-l选项指定的时间上限过期。这种情况下集群可能已被释放。回收集群,然后重新分配,这次要制定一个大点儿的时钟时间。 可能原因: JobTracker节点出现问题。参考收集和查看Hadoop日志一节以获取更多信息。Hadoop作业失败并返回消息:‘Job tracker still initializing’ 可能原因:hadoop作业是作为HOD脚本的一部分运行的,它在JobTracker完全就绪前开始了执行。分配集群时为配置选--hod.script-wait-time设定一个大点儿的值。通常取120是可以工作的,尽管通常没必要这么大。Torque的退出代码没有包含HOD的 可能原因:此功能需要Hadoop 0.16。所用的Hadoop版本不满足这个条件。请使用合适的Hadoop版本。 可能原因:没有使用hod命令回收集群;例如直接使用qdel。当使用这种方式回收集群时,HOD进程被信号中止。这会导致退出码是基于signal number的,而不是程序的退出码。Hadoop日志未被上传到DFS 可能原因:上传日志的使用的hadoop与外部的HDFS版本不兼容。确保hodring.pkgs选项指定了正确的版本。定位Ringmaster日志 遵循以下步骤定位ringmaster日志: 用-b选项在调试模式执行hod。这会打印出当前运行的Torque作业的标识。 执行qstat -f torque_job_id,在输出中查找exec_host参数的值。列表中的第一个主机就是ringmaster节点。 登陆该节点。 ringmaster日志的位置由hodrc中的ringmaster.log-dir项指定。日志文件的名字会是username.torque_job_id/ringmaster-main.log。 如果你没有获取到足够的信息,你可以将ringmaster的调试级别设为4。这可通过向hod命令行传递--ringmaster.debug 4做到。定位Hodring日志 遵循以下步骤定位hodring日志: 用-b选项在调试模式下运行hod。这将打印当前运行的Torque作业的标识。 执行qstat -f torque_job_id,查看输出中exec_host参数的值。列表中的的所有节点上都有一个hodring。 登陆到任何一个节点。 hodring日志的位置由hodrc中的hodring.log-dir项指定。日志文件的名字会是username.torque_job_id/hodring-main.log。 如果你没有获得足够的信息,你或许想将hodring的调试等级更改为4。这可以向hod命令行传递--hodring.debug 4 来做到。原文发布时间为:2009-06-15
本文作者: IT168.com本文来自云栖社区合作伙伴IT168,了解相关信息可以关注IT168。原文标题:Hadoop On Demand用户指南转载地址:http://ficul.baihongyu.com/