1.1 数据数据
数据越来越多
1.2 数据的存储和分析
硬盘存储容量不断提升,也变得便宜。但是访问速度并没有得到提升。
1990年一块硬盘可以存储1370m,传输速度是4.4m/s。 五分钟可以遍历完
2010年一块硬盘 1T,速度是100m/s,需要 1024*1024/100 约等于10240秒=3个小时左右
于是我们考虑对多个硬盘并行读写,以加快速度。但是遇到两个问题
1 硬件故障问题。 --hdfs
2 需要某种特定的方式来共同完成分析。--mapReduce
1.3查询所有数据
mapreduce采用了一种蛮力的方法。
mr是一个批量查询处理器,能够在合理的时间范围内,处理针对整个数据集的动态查询
1.4 不仅仅是批处理
mr看起来更适合那种没有用户在现场等待查询结果的离线使用场景
但是, hadoop有时被指于一个更大的/多个项目组成的生态系统,而不仅仅是hadoop。
HBase: 使用hdfs做底层存储的键值存储模型。不仅支持对单行的在线读/写 访问,还提供对数据块 读/写 的批操作
YARN: 集群资源管理器,允许任何分布式程序基于hadoop集群的数据而运行
交互式SQL: 利用mr进行分发并是哟个一个分布式的查询引擎,使得hadoop上获得sql查询低延迟的同时还能保持对大数据集规模的可扩展性。这个引擎使用指定的“alway on”进程 (如impala)或容器重用 (如同tez上的hive)
迭代处理: 许多算法,例如机器学习,本身具有迭代性,因此和那种每次迭代都从硬盘中加载的方式比,这种在内存中保存中间结果的方式更加高效。spark
流处理:例如 strom, spark streaming , samza使得在无边界数据流上运行实时/分布式的计算,并向hadoop 存储系统或者外部系统发布结果
搜索: solr搜索平台能在hadoop集群上运行,当文档加入hdfs之后,可以对其进行索引,且根据hdfs中存储的所以为搜索提供服务。
1.5 对于其他系统的优势
1.5.1关系型数据库
为什么不能用配有大量硬盘的数据库来进行 大数据分析?为什么要hadoop
1 硬盘发展趋势:寻址时间的提升远远不及传输速率的提升。寻址是将磁头移动到特定硬盘位置进行读写的过程,他是导致硬盘操作延迟的主要原因。而传输速率取决于硬盘的带宽。
2 如果是少量数据,那么关系型数据库更快。但是大量数据,关系型数据库就无能为力了。
1.5.2网格计算
将作业分散到集群各个节点上,机器访问一个共享的文件系统(数据和算力分离)
劣势:网络带宽将成为瓶颈,可能cpu会等待数据的载入,对程序员的要求也比较高,需要使用底层的功能模块和高层算法,也需要维护各个进程
hadoop尽可能将数据本地化。hadoop仅仅考虑写mapreduce,其他都不需要管了
1.5.3志愿计算
把数据分成多个块,发送给世界各地的机器去运算,算完了再发回来。志愿计算一般数据量不大,但是计算量特别大,志愿者主要是共享cpu周期,存储和带宽大部分时间都是闲置的。同一个块,会发给三台机器,取结果相同的两个。
hadoop目标:
1 几分钟或者几个小时内完成任务
2 运行在一个高速网络连接的数据中心内
3 所有计算机是可靠的,可信任的
1.6 hadoop发展史
略
1.7 本书包含内容
可以参考一下他推荐的阅读顺序