Windows下运行Hadoop

Windows下运行Hadoop,一般有两种方式:一种是用VM方式安装一个Linux操做系统,这样基本能够实现全Linux环境的Hadoop运行;另外一种是经过Cygwin模拟Linux环境。后者的好处是使用比较方便,安装过程也简单。在这里我们就来看看第二种方案:如何再Windows下快速安装一个Hadoop环境,并结合Eclipse开发环境研究和调整Hadoop代码。html

整个安装过程包括如下三大步骤:java

  1. 安装和配置Cygwin(http://cygwin.com/install.html)
  2. 安装和配置Hadoop-1.2.1(http://hadoop.apache.org/docs/stable/cluster_setup.html)
  3. 安装和配置Eclipse开发环境

1安装和配置Cygwin

在Windows下经过安装Cygwin模拟Linux环境,而后再安装Hadoop,是一种简单方便的方式,为Hadoop准备的模拟Linux环境安装过程以下:node

1.1下载安装文件

针对不一样系统类型下载相应的安装文件,下载地址:http://cygwin.com/install.htmlweb

我这里的系统是window 7因此下载的是setup-x86.exeapache

1.2安装Cygwin

刚刚下载的文件是模拟Linux系统所依赖的软件包下载和管理工具,之后想要在模拟Linux环境中安装或更新软件都须要经过这个工具来完成,下面咱们就先运行起来这个工具以下:windows

  1. 左键双击setup-x86.exe文件运行安装向导:
cygwin安装

cygwin安装浏览器

  1. 点击【下一步】按钮进入程序引导安装页,这里有三个选项,选择第一项网络安装:
    • 网络安装:经过网络下载并安装软件包
    • 下载但不安装:经过网络下载软件包
    • 本地安装:是用本地软件包安装
cygwin安装

cygwin安装bash

  1. 点击【下一步】进入选择模拟Linux系统的根目录和用户的向导页。在Linux的文件系统中有且只有一个根目录,在这里选择目录就是Linux中的那个根目录了,这里选择默认:c:\cygwin;用户选择第一项:本系统的全部有效用户。
cygwin安装

cygwin安装服务器

  1. 点击【下一步】选择本地软件包目录,该工具会自动记住并将之后下载的全部软件包都会放到这里指定的目录。我这里选择:C:\Users\Administrator\Desktop\1,若是选择不存在目录,就好提示是否建立目录选Yes就OK。
cygwin安装

cygwin安装网络

  1. 点击【下一步】选择您的网络链接,我这里使用的是代理服务器上网,因此我选择第二项:使用IE浏览器代理设置。经测试选择第三项输入代理服务器地址和端口,不能正常访问网络,缘由不明。
cygwin安装

cygwin安装

  1. 点击【下一步】,等待下载镜像站点列表,下载完成后出现选择下载软件包的站点。如图:
cygwin安装

cygwin安装

  1. 根据本身的状况选择合适的下载地址,我这里选择了国内的163站点,点击【下一步】,这个工具就会自动下载软件包信息列表下载完成后进入安装软件包选择页,以下图:
cygwin安装

cygwin安装

  1. 这一步比较重要,如下软件包要确保被安装:
cygwin安装

cygwin安装

注:这个软件包列表由前到后包括:分类、当前安装版本,最新版本,安装可执行文件?,安装源代码文件?,大小,包名称和说明。

    • 基础软件包:Base及其下面的全部软件包,操做方法:点击Base后面的Default为Install。
    • SSH相关软件包:Net下的OpenSSL和和OpenSSH,用于Hadoop须要的SSH访问,操做方法:点击【+】展开Net节点,点击各个软件包前的最新版本号列的Keep为版本号即为选中安装。
    • 其余软件包根据本身的须要选中是否安装便可,我这里还选中了Emacs、VIM、Perl、Python、Ruby、Science、subversion等经常使用工具。
  1. 选择完软件包点击【下一步】,进入自动下载与安装,以下图:

     

    cygwin安装

    cygwin安装

  1. 点击【下一步】进入向导结束页,勾选建立桌面快捷方式点击【完成便可】,如图:

     

    cygwin安装

    cygwin安装

到这里,您已经完成了模拟Linux环境的安装,左键双击桌面上的图标cygwin安装打开这个模拟Linux的终端窗口输入几个经常使用Linux命令体验下这个模拟的Linux系统吧,除了能够执行Linux经常使用命令外,还能够执行Windows的命令例如:net start service_name等。体验完成后继续下面的配置工做。

1.3配置Cygwin的SSH服务

Cygwin安装完成后,须要先配置SSH服务,以知足Hadoop提出的SSH无密码登入,过程以下:

打开模拟Linux的终端,进入Linux环境

执行命令:ssh-host-config如图:

Hadoop安装

Hadoop安装

第一次询问:“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’:”,输入密码回车,在此输入密码回车。

最后提示配置完成。

1.4启动SSH服务

在Linux终端或Windows命令行执行net start sshd或命令cygrunsrv –S sshd启动SSH服务。

测试ssh登入本机:

在终端执行命令:ssh localhost

提示输入密码:输入密码回车,以下图:

Hadoop安装

Hadoop安装

 

1.5配置SSH免密码登入

在终端执行命令:ssh-keygen -t dsa -P ” -f ~/.ssh/id_dsa生成秘钥。

执行命令:cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys生成认证文件。

执行命令:ssh localhost测试是否无需输入密码便可登入。

Hadoop安装

Hadoop安装

1.6Cygwin使用积累

1.6.1在cygwin里访问Windows盘

cd /cygdrive/c

1.6.2整合cygwin命令到Windows中

假设cygwin安装在d:/develop/cygwin,则将d:/develop/cygwin/bin添加到系统变量PATH中(最好加在windows前面,这样的话,有些相同的命令的话,是先执行cygwin的命令,而不是windows命令,好比find)。

添加完后就能够直接在cmd.exe下面执行tar czvf xxx.tgz ./

基本上全部的命令均可以用了,包括ls,more,less,find,grep等。

1.6.3使用TGZ备份

将cygwin的BIN加入到PATH

建一个BAT文件:

@echo off

d:

cd d:/website/8thmanage

tar czvf 8thmanage.tgz 8thmanage

1.6.4Windows使用SHELL脚本

将cygwin的BIN加入到PATH

在$CYGWIN的目录/var/下面建一脚本t.sh,注意,t.sh里面的路径,都是相对于$CYGWIN的,里面须要访问C盘的,请用/cygdrive/c/

在Windows下执行:

d:/cygwin/bin/bash d:/cygwin/var/t.sh

(能够按期执行)

1.6.5同步Windows系统用户

mkpasswd -l > /etc/passwd

mkgroup -l > /etc/group

若是有Domain的话,须要加上-d domainname

1.6.6安装系统服务

cygrunsrv

1.6.7cygwing下使用rsync

  1. 安装rsync组件
  2. 进入cygwin,配置服务器

vi /etc/rsyncd.conf

…screts file=/etc/tom.ipaddr.pas

配置文件,参考我写的另一篇rsync的文章,注意:密码文件权限必须是0400

chmod 0400 /etc/tom.ipaddr.pas

  1. 启动服务端

rsync –daemon

  1. 客户端同步

在客户端的cygwin下面,运行rsync同步,具体命令,请参考另一篇rsync的文章。

1.6.8cygwin下使用SSHD

  1. 须要安装了cygrunsrc,openssh
  2. 运行ssh-host-config -y

一路回车,直到出现CYGWIN=时,输入tty ntsec,再回车,

(或者,增长一系统环境变量CUGWIN=nesec tty)

  1. 已经安装好SSHD服务到你的Windows服务中,能够直接在服务中启动,关闭。

(cygrunsrc -S sshd或者net start sshd)

1.6.9中文显示

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

2安装和配置Hadoop-1.2.1

2.1安装JDK

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。

Hadoop安装

Hadoop安装

2.2下载最新稳定版Hadoop

下载地址:http://hadoop.apache.org/releases.html#Download

我下载的是最新稳定版:hadoop-1.2.1-bin.tar.gz

2.3规划Hadoop目录

在Hadoop生态圈里,有各类各样的工具,兴许过些时候就会用的上,在加上Hadoop开发M/R、部署M/R,以及升级Hadoop等等等,由此看来有必要花点心思对Hadoop的安装目录规划一番。

我安装Hadoop的Windows是一个虚拟机,而且只建立了一个分区,因此hadoop文件夹就放在C盘的根目录了。如下是个人目录结构:

Hadoop安装

Hadoop安装

Hadoop在C盘的根目录下,下面有code(存放代码)、deploy(放hadoop及生态圈的安装文件)、sysdata(存放dfs数据、SecondNameNode源数据以及运行期间的临时文件存放目录)。

将下载的hadoop-1.2.1-bin.tar.gz解压到目录c:\hadoop\deploy\hadoop-1.2.1

2.4添加Hadoop基本配置

Hadoop最完整的配置还得开官方文档,我这里只配置了一些基本的配置供参考:

注:由于个人hadoop安装在C盘,因此如下XML配置文件中配置路径的根都是C盘根目录。例如:/hadoop/sysdata运行过程当中翻译过来就是:c:\hadoop\sysdata。Shell脚本中配置路径的根是虚拟Linux的根目录/。例如:/cygdrive/c/jdk1.6.0_14指向:c:\jdk1.6.0_14。

2.4.1conf/hadoop-env.sh

添加JAVA_HOME:

export JAVA_HOME=/cygdrive/c/jdk1.6.0_14

2.4.2conf/core–site.xml

<?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>

2.4.3hdfs-site.xml

<?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>

2.4.4mapred-site.xml

<?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>

2.4.5masters

localhost

2.4.6slaves

localhost

2.5格式化NameNode

在以上配置文件完成后,咱们能够开始对namenode进行格式化了,这是hadoop开始使用的第一步,就像咱们对硬盘进行格式化操做同样。打开Cygwin终端执行如下命令:

cd /cygdrive/c/hadoop/deploy/hadoop-1.2.1/bin

./hadoop namenode –format

如图:

Hadoop安装

Hadoop安装

2.6启动测试Hadoop

格式化完NameNode后,咱们就能够执行start-all.sh命令来启动hadoop了。以下:

执行: ./start-all.sh

Hadoop安装

Hadoop安装

打开浏览器访问HDFS监控界面

http://localhost:50070

Hadoop安装

Hadoop安装

2.8Hadoop使用积累

2.8.1访问远程NameNode节点:

./hadoop dfs -fs 172.16.128.239:9001 -ls /user/lg/event_videos/2013/09/

2.8.2HDFS的权限相关

  1. 超级用户

超级用户即运行name node进程的用户。宽泛的讲,若是你启动了name node,你就是超级用户。超级用户干任何事情,由于超级用户可以经过全部的权限检查。没有永久记号保留谁过去是超级用户;当name node开始运行时,进程自动判断谁如今是超级用户。HDFS的超级用户不必定非得是name node主机上的超级用户,也不须要全部的集群的超级用户都是一个。一样的,在我的工做站上运行HDFS的实验者,不需任何配置就已方便的成为了他的部署实例的超级用户。另外,管理员能够用配置参数指定一组特定的用户,若是作了设定,这个组的成员也会是超级用户。

Web服务器用户

Web服务器的身份是一个可配置参数。Name node并无真实用户的概念,可是Web服务器表现地就像它具备管理员选定的用户的身份(用户名和组)同样。除非这个选定的身份是超级用户,不然会有名字空间中的一部分对Web服务器来讲不可见。

  1. 配置参数

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。

  1. 建立目录时默认的用户和组

建立目录的所属用户默认为当前建立者,即在类Unix系统中执行命令whoami所获得的用户名,所属组为上级目录的组。

相关文章
相关标签/搜索