六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 34|回复: 0

win32下开发hadoop应用程序(二)

[复制链接]

升级  80%

8

主题

8

主题

8

主题

童生

Rank: 1

积分
40
 楼主| 发表于 2013-2-3 14:08:04 | 显示全部楼层 |阅读模式
(2)在Eclipse中配置开发hadoop程序,下载hadoop-0.20.2-cdh3u1.tar.gz。
·         Step1. 在eclipse中,新建一个Java 项目,填入Project name,在Contents中,选择 “Create project from existing source”,在 Browse… 中选择hadoop的目录,点击“Next > ”。
 
·         Step2. 在Java Build Path面板,建议把Source folders全部移除,在Default output folder中,重新输入output目录,因为hadoop的 bin 目录是存放linux脚本的,这里可以指定一个hadoop-0.xx.xx/output目录。点击“OK”。
 
·         Step3. 在Package Explorer中,右击项目名,选择“build path”,选择“configuration build path”,在source folder中,选择以下目录作为source folder:
Hadoop-0.xx.xx/conf
Hadoop-0.xx.xx/src/core
Hadoop-0.xx.xx/src/hdfs
Hadoop-0.xx.xx/src/mapred
 
·         Step4. 此时eclipse会编译source folder 的源码,目前一般高版本的hadoop,只差了一个ant.jar,这个包就是ant 的主要jar包。可以到 http://ant.apache.org/bindownload.cgi 下载到。并加到classpath 的 Libraries中。
 
·         Step5. 如果一切顺利,接下来配置 conf/ 下的 core-site.xml hdfs-site.xml mapred-site.xml 三个配置文件,在core-site.xml中加入(端口可以自己定义):
<property>

            <name>fs.default.name</name>

            <value>hdfs://localhost:9000</value>

            </property>

 

      <property>

            <name>mapred.job.tracker</name>

            <value>localhost:9001</value>

      </property>
 
另外,在本地配置一个目录存放namenode 的 metadata ,另一个目录存放 datanode的 block。 用于配置hdfs-site.xml:
<property>

       <name>dfs.name.dir</name>

       <value>E:/namespace/dfs/metadata</value>

    </property>

 

    <property>

       <name>dfs.data.dir</name>

       <value>E:/sde/hadoop/data</value>

    </property>

 

    <property>

       <name>dfs.replication</name>

       <value>1</value>

    </property>
 
接下来,在mapred-site.xml中,加入:
<property>

               <name>mapred.job.tracker</name>

               <value>localhost:9001</value>

</property>
 
注:有关Tasktracker,和Datanode 的端口无需配置,这两个节点相对于Jobtracker namennode是客户端,RPC的端口是自动分配的。也就是我们说的控制端口,另外传输通信端口,请阅读 hdfs-default.xml mapred-default.xml配置文件。
 
·         Step6. 启动hadoop的步骤是先启动HDFS,然后再启动mapred,原则是先启动主节点,再启动子节点。
启动namenode,namenode的主main入口在org.apache.hadoop.hdfs.server.namenode包下,类名为NameNode.java ,找到main函数,在第一行添加:
argv = new String[]{"-format"};
代码,然后运行该类,正常情况下,会输出metadata目录的格式化信息。接着,注释掉刚才添加的代码,重新运行该类。
 
·         Step7. 启动datanode,datanode的主main入口在 org.apache.hadoop.hdfs.server.datanode包下,类名为 DataNode.java,找到main函数,该类,直接运行。
 
·         Step8. 启动 JobTracker,该类位于org.apache.hadoop.mapred.JobTracker,在启动之前,找到main方法,在main方法的第一行加入:
System.setProperty(“hadoop.log.dir”, “$HADOOP_DIR/logs”);
$HADOOP_DIR为您本机的hadoop目录。由于hadoop默认是shell脚本启动的,因
Hadoop.log.dir 是在shell 中配置的。
 
·         Step9. 启动 TaskTracker,该类位于org.apache.hadoop.mapred.TaskTracker,直接运行。
 
注:我们已经成功启动了四个进程,如果您需要,可以启动SecondaryNameNode,该类位于org.apache.hadoop.hdfs.server.namenode包,但考虑到内存占用情况,一般该节点无需启动。
 
·         Step10. Hadoop的 命令行调用的类,在core包中的 org.apache.hadoop.fs中可以找到,类名为FsShell.java,举个简单的例子,如果需要查看Hdfs的根目录文件,那么在FsShell的main函数中,添加 args = new String[]{“-ls”, “/”};代码,然后运行该类即可。
 
在mapreduce方面,可以使用org.apache.hadoop.mapred.JobClient提交任务。
 

 
 
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表