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

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

HDFS是一个hadoop平台分布式文件系统,主要是用来存储和读取数据的。

工作过程:首先工作过程可以分为分为写操作和读操作两步。

(1)写操作:假设有一个100M大小的文件a,系统使用者将文件a写入到HDFS上。HDFS按默认配置(块大小为64M)。HDFS分布在三个机架上Rack1,Rack2,Rack3。之后系统使用者将文件a按64M分块,分成两块,block1和block2。然后系统使用者向nameNode发送写数据请求。NameNode节点记录block的信息,并且返回可用的DataNode。

(2)读操作:客户端通过调用文件系统对象的open()方法来打开希望读取的文件,DistributedFileSystem通过使用RPC来调用NameNode以确定文件起始块的位置,同一block按照重复数会返回多个位置。前两步会返回一个FSDataInputStream对象,该对象会被封装成DFSInputStream对象,DFSInputStream可以方便的管理datanode和namenode数据流,客户端对这个输入流调用read()方法。存储着文件起始块的DataNode地址的DFSInputStream随即连接距离最近的DataNode,通过对数据流反复调用read()方法,将数据从DataNode传输到客户端。到达块的末端时,DFSInputStream会关闭与该DataNode的连接,然后寻找下一个块的最佳DataNode。一旦客户端完成读取,就对FSDataInputStream调用close()方法关闭文件读取。

工作原理:客户端通过调用DistributedFileSystem的create()方法,创建一个新的文件。DistributedFileSystem 通过远程过程调用 NameNode,去创建一个没有blocks关联的新文件。前两步结束后会返回 FSDataOutputStream 的对象,FSDataOutputStream被封装成 DFSOutputStream,DFSOutputStream 可以协调 NameNode和 DataNode。客户端开始写数据到DFSOutputStream,DFSOutputStream会把数据切成一个个小packet,然后排成队列。DataStreamer会去处理接受队列,它先问询 NameNode 这个新的 block 最适合存储的在哪几个DataNode里。客户端完成写数据后,调用close()方法关闭写入流。

MapReduce是一种并行可扩展计算的模型,主要解决海量离线数据的批处理。

工作过程:一个作业执行过程中有一个Jobtracker和多个Tasktracker,分别对应于HDFS中的namenode和datanode。Jobclient在用户端把已配置参数打包成jar文件存储在HDFS,并把存储路径提交给Jobtracker,然后Jobtracker创建每一个Task,并且分发到Tasktracker服务中去执行。

工作原理:程序会根据InputFormat将输入文件分割成splits,每个split会作为一个map task的输入,每个map task会有一个内存缓冲区,输入数据经过map阶段处理后的中间结果会写入内存缓冲区,并且决定数据写入到哪个partitioner,当写入的数据到达内存缓冲区的的阀值,会启动一个线程将内存中的数据溢写入磁盘,同时不影响map中间结果继续写入缓冲区。在溢写过程中,MapReduce框架会对key进行排序,如果中间结果比较大,会形成多个溢写文件,最后的缓冲区数据也会全部溢写入磁盘形成一个溢写文件,如果是多个溢写文件,则最后合并所有的溢写文件为一个文件。当所有的map task完成后,每个map task会形成一个最终文件,并且该文件按区划分。reduce任务启动之前,一个map task完成后,就会启动线程来拉取map结果数据到相应的reduce task,不断地合并数据,为reduce的数据输入做准备,当所有的map tesk完成后,数据也拉取合并完毕后,reduce task 启动,最终将输出输出结果存入HDFS上。

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)查看运行结果

每位同学准备不一样的大一点英文文本文件,每个步骤截图交上博客上。

上述步骤测试通过之后,可以尝试对文本做处理之后再统计次数,如标点符号、停用词等。

有能力的同学尝试对之前爬虫爬取的文本,在Hadoop上做中文词频统计。

【大数据作业十一】分布式并行计算MapReduce的更多相关文章

  1. 作业——11 分布式并行计算MapReduce

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

  2. 大数据系列之分布式数据库HBase-0.9.8安装及增删改查实践

    若查看HBase-1.2.4版本内容及demo代码详见 大数据系列之分布式数据库HBase-1.2.4+Zookeeper 安装及增删改查实践 1. 环境准备: 1.需要在Hadoop启动正常情况下安 ...

  3. 搭建大数据hadoop完全分布式环境遇到的坑

    搭建大数据hadoop完全分布式环境,遇到很多问题,这里记录一部分,以备以后查看. 1.在安装配置完hadoop以后,需要格式化namenode,输入指令:hadoop namenode -forma ...

  4. 2020/4/26 大数据的zookeeper分布式安装

    大数据的zookeeper分布式安装 **** 前面的文章已经提到Hadoop的伪分布式安装.现在就在原有的基础上安装zookeeper. 首先启动Hadoop平台 [root@master ~]# ...

  5. 【大数据作业九】安装关系型数据库MySQL 安装大数据处理框架Hadoop

    作业要求:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3161 4.简述Hadoop平台的起源.发展历史与应用现状. 列举发展过程中 ...

  6. 大数据技术之Hadoop(MapReduce)

    第1章 MapReduce概述 1.1 MapReduce定义 1.2 MapReduce优缺点 1.2.1 优点 1.2.2 缺点 1.3 MapReduce核心思想 MapReduce核心编程思想 ...

  7. Hadoop大数据平台入门——HDFS和MapReduce

    随着硬件水平的不断提高,需要处理数据的大小也越来越大.大家都知道,现在大数据有多火爆,都认为21世纪是大数据的世纪.当然我也想打上时代的便车.所以今天来学习一下大数据存储和处理. 随着数据的不断变大, ...

  8. 大数据作业之利用MapRedeuce实现简单的数据操作

    Map/Reduce编程作业 现有student.txt和student_score.txt.将两个文件上传到hdfs上.使用Map/Reduce框架完成下面的题目 student.txt 20160 ...

  9. 大数据学习(05)——MapReduce/Yarn架构

    Hadoop1.x中的MapReduce MapReduce作为Hadoop最核心的两个组件之一,在1.0版本中就已经存在了.它包含这么几个角色: Client 多数情况下Client的作用就是向服务 ...

随机推荐

  1. Linux 命令:ls

    1. ls命令: list的缩写,查看目录中的文件 ls [选项] [目录名] dos 命令: dir 2. 常用参数: -a, –all 列出目录下的所有文件,包括以 . 开头的隐含文件 -A 同- ...

  2. nodejs 删除空文件

    var fs = require("fs") var path = require("path") var listRealPath = path.resolv ...

  3. FreeBSD安装后使用su命令显示sorry的解决办法

    FreeBSD中,可以使用su命令成为root用户,但FreeBSD对执行su命令的用户进行了更严格的限制,能使用su命令的用户必须属于wheel组(root的基本属组,组ID为0),否则就不能通过 ...

  4. Windows Cmd 命令管理服务

    今天在Windows 干净环境上安装软件过程中,安装完成后,发现部署在IIS 上的网站无法使用,提示  "您提交的参数有误!,请重新提交" 纯净的windows 7 x64位环境, ...

  5. Python语言防坑小技巧

    Python语言防坑小技巧 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.赋值即定义  1>.运行以下代码会出现报错 #!/usr/bin/env python #_*_ ...

  6. Linux基础命令-查看基本硬件信息

    Linux基础命令-查看基本硬件信息 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查看CPU信息 [root@node101.yinzhengjie.org.cn ~]# l ...

  7. ztree根据关键字模糊搜索

    html页面需要引入以下资源 <!-- jquery包,ztree依赖jquery --> <script type="text/javascript" src= ...

  8. 用Queue控制python多线程并发数量

    python多线程如果不进行并发数量控制,在启动线程数量多到一定程度后,会造成线程无法启动的错误. 下面介绍用Queue控制多线程并发数量的方法(python3). # -*- coding: utf ...

  9. centos7部署etcd集群

    实验环境:centos7.4纯净版 192.168.216.130 node1 master 192.168.216.132 node2 slave 192.168.216.134 node3 sla ...

  10. python的多线程是否没有用了

    python的多线程是否就完全没有用了呢? 相同的代码,为何有时候多线程会比单线程慢,有时又会比单线程快? 这主要跟运行的代码有关: 1. CPU密集型代码 (各种循环处理.计数等等 ),在这种情况下 ...