1.大数据概述

一,列举Hadoop生态的各个组件及其功能、以及各个组件之间的相互关系,以图呈现并加以文字描述

1.大数据概述

 

 

 

1 、HDFS
Hadoop分布式文件系统(Hadoop Distributed File System,HDFS)是Hadoop项目的两大核心之一,是针对谷歌文件系统(Google File SystemGFS)的开源实现。HDFS具有处理超大数据、流式处理、可以运行在廉价商用服务器上等优点。HDFS在设计之初就是要运行在廉价的大型服务器集群上,因此在设计上就把硬件故障作为一种常态来考虑,可以保证在部分硬件发生故障的情况下仍然能够保证文件系统的整体可用性和可靠性。HDFS 放宽了一部分POSIX(Portable Operating System Interface)约束,从而实现以流的形式访问文件系统中的数据。HDFS 在访问应用程序数据时,可以具有很高的吞吐率,因此对于超大数据集的应用程序而言,选择 HDFS作为底层数据存储是较好的选择。
2 、HBase
HBase 是一个提供高可靠性、高性能、可伸缩、实时读写、分布式的列式数据库,一般采用 HDFS 作为其底层数据存储。HBase 是针对谷歌BigTable的开源实现,二者都采用了相同的数据模型,具有强大的非结构化数据存储能力。HBase与传统关系数据库的一个重要区别是,前者采用基于列的存储,而后者采用基于行的存储。HBase具有良好的横向扩展能力,可以通过不断增加廉价的商用服务器来增加存储能力。
3 、MapReduce
Hadoop MapReduce 是针对谷歌 MapReduce 的开源实现。MapReduce 是一种编程模型,用于大规模数据集(大于1TB)的并行运算,它将复杂的、运行于大规模集群上的并行计算过程高度地抽象到了两个函数--Map和Reduce 上,并且允许用户在不了解分布式系统底层细节的情况下开发并行应用程序,并将其运行于廉价计算机集群上,完成海量数据的处理。通俗地说,MapReduce的核心想想就是“分面治之”它把输人的数据集切分为若于独立的数据块,分发一个主节点管理下的各个分节点来共同并行完成最后,通过整合各个节点的中间结果得到最多结果。

4、 Hive Co

Hive 是一个基于Hadoop的数据仓库工具,可以用于对Hadoop文件中的数据集进行数据整理、特殊查询和分析存储。Hive的学习门槛较低,因为它提供了类似于关系数据库 SQL 语言的 查询语言——Hive QL,可以通过 Hive QL 语句快速实现简单的 MapReduce 统计,Hive 自身可将 Hive QL 语句转换为 MapReduce 任务进行运行,而不必开发专门的 MapReduce 应用,因而十分适合数据仓库的统计分析。

5 、Pig
Pig是一种数据流语言和运行环境,适合于使用Hadoop和MapReduce 平台来查询大型结构化数据集。虽然MapReduce应用程序的编写不是十分复杂,但毕竟也是需要一定的开发经验的。Pig的出现大大简化了Hadoop常见的工作任务,它在MapReduce的基础上创建了更简单的过程语言抽象,为Hadoop应用程序提供了一种更加接近结构化查询语言(SQL)的接口。Pig是一个相对简单的语言。它可以执行语句。因此当我们需要从大型数据集中搜索满尼某个给定搜索条件的记录时,采用Pig要比MapReduce具有明显的优势,前者只需要编写-个简单的脚本在集群中自动并行处理与分发,而后者则需要编写一个单独的MapReduce应用程序。
6 、Mahout
Mahout是Apache软件基金会旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout包含许多实现,包括果类、分类、推荐过滤、颜繁子项挖掘。此外,通过使用Apache Hadoop 库,Mahout 可以有效地扩展到云中。
7 、Zookeeper
Zookeeper 是针对谷歌Chubby的一个开源实现,是高效和可靠的协同工作系统,提供分布式锁之类的基本服务(如统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等)用于构建分布式应用,减轻分布式应用程序所承担的协调任务。Zookeeper使用Java 编写,很容易编程接入.它使用了一个和文件树结构相似的数据模型,可以使用Java或者C来进行编程接入
8 、Flume
Flume 是Cloudera 提供的一个高可用的、高可靠的、分布式的海量日志采集、聚合和传输的系统。Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理并写到各种数据接受方的能力。
9 、Sqoop
Sqoop 是 SQL-to-Hadoop 的缩写,主要用来在Hadoop和关系数据库之间交换数据,可以改进数据的互操作性。通过Sqoop可以方便地将数据从MySQL、Oracle、PostgreSQL 等关系数据库中得到最终 导入Hadoop(可以导入 HDFS、HBase 或Hive),或者将数据从 Hadoop 导出到关系数据库,使得传统关系数据库和 Hadoop之间的数据迁移变得非常方便。Sqoop 主要通过 JDBC(Java DataBase Connectivity)和关系数据库进行交互理论上,支持JDBC 的关系数据库都可以使 Sqoop 和 Hadoop进行数据交互。Sqoop 是专门为大数据集设计的,支持增量更新,可以将新记录添加到最近一次导出的数据源上,或者指定上次修改的时间戳。

10、Ambari

Apache Ambari是一种基于Web的工具,支持Apache Hadoop集群的安装、部署、配置和管理。Ambari目前已支持大多数Hadoop组件,包括HDFSMapReduce、Hive、Pig、HBase、Zookeeper Sqoop等。

 

 

 

 

二,对比Hadoop与Spark的优缺点。

 

两者各方面比

1.大数据概述

 

 

Hadoop

优点:1、Hadoop具有按位存储和处理数据能力的高可靠性。

           2、Hadoop通过可用的计算机集群分配数据,完成存储和计算任务,这些集群可以方便地扩展到数以千计的节点中,具有高扩展性。

           3、Hadoop能够在节点之间进行动态地移动数据,并保证各个节点的动态平衡,处理速度非常快,具有高效性。

           4、Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配,具有高容错性。

缺点:1、Hadoop不适用于低延迟数据访问。

           2、Hadoop不能高效存储大量小文件。

           3、Hadoop不支持多用户写入并任意修改文件。

Spark

优点:1、快速处理能力,基于内存;易于使用,支持多种语言。

           2、支持SQL查询,支持SQL和HQL,支持流式计算,Spark Streaming。

           3、可用性高,既支持Standalone独立部署(Master and Slaver模式),也  支持基于Yarn的混合模式。

           4、丰富的数据源支持,Spark可以访问操作系统自身和HDFS,也可以访问Hive,HBase等

缺点:1、不稳定,集群偶尔会挂掉。因为是基于内存运算的,因为确实与磁盘的I/O,如果数据量超出内存会出现挂掉的现象。

           2、数据的partition,会导致集群中的各台机器上计算任务分配不均匀。

           3、自身任务调度功能不够好。

 

三,.如何实现Hadoop与Spark的统一部署?

 

一方面,由于Hadoop 生态系统中的一些组件所实现的功能,目前还是无法由Spark 取代的,比如,Storm 可以实现毫秒级响应的流计算,但是 Spark 则无法做到毫秒级响应;另一方面,企业中已经有许多现有的应用,都是基于现有的Hadoop组件开发的,完全转移到 Spark上需要一定的成本。因此,在许多企业实际应用中,Hadoop和Spark 的统一部署是一种比较现实合理的选择
由于Hadoop MapReduce、HBaseStorm和Spark等都可以运行在资源管理框架YARN之上,因此,可以在 YARN之上进行统一部署(见图9-16)。这些不同的计算框架统一运行在 YARN中,可以带来如下好处。
① 计算资源按需伸缩。
② 不用负载应用混搭,集群利用率高。 
③ 共享底层存储,避免数据跨集群迁移。

 

1.大数据概述

 

上一篇:日复一日,c复一c


下一篇:linux 删除乱码文件