《hadoop安装及运行维护汇总小问题复习进程.doc》由会员分享,可在线阅读,更多相关《hadoop安装及运行维护汇总小问题复习进程.doc(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Good is good, but better carries it.精益求精,善益求善。hadoop安装及运行维护汇总小问题-windows安装hadoop博客分类: hadoopWindowsHadoopJavaJDKMapreducehadoop是什么就不多说了,看这里hadoop推荐部署环境是在linux,但是我们想要在windows体验一下还是可以的,followme我的环境:windowsxp,hadoop安装包(0.20.1),cygwin打开cygwinJava代码1. explorer.把hadoop的包放到这个目录下然后输入命令Java代码1. tarzxfhadoop-
2、0.20.1.tar.gz解压完成后进入hadoop-0.20.1的配置目录,打开core-site.xml,加入以下内容。这里是定义namenode运行地址和端口Xml代码1. 2. fs.default.name3. hdfs:/localhost:90004. 打开hdfs-site.xml,加入以下内容Java代码1. 2. dfs.replication3. 14. 这里把复制因子设置为1是因为我们在windows上做伪分布,只能启动一个datanode接下来可以定义namenode数据目录,和datanode数据目录。当然这个不是必须的,默认是在/tmp目录下面Xml代码1. 2.
3、 dfs.name.dir3. c:/filesystem/name4. 5. 6. dfs.data.dir7. c:/filesystem/data8. 最后修改hadoop-env.sh,把下面注释的这行打开,并设置为你的jdk路径。如果你的java在ProgramFiles下,则整个jdk路径加引号Java代码exportJAVA_HOME=你的jdk路径ok,在cygwin下进入bin目录,首先需要格式化namenodeJava代码1. ./hadoopnamenode-format然后启动namenodeJava代码1. ./hadoopnamenode再打开一个datanode,
4、同样在bin目录下Java代码1. ./hadoopdatanode不出意外,你会看到namenodedatanode我们可以试一下上传文件Java代码1. ./hadoopfs-putd:/download/vmware6.03.rar/tt/vm.rarlist一下Java代码1. ./hadoopfs-lsr/tt结果:Java代码1. -rw-r-r-1Administratorsupergroup207939702010-01-1815:52/tt/vm.rar有兴趣的筒子可以去c:/filesystem/data/current看看哈:)A.当我执行./hadoopnamenode
5、-format时为啥会出现下面的错误提示,我的hadoop-env.sh中JAVA_HOME配置为:exportJAVA_HOME=/cygdrive/d/Java/jdk1.6.0_10。出现的问题是:/cygdrive/d/hadoop/bin/.conf/hadoop-env.sh:line2:$r:commandnotfound./cygdrive/d/hadoop/bin/.conf/hadoop-env.sh:line52:$r:commandnotfound/bin/java:Nosuchfileordirectoryva/jdk1.6.0_10/bin/java:Nosuchf
6、ileordirectoryva/jdk1.6.0_10/bin/java:cannotexecute:NOsuchfileordirectory0_10请指教解决了:在conf/目录下执行“dos2unixhadoop-env.sh”就OK了。Lulu_pcB.hadoop错误INFOipc.Client:Retryingconnecttoserver:localhost/127.0.0.1.2012-05-1416:23:13|分类:hadoop|字号订阅hadoop安装完成后,必须要用haddopnamenodeformat格式化后,才能使用,如果重启机器在启动hadoop后,用hado
7、opfs-ls命令老是报10/09/2518:35:29INFOipc.Client:Retryingconnecttoserver:localhost/127.0.0.1:9000.Alreadytried0time(s).的错误,用jps命令,也看不不到namenode的进程,必须再用命令hadoopnamenodeformat格式化后,才能再使用原因是:hadoop默认配置是把一些tmp文件放在/tmp目录下,重启系统后,tmp目录下的东西被清除,所以报错解决方法:在conf/core-site.xml(0.19.2版本的为conf/hadoop-site.xml)中增加以下内容hado
8、op.tmp.dir/var/log/hadoop/tmpAbaseforothertemporarydirectories重启hadoop后,格式化namenode即可C.错误1.couldonlybereplicatedto0nodes,insteadof1这个错误主要的解决方法是:1.把tmp文件全部删除。2.然后把hadoop/conf目录下的slaves,masters文件内容全部改成127.0.0.13.重新格式化namenode:(bin/hadoopnamenode-format)也许你不知道hadoop的tmp文件在哪里,默认情况下应该才cygwin根目录下的tmp文件夹内:
9、如下图所示:把它们都删掉。就OK了。(cd/tmp,rm-rf*)参考博客:错误2:namenodeisinsafemode直接输入命令:bin/hadoopdfsadmin-safemodeleave离开安全模式-华丽分割-记录配置过程到此结束,如有错误,烦请指出,不胜感激。D.hadoop集群启动start-all.sh的时候,slave总是无法启动datanode,并会报错:couldonlybereplicatedto0nodes,insteadof1就是有节点的标识可能重复(个人认为这个错误的原因)。也可能有其他原因,一下解决方法请依次尝试,我是解决了。解决方法:1. 删除所有节点d
10、fs.data.dir和dfs.tmp.dir目录(默认为tmp/dfs/data和tmp/dfs/tmp)下的数据文件;然后重新hadoopnamenode-format格式化节点;然后启动。2. 如果是端口访问的问题,你应该确保所用的端口都打开,比如hdfs:/machine1:9000/、50030、50070之类的。执行#iptables-IINPUT-ptcpdport9000-jACCEPT命令。3. 如果还有报错:hdfs.DFSClient:ExceptionincreateBlockOutputS.ConnectException:Connectionrefused;应该是d
11、atanode上的端口不能访问,到datanode上修改iptables:#iptables-IINPUT-smachine1-ptcp-jACCEPT4. 还有可能是防火墙的限制集群间的互相通信。尝试关闭防火墙。/etc/init.d/iptablesstop5. 最后还有可能磁盘空间不够了,请查看df-al我在解决这个问题的时候还有人说:先后启动namenode、datanode可以解决这个问题(本人尝试发现没用,大家可以试试)$hadoop-daemon.shstartnamenode;$hadoop-daemon.shstartdatanodeE.(1)如果datanode连接不上na
12、menode,导致datanode无法启动。ERRORorg.apache.hadoop.hdfs.server.datanode.DataNode:java.io.IOException:Callto.failedonlocalexception:.NoRouteToHostException:Noroutetohost(2)报错INFOhdfs.DFSClient:ExceptionincreateBlockOutputStreamjava.io.EOFExceptionINFOhdfs.DFSClient:Abandoningblockblk_-1772232086636991无法向da
13、tanode写数据块,即表明无法向datanode正常连接解决方法:关闭防火墙:如果是Linux系统复制代码代码如下:serviceiptablesstop禁用selinux:编辑/etc/selinux/config文件,设置“SELINUX=disabled”如果是在windows平台,则需要将由cygwin安装的sshd程序加入被windows防火墙允许通过的程序。F.安全模式导致的错误org.apache.hadoop.dfs.SafeModeException:Cannotdelete.,Namenodeisinsafemode在分布式文件系统启动的时候,开始的时候会有安全模式,当分
14、布式文件系统处于安全模式的情况下,文件系统中的内容不允许修改也不允许删除,直到安全模式结束。安全模式主要是为了系统启动的时候检查各个DataNode上数据块的有效性,同时根据策略必要的复制或者删除部分数据块。运行期通过命令也可以进入安全模式。在实践过程中,系统启动的时候去修改和删除文件也会有安全模式不允许修改的出错提示,只需要等待一会儿即可。复制代码代码如下:hadoopdfsadmin-safemodeleaveG.hadoop-root-datanode-master.log中有如下错误:ERRORorg.apache.hadoop.hdfs.server.datanode.DataNod
15、e:java.io.IOException:IncompatiblenamespaceIDsin导致datanode启动不了。原因:每次namenodeformat会重新创建一个namenodeId,而dfs.data.dir参数配置的目录中包含的是上次format创建的id,和dfs.name.dir参数配置的目录中的id不一致。namenodeformat清空了namenode下的数据,但是没有清空datanode下的数据,导致启动时失败,所要做的就是每次fotmat前,清空dfs.data.dir参数配置的目录.格式化hdfs的命令复制代码代码如下:hadoopnamenode-form
16、at关闭安全模式H.代码总是不能成功运行,?产生如下错误:java.io.FileNotFoundException:FileE:/tmp/hadoop-SYSTEM/mapred/local/taskTracker/jobcache/job_201005020105_0001/attempt_201005020105_0001_m_000002_0/work/tmpdoesnotexist.atorg.apache.hadoop.fs.RawLocalFileSystem.getFileStatus(RawLocalFileSystem.java:361)atorg.apache.hadoo
17、p.fs.FilterFileSystem.getFileStatus(FilterFileSystem.java:245)atorg.apache.hadoop.mapred.TaskRunner.setupWorkDir(TaskRunner.java:519)atorg.apache.hadoop.mapred.Child.main(Child.java:155)在?Cygwin?下必须设置mapreduce任务的中间暂存目录mapred.child.tmp,否则会出错的?在mapred-site.xml中:?添加:?mapred.child.tmp/home/hadoop-0.20.1
18、/temp?注:尽量不要使用系统的/tmp,可能因某种原因会丢失文件,然后对namenode进行格式化$hadoopnamenode-format如果报错无法格式化,存在不可删除的文件,可能是因为hadoop.tmp.dir的目录中对应的目录中的文件没删除干净。即删除hadoop/tmp/dfs目录中data和tmp或者name中的current目录的数据文件如果文件不可删除,报错设备忙或者资源忙错误,则是被相关的进程所占用,通过ps查看,杀掉相关的进程id。(如果是windows环境部署hadoop,则java进程需要被任务管理器杀死)。删除相关的占用进程,即可删除hadoop/tmp/df
19、s中的残存数据文件,然后重新对namenode格式化。然后执行相关的命令运行hadoop$start-all.sh$hadoopdfsadmin-report查看当前hadoop的配置情况,包括datanode情况$hadoopjarjar文件任务Input目录output目录进行相关的hadoop任务二、hadoop集群启动start-all.sh的时候,slave总是无法启动datanode,并会报错:couldonlybereplicatedto0nodes,insteadof1就是有节点的标识可能重复(个人认为这个错误的原因)。也可能有其他原因,一下解决方法请依次尝试,我是解决了。解决
20、方法:删除所有节点dfs.data.dir和dfs.tmp.dir目录(默认为tmp/dfs/data和tmp/dfs/tmp)下的数据文件;然后重新hadoopnamenode-format格式化节点;然后启动。如果是端口访问的问题,你应该确保所用的端口都打开,比如hdfs:/machine1:9000/、50030、50070之类的。执行#iptables-IINPUT-ptcpdport9000-jACCEPT命令。如果还有报错:hdfs.DFSClient:ExceptionincreateBlockOutputS.ConnectException:Connectionrefused;应该是datanode上的端口不能访问,到datanode上修改iptables:#iptables-IINPUT-smachine1-ptcp-jACCEPT还有可能是防火墙的限制集群间的互相通信。尝试关闭防火墙。/etc/init.d/iptablesstop最后还有可能磁盘空间不够了,请查看df-al我在解决这个问题的时候还有人说:先后启动namenode、datanode可以解决这个问题(本人尝试发现没用,大家可以试试)$hadoop-daemon.shstartnamenode;$hadoop-daemon.shstartdatanode-