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
处理,转换成新的key,value输出。
8 把reduce的输出保存到文件中
RPC机制
RPC通信机制
java基本类型与Hadoop常见基本类型的对照
LongWritable
Integer IntWritable
Boolean BooleanWritable
Text
其实就是对象的序列化和反序列化的过程而已。
性能调优的一些基础知识。垃圾回收机制与hadoop的
comparable接口,具有可比性。
统计每个加盟商结算金额的总数。
map函数: k1,v1 一行表示加盟商的一条记录
reduce函数:
hadoop的acl access control list
要点1 :
要点2 :
导出jar时候需要指定MainClass为上述FmAccountSettltCount
--如果改了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 metastore &
--可能是同时启动多个进程导致的。
in thread "main" org.apache.thrift.transport.TTransportException: Could not create ServerSocket on address 0.0.0.0/0.0.0.0:9083.
hive --service hiveserver &
hadoop fs -chmod -R 777 /tmp
hive -h master -p 10000
看计数器的输出可以看你的mapreduce 的运行状态
舆情监督
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运行的效率,
任务: 1 自己写个分区的mapreduce
2 FileSystem操作hdfs
3 自定义排序。我们可以将key进行打包。
我们只要将key定义可比性(compareTo 方法)
可以设置reduce的tasksize为0表示不经过reduce步骤。
我们可以指定新的map任务输入格式化器。
按照key进行排序,分组:将相同key的value放到同一组中。除了这个之外
我们可以自定义分组。
(byte[]first,int firstStart,int firstPos,
byte[]second,int secondStart,int secondPos)
自定义了partion分区类,可以定义
reduceTasks由谁决定?
我怎么知道我需要有几个reduce?
分区之后再排序:
分成多个区之后,每个分区中进行sort操作。
如果是排完序之后再分区就会比较慢了。
网络传输:map的输出需要传输给reduce节点。可以在
copy and merge equals shuffle
map reduce 常见算法:
单词计数
数据去重功能:
排序 Top K,取最值问题。
setNumberReduceTasks():
投影
1 hash表中存储的值都是不一样的,也就是不允许重复
Zookeeper :
zk可以保证数据在集群之间的数据的事务性一致性。
ACID
如何搭建Zookeeper集群。
结构: 服务器集群不小于三个节点,要求各服务器
之间系统时间保持一致。
选举产生的leader
hadoop运行机制
namenode单点故障
hadoop HA
hadoop性能调优。
mapreduce执行流程。
RPC 原理
MapReduce+Hive
集群的瓶颈是啥?
1 磁盘IO,指令和数据都得经过集群中的master。
netstat -an
<script type="text/javascript" id="wumiiRelatedItems"> </script>
this.p={ m:2, b:2, loftPermalink:'', id:'fks_087070081094085068082087<wbr>083069072084080068086081<wbr>080065084095', blogTitle:'hadoop学 笔记(笔记比较乱,随性而写,写到哪算哪)', blogAbstract:'
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:'' } {list a as x} {if !!x}
{if x.visitorName==visitor.userName} {else} {/if}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'} {elseif x.moveFrom=='android'} {elseif x.moveFrom=='mobile'}
{/if} ${fn(x.visitorNickname,8)|escape}
{/if} {/list} {if !!a} ${fn(a.nickname,8)|escape}
${a.selfIntro|escape}{if great260}${suplement}{/if}