一、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. API文档管理工具-数据库表结构思考.

    API文档管理工具-数据库表结构思考. PS: 管理工具只是为了方便自己记录API的一些基本信息,方便不同的开发人员 (App Developer, Restful API Developer)之间的 ...

  2. Metasploit Framework命令汇总

    一.msfconsole ? 帮助菜单back 从当前环境返回banner 显示一个MSF bannercd 切换目录color 颜色转换connect 连接一个主机exit 退出MSFhelp 帮助 ...

  3. 也可以使用如下命令更改您的默认 Shell

    也可以使用如下命令更改您的默认 Shell chsh -s /bin/zsh (需要输入您的密码)

  4. 移动端页面调试工具——UC浏览器开发者版

    在移动页面的开发中,我们很难像PC端那样很方便的调试,网上也有各种各样的调试方式.但在工作中,我主要还是用chorme自带的模拟器来模拟各种移动设备,但是用久了之后发现毕竟是模拟的,与真机调试还是会有 ...

  5. centos msyql 安装与配置

    Mysql具有简单易学.体积小等优点,深受编程开发初学者的喜爱 工具/原料 接入Internet的Centos计算机 安装Mysql 1 Centos 6.6下安装Mysql很简单, yum list ...

  6. 查看w3wp进程占用的内存及.NET内存泄露,死锁分析--转载

    一 基础知识 在分析之前,先上一张图: 从上面可以看到,这个w3wp进程占用了376M内存,启动了54个线程. 在使用windbg查看之前,看到的进程含有 *32 字样,意思是在64位机器上已32位方 ...

  7. c#知识库同步的总结

    C#知识库下载地址: http://www.51aspx.com/Code/FileCollector 新版下载地址:http://pan.baidu.com/s/1P3Hk 对于这一款平时用来收集知 ...

  8. iOS警告-Warning: Error creating LLDB target at path(模拟器警告)

    Warning: Error creating LLDB target at path '/Users/apple/Library/Developer/Xcode/DerivedData/Observ ...

  9. Linux网络编程1——小端模式与大端模式

    数据存储优先顺序的转换 计算机数据存储有两种字节优先顺序:高位字节优先(称为大端模式)和低位字节优先(称为小端模式).内存的低地址存储数据的低字节,高地址存储数据的高字节的方式叫小端模式.内存的高地址 ...

  10. 如何使用JMeter来实现更大批量的并发的解决方案(即如何设置controller和Agent)

    http://www.testwo.com/blog/6373 近期在用JMeter进行负载测试的 时候,发现使用单台机器模拟测试超过比如500个进程的并发就有些力不从心或者说不能如实的反应实际情况, ...