楼主: chimerica
5285 3

[数据挖掘工具] 什么是Apache Hadoop [推广有奖]

  • 0关注
  • 1粉丝

硕士生

36%

还不是VIP/贵宾

-

威望
0
论坛币
10 个
通用积分
0
学术水平
2 点
热心指数
4 点
信用等级
3 点
经验
1325 点
帖子
180
精华
0
在线时间
51 小时
注册时间
2010-7-4
最后登录
2015-12-15

chimerica 发表于 2012-11-19 11:19:49 |显示全部楼层
对Hadoop生态系统组件与功能的看待。

Apache Hadoop已经是大数据行业增长背后的驱动力。你会经常听到它和Hive 和Pig这样的相关技术一起被提及。但它是什么做的,为什么你需要所有这些奇怪名字的朋友 ,如如Oozie, Zookeeper 和 Flume?

Hadoop能便宜地处理无论是什么样结构的大量数据的功能。这里的大量是指10 – 100GB字节及以上。这和原来发生的事有什么不同呢?

现有的企业数据仓库和关系型数据库擅长于处理结构化数据,可以储存大量的数据, 尽管是有代价的: 这要求的各种数据受结构的限制以便可以进行处理, 而且它的惯性影响让数据仓库不能适应大规模异构数据的灵活探究。数据仓库需要的工作量经常意味着企业中宝贵的数据源从来不被考虑到。这就是Hadoop带来很大差异的地方。

本文审查了Hadoop组件和生态系统并对其功能一一做了解释。
Hadoop的核心: MapReduce

谷歌为响应创建网络搜索引擎索引的问题而创造了MapReduce框架,该框架是当今绝大多数大数据处理背后的强大动力。除了在Hadoop里,你会发现MPP 和NoSQL数据库,如Vertica或MongoDB里面也有MapReduce。

MapReduce革新的重要性在于对超出一个数据集的查询,分割它,并且在多个节点上并行运行的能力。分布计算解决了在一个机器上不适合处理过于庞大的数据的问题。将这一技术与Linux服务器结合起来,你就拥有了大规模计算机阵列具有成本效益的替代选择。

在其核心,Hadoop是开源的MapReduce解决方案。 由雅虎赞助,它始于2006年,据它的创造者Doug Cutting称,它在2008年初达到“网络规模”的能力。

随着Hadoop项目的成熟,它收购了更多的组件以提高其实用性和功能性。 “Hadoop”的名字用来代表整个生态系统。Linux出现时有同样的情况: 该名字严格指向Linux内核,但是在它被广为接受为表示一个完整的操作系统。

Hadoop的低层:HDFS和 MapReduce

以上,我们讨论了MapReduce在多个服务器上分布计算的能力。为实现这一目的,每一个服务器都必须访问数据。这就是HDFS (Hadoop分布式文件系统)发挥作用的地方。

HDFS和MapReduce是稳健的。在一个Hadoop集群内的服务器可以失败,但并不会终止计算过程。HDFS确保数据在整个集群之间被带有冗余地复制。在一个计算完成后, 一个节点会把其结果写回HDFS。

HDFS存储的数据不受限制。数据可以是非结构化和缺乏结构的。相比之下, 关系型数据库要求数据是结构化的而且模式在数据存储之前就被定义了。有了HDFS, 让数据有意义成了开发商代码的职责。

在MapReduce层次上的Hadoop编程使用Java APIs一起工作,并手动加载数据文件到HDFS中。

提高可编程性: Pig 和 Hive

直接用Java APIs的工作会冗长而且容易出错。它也限制了Java程序员对Hadoop的使用。Hadoop提供了两种解决方案使Hadoop的编程更容易。

1.Pig是一种编程语言,它简化了使用Hadoop中的一些共同的任务: 加载数据, 在数据上表达转换和存储最后的结果。Pig的内置操作能够理解半结构化的数据, 如日志文件, 而其语言是可扩展使用Java添加对自定义数据类型和转换的支持。

2.Hive使得Hadoop可以作为数据仓库运行。它在HDFS中的数据上叠加了结构,然后允许使用一种熟悉的像SQL的语法对数据查询。正如Pig一样,Hive的核心能力是可扩展的。

在Hive 和 Pig之间做选择可能会令人混淆。Hive更适合于数据仓库的任务,主要为静态结构和频繁分析的需要。Hive与SQL的亲密关系使它成为Hadoop和其他商业智能(BI)工具之间理想的整合点。

Pig让开发人员在勘探大数据集时有更多的灵活性,它允许开发简单的脚本转换数据流合并到较大的应用程序中。Pig在Hadoop层上比Hive更薄, 其主要优点是相比直接使用Hadoop的Java APIs大幅度削减了所需代码的数量。就这一点而言,Pig的目标受众仍以软件开发人员为主。

提高数据的访问:HBase, Sqoop 和 Flume

在核心上,Hadoop是一个种以批处理为目的的系统。数据被载入HDFS,处理之后再收回。这有点象复古的计算,而且交互和随机存取数据是经常必需的。

进入HBase,是运行于HDFS之上的纵列式数据库。模仿 了谷歌的BigTable,该项目的目标是为快速访问托管数以亿行的数据。MapReduce可以使用HBase作为既是数据源又是其计算的终点,而且Hive和 Pig可以与HBase结合使用。

为了保证对数据的随机存取,HBase也强加了一些限制: Hive在HBase上的性能比简单使用HDFS的要慢4 - 5倍, 而且在HBase中能存储的最大数据量大约是1个PB字节,相比之下HDFS的限制在30多个PB。

HBase并不适用于即时分析而更适合于大数据集作为更大应用程序一部分的整合。用例包括日志、计数和存储时序数据。

数据的进出

Sqoop 和 Flume改进了与其余的数据世界的互操作性。Sqoop是一种用来将关系型数据库的数据输入到Hadoop中的工具,要么直接输入HDFS要么直接输入Hive。Flume是为了直接把日志数据流输入到HDFS中。

Hive的SQL友好性能意味着它可以用来作为与更广泛的能够通过JBDC或ODBC数据库驱动器进行连接的数据库工具的整合点。

协调和工作流:Zookeeper 和 Oozie

随着越来越多的服务成员做为Hadoop集群的一个组成部分,就需要有协调和对服务的命名。作为计算节点可以来来去去, 集群的成员需要相互间的同步,知道哪里可以访问服务, 并且知道他们应该如何配置。这就是Zookeeper的目的。

利用Hadoop的生产系统可以经常包含复杂的转换管道,每一个管道相对于彼此而独立。例如, 新一批数据的到来会引起一场输入,它必然会引发在有依赖关系的数据集中的重新计算。Oozie组件提供了管理工作流程及依赖关系的功能,消除开发者为定制的解决方案编码的需要。

管理和部署:Ambari 和 Whirr

被IBM和微软这样的分销商在Hadoop中结合的更多的常用功能之一是监测和管理。尽管处于早期阶段, Ambari旨在将这些特性添加到Hadoop项目的核心中。Ambari打算帮助系统管理员部署和配置Hadoop,升级集群和监控服务。通过一个API,它可能与其他系统管理工具整合。

尽管不是Hadoop完全的一部分, Whirr是一个高度互补的组件。它提供了一种运行服务的方式,包括Hadoop,在云平台上。Whirr是中性云而且目前支持Amazon EC2 和Rackspace服务。

机器学习:Mahout

每个企业的数据都是多样的和特别针对他们需求的。然而, 在对那些数据的分析种类上却没多少多样性。Mahout项目是实施普通分析计算的一个Hadoop库。用例包括用户协同过滤、用户建议、聚类和分类。

使用Hadoop通常情况下,你会在分布的形式上使用Hadoop。就像它之前的Linux,供应商整合和测试Apache Hadoop生态系统的组件,并增加了他们自己的管理特性和工具。

虽然不是分布本身,一个安装了Hadoop 的MapReduce的托管的云也适用于Amazon的Elastic MapReduce服务。



关键词:apache Hadoop APA Had PAC

专利论坛http://www.zhuanliluntan.com 信息不等于知识,知识不等于智慧,智慧不等于先见。
stata SPSS
xiaojyan 发表于 2013-11-8 22:31:11 |显示全部楼层
感觉讲得非常清楚
回复

使用道具 举报

chinankzy 发表于 2014-9-18 12:52:45 |显示全部楼层
我觉得hadoop非常重要,但是本人文科生看的确实吃力
回复

使用道具 举报

daazx 在职认证  发表于 2014-9-22 16:28:26 |显示全部楼层
确实非常清楚,如果去Hadoop版给大家讲讲,我就会给你加币了。。。https://bbs.pinggu.org/forum-231-1.html
哈哈
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 我要注册

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2019-9-23 01:07