作业的要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3319


1.用自己的话阐明Hadoop平台上HDFS和MapReduce的功能、工作原理和工作过程。

  HDFS

    功能

      分布式文件系统,用来存储海量数据。

    工作原理

    1、HDFS集群分为两大角色:NameNode、DataNode  (Secondary Namenode)

    2、NameNode负责管理整个文件系统的元数据

    3、 DataNode 负责管理用户的文件数据块

    4、 文件会按照固定的大小(blocksize)切成若干块后分布式存储在若干台datanode上

    5、 每一个文件块可以有多个副本,并存放在不同的datanode上

    6、Datanode会定期向Namenode汇报自身所保存的文件block信息,而namenode则会负责保持文件的副本数量

    7、HDFS的内部工作机制对客户端保持透明,客户端请求访问HDFS都是通过向namenode申请来进行

    工作过程

      写操作    

      1、根namenode通信请求上传文件,namenode检查目标文件是否已存在,父目录是否存在

      2、namenode返回是否可以上传

      3、client请求第一个 block该传输到哪些datanode服务器上

      4、namenode返回3个datanode服务器ABC

      5、client请求3台dn中的一台A上传数据(本质上是一个RPC调用,建立pipeline),A收到请求会继续调用B,然后B调用C,将真个pipeline建立完成,逐级返回客户端

      6、client开始往A上传第一个block(先从磁盘读取数据放到一个本地内存缓存),以packet为单位,A收到一个packet就会传给B,B传给C;A每传一个packet会放入一个应答队列等待应答

      7、当一个block传输完成之后,client再次请求namenode上传第二个block的服务器。

      读操作

      1、跟namenode通信查询元数据,找到文件块所在的datanode服务器

      2、挑选一台datanode(就近原则,然后随机)服务器,请求建立socket流

      3、datanode开始发送数据(从磁盘里面读取数据放入流,以packet为单位来做校验)

      4、客户端以packet为单位接收,现在本地缓存,然后写入目标文件

  MapReduce

    功能

      并行处理框架,实现任务分解和调度。

    工作原理

    1、通过Job的submit()方法创建一个JobSummiter实例,并且调用其submitJobInternal()方法。

     2、作业提交给ResourceManager,从ResourceMananger处得到一个ApplicationID

    3、JobClien检查Job的输出说明,计算输入分片,并将Job资源(包括运行的Jar包、配置和分片信息)复制到HDFS

     4、通过ResourceManager上的submitApplications进行作业提交

     5、ResourceManager收到submitApplication()消息后,便将请求传递给调度器(scheduler)。调度器为其分配一个容器(Container),然后资源管理器在节点管理器(NodeManger)的管理下在Container中启动应用程序的master

    6、初始化Job:通过创建多个簿记录对象以保持对作业进度的跟踪,因为它将接受来自任务的进度和完成报告

     7、接受HDFS在Client端计算的输入分片信息

    8、连接ResourceManager,向ResourceManager进行资源申请

    9、Application master 通过与节点管理器(NodeManager)进行通信启动Container,该任务有主类为YarnChiled的Java程序执行。

    10、在第9步之前,需要将任务需要的资源本地化,包括运行的Jar包、配置和分片信息和HDFS的文件

    11、最后运行map任务或reduce任务。

    工作过程

    MapReduce的工作过程分为两个步骤:map和reduce。每个阶段的输入输出都是key-value的形式,key和value的类型可以自行指定。map阶段对切分好的数据进行并行处理,处理结果传输给reduce,由reduce函数完成最后的汇总。

2.HDFS上运行MapReduce

  1)准备文本文件,放在本地/home/hadoop/wc

  2)编写map函数和reduce函数,在本地运行测试通过

  3)启动Hadoop:HDFS, JobTracker, TaskTracker

  4)把文本文件上传到hdfs文件系统上 user/hadoop/input

  5)streaming的jar文件的路径写入环境变量,让环境变量生效

  6)建立一个shell脚本文件:streaming接口运行的脚本,名称为run.sh

  7)source run.sh来执行mapreduce

  8)查看运行结果

作业——11 分布式并行计算MapReduce的更多相关文章

  1. 【大数据作业十一】分布式并行计算MapReduce

    作业要求:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3319 1.用自己的话阐明Hadoop平台上HDFS和MapReduce的功 ...

  2. 【大数据应用技术】作业十一|分布式并行计算MapReduce

    本次作业在要求来自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3319  1.用自己的话阐明Hadoop平台上HDFS和MapRe ...

  3. 分布式并行计算MapReduce

    作业要求来自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3319 1.用自己的话阐明Hadoop平台上HDFS和MapReduce ...

  4. 【大数据】分布式并行计算MapReduce

    作业来源于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3319 1.  用自己的话阐明Hadoop平台上HDFS和MapReduc ...

  5. Hadoop平台K-Means聚类算法分布式实现+MapReduce通俗讲解

        Hadoop平台K-Means聚类算法分布式实现+MapReduce通俗讲解 在Hadoop分布式环境下实现K-Means聚类算法的伪代码如下: 输入:参数0--存储样本数据的文本文件inpu ...

  6. 经典MapReduce作业和Yarn上MapReduce作业运行机制

    一.经典MapReduce的作业运行机制 如下图是经典MapReduce作业的工作原理: 1.1 经典MapReduce作业的实体 经典MapReduce作业运行过程包含的实体: 客户端,提交MapR ...

  7. #研发解决方案#分布式并行计算调度和管理系统Summoner

    郑昀 创建于2015/11/10 最后更新于2015/11/12 关键词:佣金计算.定时任务.数据抽取.数据清洗.数据计算.Java.Redis.MySQL.Zookeeper.azkaban2.oo ...

  8. 利用 MessageRPC 和 ShareMemory 来实现 分布式并行计算

    可以利用 MessageRPC + ShareMemory 来实现 分布式并行计算 . MessageRPC :  https://www.cnblogs.com/KSongKing/p/945541 ...

  9. C语言I作业11

    C语言 博客作业11 问题 回答 C语言程序设计II 博客作业11 这个作业要求在哪里 作业要求 我在这个课程的目标是 理解和弄懂局部变量和全局变量,静态变量和动态变量 这个作业在哪个具体方面帮助我实 ...

随机推荐

  1. 【转载】C#中List集合使用Max()方法查找到最大值

    在C#的List集合操作中,有时候需要查找到List集合中的最大值,此时可以使用List集合的扩展方法Max方法,Max方法有2种形式,一种是不带任何参数的形式,适用于一些值类型变量的List集合,另 ...

  2. 如何将一个react组件进行静态化调用

    ant-design的message组件可以使用message.xxx的方法调用,调用代码如下: import { message, Button } from 'antd'; const info ...

  3. Oracle 逻辑存储结构

    一.总述 逻辑存储结构是 Oracle 数据库存储结构的核心内容,对 Oracle 数据库的所有操作都会涉及逻辑存储结构.逻辑存储结构是从逻辑的角度分析数据库的组成,是对数据存储结构在逻辑概念上的划分 ...

  4. 3.live555源码分析----延时队列

    live555本身是一个单进程.单线程的服务器,但是它能够完美的让多个客户端同时连接,除了使用select并发编程以外,延时队列是很重要的手段. 当连接一个客户端,进行视频帧传输的时候,是不能持续进行 ...

  5. 身份证验证PHP类

    PHP根据身份证号,自动获取对应的星座函数,然后自动返回对应的星座,自动返回性别,判断是否成年 <?php class IdcardAction extends Action{ // PHP根据 ...

  6. 大数据之kafka-05.讲聊聊Kafka的版本号

    今天聊聊kafka版本号的问题,这个问题实在是太重要了,我觉得甚至是日后能否用好kafka的关键.上一节我们介绍了kafka的几种发行版,其实不论是哪种kafka,本质上都内嵌了最核心的Apache ...

  7. 进程中join方法的使用

    在进程中:join方法 是让主进程等待子进程运行完毕后再执行主进程的.(即主进程阻塞) 示例 # -*- coding: utf-8 -*- from multiprocessing import P ...

  8. k8s node节点部署(v1.13.10)

    系统环境: node节点 操作系统: CentOS-7-x86_64-DVD-1908.iso node节点 IP地址: 192.168.1.204 node节点 hostname(主机名, 请和保持 ...

  9. 移动平台前端开发总结(ios,Android)

    首先我们来看看webkit内核中的一些私有的meta标签,这些meta标签在开发webapp时起到非常重要的作用 <meta content="width=device-width; ...

  10. IntelliJ IDEA自身以及maven项目打包方式

    1. Idea自身打包方式 1.1 创建Artifacts 快捷键(Ctrl+Alt+Shift+S)打开项目的Project Structure.在Artifacts创建 接着,指定main cla ...