如果在windows下想运行本地模式来测试程序逻辑需要在windows中配置环境变量:
A、将程序打成JAR包,然后在集群的任意一个节点上用hadoop命令启动
(4) combiner的意义就是对每一个maptask的输出进行局部汇总以减小网络传输量
(5) combiner能够应用的前提是不能影响最终嘚业务逻辑
shuffle是MR处理流程中的一个過程,它的每一个处理步骤是分散在各个map task和reduce task节点上完成的整体来看,分为3个操作:
Shuffle中的缓冲区大小会影响到mapreduce程序的执行效率,原则上说缓冲区越大,磁盘io的次数越少执行速度就越快
Java的序列化是┅个重量级序列化框架(Serializable),一个对象被序列化后会附带很多额外的信息(各种校验信息,header继承体系。。),不便于在网络中高效传输;
所以hadoop自己开发了一套序列化机制(Writable),精简高效
如果需要将自定义的bean放在key中传输,则還需要map的实现方式comparable接口因为mapreduce框中的shuffle过程一定会对key进行排序,此时,自定义的beanmap的实现方式的接口应该是:
需要自己map的实现方式的方法是:
* 反序列化的方法反序列化时,从流中读取到的各个字段的顺序应该与序列化时写出去的顺序保持一致 //可以考虑不序列化总流量因为总流量是可以通过上行流量和下行流量计算出来的 //map的实现方式按照sumflow的大小倒序排序
Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源相当于一个分布式的操作系统平台,而mapreduce等运算程序则相当于运行于操作系统之上的应用程序
对日志数据中的上下行流量信息汇总并输出按照总流量倒序排序的结果
基本思路:map的实现方式自定义的bean来封裝流量信息,并将bean作为map输出的key来传输
MR程序在处理数据的过程中会对数据排序(map输出的kv对传输到reduce之前会排序),排序的依据是map输出的key
所以我們如果要map的实现方式自己需要的排序规则,则可以考虑将排序因素放到key中让keymap的实现方式接口:WritableComparable
//如果空参构造函数被覆盖,一定要显示定義一下否则在反序列时会抛异常 //序列化,将对象的字段信息写入输出流 //反序列化从输入流中读取各个字段信息
//定义一个变量用于记录个数
因为茬js中如果变量为0在判断的条件中表示为false(类型自动转换)