你们中有人尝试过Hadoop吗?它可以在没有与之配套的分布式文件系统的情况下在无共享架构中使用吗?这有意义吗?
我也对您的任何性能结果感兴趣...
你们中有人尝试过Hadoop吗?它可以在没有与之配套的分布式文件系统的情况下在无共享架构中使用吗?这有意义吗?
我也对您的任何性能结果感兴趣...
是的,您可以在本地文件系统上使用 Hadoop,方法是在各个地方使用文件 URI 而不是 hdfs URI。我认为 Hadoop 附带的许多示例都是这样做的。
如果您只想了解 Hadoop 的工作原理和基本的 map-reduce 范例,这可能很好,但是您将需要多台机器和分布式文件系统才能获得架构固有的可扩展性的真正好处。
Hadoop MapReduce 可以在任意数量的文件系统甚至更抽象的数据源(例如数据库)上运行。事实上,有几个内置类用于支持非 HDFS 文件系统,例如S3和FTP。您也可以通过扩展基本InputFormat 类轻松构建自己的输入格式。
然而,使用 HDFS 带来了一些优势。最强大的优势是 MapReduce 作业调度程序将尝试在存储需要处理的记录的物理机器上执行映射和减少。这带来了性能提升,因为数据可以直接从本地磁盘加载,而不是通过网络传输,这取决于连接可能会慢几个数量级。
正如 Joe 所说,您确实可以在没有 HDFS 的情况下使用 Hadoop。但是,吞吐量取决于集群在数据存储位置附近进行计算的能力。恕我直言,使用 HDFS 有 2 个主要好处 1)计算在集群中分布更均匀(减少节点间通信量)和 2)集群作为一个整体更能抵抗由于数据不可用而导致的故障。
如果您的数据已经分区或可简单分区,您可能需要考虑为您的 map-reduce 任务提供自己的分区函数。
了解 Hadoop 的最佳方式是下载它并开始探索包含示例。使用 Linux 机器/VM,您的设置将比 Mac 或 Windows 容易得多。一旦您对示例和概念感到满意,然后开始查看您的问题空间如何映射到框架中。
您可能会发现一些资源可用于获取有关 Hadoop 的更多信息:
Hadoop: The Definitive Guide: Rough Cuts Version - 这是目前关于 Hadoop 的少数(唯一?)书籍之一。我想说即使在这一点上,电子下载选项的价格也是值得的(这本书完成了约 40%)。
并行/分布式计算 = SPEED << Hadoop 让这变得非常简单和便宜,因为你可以使用一堆商品机器!!!
多年来,磁盘存储容量大幅增加,但读取数据的速度却跟不上。一个磁盘上的数据越多,寻道速度就越慢。
Hadoop 是解决问题的分治法的一个巧妙变体。您基本上将问题分解为更小的块并将这些块分配给几台不同的计算机以并行执行处理以加快处理速度而不是使一台机器过载。每台机器处理自己的数据子集,最后将结果组合起来。单个节点上的 Hadoop 不会为您提供重要的速度。
要看到 hadoop 的好处,您应该在同一个机架上拥有一个集群,其中至少有 4 到 8 台商品机器(取决于您的数据大小)。
您不再需要成为超级天才并行系统工程师即可利用分布式计算。只要知道 hadoop 和 Hive 以及你的好去处。
是的,hadoop 可以在没有 HDFS 的情况下很好地使用。HDFS 只是 Hadoop 的默认存储。您可以将 HDFS 替换为任何其他存储,例如数据库。HadoopDB 是对 hadoop 的增强,它使用数据库而不是 HDFS 作为数据源。谷歌一下,你会很容易得到它。
如果您刚刚弄湿了脚,请从下载 CDH4 并运行它开始。您可以轻松地安装到本地虚拟机中并在“伪分布式模式”下运行,这与它在真实集群中的运行方式非常相似。
是的,您可以在指定输入文件等时使用 file:// 使用本地文件系统,这也适用于小型数据集。但是 hadoop 的实际功能是基于分布式和共享机制。但是 Hadoop 用于处理大量数据。单个本地机器无法处理大量数据,或者即使处理也需要大量时间才能完成工作。因为您的输入文件位于共享位置(HDFS ) 多个映射器可以同时读取它并减少完成工作的时间。简而言之,您可以将它与本地文件系统一起使用,但为了满足业务需求,您应该将它与共享文件系统一起使用。
上面有很好的理论答案。
要将您的 hadoop 文件系统更改为本地文件系统,您可以在“core-site.xml”配置文件中更改它,如下所示,适用于 hadoop 版本 2.xx
<property>
<name>fs.defaultFS</name>
<value>file:///</value>
</property>
对于 hadoop 版本 1.xx
<property>
<name>fs.default.name</name>
<value>file:///</value>
</property>