【问题标题】:Experience with Hadoop?有 Hadoop 经验吗?
【发布时间】:2010-09-06 06:33:05
【问题描述】:

你们中有人尝试过 Hadoop 吗?它可以在没有与之配套的分布式文件系统的情况下在无共享架构中使用吗?这有意义吗?

我也对您的任何性能结果感兴趣...

【问题讨论】:

  • 您对 hadoop 的哪些性能方面感兴趣?

标签: performance distributed hadoop shared-nothing


【解决方案1】:

是的,您可以在本地文件系统上使用 Hadoop,方法是在各个地方使用文件 URI 而不是 hdfs URI。我认为 Hadoop 附带的很多示例都是这样做的。

如果您只想了解 Hadoop 的工作原理和基本的 map-reduce 范式,这可能很好,但您需要多台机器和分布式文件系统才能获得架构固有的可扩展性的真正好处。

【讨论】:

    【解决方案2】:

    正如 Joe 所说,您确实可以在没有 HDFS 的情况下使用 Hadoop。但是,吞吐量取决于集群在数据存储位置附近进行计算的能力。恕我直言,使用 HDFS 有 2 个主要好处 1) 计算在集群中分布更均匀(减少节点间通信量),2) 整个集群更能抵抗由于数据不可用而导致的故障。

    如果您的数据已经分区或可简单分区,您可能需要考虑为您的 map-reduce 任务提供自己的分区函数。

    【讨论】:

      【解决方案3】:

      了解 Hadoop 的最佳方法是下载它并开始探索包含示例。使用 Linux 机器/VM,您的设置将比 Mac 或 Windows 容易得多。一旦您对示例和概念感到满意,然后开始查看您的问题空间如何映射到框架中。

      您可能会发现一些资源有助于您了解有关 Hadoop 的更多信息:

      Hadoop Summit Videos and Presentations

      Hadoop: The Definitive Guide: Rough Cuts Version - 这是目前关于 Hadoop 的少数(唯一?)书籍之一。我想说即使在这一点上,电子下载选项的价格也值得(这本书完成了约 40%)。

      【讨论】:

        【解决方案4】:

        Hadoop MapReduce 可以在任意数量的文件系统甚至更抽象的数据源(例如数据库)上运行。事实上,有几个内置类用于非 HDFS 文件系统支持,例如 S3FTP。您也可以通过扩展基本的InputFormat class 轻松构建自己的输入格式。

        不过,使用 HDFS 具有一定的优势。最强大的优势是 MapReduce 作业调度程序将尝试在存储需要处理的记录的物理机器上执行映射和减少。这带来了性能提升,因为数据可以直接从本地磁盘加载,而不是通过网络传输,这取决于连接可能会慢几个数量级。

        【讨论】:

          【解决方案5】:

          并行/分布式计算 = 速度

          多年来,磁盘存储容量大幅增加,但读取数据的速度却跟不上。一个磁盘上的数据越多,寻道速度就越慢。

          Hadoop 是解决问题的分治法的巧妙变体。 您基本上将问题分解成更小的块并将这些块分配给几台不同的计算机以并行执行处理以加快处理速度,而不是让一台机器超载。每台机器处理自己的数据子集,最后将结果组合起来。单个节点上的 Hadoop 不会为您提供重要的速度。

          要了解 hadoop 的优势,您应该在同一个机架上拥有一个包含至少 4 到 8 台商品机器(取决于您的数据大小)的集群。

          您不再需要成为超级天才并行系统工程师即可利用分布式计算。只需了解带有 Hive 的 hadoop 以及您的好去处。

          【讨论】:

            【解决方案6】:

            是的,hadoop 可以在没有 HDFS 的情况下很好地使用。 HDFS 只是 Hadoop 的默认存储。您可以将 HDFS 替换为任何其他存储,例如数据库。 HadoopDB 是对 hadoop 的增强,它使用数据库而不是 HDFS 作为数据源。谷歌一下,你会很容易得到它。

            【讨论】:

              【解决方案7】:

              如果您刚刚开始接触,请先下载 CDH4 并运行它。您可以轻松地安装到本地虚拟机中并在“伪分布式模式”下运行,这与它在真实集群中的运行方式非常相似。

              【讨论】:

                【解决方案8】:

                是的,您可以在指定输入文件等时使用 file:// 使用本地文件系统,这也适用于小型数据集。但是 hadoop 的实际功能是基于分布式和共享机制。但是 Hadoop 用于处理大量数据。单个本地机器无法处理大量数据,或者即使处理也需要大量时间才能完成工作。因为您的输入文件位于共享位置(HDFS ) 多个映射器可以同时读取它并减少完成工作的时间。简而言之,您可以将它与本地文件系统一起使用,但为了满足业务需求,您应该将它与共享文件系统一起使用。

                【讨论】:

                  【解决方案9】:

                  上面有很好的理论答案。

                  要将您的 hadoop 文件系统更改为本地文件系统,您可以在“core-site.xml”配置文件中更改它,如下所示,适用于 hadoop 版本 2.x.x。

                   <property>
                      <name>fs.defaultFS</name>
                      <value>file:///</value>
                    </property>
                  

                  对于 hadoop 版本 1.x.x.

                   <property>
                      <name>fs.default.name</name>
                      <value>file:///</value>
                    </property>
                  

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2010-09-27
                    • 2010-09-26
                    • 1970-01-01
                    • 1970-01-01
                    • 2010-11-14
                    • 1970-01-01
                    相关资源
                    最近更新 更多