hadoop安装及运行维护汇总小问题共13页word资料.docx
《hadoop安装及运行维护汇总小问题共13页word资料.docx》由会员分享,可在线阅读,更多相关《hadoop安装及运行维护汇总小问题共13页word资料.docx(8页珍藏版)》请在冰豆网上搜索。
hadoop安装及运行维护汇总小问题共13页word资料
windows安装hadoop
博客分类:
∙hadoop
WindowsHadoopJavaJDKMapreduce
hadoop是什么就不多说了,看这里
hadoop推荐部署环境是在linux,但是我们想要在windows体验一下还是可以的,followme
我的环境:
windowsxp,hadoop安装包(0.20.1),cygwin打开cygwin
Java代码
1.explorer.
把hadoop的包放到这个目录下
然后输入命令
Java代码
1.tarzxfhadoop-0.20.1.tar.gz
解压完成后进入hadoop-0.20.1的配置目录,打开core-site.xml,加入以下内容。
这里是定义namenode运行地址和端口
Xml代码
1.
2.fs.default.name
3.hdfs:
//localhost:
9000
4.
打开hdfs-site.xml,加入以下内容
Java代码
1.
2.dfs.replication
3.1
4.
这里把复制因子设置为1是因为我们在windows上做伪分布,只能启动一个datanode
接下来可以定义namenode数据目录,和datanode数据目录。
当然这个不是必须的,默认是在/tmp目录下面
Xml代码
1.
2.dfs.name.dir
3.c:
/filesystem/name
4.
5.
6.dfs.data.dir
7.c:
/filesystem/data
8.
最后修改hadoop-env.sh,把下面注释的这行打开,并设置为你的jdk路径。
如果你的java在ProgramFiles下,则整个jdk路径加引号
Java代码
exportJAVA_HOME=你的jdk路径ok,在cygwin下进入bin目录,首先需要格式化namenode
Java代码
1../hadoopnamenode-format
然后启动namenode
Java代码
1../hadoopnamenode
再打开一个datanode,同样在bin目录下
Java代码
1../hadoopdatanode
不出意外,你会看到
namenode
datanode
我们可以试一下上传文件
Java代码
1../hadoopfs-putd:
/download/vmware6.03.rar/tt/vm.rar
list一下
Java代码
1../hadoopfs-lsr/tt
结果:
Java代码
1.-rw-r--r--1Administratorsupergroup207939702010-01-1815:
52/tt/vm.rar
有兴趣的筒子可以去c:
/filesystem/data/current看看哈:
)
A.当我执行./hadoopnamenode-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:
Nosuchfileordirectoryva/jdk1.6.0_10
/bin/java:
cannotexecute:
NOsuchfileordirectory0_10
请指教…………解决了:
在conf/目录下执行“dos2unixhadoop-env.sh”就OK了。
Lulu_pc
B.hadoop错误INFOipc.Client:
Retryingconnecttoserver:
localhost/127.0.0.1.
2012-05-1416:
23:
13| 分类:
hadoop|字号 订阅
hadoop安装完成后,必须要用haddopnamenodeformat格式化后,才能使用,如果重启机器
在启动hadoop后,用hadoopfs-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)中增加以下内容
hadoop.tmp.dir
/var/log/hadoop/tmp
Abaseforothertemporarydirectories
重启hadoop后,格式化namenode即可
C.错误1....couldonlybereplicatedto0nodes,insteadof1
这个错误主要的解决方法是:
1.把tmp文件全部删除。
2.然后把hadoop/conf目录下的slaves,masters文件内容全部改成127.0.0.1
3.重新格式化namenode:
(bin/hadoopnamenode-format)
也许你不知道hadoop的tmp文件在哪里,默认情况下应该才cygwin根目录下的tmp文件夹内:
如下图所示:
把它们都删掉。
就OK了。
(cd/tmp , rm-rf*)
参考博客:
http:
//albb0608.iteye/blog/1279495
错误2:
namenodeisinsafemode
直接输入命令:
bin/hadoopdfsadmin-safemodeleave离开安全模式
----------------------------------华丽分割------------------------------
记录配置过程到此结束,如有错误,烦请指出,不胜感激。
D.hadoop集群启动start-all.sh的时候,slave总是无法启动datanode,并会报错:
…couldonlybereplicatedto0nodes,insteadof1…
就是有节点的标识可能重复(个人认为这个错误的原因)。
也可能有其他原因,一下解决方法请依次尝试,我是解决了。
解决方法:
1.删除所有节点dfs.data.dir和dfs.tmp.dir目录(默认为tmp/dfs/data和tmp/dfs/tmp)下的数据文件;然后重新hadoopnamenode-format格式化节点;然后启动。
2.如果是端口访问的问题,你应该确保所用的端口都打开,比如hdfs:
//machine1:
9000/、50030、50070之类的。
执行#iptables-IINPUT-ptcp–dport9000-jACCEPT命令。
3.如果还有报错:
hdfs.DFSClient:
ExceptionincreateBlockOutputStreamjava.ConnectException:
Connectionrefused;应该是datanode上的端口不能访问,到datanode上修改iptables:
#iptables-IINPUT-smachine1-ptcp-jACCEPT
4.还有可能是防火墙的限制集群间的互相通信。
尝试关闭防火墙。
/etc/init.d/iptablesstop
5.最后还有可能磁盘空间不够了,请查看df-al
6.我在解决这个问题的时候还有人说:
先后启动namenode、datanode可以解决这个问题(本人尝试发现没用,大家可以试试)$hadoop-daemon.shstartnamenode;$hadoop-daemon.shstartdatanode
E.
(1)如果datanode连接不上namenode,导致datanode无法启动。
ERRORorg.apache.hadoop.hdfs.server.datanode.DataNode:
java.io.IOException:
Callto...failedonlocalexception:
java.NoRouteToHostException:
Noroutetohost
(2)报错 INFO hdfs.DFSClient:
Exception in createBlockOutputStream java.io.EOFException
INFO hdfs.DFSClient:
Abandoning block blk_-1772232086636991
无法向datanode写数据块,即表明无法向datanode正常连接
解决方法:
关闭防火墙:
如果是Linux系统复制代码代码如下:
serviceiptablesstop
禁用selinux:
编辑/etc/selinux/config文件,设置“SELINUX=disabled”
如果是在windows平台,则需要将由cygwin安装的sshd程序加入被windows防火墙允许通过的程序。
F.安全模式导致的错误
org.apache.hadoop.dfs.SafeModeException:
Cannotdelete...,Namenodeisinsafemode
在分布式文件系统启动的时候,开始的时候会有安全模式,当分布式文件系统处于安全模式的情况下,文件系统中的内容不允许修改也不允许删除,直到安全模式结束。
安全模式主要是为了系统启动的时候检查各个DataNode上数据块的有效性,同时根据策略必要的复制或者删除部分数据块。
运行期通过命令也可以进入安全模式。
在实践过程中,系统启动的时候去修改和删除文件也会有安全模式不允许修改的出错提示,只需要等待一会儿即可。
复制代码代码如下:
hadoopdfsadmin-safemodeleave
G.hadoop-root-datanode-master.log中有如下错误:
ERRORorg.apache.hadoop.hdfs.server.datanode.DataNode:
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-format
关闭安全模式
H.代码总是不能成功运行,?
产生如下错误:
java.io.FileNotFoundException:
File
E:
/tmp/hadoop-SYSTEM/mapred/local/taskTracker/jobcache/job_201005020105_0001/attempt_201005020105_0001_m_000002_0/work/tmp
doesnotexist.
atorg.apache.hadoop.fs.RawLocalFileSystem.getFileStatus(RawLocalFileSystem.java:
361)
atorg.apache.hadoop.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/temp
?
注:
尽量不要使用系统的/tmp,可能因某种原因会丢失文件,
然后对namenode进行格式化
$hadoopnamenode-format
如果报错无法格式化,存在不可删除的文件,可能是因为hadoop.tmp.dir的目录中对应的目录中的文件没删除干净。
即删除hadoop/tmp/dfs目录中data和tmp或者name中的current目录的数据文件
如果文件不可删除,报错设备忙或者资源忙错误,则是被相关的进程所占用,通过ps查看,杀掉相关的进程id。
(如果是windows环境部署hadoop,则java进程需要被任务管理器杀死)。
删除相关的占用进程,即可删除hadoop/tmp/dfs中的残存数据文件,然后重新对namenode格式化。
然后执行相关的命令运行hadoop
$start-all.sh
$hadoopdfsadmin-report查看当前hadoop的配置情况,包括datanode情况
$hadoopjarjar文件任务Input目录output目录进行相关的hadoop任务
二、hadoop集群启动start-all.sh的时候,slave总是无法启动datanode,并会报错:
…couldonlybereplicatedto0nodes,insteadof1…
就是有节点的标识可能重复(个人认为这个错误的原因)。
也可能有其他原因,一下解决方法请依次尝试,我是解决了。
解决方法:
删除所有节点dfs.data.dir和dfs.tmp.dir目录(默认为tmp/dfs/data和tmp/dfs/tmp)下的数据文件;然后重新hadoopnamenode-format格式化节点;然后启动。
如果是端口访问的问题,你应该确保所用的端口都打开,比如hdfs:
//machine1:
9000/、50030、50070之类的。
执行#iptables-IINPUT-ptcp–dport9000-jACCEPT命令。
如果还有报错:
hdfs.DFSClient:
ExceptionincreateBlockOutputStreamjava.ConnectException:
Connectionrefused;应该是datanode上的端口不能访问,到datanode上修改iptables:
#iptables-IINPUT-smachine1-ptcp-jACCEPT
还有可能是防火墙的限制集群间的互相通信。
尝试关闭防火墙。
/etc/init.d/iptablesstop
最后还有可能磁盘空间不够了,请查看df-al
我在解决这个问题的时候还有人说:
先后启动namenode、datanode可以解决这个问题(本人尝试发现没用,大家可以试试)$hadoop-daemon.shstartnamenode;$hadoop-daemon.shstartdatanode
希望以上资料对你有所帮助,附励志名言3条:
1、上帝说:
你要什么便取什么,但是要付出相当的代价。
2、目标的坚定是性格中最必要的力量源泉之一,也是成功的利器之一。
没有它,天才会在矛盾无定的迷径中徒劳无功。
3、当你无法从一楼蹦到三楼时,不要忘记走楼梯。
要记住伟大的成功往往不是一蹴而就的,必须学会分解你的目标,逐步实施。