Hadoop——MapReduce过程

MapReduce由Mapper和Reucer组成,Mapper负责处理每行数据,Reducer处理相同Key的一组数据。

 

MapReduce运行是由Driver中的job通过submit()进行作业提交,submit()包含与集群建立连接和提交作业的过程,在提交作业时会进行切片,默认的切片方法是使用的TextInputFormat,它进行切片时根据文件的大小进行切割,默认切割规则是否达到一个指定值的1.1倍,使用TextInputFormat读取多个文件时,不同文件不会进行合并处理,会从头开始进行切片。切片之后会把切片配置信息写到一个文件夹下,然后集群去执行这些切片配置,执行时会用到mapper和reducer

 

一、Mapper的运行过程大概包括以下几步,reader、mapper、collect、spill、combiner

reader

每个切片一般对应一个mapper,reader会根据切片配置信息去读取相应路径下的数据,

mapper

然后调用用户写的mapper方法对数据进行相应的处理,

collect

数据处理完之后调用OutputCollector.collect()输出结果,在函数内部会调用key/value分区(调用Driver中job指定的分区方法,默认为HashPartition分区),并将数据写入一个环形缓冲区。

spill

当环形缓冲区达到一定条件时,会把数据写到本地磁盘,在写入磁盘之前会进行一个排序、合并、压缩等操作。

在进行排序时,会先按照分区编号就行排序,然后每个分区内在按照key的compareTo进行排序,如果用户设置了combine,在写入直接回调用combiner方法进行聚集操作。map

combiner

当所有的数据处理完之后,MapTask会把所有的文件进行一次合并,确保最终只有一个数据文件生成,同时生成相应的索引文件。

 

二、Reducer过程

reducetask根据自己的分区号,去 各个maptask机器上取相应的分区的数据

reducetask将来自各个maptask的文件进行合并(归并排序),大文件合并之后,shuffle阶段就结束了。

reducetask根据Driver中setCombinerGroupingComparatorClass()中的compare方法来判断哪些是属于同一分组,用户调用编写的reduce()方法处理group。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是操作的指令: 6. 查看input中的文件列表: ``` $ hdfs dfs -ls /user/用户名/input ``` 该命令会列出HDFS中“/user/用户名/input”目录下的所有文件和文件夹。 7. 删除本地系统的input文件夹: ``` $ rm -r input ``` 该命令会删除本地系统中的“input”文件夹。 8. 分布式运行MapReduce作业: ``` $ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar grep /user/用户名/input /user/用户名/output 'hello' ``` 该命令会在Hadoop集群中分布式运行MapReduce作业,对“/user/用户名/input”目录中包含“hello”的文件进行查找,并将结果输出到“/user/用户名/output”目录中。 9. 查看位于HDFS中的output文件夹中的输出结果: ``` $ hdfs dfs -cat /user/用户名/output/* ``` 该命令会将HDFS中“/user/用户名/output”目录下的所有文件内容输出到终端中。 10. 将分布式运行结果取回到本地的output文件夹: ``` $ hdfs dfs -get /user/用户名/output output ``` 该命令会将HDFS中“/user/用户名/output”目录下的所有文件取回到本地的“output”文件夹中。 11. 查看本地的output文件夹结果: ``` $ cat output/* ``` 该命令会将“output”文件夹中的所有文件内容输出到终端中。 12. 删除分布式文件系统中的output文件夹: ``` $ hdfs dfs -rm -r /user/用户名/output ``` 该命令会删除HDFS中“/user/用户名/output”目录及其所有内容。 13. 关闭Hadoop: ``` $ stop-all.sh ``` 该命令会停止Hadoop集群中所有节点的进程。 通过以上操作,我们可以在HDFS中查看文件列表、删除本地文件夹、分布式运行MapReduce作业、查看输出结果、将结果取回到本地、删除分布式文件系统中的文件夹,以及关闭Hadoop集群。这些操作都是Hadoop中常用的基本操作,对于Hadoop的使用和应用具有重要的意义。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值