第一章
一、对hadoop的诞生的原因:
问题:
硬盘的存储容量在迅速的增加,传输的速度并未有相同幅度的增加,
从驱动器上读取数据需要花费很长的时间
所以为了提高传输速度提出了一种解决方案是:从多个磁盘并行读写数据。
但是在此种解决方案的上存在的问题是:
1.硬件故障---数据存储在多台机器上,当发生故障时如何防止数据的丢失。
2.如何保证从多台机器上合并的数据的正确性。
在这种背景下,Hadoop提供了一个稳定的共享存储和分析系统。
存储是由HDFS实现,保证数据的合并后的正确性是由MapReduce实现。
这也是Hadoop的核心功能。
二、与其他系统的比较Hadoop系统的优势在哪?
网上的总结:
Hadoop是一个让用户轻松架构和使用的分布式计算平台。用户可以在Hadoop上开发和运行处理
海量数据的应用程序。有点:
1.高可靠性。(存储和处理)
Hadoop按位存储和处理数据的能力值得信赖。
2.高扩展性(数据存储的分配)
Hadoop是在可用的计算机集蔟(数据存储区)间分配数据并完成计算任务,
这些集蔟可以方便地扩展到数以千计的节点中。
3.高效性。(数据处理高效)
Hadoop能够在节点之间动态地移动数据,并保证个节点的动态平衡,
因此处理数据数据速度非常快。
4.高容错性。(冗余数据副本,失败的任务再分配)
Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。
内部的原因(从书上总结):
1.MapReduce是一个批量查询处理器,能够在合理的时间范围内处理针对整个数据集的动态查询。
2.因为寻址时间的限制,所以不能采用更大的硬盘来存储大规模的数据。
3.对于更新数据库中的大部分数据来说,MapReduce要比传统的B树更有优势。
4.MapReduce、关系型数据库之间的区别:
MapReduce适合一次写入、多次读取数据的应用,关系型数据库更适合持续更新的数据集。
MapReduce、关系型数据库的区别还有二者操作的数据集是不同。
数据集:结构化数据---有既定格式的实体化数据(xml文档)
半结构化数据---较松散,可能有格式(电子表格)
非结构化数据---没有什么特殊的内部结构(纯文本/图像数据)
MapReduce 对非结构化数据和结构化数据非常有效。因为它是在对数据处理时才对数据进行解释。
也就是输入的键和值并不是数据固有的属性,是由分析数据的人来选的。
MapReduce是一种线性的伸缩编程模型。其中map/reduce函数不需要关注数据集及其所用的集群
大小,可以同样运行于大规模数据集和小规模数据集。
如果数据输入量和集群量都增加相同倍数,运行时间是不变的。
与网格计算、高性能计算、志愿计算的比较:
高性能计算在在访问几百GB的数据量时会遇到瓶颈,而且编程难度大。
志愿计算是在接入互联网的不可信的计算机长时间运行,这些计算机网络带宽不同,
对本地化数据没有要求,这与MapReduce的设计目标是明显不同的,
MapReduce的设计目标是:
1>短时间就能完成的作业提供服务。
2>运行于同一个内部有高速网络连接的数据中心内。
3>数据中心内的计算机是可靠的、定制的硬件。
第一章的总结:
首先第一章解决的问题是:为什么使用hadoop?
这也是我想问的问题,并尝试着通过本章的内容解决这个问题。
首先每一种新的技术的诞生都是为了解决问题的。
那么在hadoop产生之前的问题是:
从磁盘读取数据的速度并未像磁盘的存储容量一样得到了很大的提升
解决办法:
从多个磁盘并行读取数据
遇到的问题:
1.硬件故障:当硬件发生故障时如何避免数据的丢失
2.如何保证从多台数据合并的数据的正确性
就是在上面的问题源头是为了解决:提升从磁盘读取数据的速度的问题。这是hadoop要解决的本质问题。
hadoop提供了一个稳定的共享存储和分析系统。
存储是由hdfs实现的,合并后的数据准确性是有MapReduce实现的。
对于上面的总结是可以帮助我们对于hadoop的整体的认知,也是对于hadoop产生的原因的回答。
之外的思考:
为什么会想到创建hadoop这样的系统来解决这个问题,这个问题是不能简单的用hadoop内部机制来回答的,再仔细的阅读一遍hadoop的发展史我想会总结出答案。