网上有大量这种文章,我就只说说遇上的一些问题吧。
操作系统:win7 旗舰版32位
CYGWIN_HOME:D:\cygwin
JAVA_HOME:D:\Java\jdk1.6.0_21
一、这些安装目录问题
jdk安装目录不要放在Program Files里面,因为中间的空格会导致人家类Unix找不到
二、Expecting a line not the end of stream
要把cygwin的字符集改一改,否则会死的很难看,否则似乎至少0.20.2这个版本解析一些文件会因为字符集问题,导致出一堆莫名密切的错误,例如 Expecting a line not the end of stream之类
export LANG=en.UTF-8
三、配置文件路径问题
在core-site、hdfs-site、mapred-site这几个文件有好几处设HDFS的文件放置等位置,当然,如果不设的话,它默认放在\tmp里面,我先把我的贴出来,我的本意是要放在\usr\local\hadoop-0.20.2\hdfs\{name, data, mrlocal, mrsystem, namesecond}(大括号内是分别每个文件夹的意思)。那么我得这么写
<!-- core-site -->
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>fs.checkpoint.dir</name>
<value>/cygwin/usr/local/hadoop-0.20.2/hdfs/namesecondary</value>
</property>
</configuration>
红字这行很丰盛,在这里搞很久
首先第一个斜杆,它表示服务器的根目录,这里的根目录不是d:\cygwin\这个位置,而是d:\这个位置,换句话说,是cygwin安装目录所在盘符的位置
但是,如果把这个斜杆去掉,那么它表示的位置又是 d:\cygwin\home\用户名 这个位置,所以如果你要把这些文件放在你想要的位置,这个起始位置很重要
四、start-all.sh
格式化完namenode之后,如果直接执行start-all.sh,那么好几个节点在输入jps是显示不出来的,但打开那个localhost:50030/ localhost:50070是可以看到有启动的,回去看日志,是有报错的,因为刚启动namenode后,namenode是在安全模式下,应该是做一些检查的工作,而启动jobtracker这些节点的时候,它回去删除一些目录重建之类的,所以导致删除失败,但为什么jps无法显示的,网页可以显示,我也不大明白,用是可以用的。在真实的linux集群上,使用RedHat6.1、Hadoop1.0.3,两台机子,是没有出现这问题的,所以不知道是hadoop版本问题,还是因为使用了cygwin 的原因。反正要都显示出来得使用
#启动 Master node :
hadoop-daemon.sh start namenode
#启动 DataNode:
hadoop-daemon.sh start datanode
#启动 secondarynamenode:集群环境。
hadoop-daemon.sh start secondarynamenode
#启动 JobTracker:
hadoop-daemon.sh start jobtracker
#启动TaskTracker:
hadoop-daemon.sh start tasktracker
五、关于localhost导致的问题
写配置文件的时候,不要用localhostL9000这样,使用ip,否则在执行操作就会出java.net.ConnectException: Connection refused: no further information的问题。
六、Eclipse 插件
我使用的是hadoop-0.20.2-eclipse-plugin.jar的插件,安装好后在设置hadoop安装目录的时候,如果把hadoop解压缩到有空格的Program Files,就会导致待会新建MapReduce Project时,它自动找jar包会到D:\Program Files/hadoop-0.20.2\hadoop-0.20.2\lib去找,也就是说,它会比实际目录多出一个hadoop-0.20.2的路径,所以,不要解压缩到带空格的目录下。
暂时想写的就这么多,待补充。