标签:
Windows下运行Hadoop,通常有两种方式:一种是用VM方式安装一个Linux操作系统,这样基本可以实现全Linux环境的Hadoop运行;另一种是通过Cygwin模拟Linux环境。后者的好处是使用比较方便,安装过程也简单。在这里咱们就来看看第二种方案:如何再Windows下快速安装一个Hadoop环境,并结合Eclipse开发环境研究和调整Hadoop代码。
整个安装过程包括以下三大步骤:
在Windows下通过安装Cygwin模拟Linux环境,然后再安装Hadoop,是一种简单方便的方式,为Hadoop准备的模拟Linux环境安装过程如下:
针对不同系统类型下载相应的安装文件,下载地址:http://cygwin.com/install.html。
我这里的系统是window 7所以下载的是setup-x86.exe
刚刚下载的文件是模拟Linux系统所依赖的软件包下载和管理工具,以后想要在模拟Linux环境中安装或更新软件都需要通过这个工具来完成,下面我们就先运行起来这个工具如下:
注:这个软件包列表由前到后包括:分类、当前安装版本,最新版本,安装可执行文件?,安装源代码文件?,大小,包名称和说明。
到这里,您已经完成了模拟Linux环境的安装,左键双击桌面上的图标打开这个模拟Linux的终端窗口输入几个常用Linux命令体验下这个模拟的Linux系统吧,除了可以执行Linux常用命令外,还可以执行Windows的命令例如:net start service_name等。体验完成后继续下面的配置工作。
Cygwin安装完成后,需要先配置SSH服务,以满足Hadoop提出的SSH无密码登入,过程如下:
打开模拟Linux的终端,进入Linux环境
执行命令:ssh-host-config如图:
第一次询问:“Should privilege separation be used? (yes/no)”,输入no回车。
第二次询问:“Do you want to install sshd a service?”,输入yes回车。
第三次提示:“Enter the value of CYGWIN for the demon: []”,直接回车。
第四次询问:“Do you want to use a different name? (yes/no)”,输入no回车。
第五次提示:“Please enter the password for user ‘cyg_server’:”,输入密码回车,在此输入密码回车。
最后提示配置完成。
在Linux终端或Windows命令行执行net start sshd或命令cygrunsrv –S sshd启动SSH服务。
测试ssh登入本机:
在终端执行命令:ssh localhost
提示输入密码:输入密码回车,如下图:
在终端执行命令:ssh-keygen -t dsa -P ” -f ~/.ssh/id_dsa生成秘钥。
执行命令:cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys生成认证文件。
执行命令:ssh localhost测试是否无需输入密码即可登入。
cd /cygdrive/c
假设cygwin安装在d:/develop/cygwin,则将d:/develop/cygwin/bin添加到系统变量PATH中(最好加在windows前面,这样的话,有些相同的命令的话,是先执行cygwin的命令,而不是windows命令,比如find)。
添加完后就可以直接在cmd.exe下面执行tar czvf xxx.tgz ./
基本上所有的命令都可以用了,包括ls,more,less,find,grep等。
将cygwin的BIN加入到PATH
建一个BAT文件:
@echo off
d:
cd d:/website/8thmanage
tar czvf 8thmanage.tgz 8thmanage
将cygwin的BIN加入到PATH
在$CYGWIN的目录/var/下面建一脚本t.sh,注意,t.sh里面的路径,都是相对于$CYGWIN的,里面需要访问C盘的,请用/cygdrive/c/
在Windows下执行:
d:/cygwin/bin/bash d:/cygwin/var/t.sh
(可以定期执行)
mkpasswd -l > /etc/passwd
mkgroup -l > /etc/group
如果有Domain的话,需要加上-d domainname
cygrunsrv
vi /etc/rsyncd.conf
…screts file=/etc/tom.ipaddr.pas
配置文件,参考我写的另外一篇rsync的文章,注意:密码文件权限必须是0400
chmod 0400 /etc/tom.ipaddr.pas
rsync –daemon
在客户端的cygwin下面,运行rsync同步,具体命令,请参考另外一篇rsync的文章。
一路回车,直到出现CYGWIN=时,输入tty ntsec,再回车,
(或者,增加一系统环境变量CUGWIN=nesec tty)
(cygrunsrc -S sshd或者net start sshd)
vi ~/.bashrc
# 让ls和dir命令显示中文和颜色
alias ls=’ls –show-control-chars –color’
alias dir=’dir -N –color’
# 设置为中文环境,使提示成为中文
export LANG=”zh_CN.GBK”
# 输出为中文编码
export OUTPUT_CHARSET=”GBK”
~/.inputrc为
set completion-ignore-case on
set meta-flag on
set output-meta. on
set convert-meta. off
cygwin.bat脚本为:
@echo off
set MAKE_MODE=UNIX
JDK下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html
这里要特别说明下,在Linux下路径或命令是严格区分大小写的并且对于带空格的目录,一律添加双引号(“”)除了,所以建议将JDK直接放到一个盘的根目录,而不是默认安装的Program Files目录。
我这里没有下载最新的JDK,在工作机中翻出来N久不用的32位Windows下的jdk1.6.0_14,直接将jdk1.6.0_14扔进C盘根目录,然后再配置环境变量如下:
JAVA_HOME=c:\jdk1.6.0_14
PATH=%JAVA_HOME%\bin;… 注:在系统PATH中添加%JAVA_HOME%\bin;
打开Windows命令行输入java –version,可以正常执行就OK。
我曾经尝试过不在Windows下配置Java的环境变量,Hadoop也是可以正常运行的,因为我们还会在Hadoop运行脚本中明确知道JAVA_HOME。
下载地址:http://hadoop.apache.org/releases.html#Download
我下载的是最新稳定版:hadoop-1.2.1-bin.tar.gz
在Hadoop生态圈里,有各种各样的工具,兴许过些时候就会用的上,在加上Hadoop开发M/R、部署M/R,以及升级Hadoop等等等,由此看来有必要花点心思对Hadoop的安装目录规划一番。
我安装Hadoop的Windows是一个虚拟机,并且只创建了一个分区,所以hadoop文件夹就放在C盘的根目录了。以下是我的目录结构:
Hadoop在C盘的根目录下,下面有code(存放代码)、deploy(放hadoop及生态圈的安装文件)、sysdata(存放dfs数据、SecondNameNode源数据以及运行期间的临时文件存放目录)。
将下载的hadoop-1.2.1-bin.tar.gz解压到目录c:\hadoop\deploy\hadoop-1.2.1
Hadoop最完整的配置还得开官方文档,我这里只配置了一些基本的配置供参考:
注:因为我的hadoop安装在C盘,所以以下XML配置文件中配置路径的根都是C盘根目录。例如:/hadoop/sysdata运行过程中翻译过来就是:c:\hadoop\sysdata。Shell脚本中配置路径的根是虚拟Linux的根目录/。例如:/cygdrive/c/jdk1.6.0_14指向:c:\jdk1.6.0_14。
添加JAVA_HOME:
export JAVA_HOME=/cygdrive/c/jdk1.6.0_14
<?xml version=”1.0″?>
<?xml-stylesheet type=”text/xsl” href=”configuration.xsl”?>
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://172.16.128.239:9001</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop/sysdata/</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>fs.checkpoint.dir</name>
<value>/hadoop/sysdata/namesecondary/</value>
</property>
<property>
<name>dfs.web.ugi</name>
<value>lg,lg</value>
</property>
<property>
<name>fs.checkpoint.period</name>
<value>3600</value>
<description>set to 1 hour by default, specifies the maximum delay between two consecutive checkpoints</description>
</property>
<property>
<name>fs.checkpoint.size</name>
<value>67108864</value>
<description>set to 64MB by default, defines the size of the edits log file that forces an urgent checkpoint even if the maximum checkpoint delay is not reached.</description>
</property>
</configuration>
<?xml version=”1.0″?>
<?xml-stylesheet type=”text/xsl” href=”configuration.xsl”?>
<!– Put site-specific property overrides in this file. –>
<configuration>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.datanode.max.xcievers</name>
<value>4096</value>
<description>
DataNode 同时处理文件的上限
</description>
</property>
<!–property>
<name>dfs.http.address</name>
<value>0.0.0.0:50070</value>
</property–>
</configuration>
<?xml version=”1.0″?>
<?xml-stylesheet type=”text/xsl” href=”configuration.xsl”?>
<!– Put site-specific property overrides in this file. –>
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>172.16.128.239:9002</value>
</property>
</configuration>
localhost
localhost
在以上配置文件完成后,我们可以开始对namenode进行格式化了,这是hadoop开始使用的第一步,就像我们对硬盘进行格式化操作一样。打开Cygwin终端执行以下命令:
cd /cygdrive/c/hadoop/deploy/hadoop-1.2.1/bin
./hadoop namenode –format
如图:
格式化完NameNode后,我们就可以执行start-all.sh命令来启动hadoop了。如下:
执行: ./start-all.sh
打开浏览器访问HDFS监控界面
./hadoop dfs -fs 172.16.128.239:9001 -ls /user/lg/event_videos/2013/09/
超级用户即运行name node进程的用户。宽泛的讲,如果你启动了name node,你就是超级用户。超级用户干任何事情,因为超级用户能够通过所有的权限检查。没有永久记号保留谁过去是超级用户;当name node开始运行时,进程自动判断谁现在是超级用户。HDFS的超级用户不一定非得是name node主机上的超级用户,也不需要所有的集群的超级用户都是一个。同样的,在个人工作站上运行HDFS的实验者,不需任何配置就已方便的成为了他的部署实例的超级用户。另外,管理员可以用配置参数指定一组特定的用户,如果做了设定,这个组的成员也会是超级用户。
Web服务器用户
Web服务器的身份是一个可配置参数。Name node并没有真实用户的概念,但是Web服务器表现地就像它具有管理员选定的用户的身份(用户名和组)一样。除非这个选定的身份是超级用户,否则会有名字空间中的一部分对Web服务器来说不可见。
dfs.permissions = true
如果是true,打开权限检查。如果是false,关闭权限检查,但是其他的行为没有改变。这个配置参数的改变并不改变文件或目录的模式、所有者和组等信息。
不管权限模式是开还是关,chmod,chgrp 和chown 总是会检查权限。这些命令只有在权限检查背景下才有用,所以不会有兼容性问题。这样,这就能让管理员在打开常规的权限检查之前可以可靠地设置文件的所有者和权限。
dfs.web.ugi = webuser,webgroup
Web服务器使用的用户名。如果将这个参数设置为超级用户的名称,则所有Web客户就可以看到所有的信息。如果将这个参数设置为一个不使用的用户,则Web客户就只能访问到“other”权限可访问的资源了。额外的组可以加在后面,形成一个用逗号分隔的列表。
dfs.permissions.supergroup = supergroup
超级用户的组名。
dfs.upgrade.permission = 777
升级时的初始模式。文件永不会被设置x权限。在配置文件中,可以使用十进制数51110。
dfs.umask = 022
umask参数在创建文件和目录时使用。在配置文件中,可以使用十进制数1810。
创建目录的所属用户默认为当前创建者,即在类Unix系统中执行命令whoami所得到的用户名,所属组为上级目录的组。
标签:
原文地址:http://www.cnblogs.com/snowbook/p/5624379.html