hadoop 第一天 认识hadoop

从今天起每天学习大数据相关知识,并把学到的知识总结起来,发到blog上进行记录:

1 为什么使用hadoop?

  自我理解:主要是利用计算机的并发处理来加快读取文件的速度。

  例子: 1TB 硬盘,单台机器读取的话,以100M/s ,大约需要1024*1024/100/60/60=2.9 小时读完

    1TB 数据平均放入100台机器,同样的速度,大约需要1024*1024/100/100/60 =1.7 分钟

    同样的道理,如果数据特别大,从中要找出自己想要的数据,假设需要最坏的方式,全部读取,机器越多就越快,hadoop就是干的这个事情,不需要进一步了解机器之间的同步协作,就能够完成并行读取文件,找出想要的数据统计信息

 

2 为什么不用数据库来对大量硬盘上的数据进行批量分析?

  1寻址时间的提升远远不敌传输速率的提升。

  2如果传统数据库只是更新小部分记录,传统的B树 有优势,若大量数据更新,B树的效率明显落后MapReduce,因为需要 排序/合并来重建数据库。

  3Mapreduce 处理是整个数据集,适用一次写入,多次读取。传统数据库适用于点查询和更新,适合持续更新

  4 传统数据库存储是结构化数据,mapreduce 处理是非结构化和半结构化数据(注:非机构化数据向日志文件,结构化数据是数据完整且不含冗余,半结构化像电子表格)

 

3 Mapreduce 简单执行过程

  分为2个阶段: map阶段和reduce 阶段

     map阶段,读取每一行作为文本输入,建是某一行起始位置相对于文件起始位置的偏移量,提取出自己想要的数据,存到key2 value2

  经过mapreduce 框架处理,基于k2 对建值排序分组,发送给reduce

  reduce阶段:读取K2组,找出自己想要的结果

  例如: map阶段一行一行读取文件,得到 (1950,0)(1950,22)(1950,-11)(1949,111)(1949,78)

     mapreduce框架基于key处理后为(1949,【111,78】)(1950,【0,22,-11】)

     reduce 阶段:基于key ,找到1949 最大的为111 (1949,111)(1950,22)

 

  

posted @ 2016-08-10 14:16  沉默等待  阅读(125)  评论(0)    收藏  举报