map的输出数就是分区数,同时也是reduce的输入。
大的集合变成小的集合就是归约算法
map reduce八个步骤:
1 将输入文件按照一定的规则(这个跟你使用的输入格式化器有关系)
2 定义自己的map函数逻辑。生成新的key,value对
3 对map的输出做分区(具体分区怎么定,怎么玩,谁决定)
4 对不同分区的数据,按照key进行排序分组,相同的key的value放到一个集合当中。
5 分组后的数据进行归约(将大的集合分成小的集合。)
6 按照多个map任务,根据不同的分区copy到不同的reduce节点。
7 对多个map任务的输出,进行合并排序。写reduce函数自己的逻辑,对输入的key,value
8 把reduce的输出保存到文件中
map,reduce
RPC机制
RPC通信机制
java基本类型与Hadoop常见基本类型的对照
Long
LongWritable
Integer IntWritable
Boolean BooleanWritable
String
Text
其实就是对象的序列化和反序列化的过程而已。
性能调优的一些基础知识。垃圾回收机制与hadoop的
comparable接口,具有可比性。
统计每个加盟商结算金额的总数。
map函数: k1,v1 一行表示加盟商的一条记录
reduce函数:
hadoop的acl access control list
默认的blocksize大小为64M
hadoop jar fmAccount.jar
FmAccountSettltCount &
要点1 :
要点2 :
--如果改了ip地址就比较麻烦了
update user set host='master' where user='root';
update user set host='192.168.80.147' where user='root';
部署hive出现几次问题。
1 密码没改
2 hive-site.xml xml文件中文问题
3 mysql驱动jar包copy错了。
--可能是同时启动多个进程导致的。
hive --service hiveserver &
hadoop fs -chmod -R 777 /tmp
hive -h master -p 10000
看计数器的输出可以看你的mapreduce 的运行状态
归约combine操作:
舆情监督
context获取自定义计数器
如果combine可以有用的话,可以减少
reduce的输入,那么也就可以减少copy
数据(map的输出都得通过网络传输到reduce节点上,如果有多少个分区就有多少个reduce)
数据量变小了,传送到reduce端的数据量变小了,
传输时间变短,作业的整体时间变少。
为什么combiner不做为MR运行的标配,而是可选步骤?
因为不是所有的算法都适合使用
Combiner这个阶段已经处理完成了reduce操作,
为什么reduce还要执行reduce操作。
这是因为combine发生在map端,
处理一个任务所接收的文件中的数据,
不能跨map任务执行。
而reduce可以接收多个map的输出。
partioner :分区怎么整。
自定义分区。
是对map的输出进行分区操作。
分区文件不同的。
分区的作用:
1 根据业务需求,产生多个输出文件
2 多个reduce任务在运行,可以提搞job运行的效率,
3
任务: 1 自己写个分区的mapreduce
可以设置reduce的tasksize为0表示不经过reduce步骤。
我们可以指定新的map任务输入格式化器。
按照key进行排序,分组:将相同key的value放到同一组中。除了这个之外
我们可以自定义分组。
(byte[]first,int firstStart,int firstPos,
byte[]second,int secondStart,int secondPos)
自定义了partion分区类,可以定义
reduceTasks由谁决定?
我怎么知道我需要有几个reduce?
分区之后再排序:
分成多个区之后,每个分区中进行sort操作。
1 hash表中存储的值都是不一样的,也就是不允许重复
Zookeeper :
zk可以保证数据在集群之间的数据的事务性一致性。
ACID
如何搭建Zookeeper集群。
hadoop运行机制
namenode单点故障
hadoop HA
hadoop性能调优。
mapreduce执行流程。
RPC 原理
MapReduce+Hive
集群的瓶颈是啥?
1 磁盘IO,指令和数据都得经过集群中的master。
read
netstat -an
<script type="text/javascript" id="wumiiRelatedItems"> </script>
历史上的今天
热度
在LOFTER的更多文章
map的输出数就是分区数,同时也是reduce的输入。
大的集合变成小的集合就是归约算法
map reduce八个步骤:
1 将输入文件按照一定的规则(这个跟你使用的输入格式化器有关系)
2 定义自己的map函数逻辑。生成新的key,value对
3 对map的输出做分区(具体分区怎么定,怎么玩,谁决定)
', blogTag:'', blogUrl:'blog/static/21727620920151111238378', isPublished:1, istop:false, type:0, modifyTime:0, publishTime:1422767558378, permalink:'blog/static/21727620920151111238378', commentCount:0, mainCommentCount:0, recommendCount:0, bsrk:-100, publisherId:0, recomBlogHome:false, currentRecomBlog:false, attachmentsFileIds:[], vote:{}, groupInfo:{}, friendstatus:'none', followstatus:'unFollow', pubSucc:'', visitorProvince:'', visitorCity:'', visitorNewUser:false, postAddInfo:{}, mset:'000', mcon:'', srk:-100, remindgoodnightblog:false, isBlackVisitor:false, isShowYodaoAd:false, hostIntro:'JAVA软件工程师,有扎实的Java基础,熟悉JavaEE技术,对框架的底层原理熟悉,学习能力强。', hmcon:'0', selfRecomBlogCount:'0', lofter_single:'' }
{if x.visitorName==visitor.userName}
{else}
{/if}
{/if} {/list}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
{/if}
${fn(x.visitorNickname,8)|escape}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{/if}
评论