《OD学hadoop》第三周0709

一、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(自动故障转移)

时间: 2024-12-18 02:35:48

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

《OD学hadoop》第一周0625

一.实用网站 1. linux内核版本 www.kernel.org 2. 查看网站服务器使用的系统  www.netcraft.com 二.推荐书籍 1. <Hadoop权威指南> 1-3版: Hadoop1系列 4版(目前仅有英文原版):Hadoop2系列 yarn高可用性,HA 2. <Hive权威指南> 3. <MapReduce设计模式> 4. <HBase权威指南> 5. <鸟哥的Linux私房菜> 6. <Vim使用技巧>

《OD学hadoop》第一周0626

一. 二. 三. 七.克隆虚拟机 1. 修改网络 (1)vi /etc/udev/rules.d/70-persistent-net.rules eth1 改为eth0 (2)vi /etc/sysconfig/network-scripts/ifcfg-eth0 HWADDR改为eth1的地址 HWADDR=00:0c:29:79:e6:ec 八.安装jdk modules 装好的软件 software 安装软件 (1)解压jdk tar -zxf file -C /opt/modules (

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

1. 1) vim /etc/udev/rules.d/70-persistent-net.rules vi /etc/sysconfig/network-scripts/ifcfg-eth0 TYPE=Ethernet UUID=57d4c2c9-9e9c-48f8-a654-8e5bdbadafb8 ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=static DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no NAM

《OD学hadoop》第二周0703

hdfs可视化界面: http://beifeng-hadoop-01:50070/dfshealth.html#tab-overview yarn可视化界面: http://beifeng-hadoop-01:8088/cluster -- hdfs $ sbin/hadoop-daemon.sh start namenode $ sbin/hadoop-daemon.sh start datanode -- yarn $ sbin/yarn-daemon.sh start resourcem

《OD学Hadoop》Linux基础

一.Linux基本环境 1. Linux常见版本及VMware虚拟机安装Linux系统 2. 虚拟机网络配置(IP地址.主机名.防火墙) 3. 文件基本命令操作 4. 四大远程连接工具使用 二.Linux基础命令 1. 用户和组创建.删除.更改和授权 2. 文件/目录创建.删除.移动和拷贝重命名 3. 编辑器VI/VIM基本使用 4. 文件常用操作(内容查看.追加等) 三.Linux系统管理 1. 磁盘基本命令(df.du.fdisk.mount) 2. 内存使用监控命令(top.free) 3

《OD学hadoop》mac下使用VMware Fusion安装centos

一. NAT模式网络访问 (1)在linux中输入命令ifconfig查看网络信息 (2)在mac中输入命令ifconfig查看网络信息 lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384 options=3<RXCSUM,TXCSUM> inet6 ::1 prefixlen 128 inet 127.0.0.1 netmask 0xff000000 inet6 fe80::1%lo0 prefixlen 64 sco

《OD学hadoop》20160910某旅游网项目实战

一.event事件分析 叶子节点只计算一次 父节点的触发次数由子节点的数量节点 事件流:是由业务人员定义的一系列的具有前后顺序的事件构成的用户操作行为,至少包括两个事件以上. 目标:以事件流为单位,分析事件流中各个事件的触发次数 事件流特征: 1.事件流中每一个事件都会存在一个来源/父事件 计算方式: 1. 不考虑事件流的关系,直接计算各个事件的触发次数(wordcount) 2. 考虑事件流,计算事件流中的各个事件的触发次数 区分 1.uuid,不同访客的事件流不在一起处理: 不同人产生的事件

《OD学hadoop》20160904某旅游网项目实战

一.ETL操作 抽取数据 日志格式: 分割符号:^A IP地址 服务器时间 二.Java工程 1. 创建项目 copy代码及配置文件 2. 改配置 core-site.xml hbase-site.xml 3. 代码描述 common包:常量(字段常量) dimension包:自定义key value

android组团开发站立会议第三周第一次会议

会议时间:组队开发第三周  星期一   开始时间晚上9:30-10:00 会议地点:学一食堂 二楼 到会人员:李志岩  王亚蕊 安帅 薛禄坤 张新宇 孙存良 会议概要:              1.个人发言上周开发的结果 2.讨论解决每人遇到的问题 3.重新发布每个人的任务 具体内容:              1.张新宇: 上周开发结果:已经大概能链接android数据库sqlliet,但还不能熟练地进行增.删.改.查等功能 遇到的问题:由于时间不算太多,对sqlliet数据库开始学习并使用