您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 网站策划/UE > hadoop常见异常及解决办法
Hadoop常见异常分析及解决方法1.org.apache.hadoop.security.AccessControlException:Permissiondenied:user=FDC2,access=EXECUTE,inode=job_201010161322_0003:heipark:supergroup:rwx------解决方法:在hdfs-site.xml中添加如下:propertynamedfs.permissions/namevaluefalse/value/property2.localhost:Error:JAVA_HOMEisnotset.需要在conf/hadoop-env.sh中设置JAVA_HOME环境变量:......exportHADOOP_JOBTRACKER_OPTS=-Dcom.sun.management.jmxremote$HADOOP_JOBTRACKER_OPTSexportJAVA_HOME=/usr/customize/java3.Warning:$HADOOP_HOMEisdeprecated.分析:Hadoop在bin/hadoop-config.sh中对HADOOP_HOME进行了判断,意思是提醒你自己也定义了变量HADOOP_HOME.判断发生的地方:#therootoftheHadoopinstallationexportHADOOP_PREFIX=`dirname$this`/..exportHADOOP_HOME=${HADOOP_PREFIX}报出错误的地方:if[$HADOOP_HOME_WARN_SUPPRESS==]&&[$HADOOP_HOME!=];thenechoWarning:\$HADOOP_HOMEisdeprecated.1&2留着异常也无所谓不会对程序的正常运行产生影响。解决方法:添加exportHADOOP_HOME_WARN_SUPPRESS=TRUE到hadoop-env.sh中,注意要添加到集群中每一个节点中。4.ERRORorg.apache.hadoop.security.UserGroupInformation:PriviledgedActionExceptionjava.io.IOException:File...jobtracker.infocouldonlybereplicatedto0nodes,insteadof1分析:是防火墙的问题,需要把防火墙关掉。解决方法:首先StopHadoop集群,接着执行:sudoufwdisable1:ShuffleError:ExceededMAX_FAILED_UNIQUE_FETCHES;bailing-outAnswer:程序里面需要打开多个文件,进行分析,系统一般默认数量是1024,(用ulimit-a可以看到)对于正常使用是够了,但是对于程序来讲,就太少了。修改办法:修改2个文件。/etc/security/limits.confvi/etc/security/limits.conf加上:*softnofile102400*hardnofile409600$cd/etc/pam.d/$sudovilogin添加sessionrequired/lib/security/pam_limits.so针对第一个问题我纠正下答案:这是reduce预处理阶段shuffle时获取已完成的map的输出失败次数超过上限造成的,上限默认为5。引起此问题的方式可能会有很多种,比如网络连接不正常,连接超时,带宽较差以及端口阻塞等。。。通常框架内网络情况较好是不会出现此错误的。2:Toomanyfetch-failuresAnswer:出现这个问题主要是结点间的连通不够全面。1)检查、/etc/hosts要求本机ip对应服务器名要求要包含所有的服务器ip+服务器名2)检查.ssh/authorized_keys要求包含所有服务器(包括其自身)的publickey3:处理速度特别的慢出现map很快但是reduce很慢而且反复出现reduce=0%Answer:结合第二点,然后修改conf/hadoop-env.sh中的exportHADOOP_HEAPSIZE=40004:能够启动datanode,但无法访问,也无法结束的错误在重新格式化一个新的分布式文件时,需要将你NameNode上所配置的dfs.name.dir这一namenode用来存放NameNode持久存储名字空间及事务日志的本地文件系统路径删除,同时将各DataNode上的dfs.data.dir的路径DataNode存放块数据的本地文件系统路径的目录也删除。如本此配置就是在NameNode上删除/home/hadoop/NameData,在DataNode上删除/home/hadoop/DataNode1和/home/hadoop/DataNode2。这是因为Hadoop在格式化一个新的分布式文件系统时,每个存储的名字空间都对应了建立时间的那个版本(可以查看/home/hadoop/NameData/current目录下的VERSION文件,上面记录了版本信息),在重新格式化新的分布式系统文件时,最好先删除NameData目录。必须删除各DataNode的dfs.data.dir。这样才可以使namedode和datanode记录的信息版本对应。注意:删除是个很危险的动作,不能确认的情况下不能删除!!做好删除的文件等通通备份!!5:java.io.IOException:Couldnotobtainblock:blk_194219614024901469_1100file=/user/hive/warehouse/src_20090724_log/src_20090724_log出现这种情况大多是结点断了,没有连接上。6:java.lang.OutOfMemoryError:Javaheapspace出现这种异常,明显是jvm内存不够得原因,要修改所有的datanode的jvm内存大小。Java-Xms1024m-Xmx4096m一般jvm的最大内存使用应该为总内存大小的一半,我们使用的8G内存,所以设置为4096m,这一值可能依旧不是最优的值。Hadoop添加节点的方法自己实际添加节点过程:1.先在slave上配置好环境,包括ssh,jdk,相关config,lib,bin等的拷贝;2.将新的datanode的host加到集群namenode及其他datanode中去;3.将新的datanode的ip加到master的conf/slaves中;4.重启cluster,在cluster中看到新的datanode节点;5.运行bin/start-balancer.sh,这个会很耗时间备注:1.如果不balance,那么cluster会把新的数据都存放在新的node上,这样会降低mr的工作效率;2.也可调用bin/start-balancer.sh命令执行,也可加参数-threshold5threshold是平衡阈值,默认是10%,值越低各节点越平衡,但消耗时间也更长。3.balancer也可以在有mrjob的cluster上运行,默认dfs.balance.bandwidthPerSec很低,为1M/s。在没有mrjob时,可以提高该设置加快负载均衡时间。其他备注:1.必须确保slave的firewall已关闭;2.确保新的slave的ip已经添加到master及其他slaves的/etc/hosts中,反之也要将master及其他slave的ip添加到新的slave的/etc/hosts中mapper及reducer个数url地址:[]InputFormatdeterminesthenumberofmaps.ThenumberofmaptaskscanalsobeincreasedmanuallyusingtheJobConf'sconf.setNumMapTasks(intnum).Thiscanbeusedtoincreasethenumberofmaptasks,butwillnotsetthenumberbelowthatwhichHadoopdeterminesviasplittingtheinputdata.NumberofReducesTherightnumberofreducesseemstobe0.95or1.75*(nodes*mapred.tasktracker.tasks.maximum).At0.95allofthereducescanlaunchimmediatelyandstarttransferingmapoutputsasthemapsfinish.At1.75thefasternodeswillfinishtheir
本文标题:hadoop常见异常及解决办法
链接地址:https://www.777doc.com/doc-3393774 .html