hadoop day 3
1.map:局部处理;reduce:汇总
mapper对数据做切分,一份程序在不同的DataNode上独立运行对数据进行处理,reduce程序将所有DataNode上的统计数据进行汇总
Mapper<KEYIN,VALUEIN,KEYOUT,VALUEOUT>,以key-value的形式对数据进行输入输出
前两个指定mapper输入数据的类型
后两个指定mapper输入数据的类型
map():MapReduce框架每读一行数据就调用一次该方法
reducer对数据做汇总
reduce():框架在map处理完成之后,将所有kv对缓存起来,进行分组,然后传递一个组<key, value{}>,调用一次reduce方法
2.
对所要用到的MapReduce类进行描述,即指定特定的类进行处理
还需要指定该作业要处理的数据所在的路径以及该作业输出的结果放到哪个路径
指定reduce的输出数据kv类型
job.setOutputKeyClass(Text.class)
job.setOutputValueClass(LongWritable.class)
指定mapper的输出数据kv类型
job.setMapOutputKeyClass(Text.class)
job.setMapOutputValue(LongWritable.class)
指定原始输入数据存放位置
FileInputFormat.setInputPaths(job,new Path(dirname));//读取目录下所有的文件进行处理
指定计算结果的输出位置
FileOutputFormat.setOutputPath(job,newPath(dirname));
指定整个job所用的那些类在哪个jar包
job.setJarByClass(WCRunner.class)
将job提交至集群运行
job.waitForCompletion(true);
3.YARN框架——主要进行资源调度(不懂mapreduce相关逻辑,只负责资源的调度和分配)
1)Run jar ------>向resource manager申请执行一个job
2)然后返回job相关资源提交的路径staging-dir(HDFS中的/tmp/xx/xx/yarn-staging/jobID/)和为本job产生的jobID给Runjar
3)然后提交资源到hdfs中
4)汇报提交结果(提交完成)
5)resource manager将本job加入任务队列(并分配相关的node manager 运行job)
6)node manager领取任务(通过心跳机制和resource manager进行通信,从任务队列中领取任务)
7)node manager中为各个job分配运行资源和容器(container)
-------------------------------------------------------------------------------------------------分配资源完毕
8)resource manager 启动MRAppMaster(动态随机产生)类进行MapReduce程序的分配和调度(和yarn框架没有关系),yarn框架的工作到此结束
9)MRAppMaster向Resource Manager注册资源
10)MRAppMaster在资源容器中启动map任务进程(yarnChild子进程)
11)MRAppMaster启动reduce task(yarnChild子进程)
12)job完成后,MRAppMaster向resource manager注销自己
Yarn具有较强的通用性,只负责资源的分发,与具体的计算模型没有较强的依赖性,可以跑各种不同的运行模型框架(Storm,Spark),只需启动不同计算模型的AppMaster类便可实现不同的计算模型框架
Runjar通过RPC进行通信
4.mapreduce框架通过MRAppMaster来控制mapreduce程序的执行,由yarn框架执行
resource manager
node manager1 node manager2 node manager3
5.mr程序的几种提交运行模式
本地模式
1)在windows的eclipse里面直接运行main方法,就会将job提交给本地执行器localobrunner执行
--输入输出数据放在本地路径下(c:/wc/srcdata)
--输入输出数据放在hdfs中(hdfs://localhost)
2)在linux的eclipse里面直接运行main方法,但是不要添加yarn相关配置,也会提交给local执行
集群模式
1)将工程打成jar包,用hadoop jar命令提交运行
2)在linux的eclipse中直接运行main方法,也可以提交到集群中去运行,但是,必须采取一下措施
在工程的src目录下,加入mapred-site.xml和yarn-site.xml
将工程打成jar包,同时在main方法中添加一个conf的配置 参数 conf.set("","")
3)在windows下的eclipse运行
hadoop day 3的更多相关文章
- Hadoop 中利用 mapreduce 读写 mysql 数据
Hadoop 中利用 mapreduce 读写 mysql 数据 有时候我们在项目中会遇到输入结果集很大,但是输出结果很小,比如一些 pv.uv 数据,然后为了实时查询的需求,或者一些 OLAP ...
- 初识Hadoop、Hive
2016.10.13 20:28 很久没有写随笔了,自打小宝出生后就没有写过新的文章.数次来到博客园,想开始新的学习历程,总是被各种琐事中断.一方面确实是最近的项目工作比较忙,各个集群频繁地上线加多版 ...
- hadoop 2.7.3本地环境运行官方wordcount-基于HDFS
接上篇<hadoop 2.7.3本地环境运行官方wordcount>.继续在本地模式下测试,本次使用hdfs. 2 本地模式使用fs计数wodcount 上面是直接使用的是linux的文件 ...
- hadoop 2.7.3本地环境运行官方wordcount
hadoop 2.7.3本地环境运行官方wordcount 基本环境: 系统:win7 虚机环境:virtualBox 虚机:centos 7 hadoop版本:2.7.3 本次先以独立模式(本地模式 ...
- 【Big Data】HADOOP集群的配置(一)
Hadoop集群的配置(一) 摘要: hadoop集群配置系列文档,是笔者在实验室真机环境实验后整理而得.以便随后工作所需,做以知识整理,另则与博客园朋友分享实验成果,因为笔者在学习初期,也遇到不少问 ...
- Hadoop学习之旅二:HDFS
本文基于Hadoop1.X 概述 分布式文件系统主要用来解决如下几个问题: 读写大文件 加速运算 对于某些体积巨大的文件,比如其大小超过了计算机文件系统所能存放的最大限制或者是其大小甚至超过了计算机整 ...
- 程序员必须要知道的Hadoop的一些事实
程序员必须要知道的Hadoop的一些事实.现如今,Apache Hadoop已经无人不知无人不晓.当年雅虎搜索工程师Doug Cutting开发出这个用以创建分布式计算机环境的开源软...... 1: ...
- Hadoop 2.x 生态系统及技术架构图
一.负责收集数据的工具:Sqoop(关系型数据导入Hadoop)Flume(日志数据导入Hadoop,支持数据源广泛)Kafka(支持数据源有限,但吞吐大) 二.负责存储数据的工具:HBaseMong ...
- Hadoop的安装与设置(1)
在Ubuntu下安装与设置Hadoop的主要过程. 1. 创建Hadoop用户 创建一个用户,用户名为hadoop,在home下创建该用户的主目录,就不详细介绍了. 2. 安装Java环境 下载Lin ...
- 基于Ubuntu Hadoop的群集搭建Hive
Hive是Hadoop生态中的一个重要组成部分,主要用于数据仓库.前面的文章中我们已经搭建好了Hadoop的群集,下面我们在这个群集上再搭建Hive的群集. 1.安装MySQL 1.1安装MySQL ...
随机推荐
- WDA基础八:ROWREPEATER的使用
这玩意不知道什么时候用^_^ 组件:Row-Repeater 1.新建WDA程序并激活 ZLYWDA02 2.进入VIEW,创建CONTEXT: 表:0..n 选择行:单选 初始化选择行 3.创建循 ...
- 509. Fibonacci Number斐波那契数列
网址:https://leetcode.com/problems/fibonacci-number/ 原始的斐波那契数列 运用自底向上的动态规划最佳! 可以定义vector数组,但是占用较多内存空间 ...
- PostgreSQL导出一张表到MySQL
1. 查看PostgreSQL表结构,数据量,是否有特殊字段值 region_il=# select count(*) from result_basic; count --------- ( row ...
- Mysql for Linux安装配置之—— rpm(bundle)安装
1.准备及安装1)下载rpm安装包(或rpm bundle) rpm安装包包括两个(bundle会更多),一个是client,另一个是server,例如:MySQL-client-5.5.44-1. ...
- https 不会被中间人攻击——因为中间人即使拿到了数据,也是加密的
只要你登陆了一个使用 HTTPS 数据加密的网站,浏览的页面的内容如果被人中途看见,将会是一团乱码.它也能保证,你浏览的页面就是你想浏览的,不会被黑客在中途修改,网站收到的数据包也是你最初发的那个,不 ...
- ftp主动模式与被动模式交互过程分析
1.相关介绍 1.1主动模式和被动模式 主动模式:服务端通过指定的数据传输端口(默认20),主动连接客户端提交的端口,向客户端发送数据. 被动模式:服务端采用客户端建议使用被动模式,开启数据传输端口的 ...
- linux常用文本编缉命令(strings/sed/awk/cut)
一.strings strings--读出文件中的所有字符串 二.sed--文本编缉 类型 命令 命令说明 字符串替换 sed -i 's/str_reg/str_rep/' filename 将文件 ...
- SpringBoot的日志
1.日志框架小张:开发一个大型系统:1.System.out.pringtln("");将关键数据打印在控制台:去掉?写在一个文件?2.框架来记录系统的一些运行信息:日志:zhan ...
- SpringBoot主程序类,主入口类
主程序类,主入口类 /** * @SpringBootApplication 来标注一个主程序类,说明这是一个Spring Boot应用 */ @SpringBootApplication publi ...
- post和get的使用场景和区别
使用场景: 区别: ①传送方式不同:get通过地址栏传输,post通过报文传输. ②get产生一个TCP数据包,post产生两个数据包,对于get方式的请求,浏览器会把http header和data ...