《hadoop安装及运行维护汇总小问题.doc》由会员分享,可在线阅读,更多相关《hadoop安装及运行维护汇总小问题.doc(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流hadoop安装及运行维护汇总小问题.精品文档.windows安装hadoop博客分类: hadoopWindowsHadoopJavaJDKMapreducehadoop是什么就不多说了,看这里hadoop推荐部署环境是在linux,但是我们想要在windows体验一下还是可以的,followme我的环境:windowsxp,hadoop安装包(0.20.1),cygwin打开cygwinJava代码1. explorer.把hadoop的包放到这个目录下然后输入命令Java代码1. tarzxfhadoop-0.20.1.tar.gz解压
2、完成后进入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. dfs.name.dir3.
3、 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,同样在bin目录下Java代码
4、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-format时为啥会出现下面
5、的错误提示,我的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:Nosuchfileordirectoryva
6、/jdk1.6.0_10/bin/java:cannotexecute:NOsuchfileordirectory0_10请指教解决了:在conf/目录下执行“dos2unixhadoop-env.sh”就OK了。Lulu_pcB. hadoop错误INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1 .2012-05-14 16:23:13|分类:hadoop|字号订阅hadoop安装完成后,必须要用haddop namenode format格式化后,才能使用,如果重启机器在启动hadoop后,用hadoop fs
7、 -ls命令老是报 10/09/25 18:35:29 INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 0 time(s).的错误,用jps命令,也看不不到namenode的进程, 必须再用命令hadoop namenode format格式化后,才能再使用 原因是:hadoop默认配置是把一些tmp文件放在/tmp目录下,重启系统后,tmp目录下的东西被清除,所以报错 解决方法:在conf/core-site.xml (0.19.2版本的为conf/hadoop-site
8、.xml)中增加以下内容 hadoop.tmp.dir /var/log/hadoop/tmp A base for other temporary directories 重启hadoop后,格式化namenode即可C. 错误1. .could only be replicated to 0 nodes,instead of 1这个错误主要的解决方法是:1.把 tmp文件全部删除。2.然后把hadoop/conf目录下的slaves,masters文件内容全部改成 127.0.0.13.重新格式化namenode :(bin/hadoop namenode -format)也许你不知道ha
9、doop 的tmp文件在哪里,默认情况下应该才 cygwin根目录下的tmp文件夹内:如下图所示:把它们都删掉。就OK了。 (cd /tmp , rm -rf *)参考博客:错误2:name node is in safe mode直接输入命令: bin/hadoop dfsadmin -safemode leave 离开安全模式-华丽分割-记录配置过程到此结束,如有错误,烦请指出,不胜感激。D. hadoop集群启动start-all.sh的时候,slave总是无法启动datanode,并会报错: could only be replicated to 0 nodes, instead of
10、 1 就是有节点的标识可能重复(个人认为这个错误的原因)。也可能有其他原因,一下解决方法请依次尝试,我是解决了。解决方法:1. 删除所有节点dfs.data.dir和dfs.tmp.dir目录(默认为tmp/dfs/data和tmp/dfs/tmp)下的数据文件;然后重新hadoop namenode -format 格式化节点;然后启动。2. 如果是端口访问的问题,你应该确保所用的端口都打开,比如hdfs:/machine1:9000/、50030、50070之类的。执行#iptables -I INPUT -p tcp dport 9000 -j ACCEPT 命令。3. 如果还有报错:h
11、dfs.DFSClient: Exception in createBlockOutputStream .ConnectException: Connection refused;应该是datanode上的端口不能访问,到datanode上修改iptables:#iptables -I INPUT -s machine1 -p tcp -j ACCEPT4. 还有可能是防火墙的限制集群间的互相通信。尝试关闭防火墙。/etc/init.d/iptables stop5. 最后还有可能磁盘空间不够了,请查看 df -al6. 我在解决这个问题的时候还有人说:先后启动namenode、datanod
12、e可以解决这个问题(本人尝试发现没用,大家可以试试)$hadoop-daemon.sh start namenode ; $hadoop-daemon.sh start datanodeE.(1) 如果datanode连接不上namenode,导致datanode无法启动。ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Call to . failed on local exception: .NoRouteToHostException: No route to host(2)报错INFO
13、hdfs.DFSClient:ExceptionincreateBlockOutputStreamjava.io.EOFExceptionINFOhdfs.DFSClient:Abandoningblockblk_-1772232086636991无法向datanode写数据块,即表明无法向datanode正常连接解决方法:关闭防火墙:如果是Linux系统复制代码代码如下:service iptables stop禁用selinux:编辑 /etc/selinux/config文件,设置“SELINUX=disabled”如果是在windows平台,则需要将由cygwin安装的sshd程序加入
14、被windows防火墙允许通过的程序。F. 安全模式导致的错误org.apache.hadoop.dfs.SafeModeException: Cannot delete ., Name node is in safe mode在分布式文件系统启动的时候,开始的时候会有安全模式,当分布式文件系统处于安全模式的情况下,文件系统中的内容不允许修改也不允许删除,直到安全模式结束。安全模式主要是为了系统启动的时候检查各个DataNode上数据块的有效性,同时根据策略必要的复制或者删除部分数据块。运行期通过命令也可以进入安全模式。在实践过程中,系统启动的时候去修改和删除文件也会有安全模式不允许修改的出错
15、提示,只需要等待一会儿即可。复制代码代码如下:hadoop dfsadmin -safemode leaveG. hadoop-root-datanode-master.log 中有如下错误:ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceIDs in导致datanode启动不了。原因:每次namenode format会重新创建一个namenodeId,而dfs.data.dir参数配置的目录中包含的是上次format创建的id,和dfs.nam
16、e.dir参数配置的目录中的id不一致。namenode format清空了namenode下的数据,但是没有清空datanode下的数据,导致启动时失败,所要做的就是每次fotmat前,清空dfs.data.dir参数配置的目录.格式化hdfs的命令复制代码代码如下:hadoop namenode -format关闭安全模式H. 代码总是不能成功运行,?产生如下错误:java.io.FileNotFoundException: FileE:/tmp/hadoop-SYSTEM/mapred/local/taskTracker/jobcache/job_201005020105_0001/at
17、tempt_201005020105_0001_m_000002_0/work/tmpdoes not exist.at org.apache.hadoop.fs.RawLocalFileSystem.getFileStatus(RawLocalFileSystem.java:361)at org.apache.hadoop.fs.FilterFileSystem.getFileStatus(FilterFileSystem.java:245)at org.apache.hadoop.mapred.TaskRunner.setupWorkDir(TaskRunner.java:519)at o
18、rg.apache.hadoop.mapred.Child.main(Child.java:155)在?Cygwin?下必须设置mapreduce任务的中间暂存目录mapred.child.tmp,否则会出错的?在mapred-site.xml中:?添加:?mapred.child.tmp/home/hadoop-0.20.1/temp?注:尽量不要使用系统的/tmp,可能因某种原因会丢失文件,然后对namenode进行格式化$ hadoop namenode -format如果报错无法格式化,存在不可删除的文件,可能是因为hadoop.tmp.dir的目录中对应的目录中的文件没删除干净。即删
19、除hadoop/tmp/dfs目录中 data和tmp或者name中的current目录的数据文件如果文件不可删除,报错设备忙或者资源忙错误,则是被相关的进程所占用,通过ps查看,杀掉相关的进程id。(如果是windows环境部署hadoop,则java进程需要被任务管理器杀死)。删除相关的占用进程,即可删除hadoop/tmp/dfs中的残存数据文件,然后重新对namenode格式化。然后执行相关的命令运行hadoop$ start-all.sh$ hadoop dfsadmin -report 查看当前hadoop的配置情况,包括datanode情况$ hadoop jar jar文件 任
20、务 Input目录 output目录进行相关的hadoop任务二、hadoop集群启动start-all.sh的时候,slave总是无法启动datanode,并会报错: could only be replicated to 0 nodes, instead of 1 就是有节点的标识可能重复(个人认为这个错误的原因)。也可能有其他原因,一下解决方法请依次尝试,我是解决了。解决方法:删除所有节点dfs.data.dir和dfs.tmp.dir目录(默认为tmp/dfs/data和tmp/dfs/tmp)下的数据文件;然后重新hadoop namenode -format 格式化节点;然后启动。
21、如果是端口访问的问题,你应该确保所用的端口都打开,比如hdfs:/machine1:9000/、50030、50070之类的。执行#iptables -I INPUT -p tcp dport 9000 -j ACCEPT 命令。如果还有报错:hdfs.DFSClient: Exception in createBlockOutputStream .ConnectException: Connection refused;应该是datanode上的端口不能访问,到datanode上修改iptables:#iptables -I INPUT -s machine1 -p tcp -j ACCEPT还有可能是防火墙的限制集群间的互相通信。尝试关闭防火墙。/etc/init.d/iptables stop最后还有可能磁盘空间不够了,请查看 df -al我在解决这个问题的时候还有人说:先后启动namenode、datanode可以解决这个问题(本人尝试发现没用,大家可以试试)$hadoop-daemon.sh start namenode ; $hadoop-daemon.sh start datanode