如何开始探索 BigData、Hadoop 及其生态系统组件?

Posted

技术标签:

【中文标题】如何开始探索 BigData、Hadoop 及其生态系统组件?【英文标题】:How to start exploring BigData, Hadoop and its ecosystem components? 【发布时间】:2014-11-25 12:26:30 【问题描述】:

我刚刚开始探索大数据技术和 Hadoop 框架。

但是,对如此多的生态系统组件和框架感到困惑。您能否建议从结构化的学习开始?

我的意思是应该关注哪个生态系统组件?有什么特别的还是全部?

帮助非常感谢!

拉尼特

【问题讨论】:

【参考方案1】:

几个月前我在 Quora 上写了这个答案。希望这会有所帮助:

1.浏览一些有关 Hadoop 的介绍性视频 在直接开始研究之前,对 hadoop 有一些高级概念非常重要。这些介绍性视频将有助于了解 Hadoop 的范围以及可以应用它的用例。网上有很多相同的资源,浏览任何视频都是有益的。

2。了解 MapReduce 帮助我的第二件事是了解 Map Reduce 是什么以及它是如何工作的。这篇论文解释得很好:http://static.googleusercontent....

这里有另一个不错的教程:http://ksat.me/map-reduce-a-real...

对于第 1 点和第 2 点,请完成第一周视频讲座的前四节课。分布式计算和 map reduce 的整个概念在这里得到了很好的解释。 https://class.coursera.org/mmds-001/lecture

3. Cloudera VM 入门 一旦你了解了 Hadoop 的基础知识,你就可以下载 cloudera 提供的 VM 并开始在其上运行一些 hadoop 命令。您可以从此链接下载 VM:http://www.cloudera.com/content/...

熟悉虚拟机上的基本 Hadoop 命令并了解其工作原理会很好。

4.设置独立/伪分布式 Hadoop 一旦您熟悉了使用虚拟机的 Hadoop,我建议您在您的机器上设置自己的独立 Hadoop。 Michael G. Noll 在此博客上很好地解释了安装步骤:在 Ubuntu Linux(单节点集群)上运行 Hadoop - Michael G. Noll

5.了解 Hadoop 生态系统 熟悉 Hadoop 生态系统中的其他组件(如 Apache Pig、Hive、Hbase、Flume-NG、Hue 等)会很好。所有这些都有不同的用途,并且掌握所有这些方面的一些信息将非常有助于围绕周围构建任何产品hadoop 生态系统。您可以轻松地将所有这些安装在您的机器上并开始使用它们。 Cloudera VM by 已经安装了其中的大部分。

6.编写 Map Reduce 作业 一旦你完成了步骤 1-5,我不认为编写 Map Reduce 会是一个挑战。 《权威指南》中对此进行了详尽的解释。如果您真的对 MapReduce 很感兴趣,我建议您阅读 Anand Rajaraman、Jure Leskovec 和 Jeffery D. Ullman 所著的 Mining Massive Datasets : Page on Stanford

【讨论】:

非常感谢回复。另一个快速的问题:这可能还为时过早,但是,BigData/Hadoop 开发人员在哪些特定领域获得了专业知识?是整个堆栈都需要技能,或者说是 HIVE 开发人员,还是只是 MapReduce 编码器? 掌握全栈真的很难。理想情况下,您应该精通日志收集框架(flume 或 kafka),然后处理(hive、pig、mapreduce)和一些 nosql 数据库(hbase、mongo 等)。堆栈中的每个项目都解决了一个特定的目的,一旦您对生态系统有高度的了解,您就可以将您的需求与这些项目联系起来 谢谢阿马尔。 Cloudera VM 是否完全免费用于自学目的和完整版(非试用版)?或者,Hortonworks 发行版会更好? 是的,这是完全免费的,没有任何限制。我没有在 Hortonworks 工作过,所以无法对此发表评论,但 cloudera 确实不错 太棒了!非常感谢,阿马尔。顺便说一句,上面的一些链接似乎被破坏了;你能修复它们吗?【参考方案2】:

我建议首先使用 Hadoop,它是许多其他系统的基础。查看主站点:http://hadoop.apache.org/ 并查看 Cloudera,它们提供了一个虚拟映像(称为 CDH),预装了所有内容,因此您无需处理安装问题即可开始行动:http://www.cloudera.com/content/cloudera/en/downloads/cdh/cdh-5-2-0.html

在那之后,我会研究 HDFS,只是为了更多地了解 Hadoop 是如何存储这些数据的,然后这将取决于您要解决的问题类型,每个特定系统处理特定的并且(通常) 不同的问题:

Hive / Cassandra:用于类似数据库的交互 猪:用于数据转换。 Spark:用于实时数据分析

查看此链接了解更多详情:http://www.cloudera.com/content/cloudera/en/training/library/apache-hadoop-ecosystem.html

我希望你觉得这很有用。

【讨论】:

感谢@Deleteman。它确实很有用。我安装了 CDH 5.2,但不幸的是它需要至少 8 GB 的 RAM。所以,我求助于 vanilla Hadoop 并手动安装。 好吧,如果您能够毫无问题地安装 vanilla hadoop,那么您就不需要 CDH(无论如何,恕我直言)。祝你修修补补! 还有一个困惑。经过大量的配置和调试,最后我用 MR 插件设置了我的 Eclipse (Luna) 并执行了典型的“字数统计”程序。它执行并给我正确的o/p。但是,我的疑问是 - 为什么我无法从 Hadoop UI 中看到 Node 和 MR 的工作原理?甚至日志在 Eclipse 控制台上也不可见。【参考方案3】:

大数据是一个广义的术语,指的是数据集如此庞大或复杂,以至于传统的数据处理应用程序无法胜任。挑战包括分析、捕获、数据管理、搜索、共享、存储、传输、可视化和信息隐私 - 来自***

Hadoop 是一个框架,它允许使用简单的编程模型跨计算机集群对大型数据集进行分布式处理。

Hadoop 中有四个主要模块。

1.Hadoop Common:支持其他 Hadoop 模块的常用实用程序。

2.Hadoop 分布式文件系统 (HDFS™):一种分布式文件系统,可提供对应用程序数据的高吞吐量访问。

3.Hadoop YARN:作业调度和集群资源管理的框架。

4.Hadoop MapReduce:基于 YARN 的大型数据集并行处理系统。

在继续之前,让我们注意我们有三种不同类型的数据。

结构化:结构化数据具有强架构,并且在读写操作期间将检查架构。例如Oracle、mysql Server 等 RDBMS 系统中的数据。

非结构化:数据没有任何结构,可以是任何形式 - Web 服务器日志、电子邮件、图像等。

半结构化:数据不是严格结构化的,但有一定的结构。例如XML 文件

根据要处理的数据类型,我们必须选择合适的技术。

更多项目,它们是 Hadoop 的一部分

HBase™:一个可扩展的分布式数据库,支持大型表的结构化数据存储。

Hive™:提供数据汇总和即席查询的数据仓库基础架构。

Pig™:用于并行计算的高级数据流语言和执行框架

Hive 与 PIG 比较可以在我的其他帖子中找到 question

HBASE 不会取代 Map Reduce。 HBase 是可扩展的分布式数据库,Map Reduce 是分布式数据处理的编程模型。 Map Reduce 可能会作用于处理中的 HBASE 中的数据。

您可以将 HIVE/HBASE 用于结构化/半结构化数据,并使用 Hadoop Map Reduce 进行处理

您可以使用SQOOP从传统RDBMS数据库Oracle、SQL Server等导入结构化数据,并使用Hadoop Map Reduce进行处理

您可以使用 FLUME 处理非结构化数据并使用 Hadoop Map Reduce 进行处理

看看:Hadoop Use Cases

Hive 应该用于对一段时间内收集的数据进行分析查询。例如计算趋势、汇总网站日志但不能用于实时查询。

HBase 适合大数据的实时查询。 Facebook 将其用于消息传递和实时分析。

PIG 可用于构建数据流、运行计划作业、处理大量数据、聚合/汇总数据并存储到关系数据库系统中。适合临时分析。

Hive 可用于临时数据分析,但它不能像 PIG 那样支持所有非结构化数据格式

ZooKeeper 是一个集中式服务,用于维护配置信息、命名、提供分布式同步和提供组服务,对于各种分布式系统非常有用。如果没有 ZooKeeper,HBase 将无法运行。

Apache Spark 是一种通用计算引擎,可提供大规模的快速数据分析。 Spark 建立在 HDFS 之上,但绕过了 MapReduce,而是使用自己的数据处理框架。 Apache Spark 的常见用例包括实时查询、事件流处理、迭代算法、复杂操作和机器学习。

Mahout™:一个可扩展的机器学习和数据挖掘库。

Tez™:一个通用的数据流编程框架,建立在 Hadoop YARN 之上,它提供了一个强大而灵活的引擎来执行任意 DAG 任务来处理数据以供批处理和交互式使用 -案例。 Tez 正在被 Hadoop 生态系统中的 Hive™、Pig™ 和其他框架以及其他商业软件(例如 ETL 工具)采用,以取代 Hadoop™ MapReduce 作为底层执行引擎

我只介绍了 Hadoop 生态系统的一些关键组件。如果您想了解生态系统的所有组成部分,请查看ecosystem table

如果上面的表格很难理解,请在this article查看缩小版的生态系统

但要了解所有这些系统,我希望您先从Apache 网站开始,然后再探索其他文章。

【讨论】:

【参考方案4】:

大数据本身并不是一项技术,而是一个概念。

你可以想到数据库,数据库本身不是一种技术,它是一个概念。 Oracle、DB2 等都是数据库技术。

回到大数据,这个概念用于处理难以使用传统数据库或技术进行分析的海量数据。人们认为 hadoop 是大数据的同义词,但我再说一遍,Hadoop 只不过是 Apache 为实现大数据概念而开发的一种技术。

Hadoop 有自己的名为 hdfs 的文件系统,它使用 mapreduce 来解决大数据问题。除了 Hadoop,还有类似于 sql 的 hive,但在内部它使用 map reduce。 Hbase 类似于 nosql 数据库。 Pig 是内部使用 mapreduce 的脚本语言。

有很多大数据的授权版本,如 MapR、Hortonworks、Cloudera 等。

所以开始学习 Hadoop - HDFS、Mapreduce、Yarn、Hive。

【讨论】:

【参考方案5】:

我为学习 Hadoop 所做的事情。

a) 从头开始​​安装 Hadoop。我的意思是下载 CentOs、Hadoop、JAVA 等,然后手动安装。

b) 了解 HDFS 的工作原理。

c) 了解 MapReduce 的工作原理。

d) 用 JAVA 写字数。

这将帮助您入门。

【讨论】:

以上是关于如何开始探索 BigData、Hadoop 及其生态系统组件?的主要内容,如果未能解决你的问题,请参考以下文章

[hadoop3.x系列]Hadoop常用文件存储格式及BigData File Viewer工具的使用

BigData/Hadoop 项目的典型流程?

认识大数据以及hadoop

探索 Hadoop 代码

bigdata hadoop java codefor wordcount 修改

Hadoop单机伪分布式分布式集群搭建