欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-06-13 17:43:33
...

(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,原则是先启动主节点,再启动子节点。

启动namenodenamenode的主main入口在org.apache.hadoop.hdfs.server.namenode包下,类名为NameNode.java ,找到main函数,在第一行添加:

argv = new String[]{"-format"};

代码,然后运行该类,正常情况下,会输出metadata目录的格式化信息。接着,注释掉刚才添加的代码,重新运行该类。

 

·         Step7. 启动datanodedatanode的主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的根目录文件,那么在FsShellmain函数中,添加 args = new String[]{“-ls”, “/”};代码,然后运行该类即可。

 

mapreduce方面,可以使用org.apache.hadoop.mapred.JobClient提交任务。