我一直很喜欢阅读 ServerFault,也接触过不少有关 Hadoop 的主题。但从全局角度看,我有点难以理解它的作用。
所以我的问题很简单:什么是 Hadoop?它能做什么?它有什么用?为什么它如此厉害?
编辑 :如果有人碰巧有使用 Hadoop 的用例的演示/解释,那就太好了。
答案1
直接来自马嘴:
Hadoop 是一个在由商用硬件构建的大型集群上运行应用程序的框架。Hadoop 框架透明地为应用程序提供了可靠性和数据移动。Hadoop 实现了一个名为 Map/Reduce 的计算范例,其中应用程序被划分为许多小的工作片段,每个工作片段都可以在集群中的任何节点上执行或重新执行。此外,它还提供了一个分布式文件系统 (HDFS),该系统将数据存储在计算节点上,从而为整个集群提供非常高的聚合带宽。Map/Reduce 和分布式文件系统的设计都使得框架可以自动处理节点故障。
Map/Reduce 是一种流行的编程范式,它是由谷歌其中,任务被分成小部分并分发到大量节点进行处理(映射),然后将结果汇总为最终答案(减少)。Google 和 Yahoo 将此用于其搜索引擎技术等。
Hadoop 是实现此类处理方案的通用框架。至于它为什么如此出色,主要是因为它提供了诸如容错等巧妙的功能,并允许您将几乎任何类型的硬件组合在一起进行处理。只要您的问题符合范例,它还可以很好地扩展。
您可以在网站。
至于例子,保罗给出了一些,但这里还有一些你可以做的不是那么以网络为中心的事情:
- 渲染 3D 电影。“映射”步骤将每一帧的几何图形分发到不同的节点,节点对其进行渲染,然后在“缩减”步骤中重新组合渲染后的帧。
- 计算分子模型中系统的能量。系统轨迹的每一帧在“映射”步骤中分配到一个节点。节点计算每一帧的能量,
然后在“归约”步骤中汇总结果。
本质上,该模型非常适合解决可以分解为完全独立的类似离散计算并可以重新组合以产生最终结果的问题。
答案2
Cloudera 有一些很棒的视频,解释了 Map Reduce 和 Hadoop 背后的原理。
http://www.cloudera.com/hadoop-training-basic
MapReduce 背后的核心思想之一是,对于大型数据集,您将受到磁盘的 io 限制,因此在 Hadoop HDFS 中,您可以将数据拆分到多个节点之间,从而实现并行处理。
系统管理员对 Hadoop 感兴趣的一些用途通常是处理大型日志文件集 - 我只能发布一个链接,但其中包括,谷歌应该可以找到这些:
- Rackspace 邮件日志查询
- 使用 pig 分析 Apache 日志 - 请参阅 Cloudera 博客
- Yahoo! 打击垃圾邮件
答案3
最初Hadoop是为了OLAP环境中的大量数据集而开发的。
随着在 Hadoop 上引入 Hbase,也可以用于 OLAP 处理。Hadoop 是一个包含所有子组件(如 map Reduce、HDFS、Hbase、Pig)的框架。
我找到了一篇关于Hadoop基础知识的文章为何引入 Hadoop。
在Hadoop中,数据以文件的形式存储,而不是以表、列的形式存储。