零基础大数据入门3--大数据生态系统及其各组件简介

本篇引入了大数据hadoop生态系统的概念,并对其中各组件的功能优势和出现的背景做了一个简单介绍。关于部分组件的详细介绍将会在后期博客中给出,不正确之处欢迎各位看官指正。

什么是大数据生态系统

What does Hadoop Ecosystem mean?

Definition 1:

The Hadoop ecosystem refers to the various components of the Apache Hadoop software library, as well as to the accessories and tools provided by the Apache Software Foundation for these types of software projects, and to the ways that they work together.

Definition 2:

Hadoop EcosyHstem is neither a programming language nor a service, it is a platform or framework which is extremely popular for handling and analyzing large sets of data.You can consider it as a suite which encompasses a number of services (ingesting, storing, analyzing and maintaining) inside it.

大数据生态系统习惯被称为Hadoop生态系统,这其中主要包含两个原因:

  1. 由多个具备各自特点或功能的组件共同构成,并能够相互协作完成大数据处理任务

  2. hadoop组件是其中最早出现也是最基础的组件

Hadoop 生态系统一览图

hadoop生态圈中的组件的角色如图所示(关于各组件的详细介绍会在下一节给出),特别有趣的是,hadoop生态圈的组件大多具有动物或者昆虫类的图标,而作为管理者zookeeper即表示动物园管理员,即管理动物园生态圈。

零基础大数据入门3--大数据生态系统及其各组件简介_第1张图片
图1-1.   Hadoop 生态系统一览图

Hadoop: 分布式存储HDFS、分布式计算MAPREDUCE、资源管理和调度YARN

Hadoop:当人们思考大数据的时候,他们会立即想到 Hadoop。Hadoop 是一个开源软件架构(logo 是一头可爱的大象),它由 Hadoop 分布式文件系统(HDFS)构成,它允许使用分布式硬件对大数据进行存储、抽象和分析。如果你真的想让某人对这个东西印象深刻,你可以跟他说 YARN(Yet Another Resource Scheduler),顾名思义,就是另一个资源调度器。提出 Hadoop 的 Apache 基金会,还负责 Pig、Hive 以及 Spark(这都是一些软件的名字)等项目。

hadoop 1.x版本包含两大部分:hdfs和mapreduce,其中hdfs(Hadoop distributed file system)负责数据高可靠性的分布式的存储;mapreduce作为一种计算框架负责对海量数据进行快速的分布式的计算。hadoop 2.x版本则在1.x的版本上添加了第三个部分YARN (Yet Another Resource Negotiator) ,YARN作为一种通用的资源管理系统,可为上层应用提供统一的资源管理和调度,控制整个集群并管理应用程序向基础计算资源的分配,通俗地讲像是“管家”,其不仅限于MapReduce一种框架,也可以为其他框架使用,如Tez、Spark、Storm等(关于spark设置yarn模式将会在今后的博客中详细介绍)。此外2.x版本对hdfs和mapreduce的功能进行了扩展,对其性能也进行了优化。

零基础大数据入门3--大数据生态系统及其各组件简介_第2张图片
图1-2.   Hadoop 1.x和2.x比较

Hive: 基于hdfs中的数据查询

基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。

在hive出现之前,要查询hdfs中的数据需要编写mapreduce程序,然后mapreduce的程序语法复杂难懂、不易上手,而DBA(database administor)在数据库中查询的时候只需要编写简单易懂的sql查询语句(简单的类 SQL 查询语言,称为 HQL)。为了解决这一问题,facebook开发了hive,其能够将简单常用的sql语句转换成复杂难懂的mapreduce任务,显著降低使用者的学习成本。Hive由Facebook开源,最初用于解决海量结构化的日志数据统计问题。

HBASE:

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

Spark:

spark是一个基于内存计算的大数据框架,

  ● Spark Core:包含Spark的基本功能;尤其是定义RDD的API、操作以及这两者上的动作。

  ● Spark SQL:提供通过Apache Hive的SQL变体Hive查询语言(HiveQL)与Spark进行交互的API。

  ● Spark Streaming:对实时数据流进行处理和控制。

  ● MLlib:一个常用机器学习算法库,算法被实现为对RDD的Spark操作。这个库包含可扩展的学习算法,比如分类、回归等需要对大量数据集进行迭代的操作。

  ● GraphX:控制图、并行图操作和计算的一组算法和工具的集合。

spark本身并不具备分布式文件系统,因此spark可以依赖于HDFS,也可以基于其他的数据

相比于Mapreduce的离线的批量处理batch processing,spark的速度更快,更适用于实时的迭代计算,且spark提供的功能更加丰富

零基础大数据入门3--大数据生态系统及其各组件简介_第3张图片

zookeeper:

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

HUE:

Hue全称Hadoop User Experience,是一个开源的Apache Hadoop UI系统,最早是由Cloudera Desktop演化而来,由Cloudera贡献给开源社区,它是基于Python Web框架Django实现的。通过使用Hue我们可以在浏览器端的Web控制台上与Hadoop集群进行交互来分析处理数据,例如操作HDFS上的数据,运行MapReduce Job等等。在hue上配置notebook(实现多语言自动匹配),可以进行hive和spark查询等操作。

Apache Zeppelin:

Apache Zeppelin是一个提供了web版的类似ipython的notebook,用于做数据分析和可视化。背后可以接入不同的数据处理引擎,包括spark, hive, tajo等,原生支持scala, java, shell, markdown等。

Storm:

分布式实时计算系统。Storm为分布式实时计算提供了一组通用原语,可被用于“流处理”之中,实时处理消息并更新数据库。

Flume:

Flume(日志收集工具)是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力,在具体的数据流中,数据源支持在flume中定制数据发送方,从而支持收集各种不同协议数据。

pig:

数据流语言和运行环境,用以探究非常庞大的数据集。pig运行在MapReduce和HDFS之上

定义了一种数据流语言-pig latin,将脚本转换为mapreduce任务在hadoop上执行。

kafka:

Kafka是一种高吞吐量的分布式发布订阅消息系统。Kafka是一个分布式的,可划分的,冗余备份的持久性的日志服务。它主要用于处理活跃的流式数据。降低系统组网复杂度。降低编程复杂度,各个子系统不在是相互协商接口,各个子系统类似插口插在插座上,Kafka承担高速数据总线的作用。具有高吞吐率,支持Kafka Server间的消息分区,及分布式消费,同时保证每个Partition内的消息顺序传输,同时支持离线数据处理和实时数据处理。

redis:

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。Redis 本质上是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。

Sqoop:

sql-to-hadoop的缩写,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql…)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。对于某些NoSQL数据库它也提供了连接器。Sqoop,类似于其他ETL工具\

  Oozie:

该服务用于运行和调度Hadoop作业,可以理解为一个工作流调度系统

mahout(数据挖掘算法库):

mahout的主要目标是创建一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建只能应用程序。mahout现在已经包含了聚类,分类,推荐引擎(协同过滤)和频繁集挖掘等广泛使用的数据挖掘方法。

资源管理器的简单介绍(YARN和mesos):

随着互联网的高速发展,基于数据 密集型应用 的计算框架不断出现,从支持离线处理的mapreduce,到支持在线处理的storm,从迭代式计算框架到 流式处理框架s4,...,在大部分互联网公司中,这几种框架可能都会采用,比如对于搜索引擎公司,可能的技术方法如下:网页建索引采用mapreduce框架,自然语言处理/数据挖掘采用spark,对性能要求到的数据挖掘算法用mpi等。公司一般将所有的这些框架部署到一个公共的集群中,让它们共享集群的资源,并对资源进行统一使用,这样便诞生了资源统一管理与调度平台,典型的代表是mesos和yarn。

cloudrea impala:

  一个开源的查询引擎。与hive相同的元数据,SQL语法,ODBC驱动程序和用户接口,可以直接在HDFS上提供快速,交互式SQL查询。impala不再使用缓慢的hive+mapreduce批处理,而是通过与商用并行关系数据库中类似的分布式查询引擎。可以直接从HDFS或者Hbase中用select,join和统计函数查询数据,从而大大降低延迟。


关于大数据学习有很多开源资源,更多资源参考将会在下一期的分享中给出,欢迎阅读!

你可能感兴趣的:(零基础大数据入门3--大数据生态系统及其各组件简介)