Hadoop-Windows安装
1.安装前的准备工作
1.下载JDK
网址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
注:下载对应平台的版本,否则无法安装
2.下载cygwin
网址:http://www.cygwin.com/setup.exe
如果无法下载,可以进入http://www.cygwin.com官网
3.下载hadoop
4.下载Eclipse
网址:http://www.eclipse.org/downloads/
注意版本:系统位数要与eclipse位数一致。如32位系统不能运行64位eclipse
5.下载hadoop-eclipse-plugin插件
网址:
注意:插件版本要和hadoop版本一致,如hadoop为1.2.1的版本,那么相应的插件也应该是1.2.1的版本,否则无法使用。
2.开始安装JDK和cygwin
1.安装JDK
1. 用鼠标左键双击JDK安装包,会出现下图所示的安装界面。选择接受。
2.更改安装路径到你安装目标路径下。比如安装到:D:\devlopmet\java\jdk1.2.0_10
3.开始安装
4.更改jre路径,安装路径到指定目录下。
5.点击下步,进入安装,等待几秒钟中,安装完毕
2.安装cygwin
1.运行setup.exe,双击运行setup.exe安装程序,如下图:
1.Install fromInternet,是从网络安装
2.Down Without Install,只下载不安装
3.Install from Local Directory,从本地安装(如果已经下载有,可以选择此项)
3.我们选择第一项,从网络安装,然后选择保存目录。
4. 选择下载点,可以自己输入下载点。我们这选第一项,直接下载。
Ø 5. 连接站点,点下一步,如下图页面(连接站点页面),此时可能会弹出一个版本不统一的异常,可以忽略,直接点确定即可。
6.选择所需安装包,这里我们需要的包是:
Net Category包下的:openssh,openssl
BaseCategory包下的:sed(若需要Eclipse,必须sed)
Devel Category包下的:subversion,binutils,gcc,gcc-ming,gdb
Editors Category包下的:vim
可以用search去指定查找要下载的安装包
查找出相应包下的结果后,点刷新图标,可获得当前包的最新版本,后面紧跟着是所需包的bin文件和src文件,这里我所只选择bin文件。
7.完成安装
8.最后选择是否安装快捷键图标,完成安装操作。当你是第一次安装时,快捷键图是灰的,这时你点完成操作,然后再点setup.exe重新安装(已下载过的文件不会被重新下载)即可出现选择安装快捷键图标。
3.配置环境变量
1.配置jdk和jre的环境变量
1. 右击我的电脑选择属性如图
2.选择“属性->高级”之后出现界面再选择高级如图
3.配置JDK环境变量,选择单击“环境变量”出现如图
4. 单击“新建”系统变量如图,变量值是你安装jdk的目录,我建议大家去安装的目录中copy过来,以免输入错误
5. 然后建立CLASS_PATH环境变量
变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
6. 刚才定义的那个系统环境变量名“JAVA_HOME”现在就要用上了。选中path后如图1-15可以单击“编辑”当然也可以双击进行编辑
变量值:;%JAVA_HOME%\bin;%TOMCAT_HOME%\bin;
注意分号
7.配置JDK环境完成,一步一的点击确定退出。
8.验证环境是否配置成功。Ctrl+R进入运行界面,输入cmd。
9. 运行javac命令,有如下信息,表示成功。
10.再运行java命令,有如下信息,表示成功。
11.整个jdk安装完成。
2.配置cygwin的环境变量
1. 安装完Cygwin后,把Cygwin的usr/sbin目录追加到系统环境变量PATH中(一般会 自动添加),添加自己安装路径即可。
3.安装hadoop
1. 将 hadoop 安装包hadoop-0.20.1.tar.gz 解压到 D:\hadoop\run 目录( 可以修改成其它目录)
下,如下图所示:
2. 下面开始配置Hadoop需要配置的文件:(hadoop/conf目录下)
hadoop-env.sh
core-site.xml
hdfs-site.xml
mapred-site.xml
把里面的JAVA_HOME改掉,注意export前面的#号要去掉。
而且必须要使用Linux的路径表达方式。我的jdk路径是 C:\JAVA\jdk1.6.0_31,在Cygwin中对应的路径为:/cygdrive/c/java/jdk1.6.0_31。
如果JDK的路径有空格的话,启动Hadoop就会有异常,有的网站上说加转义符就没问题,本人试了后还是不行。
<!-- dfs.replication -它决定着系统里面的文件块的数据备份个数。对于一个实际的应用,它应该被设为3(这个数字并没有上限,但更多的备份可能并没有作用,而且会占用更多的空间)。少于三个的备份,可能会影响到数据的可靠性(系统故障时,也许会造成数据丢失)-->
其它节点介绍:
<!--dfs.data.dir - 这是DataNode结点被指定要存储数据的本地文件系统路径。DataNode结点上的这个路径没有必要完全相同,因为每台机器的环境很可能是不一样的。但如果每台机器上的这个路径都是统一配置的话,会使工作变得简单一些。默认的情况下,它的值hadoop.tmp.dir, 这个路径只能用于测试的目的,因为它很可能会丢失掉一些数据。所以这个值最好还是被覆盖-->
<!-- dfs.name.dir - 这是NameNode结点存储hadoop文件系统信息的本地系统路径。这个值只对NameNode有效,DataNode并不需要使用到它。上面对于/temp类型的警告,同样也适用于这里。在实际应用中,它最好被覆盖掉。-->
1.配置ssh
1. 配置ssh-host-config
打开桌面上CygWin图标,启动程序,输入SSH-HOST-CONFIG,会有如下提示项:
系统提示:should privilege separationbe used ? 输入:no
系统提示:(Say "no" if it is already installed as a service)(yes/no)? 输入:yes
系统提示:Enter the value of CYGWIN for the daemon: [] 输入:ntsec
系统提示:Do you want to use a different name? (yes/no) 输入:no
系统提示:Create new privileged user account 'cyg_server'? (yes/no) 输入:yes
系统提示:Please enter the password:输入密码
Reenter: 确认密码
系统提示:Host configuration finished. Have fun! 成功
注:如果第二次操作SSH-HOST-CONFIG命令,首先会出现两次下面的提示:
Overwriteexisting /etc/ssh_config file? (yes/no) 输入:yes
注意:要右击一管理员的身份运行cygwin,否则会报错。
2.开启SSHD服务,进入Window系统的服务菜单,默认启动类型是自动,我们要右键开启Cygwin的SSHD服务,或者是(win7开始菜单-services.msc-找到CYGWIN sshd服务,将其启动)
3.设置authorized_keys
继续回到CygWin环境:执行ssh-keygen命令生成密钥文件:
ssh-keygen然后一直回车
cd ~/.ssh
cp id_rsa_pub anthorized_keys
exit 退出Cygwin,若不退出,可能出错。
运行 ssh localhost 若有提示,则回车或输入yes。
执行 ps 若看到 有/usr/bin/ssh 进程,说明hadoop安装成功。
2.启动hadoop
1.为 了避免jobtracker,info couldonly be replicated to 0 node,instead of 1错误,最好把 hadoop/conf目录下面的 masters和slaves文件全部改为127.0.0.1(原内容为:localhost)。
格式化文件系统,即namenode,创建HDFS。
进入hadoop的bin目录,执行命令: hadoop namenode -format,下面示代表成功
2. 启动Hadoop,执行命令:./start-all.sh
在Windows系统上启动Hadoop时,会报这个异常:Failed to set permissions of path: \tmp\hadoop-Administrator\mapred\local\ttprivateto 0700。
这是Windows下文件权限问题,在Linux下可以正常运行,不存在这样的问题。
解决方法是:修改/hadoop-1.1.2/src/core/org/apache/hadoop/fs/FileUtil.java里面的checkReturnValue方法,注释掉即可(有些粗暴,在Window下,可以不用检查),重新编译打包hadoop-core-1.1.2.jar,替换掉hadoop-1.1.2根目录下的hadoop-core-1.0.2.jar即可。
3.执行jps命令,你可能会看到如下图
4. 执行./hadoop fs -ls / 命令会看到如下图:
5. 执行PS命令,能看到5个JVM进程。
3. 停止Hadoop
执行命令: ./stop-all.sh
4.web 管理界面
接下来使用 Hadoop中用于监控集群状态的 Web页面查看 Hadoop的运行状况,具体
的页面如下:
http://localhost:50030/jobtracker.jsp
http://localhost:50060/tasttracker.jsp
http://localhost:50070/dfshealth.jsp
4.Eclipse的安装
1.在linux中的eclipse登录hadoop
2.在windows中用eclipse远程登录hadoop
1. 设置Ubuntu静态IP:
1.ctrl+alt+T打开终端
2.输入ifconfig
5.常见安装问题
1.安装jdk时的问题
1.环境问题
解决办法:检查环境变量配置
2.安装cygwin时的问题
1.cygwin安装时,有些软件无法安装
解决办法
1.再次点击cygwin的安装程序
2.选择需要安装的程序,将Default转变成Install
3.将看到安装软件信息,点击确认安装就行。
4.也可以从本地重新安装。
3.安装ssh和vim时的问题
1. Cygwin上安装、启动ssh服务失败、sshlocalhost失败的解决方案
解决方法:可能在运行cygwin时,没有以管理员的身份运行。
2.cygrunsrv: Error starting aservice: QueryServiceStatus: Win32 error 1062:解决办法
问题原因:很可能是/var/log的权限设置不正确。首先执行mkpasswd 和 mkgroup 重新生成权限信息,再删除sshd服务,重新配置
解决办法:
$ mkpasswd -l > /etc/passwd
$ mkgroup -l > /etc/group
$ cygrunsrv -R sshd
$ ssh-host-config -y
$ cygrunsrv -S sshd
3.vim上下左右键出现ABCD,vim失灵问题
解决方法:
1. 首先考虑到的就是缺少vim的配置文件,首先查看/etc路径下是否有vim的配置文件
2. 发现/etc下没有vim的全局配置文件,然后再查找当前用户的vim配置文件.vimrc
3. 发现也没有,可以确定是缺少vim的配置文件导致部分按键设置没有生效
方法:
1. 从文件共享目录中拷贝一个vim的配置文件至当前用户家目录下即可
2. cat ~/.vimrc
4.安装hadoop时的问题
5.启动hadoop时datanode的问题(权限问题)
问题:hdfs-site中配置的dfs.data.dir为/usr/local/hadoop/hdfs/data
用bin/hadoopstart-all.sh启动Hdoop,用jps命令查看守护进程时,没有DataNode。
1.、hadoop/tmp,hdfs/name和hdfs/data的权限没有授予
解决:使用"sudo chmod 777 /user/hadoop/tmp命令对文件夹授权
或者使用sudo chown –R授权
也可在hdfs-site.Xml中添加dfs.permissions配置项,将value设置为false。
2. 访问http://localhost:50070,点击页面中的Namenode logs链接,在logs页面点击hadoop-hadoop-datanode-ubuntu.log 链接,
发现在日志中有此提示:Invalid directory in dfs.data.dir: Incorrect permission for/usr/local/hadoop/hdfs/data, expected: rwxr-xr-x, while actual: rwxr-xrwx 。也有可能权限授予过多:比如出现以下情况
这时候需要使用:
chmod g-w /usr/local/hadoop/tmp修改文件夹权限后,再次启动Hadoop,问题解决。
具体的权限修改请参照linux权限修改命令指导
6. Hadoop的datanode启动之后很快有自己关闭掉
7.window中eclipse链接linux中的hadoop的问题
1.出现0700错误,如图:
原因:Windows下文件权限问题,在Linux下可以正常运行,所以需要修改的是eclipse指向的hadoop,而不是linux中的hadoop
解决办法一:
1. 下载相应版本的hadoop的tar文件
网址:http://www.apache.org/dyn/closer.cgi/hadoop/common/(apach官网)
http://mirrors.hust.edu.cn/apache/hadoop/common/(镜像网址)
2. 将hadoop-x.x.x/src/core/org/apache/hadoop/fs/FileUtil.java里面方法checkReturnValue的代码注释掉.
3. 再重新编译生成hadoop-x.x.x-core.jar.(编译方法:新建一个MapReduce项目, 把hadoop-x.x.x/src/core/org/apache/hadoop/fs/FileUtil.java代码复制到src下(注意, 目录结构也需要), 按上面修改文件, 然后重新build下, 找到编译好的.class(两个), 用解压软件打开hadoop-x.x.x-core.jar, 把这两个class文件覆盖即可.)
解决办法二:apache官网解决
网址:https://issues.apache.org/jira/browse/HADOOP-8089
在自己的main程序中加入以下两行代码
Server为你的hadoop的IP地址
解决办法三:修改saveVersion.sh和bulid.xml文件
8.在集群中,子节点中无法启动Datanode进程
原因查找:
1. 访问http://localhost:50070,点击页面中的logs链接,在logs页面点击hadoop-hadoop-datanode-ubuntu.log 链接,查看datanode的日志:
org.apache.hadoop.hdfs.server.datanode.DataNode:java.io.IOException: Incompatible namespaceIDs in/var/lib/hadoop-0.20/cache/hdfs/dfs/data: namenode namespaceID = 240012870;datanode namespaceID = 1462711424
2. 原因是:Namenode上namespaceID与datanode上namespaceID不一致。每次namenode format会重新创建一个namenodeId,而tmp/dfs/data下包含了上次format下的id,namenode format清空了namenode下的数据,但是没有清空datanode下的数据,所以造成namenode节点上的namespaceID与datanode节点上的namespaceID不一致。启动失败。.
解决办法一:
(1)停掉集群服务
(2)在出问题的datanode节点上删除data目录,data目录即是在hdfs-site.xml文件中配置的dfs.data.dir目录,本机器上那个是/var/lib/hadoop-0.20/cache/hdfs/dfs/data/(注:我们当时在所有的datanode和namenode节点上均执行了该步骤。以防删掉后不成功,可以先把data目录保存一个副本).
(3)格式化namenode.
(4)重新启动集群。问题解决。
不利因素:即,hdfs上的所有数据丢失。如果hdfs上存放有重要数据的时候,不建议采用该方法,可以尝试提供的网址中的第二种方法。
解决办法二:
1. 停用datanode
2. 修改<dfs.data.dir>/current/VERSION中,namespaceID的值,将日志中第一个namespaceID的值赋给namespaceID=( dfs.data.dir为你在hdfs-site.xml中设置的路径)
3. 重启datanode
原文网址:http://blog.csdn.net/wanghai__/article/details/5752199
http://blog.csdn.net/jokes000/article/details/7704986