![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MapReduce
文章平均质量分 61
ThisIsNobody
这个作者很懒,什么都没留下…
展开
-
MapReduce 关于MapReduce
MapReduce是处理大规模数据的编程模型,MapReduce程序是并行运行的map和reduce任务过程分为两个阶段:map阶段和reduce阶段,每个阶段都是以键值对作为输入输出,要编写两个函数:map函数和reduce函数下图为MapReduce的逻辑数据流,底部是Unix管线,模拟流程Java MapReducemap函数 + reduce函数 + 运行作业的代码实现Mapper类的ma...原创 2018-06-23 01:20:30 · 916 阅读 · 0 评论 -
MapReduce类型和格式(二) 输入格式
输入分片和记录一个map操作处理一个split,一个split被分为若干记录,每个记录是一键值对,map一个个处理键值对。public abstract class InputSplit { /** * Get the size of the split, so that the input splits can be sorted by size. * @return the n...原创 2018-06-26 07:26:46 · 871 阅读 · 0 评论 -
MapReduce特性(四) 边数据分布
边数据:作业所需的额外的只读数据,辅助处理主数据集1 JobConf > Configuration类的setter方法 > Context.getConfiguration() > 如果是复杂的元数据,用户自定义序列化或者使用Stringifier类2 分布式缓存分布式缓存优于序列化边数据工作机制 > 用户启动作业,Hadoop使用-files -...原创 2018-06-27 09:31:31 · 278 阅读 · 0 评论 -
MapReduce特性(三) 连接-Join DataSets
把Join作为实现的核心部分的高级框架:Pig Hive Cascading Cruc Spark连接操作取决于数据集的规模和分区方式1 如果其中一个数据集很小,可以分发到各个MR节点上连接2 如果两个数据集都很大,需要考虑如何使用map端连接和reduce端连接mapper执行连接称为 mapper端连接reducer执行连接称为reduce端连接map端连接数据到达map函数之前连接 &...原创 2018-06-27 09:31:25 · 185 阅读 · 0 评论 -
MapReduce特性(二) 排序
MapReduce的核心技术是排序,用来组织数据准备将一个MR作业设置成只有map函数,并通过job.setNumReduceTasks(0)不执行默认的reduce,所以输出不会按键排序部分排序> 使用默认的MR设置,最终结果产生按键排序> 如果输出文件有多个,那多个分别按键排序,且文件串联非有序,则不是全体有序,可以使用MapFile发现键的所属分区,在分区查找记录全排序> ...原创 2018-06-26 09:54:01 · 207 阅读 · 0 评论 -
MapReduce特性(一) 计数器
计数器是收集作业统计信息的手段用于质量控制,应用级统计以及辅助诊断系统故障内置计数器1 任务计数器 > 任务计数器由关联的任务维护,并定期发送application master,每次完整传输,而不是上次传输之后开始的计数 > 如果任务执行失败,计数器的值会减小 > 可以通过任务执行过程的内存使用变化等获取诊断信息2 作业计数器 > 由applica...原创 2018-06-26 08:09:01 · 223 阅读 · 0 评论 -
MapReduce类型和格式(一) 类型
map函数的输出类型必须与reduce的输入类型相同,下面的K1,V1,K2,V2等为抽象类型map: (K1, V1) -> (K2, V2)combiner: (K2, list(V2)) -> list(K2, V2)reduce: (K2, list(V2)) -> list(K3, V3)一般情况下,combiner和reduce的参数是相同的,即K2=K3, V2=V...原创 2018-06-26 07:26:44 · 684 阅读 · 0 评论 -
MapReduce运行机制(四) 任务的执行
任务执行环境Hadoop提供运行环境信息1) 处理文件名称2) 任务的尝试次数3) 作业配置信息...Streaming环境变量Hadoop设置作业配置参数作为Streaming环境变量,下划线代替非字母数字的符号1) os.environ["mapreduce_job_id"] Python2) -cmdenv 设置环境变量 -cmdenv MAGIC_PARAMETER=abrac...原创 2018-06-26 07:26:36 · 744 阅读 · 0 评论 -
MapReduce运行机制(三) shuffle和sort和shuffle调优
shuffleMR确保每个reducer的输入都是按key排序的,系统执行排序,将map输入传给reduce的过程叫shufflemap端1) map输出:不是直接写到磁盘,而是利用缓冲写到内存并进行预排序2) shuffle > 每个map任务有环形内存缓冲区用于存储任务输出,到达80%时,后台线程开始将缓冲区内容溢出到磁盘,边溢出边写入,如果缓冲区写满,map会阻塞直到spill过...原创 2018-06-26 07:26:34 · 471 阅读 · 0 评论 -
MapReduce运行机制(二) 失败
任务/application master/NM/RM任务运行失败1) 任务代码异常 > JVM在退出前向application master发送错误报告,报告被记录用户日志 > application master将任务标记为failed,释放容器和资源 > 如果是Streaming任务,如果Streaming进程以非零代码退出,则标记...原创 2018-06-26 07:26:32 · 894 阅读 · 0 评论 -
MapReduce运行机制(一) 剖析MR作业运行机制
剖析MR作业运行机制submit() 提交作业,封装大量处理细节waitForCompletion() 提交未提交过的作业并等待完成MR作业过程:1) 客户端:提交MapReduce作业2) YARN Resource Manager,协调集群资源分配3) YARN Node Manager,启动和监控集群计算容器4) MapReduce application master,协调运行MR作任务。...原创 2018-06-26 07:26:21 · 817 阅读 · 0 评论 -
MapReduce应用开发(三) 本地运行和集群运行
本地运行本地运行器Hadoop有一个本地作业运行期job runner,在MapReduce执行引擎运行单个JVM上的MR作业的简化版本,为测试设计测试驱动程序1) 使用本地作业运行器2) 使用mini集群,Hadoop有一组测试类,MiniYARNCluster,MiniDFSClusterh和MiniMRCluster,使用程序创建正在运行的集群,集群上的节点管理器启动不同的JVM运行任务,使...原创 2018-06-26 07:27:12 · 832 阅读 · 0 评论 -
MapReduce应用开发(二) 用MRUnit写单元测试
MRUnit是测试库(http://mrunit.apache.org),可以与Junit一起使用但是,退休了2016/04/30 - APACHE MRUNIT HAS BEEN RETIRED.原创 2018-06-24 00:37:25 · 176 阅读 · 0 评论 -
MapReduce应用开发(四) 作业调优和MapReduce的工作流
作业调优1) 检查以下项是否可以优化mapper数量 reducer数量 combiner 中间值的压缩 自定义序列化 调整shuffle2) 分析任务Hadoop允许分析作业中的一部分任务,任务完成时把分析信息存储以使用标准分析工具分析本地作业运行器与集群是不同的环境,且数据流模式也不同,如果MR作业是I/O密集的,那么本地优化的对于集群可能没帮助,有些问题只会在集...原创 2018-06-24 00:16:49 · 464 阅读 · 0 评论 -
MapReduce WordCount实例
jar依赖包:share文件夹中的common, hdfs, mapreduce和yarn中的jar包上述四个文件夹中lib中的jar包,否则编译时Hadoop的jar包找不到自己实现的依赖jar包原创 2018-06-23 17:56:57 · 274 阅读 · 0 评论 -
MapReduce应用开发(一) Configuration类和环境相关配置
Configuraion类-用于配置的API资源合并变量扩展配置开发环境用MRUnit写单元测试关于Mapper关于Reducer本地运行测试数据本地运行器上运行测试驱动程序在集群上运行MR打包作业启动作业MR的Web界面获取结果作业调试Hadoop日志远程调试作业调优分析任务MapReduce的工作流...原创 2018-06-24 00:45:11 · 2162 阅读 · 1 评论 -
MapReduce 新旧API对比
发原创 2018-06-23 01:44:18 · 299 阅读 · 0 评论 -
MapReduce类型和格式(三) 输出格式
文本输出TextOutputFormatmapreduce.output.textoutputformat.separator 分隔符TextOutputFormat对应的输入格式使KeyValueTextInputFormatNullWritable省略输出的键和值二进制输出1. SequenceFileOutputFormat2. SequenceFileAsBinaryOutputForma...原创 2018-06-26 07:26:48 · 375 阅读 · 0 评论