hadoop hive中map与reduce的一些疑问
hadoop1.0假如我有20G数据5台机器1个nameNode4个dataNode用hive分析用默认1G一个reduce1.是不是会产生20reduce这些reduc...
hadoop1.0 假如 我有20G数据 5台机器 1个nameNode4个dataNode 用hive分析 用默认1G一个reduce
1.是不是会产生20reduce 这些reduce 怎么分配到5太机器上的?如果产生20个map那么一个机器几个map?
2.还有就是 我有一个100W的表 执行map那么会初始或一次map 执行100w次map么 ?
3.hive 中 select * from user where uid=11
map与reduce是怎么工作的
map的作用是找出这行数据么是<key,value> 这种形式么key是什么(行偏移量么) value是这行数据么
那么reduce是干什么的 接收数据写到hive关联的数据库么? 展开
1.是不是会产生20reduce 这些reduce 怎么分配到5太机器上的?如果产生20个map那么一个机器几个map?
2.还有就是 我有一个100W的表 执行map那么会初始或一次map 执行100w次map么 ?
3.hive 中 select * from user where uid=11
map与reduce是怎么工作的
map的作用是找出这行数据么是<key,value> 这种形式么key是什么(行偏移量么) value是这行数据么
那么reduce是干什么的 接收数据写到hive关联的数据库么? 展开
2个回答
展开全部
找到离存数据最近的一台机器运行和这个数据相关的map任务,reduce是按照你整理出的key有多少个来决定的。一个机器很难说,处理的快的处理多一点,保持所有机器使用平衡。
上面你都自己写了20个map,和文件大小个数有关,和数据条数无关。
要看你选择的输入格式是什么,默认是行偏移量,然后由你编写map函数,指定key和value是什么。相同的key整合起来传给reduce,由reduce进行下一步处理,最后输出到指定的地方。
上面你都自己写了20个map,和文件大小个数有关,和数据条数无关。
要看你选择的输入格式是什么,默认是行偏移量,然后由你编写map函数,指定key和value是什么。相同的key整合起来传给reduce,由reduce进行下一步处理,最后输出到指定的地方。
追问
1.一台机器能既有map又有reduce么
2.reduce是不只能在namenode节点上啊
追答
map是一个过程,只有执行完了map,得到所有的key才能执行reduce,所以不存在一台机器同时执行map和reduce。资源是同样的,除非坏了,所有执行过map的机器都会被分配reduce,除非reduce太少,另一话了。
你想想单机伪分布,那不是map和reduce都在一台机上运行吗,那台机还同时兼顾namenode和datanode。其实这里有个概念你混淆了,mapreduce里面记录单位是节点,一台机器,好一点的你设两个节点,三个节点都没问题,反正跑的起来就行,相当于一台机器同时打开多个excel,只是输入输出不一样。我们一般设一个机器一个节点,就是觉得够了,而且管理也方便,没别的。
展开全部
虽然不怎么了解hive内部机制,但是默认1G一个reduce是怎么实现的呢?reduce处理数据是根据key进行分组的,你是无法指定reduce处理多大的数据量的,应该是默认1G一个map任务吧。
1)当你任务的map数量大于集群可以map slot数量,那么先会启动一部分map任务,当有map任务执行完再继续执行其他map,所以直到任务运行完成你无法知道每台机器运行多少map,因为有些机器运行快,有些慢,运行快的会多运行一些,其实就是能者多劳。
2)100W的表,如果是1个map任务,那么这个map就会执行循环(map方法)100W次,但是如果是10个,那么10W次,总之map需要处理多少数据则执行循环多少次。
3)应该是没有reduce方法的,因为不需要任何计算,只需要在map阶段找出uid=11的数据即可,<key,value>的格式可能是hive自己的格式,具体只能去看代码。
1)当你任务的map数量大于集群可以map slot数量,那么先会启动一部分map任务,当有map任务执行完再继续执行其他map,所以直到任务运行完成你无法知道每台机器运行多少map,因为有些机器运行快,有些慢,运行快的会多运行一些,其实就是能者多劳。
2)100W的表,如果是1个map任务,那么这个map就会执行循环(map方法)100W次,但是如果是10个,那么10W次,总之map需要处理多少数据则执行循环多少次。
3)应该是没有reduce方法的,因为不需要任何计算,只需要在map阶段找出uid=11的数据即可,<key,value>的格式可能是hive自己的格式,具体只能去看代码。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询