1.1 数据
1、数据快速增长:
1)个人产生的数据日益增长,包括电话、邮件、文件、音频、视频
2)物联网数据,包括机器日志、GPS、零售交易数据、传感器、RFID读卡器
不同来源数据信息综合处理分析,发掘数据价值
大数据胜于好算法,基于小数据的推荐效果往往不如基于大量可用数据的一般算法推荐效果
1.2 存储与分析
存储访问速度的提升远远落后于存储容量的提升,90年代,1G盘读取速度4MB/s,约5分钟才能读完,当前,1TB盘读取速度100MB/s,约3小时才能读完
解决方式:多磁盘读取,如磁盘阵列,RAID 0,并行读写,大大缩短数据分析时间,且从统计角度来看,用户分析任务都是在不同时点进行。
多硬盘读写数据,需解决以下问题:
1)硬件故障,数据多副本,RAID01 RAID5 HDFS等
2)数据分析正确性,从一个硬盘读取的数据需要结合其他硬盘数据一起进行分析,MapReduce编程模型抽象了数据读写问题,并转换为对一个key-value数据集的计算。
1.3 查询所有数据
MapReduce批处理,每次数据分析需要处理整个数据集或至少一个数据集的大部分,合理时间范围内返回结果
1.4 不仅仅是批处理
批处理系统,不适合交互分析,一般用于离线分析。
然而,hadoop目前用于指代一个由更大的、多项目组成的生态,而不仅仅HDFS和MapReduce。
Hbase,提供在线访问的NoSQL数据库,既提供在线单行记录读写访问,也提供数据块的读/写批操作。
- 交互式SQL
- 迭代处理
- 流处理
- 搜索
1.5 优势
1.5.1 关系型数据库
配有大量磁盘DB做大数据分析?
- 磁盘寻址(磁头移动到磁盘特定位置以读/写数据)时间远远大于传输时间,是磁盘操作延迟的主要原因,传输速率取决于磁盘带宽。若数据访问模式包含了大量磁盘寻址,读取大量数据会花更长时间(相对流数据读取模式,取决于传输速率)
- 数据库系统传统的B+树(受限于磁盘寻址速率)对小部分数据更新非常有优势,若大量更新,效率明显落后于MapReduce,因为需要“排序/合并(sort/merge)”来重建数据库
MapReduce被视为对RDBMS补充,适于分析整个数据集,一次写入、多次读取
RDBMS适于索引后数据集的点查和更新,提供对小数据集的低延迟数据检索和快速更新,更适合持续更新的数据集
对比 | DB | MapReduce |
---|---|---|
数据大小 | GB | PB |
数据存取 | 交互式和批处理 | 批处理 |
更新 | 多次读/写 | 一次写,多次读 |
事务 | 支持 | 不支持 |
结构 | 写时模式 | 读时模式 |
完整性 | 高 | 低 |
横向扩展 | 非线性 | 线性 |
关系型DB与Hadoop区别越来越模糊,一方面DB借鉴Hadoop一些思想,另一方面,诸如hive不仅具有交互性,而且增加了事务和索引。
- 结构化数据 既定格式,如XML文档或满足预先定义格式
- 半结构化数据 比较松散,可能有格式,但易被忽略
- 非结构化数据 没有特别的内部结构,如纯文本、图像数据
Hadoop对半结构、非结构化数据处理非常高效,处理数据时才对数据进行解释(读时模式),灵活且避免了RDBMS数据加载的高开销,Hadoop只做文件拷贝。
1.5.2 网格计算
高性能计算(High Performance Computing, HPC)和网格计算(Grid Computing)主要使用类似于消息传递接口(Message Passing Interface, MPI)的API。HPC将作业分散到各台机器,这些机器访问SAN(存储区域网络)组成的共享文件系统,适用于计算密集型作业,数据量大场景,网络带宽成瓶颈。Hadoop尽量在计算节点存储数据,实现快速访问,数据本地化(data locality),网络带宽最珍贵。
HPC相对Hadoop,需关注底层功能模块和高层数据分析算法,Hadoop则在更高层次上执行任务,采用share-nothing(无共享)架构,任务彼此独立,框架检测到任务失败并重新执行,MPI需管理检查点和恢复机制。
1.5.3 志愿计算
CPU高度密集型任务分解为工作单元,分发到全球志愿者电脑进行分析,计算所耗时间远远超出工作单元数据网络传输时间,为防欺诈,每个单元分发到3台不同机器,最少2台结果相同才被接受。
MapReduce三大设计目标:(1)为几分钟或几小时就可以完成的作业提供服务;(2)运行于同一个内部有高速网络的数据中心;(3)数据中心内计算机是可靠、专用的。
1.6 Hadoop发展简史
起源于开源网络搜索引擎Nutch,后基于谷歌三大论文进行改造且商用
排序
2008年4月,910节点,209秒, 1TB
2008年4月,谷歌MapReduce, 68秒,1TB
2014年,207节点Spark,1406秒,100TB 约14秒/TB