hadoop新手学习线路指南





设想一下这样的应用场景. 我有一个100M 的数据库备份的sql 文件.我现在想在不导入到数据库的情况下直接用grep操作通过正则过滤出我想要的内容。例如:某个表中 含有相同关键字的记录
, 分布式计算的核心就在于 利用分布式算法 把运行在单台机器上的程序扩展到多台机器上并行运行.从而使数据处理能力成倍增加.但是这种分布式计算一般对编程人员要求很高,而且对服务器也有要求.导致了成本变得非常高.
Haddop 就是为了解决这个问题诞生的.Haddop可以很轻易的把很多linux的廉价pc 组成分布式结点,然后编程人员也不需要知道分布式算法之类,只需要根据mapreduce的规则定义好接口方法,剩下的就交给Haddop. 它会自动把相关的计算分布到各个结点上去,然后得出结果.








  • 1.什么是Map/Reduce

    MapReduce是hadoop的核心组件之一,hadoop要分布式包括两部分,一是hdfs,一部是框,就是mapreduce,缺一不可,也就是说,可以通过mapreduce很容易在hadoop平台上进行分布式的计算编程。



    效。但是写一个多线程程序要比方法一困难多了,我们必须自己同步共享数据,比如要防止两个线程重复统计文件。 
    我们要人工把程序copy到别的机器,要人工把论文集分开,最痛苦的是还要把N个运行结果进行整合(当然我们也可以再写一个程序)。 
    MapReduce本质上就是方法三,但是如何拆分文件集,如何copy程序,如何整合结果这些都是框架定义好的。我们只要定义好这个任务(用户程序),其它都交给MapReduce。
    map函数和reduce函数
      map函数和reduce函数是交给用户实现的,这两个函数定义了任务本身。 
    reduce函数。 
    工作原理:
    总结:通过以上你是否了解什么是MapReduce了呢,什么是key,怎么过滤有效数据,怎么得到自己想要的数据。





    map 端

    。默认情况是100MB,可以通过属性调整。一旦缓冲内容达到阀值(默认0.80,或者80%),一个后台线程开始把内容写到磁盘中。在写磁盘过程中,map输出继续被写到缓冲区,但如果在此期间缓冲区被填满,map会阻塞直到写磁盘过程完成。
    由任务的属性控制,。默认值是40,在运行大型作业的大型集群上,此值可以根据需要调整。
    reducer端






    (缓冲区大小由属性控制),否则,map输出被复制到磁盘。一旦内存缓冲区达到阀值大小(由决定)或达到map输出阀值(控制),则合并后溢出写到磁盘中。

    是10 (10默认值设置,由属性设置,与map的合并类似),合并将进行5趟。每趟将10个文件合并成一个文件,因此最后有5个中间文件。





    由上面的代码,我们可以了解到,当调用到map时,通常会先执行一个setup函数,最后会执行一个cleanup函数。而默认情况下,这两个函数的内容都是nothing。因此,当map方法不符合应用要求时,可以试着通过增加setup和cleanup的内容来满足应用的需求。

    由上面的代码,我们可以了解到,当调用到map时,通常会先执行一个setup函数,最后会执行一个cleanup函数。而默认情况下,这两个函数的内容都是nothing。因此,当map方法不符合应用要求时,可以试着通过增加setup和cleanup的内容来满足应用的需求。




    一个云资源汇总网站
    http://www.aboutyun.com/thread-5928-1-1.html


    相关内容