2020.9.14(IDEA开发MapReduce的wordcount程序)

IDEA开发MapReduce的worldcount程序

hadoop-MapReduce-yarn集群的搭建完成之后(参考上篇博客)。
运行的环境有了,现在要做开发。基于IDEA在maven的层面去做,如果想写api的话,maven中要补全库。在poem.xml中要补全一些东西。
1.找到maven的网站,搜索hadoop
上次做hdfs开发的时候引了Apache Hadoop Common和Apache Hadoop HDFS
其实hadoop想的特别好,他有一个Apache Hadoop Client Aggregator聚合,他会把客户端开发的相关的poem都聚合起来。所以导入这一个,可以把hdfs开发和mapreduce开发的所有的jar包都可以引入。
为什么在hdfs开发的时候引入了Apache Hadoop Common和Apache Hadoop HDFS?
因为有的项目是只做hdfs开发,不会做mapreduce开发的。hdfs也可以单独开发。如果做mapreduce,导入Apache Hadoop Client Aggregator这一个就可以了。

<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-client -->
<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-client</artifactId>
    <version>2.6.5</version>
</dependency>

在poem找到<depedencies></dependencies>粘贴进来,然后poem就会自动导相关的包,这个版本要求和hadoop集群的版本是一致的。最好是要保持一致,这是开发当中最关键的一件事情,一个常识。虽然高版本会兼容低版本。把这个包导完,poem这一块就搞定了。
接下来就是开发的事情。

在mapreduce开发的时候强调了,有客户端、map环节、reduce环节,这三个环节,先在目录中新建一个包路径,现在是基于hadoop下面的mapreduce的api里的wc(wordcount)自己的实现。
在wc路径下先写出一个MyWordCount这么一个类:

package cn.kgc.kb09.hadoop.mapreduce.wc;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;

/**
 * @Author: ChaoKeAiMuZhi
 * @Date: 2020/9/14 21:50
 * @Description:
 **/
public class MyWordCount {
   
    //先写客户端,客户端和map和reduce未来都是JVM进程,所以它牵扯到主方法,要先写一个主方法。
    public static void main(String[] args) throws Exception{
   
        //它也是一个CS架构,未来也要联系resource manager,name node, 它也需要知道集群里有哪些角色。
        //牵扯到一个东西,资源目录resources,在maven目录结构中必须有这个s,它对路径有强硬的约束。如果不写,未来打包的时候,target里面可能就没有这些相关的配置。
        //目前resources里放的文件只有关于hdfs的core-site.xml和hdfs-site.xml,未来客户端在windows上跑的时候,也可能需要有mapred-site.xml和yarn-site.xml两个文件,复制到项目当中的resources目录下
        //客户端怎么知道节点的主在哪里?需要解析配置文件。hadoop有一个现成的东西叫做configuration,导入org.apache.hadoop.conf的Configuration
        Configuration conf = new Configuration(true);//true默认加载放在根目录下resources里的配置文件
        //但是configuration只是一个解析xml文件的工具类,最终会得到conf这个Configuration对象,包含了所有的配置信息,它并不是客户端。
        //在hdfs里的客户端时FileSystem类,在mapreduce当中也做了一个抽象,叫做Job,导入org.apache.hadoop.mapreduce
        //Job.getInstance获取一个实例,把conf传递进来,最终就可以得到Job这个客户端对象。这才是真正的客户端。
        Job job=Job.getInstance(conf);
        //未来要养成一个习惯,什么事情都要去敢看源码/注解。在maven有一个功能,在maven导完相关的依赖的时候,里面是可以下载相关的源码和文档的。
        //右边栏->第三个download图标->download sources and documentation把相关的东西都下载一下
        //下载完之后点Job进去,上面会有一些描述,这个Job主要时做一些什么事情,Job客户端对象最终为了提交作业的
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值