我真的不明白hadoop比rdbms更适合扩展的真正原因。有人能详细解释一下吗?这与底层的数据结构和算法有关吗
i7uaboj41#
首先,hadoop不是db的替代品。rdbms垂直缩放,hadoop水平缩放。这意味着要将rdbms扩展两倍,您需要具有双内存、双存储和双cpu的硬件。这是非常昂贵和有限制的。例如,没有一台服务器的内存为10tb。与hadoop不同的是,您不需要昂贵的边缘技术,相反,您可以使用多个商品服务器协同工作来模拟更大的服务器(有一些限制)。您可以将一个具有10 tb ram的集群分布在多个节点中。另一个优点是,要扩展分布式系统,只需在集群中添加新的节点,而不必购买新的更强大的服务器并放弃旧的服务器。
zzzyeukh2#
rdbms在处理TB和PB的巨大数据量方面面临挑战。即使您有独立/廉价磁盘冗余阵列(raid)和数据切碎,它也不能很好地扩展到海量数据。你需要非常昂贵的硬件。edit:to answer,为什么rdbms不能扩展,看看RBDM的开销。登录中。组装日志记录和跟踪数据库结构中的所有更改会降低性能。如果不需要可恢复性,或者通过其他方式(如网络上的其他站点)提供可恢复性,则可能不需要日志记录。锁定。传统的两阶段锁定带来了相当大的开销,因为对数据库结构的所有访问都由单独的实体锁管理器管理。锁定。在多线程数据库中,许多数据结构在被访问之前必须被锁存。删除此功能并使用单线程方法会对性能产生显著影响。缓冲区管理。主存数据库系统不需要通过缓冲池访问页,从而消除了每次访问记录时的间接性。hadoop如何处理hadoop是一个免费的、基于java的编程框架,支持在分布式计算环境中处理大型数据集,可以在商品硬件上运行。它对于存储和检索大量数据非常有用。通过hadoop实现存储机制(hdfs)和处理作业(yarn-map-reduce作业),这种可伸缩性和效率是可能的。除了可伸缩性之外,hadoop还提供了存储数据的高可用性。可伸缩性、高可用性、处理海量数据(结构化数据、非结构化数据、半结构化数据)的灵活性是hadoop成功的关键。数据存储在数千个节点上&处理通过map reduce作业在存储数据的节点上完成(大多数情况下)。处理前端的数据局部性是hadoop成功的关键。这是通过名称节点、数据节点和资源管理器实现的。要理解hadoop是如何实现这一点的,您必须访问以下链接:hdfs体系结构、yarn体系结构和hdfs联邦rdbms仍然适用于多个写/读/更新和对千兆字节数据的一致acid事务。但不适合处理太字节和太字节的数据。nosql具有两个一致性、可用性分区属性,cap理论在一些用例中是很好的。但是hadoop并不意味着支持acid属性的实时事务。它适用于批量处理的商业智能报告-“一次写入,多次读取”范例。从slideshare.net再看一个相关的se问题:nosql与关系数据库
wkyowqbh3#
上面描述的一个问题是,并行rdbms需要昂贵的硬件。teridata和netezza需要特殊的硬件。青梅和黄萎病可以放在商品五金上(现在我承认我和其他人一样有偏见。)我看到绿梅每天扫描数PB的信息(上个月,沃尔玛的数据量达到了2.5 PB(我很努力。)我同时处理了hawq和impala。它们都需要大约30%以上的硬件才能在结构化数据上完成同样的工作。hbase效率较低。没有神奇的银匙。根据我的经验,结构化和非结构化都有各自的位置。hadoop非常适合于接收大量数据并在其中进行少量扫描。我们使用它作为加载过程的一部分。rdbms擅长用高度复杂的查询反复扫描相同的数据。你总是要构造数据来利用它。这需要时间。在将结构放入rdbms之前或在查询时,必须先创建它。
z9zf31ra4#
在rdbms中,数据是结构化的,而不是索引的。检索任何特定“n”列的数据是加载整个数据库,然后选择“n”列。在hadoop中,比如hive,我们只从整个数据集中加载特定的列。更重要的是,数据加载也是通过map-reduce程序来完成的,这是在一个分布式结构中完成的,它减少了总的时间。因此,使用hadoop及其工具有两个优点。
4条答案
按热度按时间i7uaboj41#
首先,hadoop不是db的替代品。
rdbms垂直缩放,hadoop水平缩放。
这意味着要将rdbms扩展两倍,您需要具有双内存、双存储和双cpu的硬件。这是非常昂贵和有限制的。例如,没有一台服务器的内存为10tb。与hadoop不同的是,您不需要昂贵的边缘技术,相反,您可以使用多个商品服务器协同工作来模拟更大的服务器(有一些限制)。您可以将一个具有10 tb ram的集群分布在多个节点中。
另一个优点是,要扩展分布式系统,只需在集群中添加新的节点,而不必购买新的更强大的服务器并放弃旧的服务器。
zzzyeukh2#
rdbms在处理TB和PB的巨大数据量方面面临挑战。即使您有独立/廉价磁盘冗余阵列(raid)和数据切碎,它也不能很好地扩展到海量数据。你需要非常昂贵的硬件。
edit:to answer,为什么rdbms不能扩展,看看RBDM的开销。
登录中。组装日志记录和跟踪数据库结构中的所有更改会降低性能。如果不需要可恢复性,或者通过其他方式(如网络上的其他站点)提供可恢复性,则可能不需要日志记录。
锁定。传统的两阶段锁定带来了相当大的开销,因为对数据库结构的所有访问都由单独的实体锁管理器管理。
锁定。在多线程数据库中,许多数据结构在被访问之前必须被锁存。删除此功能并使用单线程方法会对性能产生显著影响。
缓冲区管理。主存数据库系统不需要通过缓冲池访问页,从而消除了每次访问记录时的间接性。
hadoop如何处理
hadoop是一个免费的、基于java的编程框架,支持在分布式计算环境中处理大型数据集,可以在商品硬件上运行。它对于存储和检索大量数据非常有用。
通过hadoop实现存储机制(hdfs)和处理作业(yarn-map-reduce作业),这种可伸缩性和效率是可能的。除了可伸缩性之外,hadoop还提供了存储数据的高可用性。
可伸缩性、高可用性、处理海量数据(结构化数据、非结构化数据、半结构化数据)的灵活性是hadoop成功的关键。
数据存储在数千个节点上&处理通过map reduce作业在存储数据的节点上完成(大多数情况下)。处理前端的数据局部性是hadoop成功的关键。
这是通过名称节点、数据节点和资源管理器实现的。
要理解hadoop是如何实现这一点的,您必须访问以下链接:hdfs体系结构、yarn体系结构和hdfs联邦
rdbms仍然适用于多个写/读/更新和对千兆字节数据的一致acid事务。但不适合处理太字节和太字节的数据。nosql具有两个一致性、可用性分区属性,cap理论在一些用例中是很好的。
但是hadoop并不意味着支持acid属性的实时事务。它适用于批量处理的商业智能报告-“一次写入,多次读取”范例。
从slideshare.net
再看一个相关的se问题:
nosql与关系数据库
wkyowqbh3#
上面描述的一个问题是,并行rdbms需要昂贵的硬件。teridata和netezza需要特殊的硬件。青梅和黄萎病可以放在商品五金上(现在我承认我和其他人一样有偏见。)我看到绿梅每天扫描数PB的信息(上个月,沃尔玛的数据量达到了2.5 PB(我很努力。)我同时处理了hawq和impala。它们都需要大约30%以上的硬件才能在结构化数据上完成同样的工作。hbase效率较低。
没有神奇的银匙。根据我的经验,结构化和非结构化都有各自的位置。hadoop非常适合于接收大量数据并在其中进行少量扫描。我们使用它作为加载过程的一部分。rdbms擅长用高度复杂的查询反复扫描相同的数据。
你总是要构造数据来利用它。这需要时间。在将结构放入rdbms之前或在查询时,必须先创建它。
z9zf31ra4#
在rdbms中,数据是结构化的,而不是索引的。检索任何特定“n”列的数据是加载整个数据库,然后选择“n”列。
在hadoop中,比如hive,我们只从整个数据集中加载特定的列。更重要的是,数据加载也是通过map-reduce程序来完成的,这是在一个分布式结构中完成的,它减少了总的时间。
因此,使用hadoop及其工具有两个优点。