一、MapReduce编程模型
1. 中心思想: 分而治之
2. map(映射)
3. 分布式计算模型,处理海量数据
4. 一个简单的MR程序需要制定
map()、reduce()、input、output
5. 处理的数据放在input中、处理的结果放在output中
6. MR程序>八股文
7. MR在处理数据的时候,是由一个流向,数据在处理过程中的流向格式:
以<key,value>进行流向
8. input -> map() -> reduce() -> output
<key,value> <key,value> <key,value>
9. 思考几个问题
(1)要对处理的文件转化成什么样的<key,value>
input <key,value>
(2)map()输出结果变成什么样的<key,value>
map() <key,value>
(3)reduce() 输出的<key,value>是什么样的
reduce() <key,value>
10. 词频统计WordCount
11. <key,value>
(1)key就是偏移量,数字
Hadoop mapreduce -> <0, hadoop mapreduce>, value就是每一行的值
12. 统计单词:
(1)分割单词,按照空格进行分词
Hadoop mapreduce -> hadoop mapreduce
hadoop yarn
map()
<hadoop, 1> <mapreduce,1>
<hadoop, 1> <yarn, 1>
reduce()
将相同key的value累加到一起
<hadoop, list(1,1)>
<mapreduce, list(1)>
<hdfs, list(1)>
13. MapReduce八股文
reduce的输入就是map的输出,map的输出就是<key,value>
14. 默认情况是从文件中一行行读取,我们需要获取的是value的值
15. 分割单词
16. 把每一个单词都拿出来,一个个组成<key,value>
迭代for循环
17. 一个<key,value>就要调用一次方法
18. HDFS上一个map对应一个块、把握<key,value>
19. 打成jar包运行在yarn上
export->runnabl-jar-file->选择path和main函数类

二、MapReduce流程总结
1. 每个文件就是一个分片,对应一个块,将文件按行分割成<key,value>
2. 按照key的排序规则,默认情况下是自然排序,可以指定它的排序规则
3. map输出到reduce输入之前,这中间的过程会有一个排序
4. MR框架最大的功能就是:排序
5. 排序非常消耗机器的资源:内存、CPU
6. 排序完后,reduce就会去各个map进行拷贝
7. 强调几点:
(1)默认情况下,map输入的<key,value>是什么样的格式
key: 偏移量
value: 每一行的值
(2)map -> partition -> sort -> group -> reduce
分区规则,分到不同的reduce中
组合在一起,相同key的value放在一起,这里涉及到一个比较,
(3)reduce输出结果
默认情况下是reduce将key和value作为一行数据进行输出
key和value之间的分割符就是制表符(\t),这个也是可以设置的

三、数据类型
1. 无论是排序还是分组,都会有一个比较

四、MapReduce on YARN
1. 对于MR程序来说,运行在YARN上,必须先打成jar包
Container容器:
包含了任务所需要的资源

五、YARN如何调度应用
3 map task
1 reduce task
1 mr am
默认情况下,每个容器的资源,1G内存,1核CPU
默认配置:
yarn-default.xml
1. 内存配置

2. 单个任务最好CPU核数,默认是1核
minimum-allocation-vcores

3. 默认情况下nodemanager启动后,本机是默认8G内存和8核CPU
binding ***

hadoop.tmp.dir

四、MapReduce Shuffle
1. 打乱、洗牌:随机打乱我们传递的元素
2. shuffle过程:
map() 输出------>reduce输入
输入<keyvalue>
<0, hadoop spark, hdfs hadoop>
<hadoop,1> <spark,1> <hdfs,1> <hadoop,1>
map首先将结果放到内存中,100MB
环形缓冲区
当内存占用空间达到80%,(80MB,默认情况下),金辉将数据溢写spill到磁盘(本地磁盘目录)
分区: partitioner 决定map输出的数据,被哪个reduce任务进行处理
排序: sort 对分区中的数据进行排序
溢写: spill 写到本地磁盘的某个工作目录中
合并:merge 将很多个小文件合并成一个大文件
自定义缓冲区大喜而排序的规则,磁盘的目录,分区都是可以设置的

reduce端,为了reduce的输入做准备
reduce会去很多的map拷贝然后放到内存中
当内存达到一定大写,也会写到本地磁盘中,合并、排序
分组: group,将相同key的value放在一起
<hadoop,1> <hadoop,1> <hadoop,1> --> <hadoop,list(1,1,1)>放在一个集合中
判断key->比较->Comparable

五、MapReduce shuffle优化之combiner
map端的reduce操作,它是一个可选项,用户自定义
而且不是所有的MR程序都可以设置combiner

压缩:可配置项
200MB -> 80MB
实际环境中,压缩是必须要做的;对于集群的性能是一个提升

*-site.xml

合理的设置reduce的数目,会让MR程序跑的更快
数目设置多少为合理?
(1)根据业务需求
词频统计A-Z,a-z
(2)分组是否可以合并一些数据
(3)通过测试去设置reduce数目

分布式环境、HA(自动故障转移)

《OD学hadoop》第三周0709的更多相关文章

  1. 《OD学hadoop》第二周0702

    大数据离线计算hadoop2.x 三周(6天) markdown文本剪辑器 罗振宇--跨年演讲,时间的朋友 http://tech.163.com/16/0101/11/BC87H8DF000915B ...

  2. 《OD学hadoop》第二周0703

    hdfs可视化界面: http://beifeng-hadoop-01:50070/dfshealth.html#tab-overview yarn可视化界面: http://beifeng-hado ...

  3. 《OD学hadoop》第一周0625

    一.实用网站 1. linux内核版本 www.kernel.org 2. 查看网站服务器使用的系统  www.netcraft.com 二.推荐书籍 1. <Hadoop权威指南> 1- ...

  4. 《OD学hadoop》第一周0626 作业二:Linux基础

    一.打包压缩 知识点: tar -zxvf -C PATH tar -jxvf tar -zcvf tar -jcvf tar:打包命令 -z 打包同时gzip压缩 -j 打包同时bzip2 -c 打 ...

  5. 《OD学hadoop》第一周0626

    一.磁盘管理 Linux添加新硬盘.分区.格式化.自动挂载 http://lxsym.blog.51cto.com/1364623/321643 给Linux系统新增加一块硬盘 http://www. ...

  6. 《OD学hadoop》第一周0625 LINUX作业一:Linux系统基本命令(一)

    1. 1) vim /etc/udev/rules.d/-persistent-net.rules vi /etc/sysconfig/network-scripts/ifcfg-eth0 TYPE= ...

  7. 《OD学hadoop》第三周0710

    一.分布式集群安装1. Hadoop模式本地模式.伪分布模式.集群模式datanode 使用的机器上的磁盘,存储空间nodemanager使用的机器上的内存和CPU(计算和分析数据) 2. 搭建环境准 ...

  8. 2017-2018-1 我爱学Java 第三周 作业

    Team Presentation 团队展示 队员学号 队名 团队项目描述 队员风采 团队首次合照 团队的特色描述 团队初步合作 前两周合作过程中的优缺点 如何改进 团队选题 确立,建立和初步熟悉团队 ...

  9. 《OD学hadoop》20160903某旅游网项目实战

    一.大数据的落地点 1.数据出售 数据商城:以卖数据为公司的核心业务 2. 数据分析 百度统计 友盟 GA IBM analysis 3.搜索引擎 4. 推荐系统 mahout 百分比 5.精准营销 ...

随机推荐

  1. SQL Server 2008中新增的 1.变更数据捕获(CDC) 和 2.更改跟踪

    概述 1.变更数据捕获(CDC)        每一次的数据操作都会记录下来 2.更改跟踪       只会记录最新一条记录   以上两种的区别:         http://blog.csdn.n ...

  2. sshd_config配置 详解

    原文:http://blog.licess.org/sshd_config/ # 1. 关于 SSH Server 的整体设定,包含使用的 port 啦,以及使用的密码演算方式 Port 22 # S ...

  3. iOS获取手机相关信息

    iOS具体的设备型号: #include <sys/types.h> #include <sys/sysctl.h> - (void)test { //手机型号. size_t ...

  4. $("#id a") - $("#id .c a") = ?

    前沿 这是之前淘宝的一道面试题,题目借用了 jQuery 选择器的语法.大概的意思是,从 #id 元素内选出所有不是 .c 后代的 a 元素,即父元素 #id 内的所有后代元素中,选出不是 .c 后代 ...

  5. 在DECIMAL(m,n)的设置中,整数的位数不能大于(m-n)

    关于DB2的DECIMAL类型 创建表的时用的是DECIMAL(13,2),我认为它为13个整数位数+2为有效数字,因为在打印银行交易的FORM时遇到了难题.输出和建表的长度不一样,我们以为它会打印出 ...

  6. BZOJ 1452: [JSOI2009]Count 二维树状数组

    1452: [JSOI2009]Count Description Input Output Sample Input Sample Output 1 2 HINT Source 题解:设定C[101 ...

  7. tomcat简介及原理解说

    Tomcat简介 作者:杨晓(http://blog.sina.com.cn/u/1237288325) 目录: ----Tomcat背景 ----Tomcat目录 ----Tomcat类加载 --- ...

  8. C#获取根目录的方法集合

    1.取得控制台应用程序的根目录方法      方法1.Environment.CurrentDirectory 取得或设置当前工作目录的完整限定路径      方法2.AppDomain.Curren ...

  9. Solution中的auto test case组织方式

    在一个solution中所有的auto test case都需要写在一个类中,即*.cs文件中.实现某一个case 我们可以写一个方法.一个方法实现一个test case.这个方法前面要用[TestM ...

  10. Hadoop基础教程之分布式环境搭建

    前面,我们已经在单机上把Hadoop运行起来了,但我们知道Hadoop支持分布式的,而它的优点就是在分布上突出的,所以我们得搭个环境模拟一下. 在这里,我们采用这样的策略来模拟环境,我们使用3台ubu ...