Atitit  Hadoop的MapReduce的执行过程、数据流的一点理解。

目录

1. Why 为什么使用hadoop 1

2. Hadoop的MapReduce的执行过程 1

2.1. Hadoop=HDFS(文件系统,数据存储技术相关)+ Mapreduce(数据处理) 2

2.2. Hadoop数据单元数据形式最终会转化为key/value,key/value是基本数据单元 3

3. hadoop能做什么?应用场景   3

3.1.    hadoop擅长日志分析 3

3.2. 文件统计扩展名 3

4. 、浅谈Hadoop的基本原理 3

  1. Why 为什么使用hadoop

那么如果是1G , 1T 甚至 1PB 的数据呢 ,上面2种方法还能行得通吗? 答案是不能.毕竟单台服务器的性能总有其上限.那么对于这种 超大数据文件怎么得到我们想要的结果呢?

有种方法 就是分布式计算, 分布式计算的核心就在于 利用分布式算法 把运行在单台机器上的程序扩展到多台机器上并行运行.从而使数据处理能力成倍增加.但是这种分布式计算一般对编程人员要求很高,而且对服务器也有要求.导致了成本变得非常高.

Hadoop 就是为了解决这个问题诞生的.Hadoop 可以很轻易的把很多linux的廉价pc 组成分布式结点,然后编程人员也不需要知道分布式算法之类,只需要根据mapreduce的规则定义好接口方法,剩下的就交给Haddop. 它会自动把相关的计算分布到各个结点上去,然后得出结果.

例如上述的例子 : Hadoop 要做的事 首先把 1PB的数据文件导入到 HDFS中, 然后编程人员定义好 map和reduce, 也就是把文件的行定义为key,每行的内容定义为value , 然后进行正则匹配,匹配成功则把结果 通过reduce聚合起来返回.Hadoop 就会把这个程序分布到N 个结点去并行的操作.

那么原本可能需要计算好几天,在有了足够多的结点之后就可以把时间缩小到几小时之内.

---------------------

作者:执念ID

来源:CSDN

原文:https://blog.csdn.net/u012117710/article/details/54091964

版权声明:本文为博主原创文章,转载请附上博文链接!

  1.  Hadoop的MapReduce的执行过程

由上图可以看出,在进入Map之前,InputFormat把存储在HDFS的文件进行读取和分割,形成和任务相关的InputSplits,然后RecordReader负责读取这些Splits,并把读取出来的内容作为Map函数的输入参数。下面我就从代码执行的角度来看,数据是如何一步步从HDFS的file到Map函数的。在Yahoo Hadoop 教程 中已经详细讲解了这一过程。但我作为一个细节控,更想从源代码的级别去理清这一过程,这样我才觉得踏实,才觉得自己真真切切地掌握了这个知识点,因此我仔细阅读了这部分的源代码,写篇博客记录下来

  1. Hadoop=HDFS(文件系统,数据存储技术相关)+ Mapreduce(数据处理)
  1. Hadoop数据单元数据形式最终会转化为key/value,key/value是基本数据单元

jobContextImpl中包括了InputFormat的get和set方法,默认的实现是TextInputFormat ---读取文件的行,行的偏移量为key,行的内容为value。

Hadoop=HDFS(文件系统,数据存储技术相关)+ Mapreduce(数据处理),Hadoop的数据来源可以是任何形式,在处理半结构化和非结构化数据上与关系型数据库相比有更好的性能,具有更灵活的处理能力,不管任何数据形式最终会转化为key/value,key/value是基本数据单元。用函数式变成Mapreduce代替SQL,S

---------------------

  1. hadoop能做什么?应用场景  

    1.    hadoop擅长日志分析
    2. 文件统计扩展名
  1. 、浅谈Hadoop的基本原理

Hadoop分布式处理框架核心设计:

  • HDFS:(Hadoop Distributed File System)分布式文件系统;
  • MapReduce:是一种计算模型及软件架构。

2.1 HDFS

HDFS(Hadoop File System),是Hadoop的分布式文件存储系统。

将大文件分解为多个Block,每个Block保存多个副本。提供容错机制,副本丢失或者宕机时自动恢复。默认每个Block保存3个副本,64M为1个Block。将Block按照key-value映射到内存当中。

---------------------

图三 HDFS读取数据

2.2 MapReduce

MapReduce是一个编程模型,封装了并行计算、容错、数据分布、负载均衡等细节问题。MapReduce实现最开始是映射map,将操作映射到集合中的每个文档,然后按照产生的键进行分组,并将产生的键值组成列表放到对应的键中。化简(reduce)则是把列表中的值化简成一个单值,这个值被返回,然后再次进行键分组,直到每个键的列表只有一个值为止。这样做的好处是可以在任务被分解后,可以通过大量机器进行并行计算,减少整个操作的时间。但如果你要我再通俗点介绍,那么,说白了,Mapreduce的原理就是一个分治算法。

---------------------

基于Hadoop大数据分析应用场景与实战 - imgxr的博客 - CSDN博客.html

Atitit Hadoop的MapReduce的执行过程、数据流的一点理解。 目录 1. Why 为什么使用hadoop 1 2. Hadoop的MapReduce的执行过程 1 2.1. Had相关推荐

  1. Hadoop入门(上):大数据特点、大数据前景、大数据组织结构、Hadoop组成、Hadoop版本介绍、Hadoop运行环境搭建、CentOS6安装JDK、安装Hadoop、Hadoop目录结构

    资料来源于尚硅谷 本篇文章目录 第1章·大数据概论 1.1.大数据概念. 1.2.大数据特点(4V) 1.3.大数据应用场景 1.4.大数据发展前景 1.5·大数据部门业务流程分析. 1.6·大数据部 ...

  2. Hadoop学习之路(九)HDFS深入理解

    HDFS的优点和缺点 HDFS的优点 1.可构建在廉价机器上 通过多副本提高可靠性,提供了容错和恢复机制 服务器节点的宕机是常态   必须理性对象 2.高容错性 数据自动保存多个副本,副本丢失后,自动 ...

  3. vue openlayer单击地图事件循环多次执行_Vue中$nextTick的理解

    Vue中$nextTick方法将回调延迟到下次DOM更新循环之后执行,也就是在下次DOM更新循环结束之后执行延迟回调,在修改数据之后立即使用这个方法,能够获取更新后的DOM.简单来说就是当数据更新时, ...

  4. 2.深入一点理解C源程序的编译过程

    2.深入一点理解C源程序的编译过程 本文章的大多数灵感及知识来源于南京大学的计算机系统基础教材,如果希望更加深入地对相关知识做进一步了解,可以移步上述相关资源.在网上可以轻易获得上述资源,mooc也有 ...

  5. 为什么执行ACTION_DOWN的时候返回了false,后面一系列其它的action就不会再得到执行了?

    在郭霖大神的博客:Android事件分发机制完全解析,带你从源码的角度彻底理解(上)中有这样一句话: 如果你在执行ACTION_DOWN的时候返回了false,后面一系列其它的action就不会再得到 ...

  6. 调整模型 与 提纯样本的关系过程有点类似EM算法过程,不知道这样理解是否是正确理解,固定A调B,B调到最优后,固定B再调A,循环往复,直至最优。

    调整模型 与 提纯样本的关系过程有点类似EM算法过程,不知道这样理解是否是正确理解,固定A调B,B调到最优后,固定B再调A,循环往复,直至最优.  个人理解

  7. Ansible介绍、安装、远程执行命令、拷贝文件或者目录、远程执行脚本

    Ansible介绍 不需要安装客户端,通过sshd去通信 基于模块工作,模块可以由任何语言开发 不仅支持命令行使用模块,也支持编写yaml格式的playbook,易于编写和阅读 安装十分简单,cent ...

  8. 使用4G模块连接到远程服务器?这个过程我不太理解

    有个疑问,我在开发产品的过程中, 使用4G模块连接到远程服务器?这个过程我不太理解 4G连接服务器:基带->基站----->服务器??????????? WIFI连接服务器:无线网卡–&g ...

  9. linux执行class文件_深入理解linux内核——可执行文件执行过程(2)

    接上篇.. 13.调用do_mmap()函数创建一个新线性区来对可执行文件正文段(即代码)进行映射.这个线性区的起始线性地址依赖于可执行文件的格式,因为程序的可执行代码通常是不可重定位的.因此,这个函 ...

  10. android camera 预览 数据流,Android Camera预览过程数据流浅析

    硬件平台:Atmel SAMA5D3 SoC + OV2640 Camera Sensor Android版本:4.2.2 mediaserver进程是Camera Service的容器进程,它会动态 ...

最新文章

  1. 扩增子文献笔记2拟南芥根微生物组的结构和组成
  2. 为什么150kHz定位,距离越远接收信号越强呢?
  3. File文件操作(二):内存映射
  4. Java 慎用方法级别的synchronized关键字
  5. SQLite中不支持的sql语法
  6. MySql数据库查询表信息/列信息(列ID/列名/数据类型/长度/精度/是否可以为null/默认值/是否自增/是否是主键/列描述)...
  7. oracle游标错误,ORACLE游标与错误处理
  8. 利用gcc的__attribute__编译属性section子项构建初始化函数表【转】
  9. IOS开发知识(二)
  10. EF获取多个数据集以及MySQL分页数据查询优化
  11. [设计模式] ------ 策略模式
  12. Excel学习笔记:P22-时间格式、工龄与工时计算
  13. 不升级IE9的五大理由
  14. svn查找历史版本_svn历史版本对比以及还原到历史版本
  15. 20189220 余超《Linux内核原理与分析》第九周作业
  16. C++使用windowAPI开启3389端口
  17. 项目管理思维是什么?
  18. @SuppressWarnings的使用、作用、用法
  19. Python中的异常、try、except、finally、raise语法以及示例
  20. kde4实在是太漂亮了

热门文章

  1. win7系统网络计算机,Win7系统打开局域网没看到其他计算机的修复方法
  2. mysql 存储过程 长字符串_MySQL存储过程--长字符串扯分
  3. opengl es c语言教程,OpenGL ES2 学习教程4——Shader语言
  4. mysql服务器磁盘空间耗尽_一次服务器磁盘空间不足导致的一系列问题
  5. [转]find命令之exec
  6. LOJ2181 排序
  7. Confluence 6 针对大数据量备份
  8. POJ 2192 Zipper (简单DP)
  9. Nginx Location 工作流程图及总结
  10. 常用缓存Cache机制的实现