【发布时间】:2011-03-17 16:58:06
【问题描述】:
我正在尝试使用 hadoop 练习一些数据挖掘算法。我可以单独使用HDFS,还是需要使用hive/hbase/pig之类的子项目?
【问题讨论】:
标签: hadoop data-mining
我正在尝试使用 hadoop 练习一些数据挖掘算法。我可以单独使用HDFS,还是需要使用hive/hbase/pig之类的子项目?
【问题讨论】:
标签: hadoop data-mining
我找到了一个大学网站,其中包含一些仅基于 Hadoop 构建的 MapReduce 练习和解决方案:
http://www.umiacs.umd.edu/~jimmylin/Cloud9/docs/index.html
另外还有雅虎和谷歌的课程:
http://developer.yahoo.com/hadoop/tutorial/
http://code.google.com/edu/parallel/index.html
所有这些课程都在普通 Hadoop 上运行,以回答您的问题。
【讨论】:
从初学者级别的普通 mapreduce 开始。您可以在下一级尝试 Pig/Hive/Hbase。
除非你足够努力地使用普通 map reduce,否则你将无法欣赏 Pig/Hive/Hbase
【讨论】:
我也会推荐 umd 网站。但是,您似乎对 Hadoop 完全陌生。我会推荐 Tom White 的书“Hadoop: THE Definant Guide”。它有点过时了[意味着 0.18 版本,而不是最新的 0.20+)。阅读它,做例子,你应该可以更好地判断如何构建你的项目。
【讨论】:
我正在尝试使用 hadoop 练习一些数据挖掘算法。
使用在 Hadoop 之上运行的 Apache mahout。 [http://mahout.apache.org/][1]
我可以单独使用HDFS,还是需要使用hive/hbase/pig等子项目?
HDFS是hadoop的文件系统。它代表 Hadoop 分布式文件系统。无论您要在 Hadoop 堆栈中使用什么工具,它们都应该处理分布式环境中的数据。所以,你不能只用 HDFS 做任何事情。您需要任何计算技术/工具,如 Map Reduce、Pig、Hive 等。
希望这会有所帮助!
【讨论】:
您也可以使用 Mahout http://mahout.apache.org/
它是一个机器学习和数据挖掘库,可以在 Hadoop 之上使用。
一般来说 Mahout 目前支持(取自 Mahout 网站):
【讨论】:
您可以将 R、Spark Hadoop 一起用作完整的开源解决方案。
R- 提供许多现成库的统计语言。
Spark- 使用机器学习算法比 MR 更快地处理数据的框架。
Hadoop - 基于商用硬件的可扩展且稳健的数据存储。
【讨论】:
Hadoop 是一种用于分布式/并行数据处理的工具。 Mahout 是一个数据挖掘/机器学习框架,既可以在独立模式下工作,也可以在 Hadoop 分发环境中工作。将其单独使用或与 Hadoop 一起使用的决定归结为需要挖掘的历史数据的大小。如果数据大小为 TB 和 PB 量级,则通常将 Mahout 与 Hadoop 结合使用。
Mahout 支持 3 种机器学习算法,推荐、聚类和分类。曼宁的Mahout in action一书很好地解释了这一点。 Weka 是另一个类似的开源项目。所有这些都属于称为机器学习框架的类别。
请参阅博客,其中讨论了有关Mahout and Hadoop distributed file system works 的用例如何?作为这方面的先驱,Component architecture 上还有一个博客,介绍了这些工具中的每一个如何结合在一起解决 Hadoop /Mahout 生态系统中的数据挖掘问题。
【讨论】:
取决于您的应用程序。您需要了解 hive、pig、hbase 的用途,然后您才能确定它们在您的应用程序中的确切位置。这些都是创建的具体原因,你需要了解简单的google会得到结果
【讨论】:
HDFS 是一种分布式存储系统,用于转储您的数据以进行进一步分析。
Hive/Pig/MR/Spark/Scala 等......是分析数据的工具。您实际上是在其中任何一个中编写算法。仅通过 Pig/Hive/Hbase 无法达到 100%。您应该知道如何编写 Map Reduce 算法,并且需要将这些算法导入 Hive/Pig。
ETL 工具: 猪(脚本语言) Hive(结构化数据的类似 SQL 的查询语言) HBASE for Unstructured data 可以实现实时数据分析。 MapReduce 是分步操作的,Spark 是在 整个数据集一气呵成。 Sqoop : 从 RDDMS 导入/导出数据 Flume: 将流式数据导入 hadoop Mahout:机器学习算法工具
Hadoop 权威指南适合初学者入门。
【讨论】:
您必须根据 Hadoop 生态系统的优势使用不同的工具。
Sqoop用于从传统RDBMS数据库Oracle、SQL Server等导入结构化数据。
Flume 用于处理非结构化数据。
您可以使用内容管理系统来处理非结构化数据和半结构化数据 - Tera 或 Peta 字节的数据。如果您要存储非结构化数据,我更喜欢将数据存储在 CMS 中,并使用 NoSQL 数据库(如 HBASE)中的元数据信息>(例如Image Id , MD5SUM of image)
要处理大数据流,可以使用Pig
Spark 是用于 Hadoop 数据的快速通用计算引擎。 Spark 提供了一种简单而富有表现力的编程模型,支持广泛的应用,包括 ETL、机器学习、流处理和图计算
看看Structured Data 和Un-Structured data 在Hadoop 中的处理
看看完整的 hadoop ecosystem 和这个 SE question
【讨论】: