hadoop入门

  毕业设计是跟着导师做 hadoop mapreduce 计算框架的C++扩展技术研究,虽然之前听说过hadoop这个开源框架,据说它在大数据、云计算方面有很大的用处。就开始学习这个框架的基础知识,下面是我看了一些资料后的个人总结:

   首先,hadoop是一种开源的分布式系统的软件框架,它的核心内容是HDFS(hadoop Distributed File System)+MapReduce(映射化简数据处理)。这个框架可以在将一个串行的作业分解成多个独立的map和reduce任务,然后通过任务调度器master将这些独立的任务分配给计算机集群中负载较低的结点(类似于计算机网络中的负载均衡),这些结点可以并行处理这些任务,最好这些任务处理的中间结果可以合并得到最终的结果,这样可以提供高效的系统。同时计算机集群中的结点可以方便的扩展;当一个结点出现故障时,框架本身可以立刻找到替代的结点处理任务,具有高可靠性和容错性。

    待补充:

    HDFS:

    MapReduce:

               


                                                           图片转载自:http://www.aboutyun.com/forum.php?mod=viewthread&tid=5541&highlight=hadoop


            对于一个输入,通过map、reduce操作,得到一个输出。一个输入被划分为M个分片,每个分片存储在底层分布式,由master将M个map任务分配给集群内的若干主机,同时告知主机这个任务对应的分片位置。这个map操作是从分片中提取键值对(k,v),相当于把一个复杂的分片给细化,map操作之后,hadoop框架开启一些线程自动将map操作输出的(k,v)shufter(搬移)到R个分区中的某个对应分区(一种搬移映射方法是取k的hashcode%R)。这样有相同k的键值对被搬移到同一个分区中,然后框架开启一些线程自动将每个分区的键值对按照k来排序,这样具有相同k的键值对就聚集到了一起,这样很方便就得到了与某个k关联的一组v,即(k,list(v1、v2、v3))。然后对于每个k以及这个k相关的v集合传递给reduce来处理。由master将R个reduce任务分配给集群内的若干主机,reduce则对于每个传递进来的k以及这个k相关的v集合做一个合并,最终输出一个键值对(k,v)。

            应用举例:

                     要找到一个2G的超大文件中出现的IP次数最高的那个IP,文件中每行记录一个ip地址、日期、来源城市这些信息。首先这个输入是一个超大文件,将这个超大文件分片后存储到分布式系统中,每个map任务负责提取对应分片中的每个ip token,并构建(ip,1)这个键值对(1代表IP出现一次), hadoop框架的多线程通过某种映射将这些键值对搬移到到100个分区中(映射函数比如为IP%100),这样的话相同的IP地址肯定是映射到了同一个分区,hadoop框架的多线程对每个分区进行排序,使得相同ip的键值对聚集到一起,从而得到(k,list(v)), 最后通过每个reduce任务对对应分区统计每个IP出现的次数(合并简化),分别得到最大值,最好再取这100个最大值中的最大值。

            总结:每个分页对于一个map任务,每个分区对应一个reduce任务,map任务数不一定等于集群内分配的map主机数,reduce任务数不一定等于集群内分配的reduce主机数;每个map任务或者reduce任务可以在分配的多个主机结点上同时进行,这样大大提高了计算效率。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值