记我安装hadoop2.0.3的过程(包括出错的部分)
1.首先从网上下载2.0的包,解压出来,不用安装。
2.
./hadoop namenode -format #先格式化 cd ../sbin/ #进入sbin目录,这里放的都是server启动脚本 ./hadoop-daemon.sh start namenode ./hadoop-daemon.sh start datanode ./hadoop-daemon.sh start secondarynamenode #备份服起不起都无所谓,不影响使用,不过可以用来试试HA功能 #下面较重要,2.0取消了jobtracker和tasktracker,以YARN来代替,所以如果运行start jobtracker一类的,会报错。 #且hadoop,hdfs,map/reduce功能都分离出了单独脚本,所以不能用hadoop-daemon.sh启动所有了。 ./yarn-daemon.sh start resourcemanager #这个就相当于原来的jobtracker,用作运算资源分配的进程,跟namenode可放在一起。 ./yarn-daemon.sh start nodemanager #这个相当于原来的tasktracker,每台datanode或者叫slave的服务器上都要启动。
./hadoop fs -mkdir /tmp
./hadoop fs -copyFromLocal /tmp/input/* /tmp
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.0.2-alpha.jar wordcount /tmp output
bin/hadoop fs -cat output/part-r-00000
3.在安装并执行实例的过程中遇到的问题归纳如下:
1`datanode无法启动的问题,报错如下:
2013-06-08 17:57:27,519 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for block pool Block pool BP-770817654-172.17.50.119-1370685416301 (storage id DS-803461661-172.17.50.119-50010-1370681848198) service to localhost/127.0.0.1:9000 java.io.IOException: Incompatible clusterIDs in /usr/hadoop/tmp/dfs/data: namenode clusterID = CID-cd47cf1e-0f81-41b0-97df-7407db9f1fa5; datanode clusterID = CID-0462092f-2740-40a4-bf96-246be2efc49f at org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:390) at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:190) at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:218) at org.apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.java:851) at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:822) at org.apache.hadoop.hdfs.server.datanode.BPOfferService.verifyAndSetNamespaceInfo(BPOfferService.java:279) at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.connectToNNAndHandshake(BPServiceActor.java:218) at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:661) at java.lang.Thread.run(Thread.java:619)
通过在网上查找资料得出:每次namenode format会重新创建一个namenodeId,而tmp/dfs/data下包含了上次format下的id,namenode format清空了namenode下的数据,但是没有晴空datanode下的数据,导致启动时失败,所要做的就是每次fotmat前,清空tmp一下 的所有目录.
结果:删除/usr/hadoop/tmp下的所有内容即可。
2`运行脚本的时候报out of memory
解决的方法是:修改配置文件hadoop-env.sh中的export HADOOP_CLIENT_OPTS="-Xmx1024m $HADOOP_CLIENT_OPTS"这个选项,把XMX改大就可以了。