xiaoxiong's Blog

Happy coding

putty的使用,远程连接linux

Psftp    -load   root@xiaoxiong1

  1. open calpico.dreamhost.com 用于连接远程linux服务器,其中calpico.dreamhost.com替换为您自己的地址。
  2. cd public_html/wp-content/ 用于切换远程Linux服务器上的目录,其中public_html/wp-contnt替换为您自己实际的路径。
  3. lcd D:/downloads/ 用于切换本地的路径,其中D:/downloads/就是我自己电脑里的D:/downloads/,总之,切换本地路径的目的是为了上传这个目录里的文件或者将服务器上的文件下载到这个文件夹里,如果你要上传位于CWindows文件夹里的notepad.exe到服务器上,就得 lcd C:/windows/
  4. put notepad.exe 上传notepad.exe到服务器上。
  5. get notepad.exe 下载notepad.exe到自己电脑上。

Putty下载:  http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

 

hadoop fs 命令一览表

 

FS Shell

 

调用文件系统(FS)Shell命令应使用 bin/hadoop fs <args>的形式。 所有的的FS shell命令使用URI路径作为参数。URI格式是scheme://authority/path。对HDFS文件系统,scheme是hdfs,对本地文件系统,scheme是file。其中scheme和authority参数都是可选的,如果未加指定,就会使用配置中指定的默认scheme。一个HDFS文件或目录比如/parent/child可以表示成hdfs://namenode:namenodeport/parent/child,或者更简单的/parent/child(假设你配置文件中的默认值是namenode:namenodeport)。大多数FS Shell命令的行为和对应的Unix Shell命令类似,不同之处会在下面介绍各命令使用详情时指出。出错信息会输出到stderr,其他信息输出到stdout

cat

 

使用方法:hadoop fs -cat URI [URI …]

将路径指定文件的内容输出到stdout

示例:

  • hadoop fs -cat hdfs://host1:port1/file1 hdfs://host2:port2/file2
  • hadoop fs -cat file:///file3 /user/hadoop/file4

返回值:
成功返回0,失败返回-1。

chgrp

 

使用方法:hadoop fs -chgrp [-R] GROUP URI [URI …] Change group association of files. With -R, make the change recursively through the directory structure. The user must be the owner of files, or else a super-user. Additional information is in the Permissions User Guide. -->

改变文件所属的组。使用-R将使改变在目录结构下递归进行。命令的使用者必须是文件的所有者或者超级用户。更多的信息请参见HDFS权限用户指南

chmod

 

使用方法:hadoop fs -chmod [-R] <MODE[,MODE]... | OCTALMODE> URI [URI …]

改变文件的权限。使用-R将使改变在目录结构下递归进行。命令的使用者必须是文件的所有者或者超级用户。更多的信息请参见HDFS权限用户指南

chown

 

使用方法:hadoop fs -chown [-R] [OWNER][:[GROUP]] URI [URI ]

改变文件的拥有者。使用-R将使改变在目录结构下递归进行。命令的使用者必须是超级用户。更多的信息请参见HDFS权限用户指南

copyFromLocal

 

使用方法:hadoop fs -copyFromLocal <localsrc> URI

除了限定源路径是一个本地文件外,和put命令相似。

copyToLocal

 

使用方法:hadoop fs -copyToLocal [-ignorecrc] [-crc] URI <localdst>

除了限定目标路径是一个本地文件外,和get命令类似。

cp

 

使用方法:hadoop fs -cp URI [URI …] <dest>

将文件从源路径复制到目标路径。这个命令允许有多个源路径,此时目标路径必须是一个目录。 
示例:

  • hadoop fs -cp /user/hadoop/file1 /user/hadoop/file2
  • hadoop fs -cp /user/hadoop/file1 /user/hadoop/file2 /user/hadoop/dir

返回值:

成功返回0,失败返回-1。

du

 

使用方法:hadoop fs -du URI [URI …]

显示目录中所有文件的大小,或者当只指定一个文件时,显示此文件的大小。
示例:
hadoop fs -du /user/hadoop/dir1 /user/hadoop/file1 hdfs://host:port/user/hadoop/dir1 
返回值:
成功返回0,失败返回-1。

dus

 

使用方法:hadoop fs -dus <args>

显示文件的大小。

expunge

 

使用方法:hadoop fs -expunge

清空回收站。请参考HDFS设计文档以获取更多关于回收站特性的信息。

get

 

使用方法:hadoop fs -get [-ignorecrc] [-crc] <src> <localdst>

复制文件到本地文件系统。可用-ignorecrc选项复制CRC校验失败的文件。使用-crc选项复制文件以及CRC信息。

示例:

  • hadoop fs -get /user/hadoop/file localfile
  • hadoop fs -get hdfs://host:port/user/hadoop/file localfile

返回值:

成功返回0,失败返回-1。

getmerge

 

使用方法:hadoop fs -getmerge <src> <localdst> [addnl]

接受一个源目录和一个目标文件作为输入,并且将源目录中所有的文件连接成本地目标文件。addnl是可选的,用于指定在每个文件结尾添加一个换行符。

ls

 

使用方法:hadoop fs -ls <args>

如果是文件,则按照如下格式返回文件信息:
文件名 <副本数> 文件大小 修改日期 修改时间 权限 用户ID 组ID 
如果是目录,则返回它直接子文件的一个列表,就像在Unix中一样。目录返回列表的信息如下:
目录名 <dir> 修改日期 修改时间 权限 用户ID 组ID 
示例:
hadoop fs -ls /user/hadoop/file1 /user/hadoop/file2 hdfs://host:port/user/hadoop/dir1 /nonexistentfile 
返回值:
成功返回0,失败返回-1。

lsr

 

使用方法:hadoop fs -lsr <args> 
ls命令的递归版本。类似于Unix中的ls -R

mkdir

 

使用方法:hadoop fs -mkdir <paths>

接受路径指定的uri作为参数,创建这些目录。其行为类似于Unix的mkdir -p,它会创建路径中的各级父目录。

示例:

  • hadoop fs -mkdir /user/hadoop/dir1 /user/hadoop/dir2
  • hadoop fs -mkdir hdfs://host1:port1/user/hadoop/dir hdfs://host2:port2/user/hadoop/dir

返回值:

成功返回0,失败返回-1。

movefromLocal

 

使用方法:dfs -moveFromLocal <src> <dst>

输出一个”not implemented“信息。

mv

 

使用方法:hadoop fs -mv URI [URI …] <dest>

将文件从源路径移动到目标路径。这个命令允许有多个源路径,此时目标路径必须是一个目录。不允许在不同的文件系统间移动文件。 
示例:

  • hadoop fs -mv /user/hadoop/file1 /user/hadoop/file2
  • hadoop fs -mv hdfs://host:port/file1 hdfs://host:port/file2 hdfs://host:port/file3 hdfs://host:port/dir1

返回值:

成功返回0,失败返回-1。

put

 

使用方法:hadoop fs -put <localsrc> ... <dst>

从本地文件系统中复制单个或多个源路径到目标文件系统。也支持从标准输入中读取输入写入目标文件系统。

  • hadoop fs -put localfile /user/hadoop/hadoopfile
  • hadoop fs -put localfile1 localfile2 /user/hadoop/hadoopdir
  • hadoop fs -put localfile hdfs://host:port/hadoop/hadoopfile
  • hadoop fs -put - hdfs://host:port/hadoop/hadoopfile 
    从标准输入中读取输入。

返回值:

成功返回0,失败返回-1。

rm

 

使用方法:hadoop fs -rm URI [URI …]

删除指定的文件。只删除非空目录和文件。请参考rmr命令了解递归删除。
示例:

  • hadoop fs -rm hdfs://host:port/file /user/hadoop/emptydir

返回值:

成功返回0,失败返回-1。

rmr

 

使用方法:hadoop fs -rmr URI [URI …]

delete的递归版本。
示例:

  • hadoop fs -rmr /user/hadoop/dir
  • hadoop fs -rmr hdfs://host:port/user/hadoop/dir

返回值:

成功返回0,失败返回-1。

setrep

 

使用方法:hadoop fs -setrep [-R] <path>

改变一个文件的副本系数。-R选项用于递归改变目录下所有文件的副本系数。

示例:

  • hadoop fs -setrep -w 3 -R /user/hadoop/dir1

返回值:

成功返回0,失败返回-1。

stat

 

使用方法:hadoop fs -stat URI [URI …]

返回指定路径的统计信息。

示例:

  • hadoop fs -stat path

返回值:
成功返回0,失败返回-1。

tail

 

使用方法:hadoop fs -tail [-f] URI

将文件尾部1K字节的内容输出到stdout。支持-f选项,行为和Unix中一致。

示例:

  • hadoop fs -tail pathname

返回值:
成功返回0,失败返回-1。

test

 

使用方法:hadoop fs -test -[ezd] URI

选项:
-e 检查文件是否存在。如果存在则返回0。
-z 检查文件是否是0字节。如果是则返回0。 
-d 如果路径是个目录,则返回1,否则返回0。

示例:

  • hadoop fs -test -e filename

text

 

使用方法:hadoop fs -text <src>

将源文件输出为文本格式。允许的格式是zip和TextRecordInputStream。

touchz

 

使用方法:hadoop fs -touchz URI [URI …]

创建一个0字节的空文件。

示例:

  • hadoop -touchz pathname

返回值:
成功返回0,失败返回-1。

转自  http://hadoop.apache.org/docs/r1.0.4/cn/hdfs_shell.html#cat

让配置hadoop2.4.1 集群不在那么难!

路漫漫其修远兮,吾将上下而求索 -----  天道真的会酬勤?

 Hadoop2.4.1的搭建完全过程

《《《《《《《《《《《《《《《《《《《《《《《1》》》》》》》

准备4台机子, 都装上linux的系统,我推荐安装的是 cenos,看硬件吧,有条件的话装centos7,因为这个是64位的,我在实验室所以差一点,装的是centos6.5的,用u盘制作工具将系统做成u盘启动的

《《《《《《《《《《《《《《《《《《《《《《《《《《《《2》》》

装完机子后,用户名统一一下,我用的是root,但在实际环境中,需要自己创建用户,然后在/root下建立hjava文件夹,这样,我的jdk jre hadoop全是放在这里面的

《《《《《《《《《《《《《《《《《《《《《《3》》》》》

  Java的配置,hadoop是java的,在装完centos6.5后,用java –version查看一下,就会发现是openjdk,不想用这个,想用自己的jdk,所以去下载jdk和jre,我下载的是jdk7 和 jre7 版本的,所以先解压, tar  -xvzf  jdk-XXX.tar.gz  ,   tar –xzvf  jre-XXX.tar.gz 运行完着两条命令后,接着变一下文件夹的名字吧,jdk-XXX总觉着太长,用 mv jdk-XXX jdk7  , mv  jre-XXX  jre7 来改变文件夹的名字。改完后就要删除系统中的openjdk了。用  rpm –qa |grep java 查出openjdk的java rpm包,然后用 rpm –e –nodeps @@ 逐渐一一删除,其中@@ 就是刚才pm –qa |grep java 这条命令查出的结果,一般有两条或3条,都删了就可以了,然后 运行 java  -version会发现是空白,这样openjdk就删除干净了。接下来配置自己账户下的jdk。在自己的家目录下,我这里是/root目录,或者直接敲入命令 cd ~ 即可进入自己的家目录,然后 运行 vi  .bashrc ,在文件底部加入 export JAVA_HOME=/root/hjava/jdk7

export JRE_HOME=/root/hjava/jdk7

export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib

export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin   即可,这样 配置后保存,然后敲入source .bashrc使之立即生效。完成后,在命令行敲入java –version来查看自己设置的jdk环境

《《《《《《《《《《《《《《 《《《《《《《4   》》》

配置好java环境后,开始为hadoop做准备了,即联网的准备哦。怎么联网呢? 首先说明,我有四台机子,一台master,叫做xiaoxiong1三台slave,叫做xiaoxiong2 xiaoxiong3 xiaoxiong4。这样,想给他们分配的ipv4是 192.168.8.1  192.168.8.2  192.168.8.3  192.168.8.4这4个ip地址,在vi  /etc/sysconfig/network-scripts/ifcfg-eth0 ,在打开的文件中,注意,DEVICE  TYPE  UUID  HWADDR是不用变的,而且千万别变,然后在这基础上加入或者修改 ONBOOT=yes   BOOTPROTO=static  IPADDR=你想写的IP地址,也就是刚才的ip地址, NETMASK=255.255.255.0弄完这些后保存退出,然后敲入命令 /etc/init.d/network reload使这些改变生效,然后你在运行 ifconfig 查看一下,看变成自己想要的ip没。做完这些后,在 敲入 vi /etc/hosts , 在文件尾部加入

               192.168.8.1  xiaoxiong1

               192.168.8.2  xiaoxiong2

               192.168.8.3   xiaoxiong3

               192.168.8.4  xiaoxiong4

这些是为了在你ssh的时候机器之间能互相认识,这些操作是要在你所有的机子上运行一遍的  切记 , 做完这些           后,可以ping一下主机名,看通了吧,然后关闭你的master也就是xiaoxiong1上的防火墙, 用命令 chkconfig             iptables off,不然从节点上的 nodemanager无法启动

《《《《《《《《《《《《《《《《5》》》》》》》》》》 

 网络弄好后,接下来是ssh的配置,我们使用ssh登录。随便选一台机子,比如我选的是xiaoxiong1,然后敲入 ssh-keygen –t dsa ,然后一路按回车,完后,在你的家目录下的 .ssh 文件夹下,会有生成idXX  和 idXX.pub文件,这个便是传说中的秘钥和公钥。然后运行 ssh-copy-id  -i  idXX.pub  root@主机名,注意是在 .ssh 目录下的,这里的主机名是所有的主机名xiaoxiong1 2 3 4 都要运行一遍刚才的命令,这样,刚才选的xiaoxiong1才可以跟 xiaoxiong1 2 3 4进行ssh免密码登录,在这个过程中,会写 yes 和你要登录主机的密码,写上去回车即可。这样,xiaoxiong1 和4台机子ssh做好的,接着是xiaoxiong2 和其他机子的,以此类推,做完所有机子的ssh,这样,所有机子便可以免密码ssh互通了

《《《《《《《《《《《《《《《《《6》》》》》》》》》》》

做ssh后,便是配置hadoop2.4.1的配置文件了,首先在下hadoop2.4.1,用tar命令解压,解压完后,我的目录用A表示,然后开始进行配置。首先是A/etc/hadoop/salves的配置,就是说这个文件中写入你的salves节点名字即可,我的是 xiaoxiong2  xiaoxiong3  xiaoxiong4 。然后是 hadoop-env.sh文件, 在尾部加入  JAVA_HOME=$JAVA_HOME, 然后是各种hadoop的配置文件,如文件尾,文件有  hdfs-site.xml    core-site.xml  mapred-site.xml   yarn-site.xml 四个

<!--core-site.xml -->

<configuration>
        <property>
        <name>fs.defaultFS</name>
        <value>hdfs://xiaoxiong1:9000</value>
        </property>

        <property>
        <name>io.file.buffer.size</name>
        <value>131072</value>
        </property>

        <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/home/xiaoxiong1/hjava/hadoop-2.4.1/tmp</value>
        <description>Abase for other temporary directories.</description>
        </property>

        <property>
        <name>hadoop.proxyuser.hduser.hosts</name>
        <value>*</value>
        </property>

        <property>
<name>hadoop.proxyuser.hduser.groups</name>
        <value>*</value>
        </property>


</configuration>

<!---- hdfs-site.xml ------------------------------------------->
<configuration>

        <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>xiaoxiong1:9001</value>
        </property>
        <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/home/xiaoxiong1/hjava/hadoop-2.4.1/name</value>
        </property>
        <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/home/xiaoxiong1/hjava/hadoop-2.4.1/data</value>
        </property>
        <property>
        <name>dfs.replication</name>
        <value>3</value>
        </property>
        <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
        </property>

</configuration>
<!-------- mapred-site.xml -------------------------------------------------------->
<configuration>
        <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
        </property>
        <property>
        <name>mapreduce.jobhistory.address</name>
        <value>xiaoxiong1:10020</value>
        </property>
        <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>xiaoxiong1.19888</value>
        </property>
        </configuration>

<!------ yarn-site.xml --------------------------------->
<configuration>

<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>

<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>

<property>
<name>yarn.resourcemanager.address</name>
<value>xiaoxiong1:8032</value>
</property>

<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>xiaoxiong1:8030</value>
</property>

<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>xiaoxiong1:8031</value>
</property>

<property>
<name>yarn.resourcemanager.admin.address</name>
<value>xiaoxiong1:8033</value>
</property>

<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>xiaoxiong1:8088</value>
</property>

</configuration>





《《《《《《《《《《《《《《《《《《《《《《《《7》  》》》》》》》》》 

 

 配置完这些文件后,把hadoop这个文件的家目录,就刚才解压hadoop-2.4.1.tar.gz的A,复制到其他的节点上去,用scp命令即可,都复制完后,进去master的A目录,进去后执行./bin/hdfs namenode –format , 然后看到INFO common.Storage: Storage   directory /home/wukong/a_usr/hadoop-2.4.1/name has been successfully formatted.说明成功啦,切记不可多次格式化,不然会出现一个 nameID和 dataID 不一样而冲突导致 datanode 无法启动的问题,若出现,就需要看log然后解决了

《《《《《《《《《《《《《《《《《《《《《《《《8》》》》》

启动dfs     在A目录下, 执行 ./sbin/start-dfs.sh,看到一系列的.out说明成功了

启动yarn    A下,./sbin/start-yarn.sh(master节点)   然后敲入jps


master节点:

  1. 8783 NameNode
  2. 8981 SecondaryNameNode
  3. 9759 Jps
  4. 9132 ResourceManager

 

slave节点:

 

  1. 6911 DataNode
  2. 7035 NodeManager
  3. 7281 Jps

说明差不多啦

《《《《《《《《《《《《《《《《《《《《《《9》》》》》》》  

(可以省略这一步)》用eclipse来开发hadoop程序。 首先要明白,eclipse是telnet来连接hadoop的,所以先看一下你的计算机能不telnet master节点。一般的话先去 控制面板----》打开或关闭windows功能,将win7 的telnet功能开启,一般win7作为客户端只要开启telnet的客户端组件功能就ok啦,不需要开启服务端的。在linux下,要开启telnet的服务端,因为telnet是明文发送的,所以centos默认是不安装这个服务的,可以去安装光盘的 packages下找到telnet-server这个rpm文件,然后再找一个xinetd-2.3.14-39.el6_4.i686.rpm的文件,然后在linux中先安装xinetd,用 rpm –i xinetd-2.3.14-39.el6_4.i686.rpm 安装,然后就是telnet-server的安装。装好后,去/etc/xinetd.d/telnet 中修改一下, 将 disable=yes 改成 disable=no, 这样, 重启xinted的服务, 即 service xinetd restart 后, 用Netstat –ntl | grep 23 来查看linux的23号端口开了没,查到了的话就代表开启23的端口了。 一般而言, linux是禁止root通过telnet来登录的,可以去/etc/securetty 末尾加上 pts/0     pts/1 ,然后保存,这样的话可用 root登录了。然后回到 win7中, ping一下,可以ping通的,但是telnet就是没反应,死活通不了,后来才想到,是ip的问题。是的,win7下去给 本地连接 设置一个 ip去吧, 是 192.168.8.5,跟你的linux要在同一个网段上的, 掩码 255.255.255.0,其他的不填,这样的话再去 dos中跑一下telnet命令,就会出现可以登录的情况,至此,断断续续的高了一礼拜才弄完了,但是这时候,我已经将hadoop从集群点上删除了,因为手贱,点错了,导致hadoop的datanode节点无法启动,需要重装了,诶,晕死了,慢不慢来

《《《《《《《《《《《《《10》》》》

通过上面的,telnet应该能与linux连接了,主要就是将win7的ip放到集群的ip网段中就好了。然后就开始制作eclipse-hadoop的插件了,网上教程很多的。

@首先是 从  github上面下载eclipse-hadoop2.x 的源码,然后在eclipse中通过ant反编译成 jar插件。Github的网址是

https://github.com/winghc/hadoop2x-eclipse-plugin, 这上面右边导航树点击 download zip 就能下载 到hadoop2x-eclipse-plugin 了,下载完后,解压,然后在

eclipse新建一个普通的java project,将刚才下载的eclipse-hadoop2.x 包的 hadoop-eclipse2X-pulin\hadoop2x-eclipse-plugin-master\src\contrib\eclipse-plugin

中的

META-INF(文件夹)

Resources(文件夹)

src(文件夹)

build.properties

plugin.xml

build.xml  

6个文件往项目里复制,build.xml会出错,粘贴下面的代码改掉build.xml中的前5个属性,这里build。Xml中已经修改过了,

Build.xml代码如下

<?xml version="1.0"?>

<project name="eclipse-plugin" default="jar">



    <property name="jdk.home" value="G:/jdk/jdk1.6.0" />

    <property name="hadoop.version" value="2.4.1" />

    <property name="hadoop.home" value="G:/hadoop/hadoop-2.4.1" />

    <property name="eclipse.version" value="3.7" />

    <property name="eclipse.home" value="G:/MyEclipse10/Common" />



    <property name="root" value="${basedir}" />

    <property file="${root}/build.properties" />



    <property name="name" value="${ant.project.name}" />

    <property name="src.dir" location="${root}/src/java" />



    <property name="build.contrib.dir" location="${root}/build/contrib" />

    <property name="build.dir" location="${build.contrib.dir}/${name}" />

    <property name="build.classes" location="${build.dir}/classes" />



    <!-- all jars together -->

    <property name="javac.deprecation" value="off" />

    <property name="javac.debug" value="on" />



    <property name="build.encoding" value="ISO-8859-1" />



    <path id="eclipse-sdk-jars">

        <fileset dir="${eclipse.home}/plugins/">

            <include name="org.eclipse.ui*.jar" />

            <include name="org.eclipse.jdt*.jar" />

            <include name="org.eclipse.core*.jar" />

            <include name="org.eclipse.equinox*.jar" />

            <include name="org.eclipse.debug*.jar" />

            <include name="org.eclipse.osgi*.jar" />

            <include name="org.eclipse.swt*.jar" />

            <include name="org.eclipse.jface*.jar" />

            <include name="org.eclipse.team.cvs.ssh2*.jar" />

            <include name="com.jcraft.jsch*.jar" />

        </fileset>

    </path>



    <path id="project-jars">

        <fileset file="${build.dir}/lib/*.jar" />

    </path>



    <target name="init" unless="skip.contrib">

        <echo message="contrib: ${name}" />

        <mkdir dir="${build.dir}" />

        <mkdir dir="${build.classes}" />

        <mkdir dir="${build.dir}/lib" />

        <copy todir="${build.dir}/lib/" verbose="true">

            <fileset dir="${hadoop.home}/share/hadoop/mapreduce">

                <include name="hadoop*.jar" />

                <exclude name="*test*"/>

                <exclude name="*example*"/>

            </fileset>

            <fileset dir="${hadoop.home}/share/hadoop/common">

                <include name="hadoop*.jar" />

                <exclude name="*test*"/>

                <exclude name="*example*"/>

            </fileset>

            <fileset dir="${hadoop.home}/share/hadoop/hdfs">

                <include name="hadoop*.jar" />

                <exclude name="*test*"/>

                <exclude name="*example*"/>

            </fileset>

            <fileset dir="${hadoop.home}/share/hadoop/yarn">

                <include name="hadoop*.jar" />

                <exclude name="*test*"/>

                <exclude name="*example*"/>

            </fileset>

            <fileset dir="${hadoop.home}/share/hadoop/common/lib">

                <include name="protobuf-java-*.jar" />

                <include name="log4j-*.jar" />

                <include name="commons-cli-*.jar" />

                <include name="commons-collections-*.jar" />

                <include name="commons-configuration-*.jar" />

                <include name="commons-lang-*.jar" />

                <include name="jackson-core-asl-*.jar" />

                <include name="jackson-mapper-asl-*.jar" />

                <include name="slf4j-log4j12-*.jar" />

                <include name="slf4j-api-*.jar" />

                <include name="guava-*.jar" />

                <include name="hadoop-annotations-*.jar" />

                <include name="hadoop-auth-*.jar" />

                <include name="commons-cli-*.jar" />

                <include name="netty-*.jar" />

            </fileset>

        </copy>

    </target>



    <target name="compile" depends="init" unless="skip.contrib">

        <echo message="contrib: ${name}" />

        <javac fork="true"  executable="${jdk.home}/bin/javac" encoding="${build.encoding}" srcdir="${src.dir}" includes="**/*.java" destdir="${build.classes}" debug="${javac.debug}" deprecation="${javac.deprecation}" includeantruntime="on">

            <classpath refid="eclipse-sdk-jars" />

            <classpath refid="project-jars" />

        </javac>

    </target>



    <target name="jar" depends="compile" unless="skip.contrib">



        <pathconvert property="mf.classpath" pathsep=",lib/">

            <path refid="project-jars" />

            <flattenmapper />

        </pathconvert>



        <jar jarfile="${build.dir}/hadoop-${hadoop.version}-eclipse-${eclipse.version}-plugin.jar" manifest="${root}/META-INF/MANIFEST.MF">

            <manifest>

                <attribute name="Bundle-ClassPath" value="classes/,lib/${mf.classpath}" />

            </manifest>

            <fileset dir="${build.dir}" includes="classes/ lib/" />

            <fileset dir="${root}" includes="resources/ plugin.xml" />

        </jar>

    </target>





    <target name="clean">

        <echo message="contrib: ${name}" />

        <delete dir="${build.dir}" />

    </target>



</project>

具体代码见http://www.cnblogs.com/zxub/p/3884030.html

里面描述的。改完后 在build.xml上右击 ,然后ant运行,生成插件,刷新项目,就可以看见生成的插件了。将 生成的插件放到eclipse 的 puilgn 中,重启eclipse,这时候若没有看到map/reduce插件,说明eclipse在偷懒,没有进行刷新,这时候删去eeclipse工作区里面的.metadata 文件夹,然后重启eclipse,这样就会看到了。

@@然后在 eclipse 的 window ---》 preference 中,找到右面功能树的hadoop map/reduce ,添加hadoop的目录,这里hadoop的目录就是你在linux中集群hadoop家目录的一个备份,把它弄到这里来,我用的是 psftp(属于putty的一种,putty可以去http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html 下载) 的 get功能

@@@然后去eclipse的视图里面打开 map/reduce 视图,新建一个连接,这里面,Location name可任意填写,Mapreduce Master中Host为resourcemanager机器ip,Port为resourcemanager接受任务的端口号,即yarn-site.xml文件中yarn.resourcemanager.scheduler.address配置项中端口号。DFS Master中的Host为namenode机器ip,Port为core-site.xml文件中fs.defaultFS配置项中端口号。配置好后,在eclipse 中还看不到节的话, 看看你的hdfs系统中有没上传文件,一般在集群点上传几个文件,在eclipse中就会看到的。这样,eclipse已经远程连接到hadoop了,接下来就是开始第一个 wordCount程序了,待续。。。。