玩转大数据,就不得不提Hadoop,什么是Hadoop?

一、Hadoop定义

美高梅注册 1

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。Hadoop是专为离线和大规模数据分析而生的分布式系统架构。Hadoop=HDFS(文件系统,数据存储技术相关)+
Mapreduce,Hadoop的数据来源可以是任何形式,在处理半结构化和非结构化数据上与关系型数据库相比有更好的性能,具有更灵活的处理能力,在处理半结构化和非结构化数据上与关系型数据库相比有更好的性能,具有更灵活的处理能力,数据最终转化成key/value。

1)HDFS

美高梅注册 2

Hadoop分布式文件系统被设计成适合运行在通用硬件(commodity
hardware)上的分布式文件系统。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。内部机制是将一个文件分割成一个或多个块,这些块被存储在一组数据节点中。名字节点用来操作文件命名空间的文件或目录操作,如打开,关闭,重命名等等。它同时确定块与数据节点的映射。数据节点负责来自文件系统客户的读写请求。数据节点同时还要执行块的创建,删除,和来自名字节点的块复制指令。

2)MapReduce

MapReduce是一种编程模型,用于大规模数据集的并行运算。它允许用市场上普通的商用服务器构成一个包含数十、数百至数千个节点的分布和并行计算集群.

美高梅注册 3

MapReduce是一个并行计算与运行软件框架(Software
Framework)。它提供了一个庞大但设计精良的并行计算软件框架,能自动完成计算任务的并行化处理,自动划分计算数据和计算任务,在集群节点上自动分配和执行任务以及收集计算结果,将数据分布存储、数据通信、容错处理等并行计算涉及到的很多系统底层的复杂细节交由系统负责处理,大大减少了软件开发人员的负担。

MapReduce是一个并行程序设计模型与方法(Programming Model &
Methodology)。它借助于函数式程序设计语言Lisp的设计思想,提供了一种简便的并行程序设计方法,用Map和Reduce两个函数编程实现基本的并行计算任务,提供了抽象的操作和并行编程接口,以简单方便地完成大规模数据的编程和计算处理.

二、Hadoop生态系统

美高梅注册 4

1、Hive

美高梅注册 5

Hive(基于Hadoop的数据仓库)Hive定义了一种类似SQL的查询语言,将SQL转化为MapReduce任务在Hadoop上执行。通常用于离线分析。

2、HBase

美高梅注册 6

Hbase
HBase是一个针对结构化数据的可伸缩、高可靠、高性能、分布式和面向列的动态模式数据库。和传统关系数据库不同,HBase采用了BigTable的数据模型:增强的稀疏排序映射表(Key/Value),其中,键由行关键字、列关键字和时间戳构成。HBase提供了对大规模数据的随机、实时读写访问,同时,HBase中保存的数据可以使用MapReduce来处理,它将数据存储和并行计算完美地结合在一起。

3、Pig

美高梅注册 7

Pig(基于Hadoop的数据流系统)
由yahoo!开源,设计动机是提供一种基于MapReduce的ad-hoc(计算在query时发生)数据分析工具。定义了一种数据流语言—Pig
Latin,将脚本转换为MapReduce任务在Hadoop上执行。通常用于进行离线分析。

4、Zookeeper

美高梅注册 8

Zookeeper
解决分布式环境下的数据管理问题:统一命名,状态同步,集群管理,配置同步等。

5、Sqoop

Sqoop
Sqoop是SQL-to-Hadoop的缩写,主要用于传统数据库和Hadoop之前传输数据。数据的导入和导出本质上是Mapreduce程序,充分利用了MR的并行化和容错性。

6、Mahout

美高梅注册 9

Mahout
Mahout的主要目标是创建一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout现在已经包含了聚类、分类、推荐引擎和频繁集挖掘等广泛使用的数据挖掘方法。除了算法,Mahout还包含数据的输入/输出工具、与其他存储系统(如数据库、MongoDB
或Cassandra)集成等数据挖掘支持架构。

7、Flume

美高梅注册 10

美高梅注册,Flume
Cloudera开源的日志收集系统,具有分布式、高可靠、高容错、易于定制和扩展的特点。它将数据从产生、传输、处理并最终写入目标的路径的过程抽象为数据流,在具体的数据流中,数据源支持在Flume中定制数据发送方,从而支持收集各种不同协议数据。同时,Flume数据流提供对日志数据进行简单处理的能力,如过滤、格式转换等。此外,Flume还具有能够将日志写往各种数据目标的能力。总的来说,Flume是一个可扩展、适合复杂环境的海量日志收集系统。

8、Oozie

美高梅注册 11

Oozie作业流调度引擎
Oozie是一个基于工作流引擎的服务器,可以在上面运行Hadoop的Map
Reduce和Pig任务。它其实就是一个运行在Java Servlet容器中的Javas Web应用。

9、Hue

美高梅注册 12

Hadoop自己的监控管理工具。Hue是一个可快速开发和调试Hadoop生态系统各种应用的一个基于浏览器的图形化用户接口。

10、Nutch

美高梅注册 13

Nutch联网数据及Nutch搜索引擎应用。Nutch
是一个开源Java实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。包括全文搜索和Web爬虫。

11、Avro

美高梅注册 14

Avro数据序列化工具。Avro是一个数据序列化系统,设计用于支持大批量数据交换的应用。它的主要特点有:支持二进制序列化方式,可以便捷,快速地处理大量数据;动态语言友好,Avro提供的机制使动态语言可以方便地处理Avro数据。

12、Phoenix

美高梅注册 15

Phoenix
可以把Phoenix只看成一种代替HBase的语法的一个工具。虽然可以用java可以用jdbc来连接phoenix,然后操作HBase,但是在生产环境中,不可以用在OLTP中。在线事务处理的环境中,需要低延迟,而Phoenix在查询HBase时,虽然做了一些优化,但延迟还是不小。所以依然是用在OLAP中,再将结果返回存储下来。

13、Storm

美高梅注册 16

Storm
是Twitter开源的分布式实时大数据处理框架,最早开源于github,从0.9.1版本之后,归于Apache社区,被业界称为实时版Hadoop。随着越来越多的场景对Hadoop的MapReduce高延迟无法容忍,比如网站统计、推荐系统、预警系统、金融系统等等,大数据实时处理解决方案的应用日趋广泛,目前已是分布式技术领域最新爆发点,而Storm更是流计算技术中的佼佼者和主流。

14、Flink

美高梅注册 17

Flink是一个针对流数据和批数据的分布式处理引擎。其所要处理的主要场景就是流数据,批数据只是流数据的一个极限特例而已。再换句话说,Flink
会把所有任务当成流来处理,这也是其最大的特点。Flink
可以支持本地的快速迭代,以及一些环形的迭代任务。并且 Flink
可以定制化内存管理。在这点,如果要对比 Flink 和 Spark 的话,Flink
并没有将内存完全交给应用层。这也是为什么 Spark 相对于 Flink,更容易出现
OOM 的原因(out of memory)。

15、Spark

美高梅注册 18

Spark是一个新兴的大数据处理通用引擎,提供了分布式的内存抽象。Spark
正如其名,最大的特点就是快(Lightning-fast),可比 Hadoop MapReduce
的处理速度快 100 倍。此外,Spark 提供了简单易用的 API,几行代码就能实现
WordCount。本教程主要参考官网快速入门教程,介绍了 Spark 的安装,Spark
shell 、RDD、Spark SQL、Spark Streaming 等的基本使用。

16、YARN

美高梅注册 19

YARN(Yet Another Resource Negotiator,另一种资源协调者)是一种新的
Hadoop
资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。

17、Kafka

Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。
这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。
这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。
对于像Hadoop的一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消费。

相关文章