Hadoop

文章详细介绍了Hadoop及其核心组件HDFS、MapReduce,以及Spark、Flink、YARN/Mesos、Zookeeper等分布式计算和资源管理框架。此外,还涵盖了数据同步工具如Sqoop,数据仓库Hive/Impala,以及数据备份策略。文章突出了Spark的内存计算优势和MapReduce的磁盘处理特性。
摘要由CSDN通过智能技术生成

一,
Hadoop是目前应用最为广泛的分布式大数据处理框架,其具备可靠、高效、可伸缩等特点Hadoop的核心组件是HDFS、MapReduce。
1、HDFS(分布式文件系统)
HDFS是整个hadoop体系的基础 。
功能:负责数据的存储与管理。HDFS有着高容错性(fault-tolerant)的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。
2、MapReduce(分布式计算框架)
MapReduce是一种基于磁盘的分布式并行批处理计算模型。
功能:用于处理大数据量的计算。其中Map对应数据集上的独立元素进行指定的操作,生成键-值对形式中间,Reduce则对中间结果中相同的键的所有值进行规约,以得到最终结果。
3、Spark(分布式计算框架)
Spark是一种基于内存的分布式并行计算框架。
同样是处理大数据计算,不同于MapReduce的是——Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。
4、Flink(分布式计算框架)
Flink是一个基于内存的分布式并行处理框架。
功能类似于Spark,但在部分设计思想有较大出入。对 Flink 而言,其所要处理的主要场景就是流数据,批数据只是流数据的一个极限特例而已。
5、Yarn/Mesos(分布式资源管理器)
YARN是下一代MapReduce,即MRv2,是在第一代MapReduce基础上演变而来的。
功能:主要是为了解决原始Hadoop扩展性较差,不支持多计算框架而提出的
6、Zookeeper(分布式协作服务)
Hadoop的许多组件依赖于Zookeeper,它运行在计算机集群上面。
功能:协调服务/解决分布式环境下的数据管理问题(即用于管理Hadoop操作,如统一命名,状态同步,集群管理,配置同步等)。
 7、Sqoop(数据同步工具)
Sqoop是SQL-to-Hadoop的缩写。
功能:主要用于传统数据库和Hadoop之前传输数据。数据的导入和导出本质上是Mapreduce程序,充分利用了MR的并行化和容错性。
Sqoop利用数据库技术描述数据架构,用于在关系数据库、数据仓库和Hadoop之间转移数据。
8、Hive/Impala(基于Hadoop的数据仓库)
Hive定义了一种类似SQL的查询语言(HQL),将SQL转化为MapReduce任务在Hadoop上执行。
功能:通常用于离线分析。
HQL用于运行存储在Hadoop上的查询语句,
Hive功能:Hive让不熟悉MapReduce开发人员也能编写数据查询语句,然后这些语句被翻译为Hadoop上面的MapReduce任务。
Impala功能:用于处理存储在Hadoop集群中的大量数据的MPP(大规模并行处理)SQL查询引擎。 它是一个用C ++和Java编写的开源软件。 与Apache Hive不同,Impala不基于MapReduce算法。 它实现了一个基于守护进程的分布式架构,它负责在同一台机器上运行的查询执行的所有方面。因此执行效率高于Apache Hive。
9、HBase(分布式列存储数据库)
HBase是一个建立在HDFS之上,面向列的针对结构化数据的可伸缩、高可靠、高性能、分布式和面向列的动态模式数据库。
HBase采用了BigTable的数据模型:增强的稀疏排序映射表(Key/Value),其中,键由行关键字、列关键字和时间戳构成。
HBase提供了对大规模数据的随机、实时读写访问,同时,HBase中保存的数据可以使用MapReduce来处理,它将数据存储和并行计算完美地结合在一起。
10、Flume(日志收集工具)
Flume是一个可扩展、适合复杂环境的海量日志收集系统。
功能:将数据从产生、传输、处理并最终写入目标的路径的过程抽象为数据流,在具体的数据流中,数据源支持在Flume中定制数据发送方,从而支持收集各种不同协议数据。同时,Flume数据流提供对日志数据进行简单处理的能力,如过滤、格式转换等。此外,Flume还具有能够将日志写往各种数据目标(可定制)的能力。
Flume以Agent为最小的独立运行单位,一个Agent就是一个JVM。单个Agent由Source、Sink和Channel三大组件构成
11、Kafka(分布式消息队列)
Kafka是一种高吞吐量的分布式发布订阅消息系统。
功能:可以处理消费者规模的网站中的所有动作流数据。实现了主题、分区及其队列模式以及生产者、消费者架构模式。
生产者组件和消费者组件均可以连接到KafKa集群,而KafKa被认为是组件通信之间所使用的一种消息中间件。KafKa内部氛围很多Topic(一种高度抽象的数据结构),每个Topic又被分为很多分区(partition),每个分区中的数据按队列模式进行编号存储。被编号的日志数据称为此日志数据块在队列中的偏移量(offest),偏移量越大的数据块越新,即越靠近当前时间。生产环境中的最佳实践架构是Flume+KafKa+Spark Streaming。
 12、Oozie(工作流调度器)
Oozie是一个可扩展的工作体系,集成于Hadoop的堆栈,用于协调多个MapReduce作业的执行。
功能:能够管理一个复杂的系统,基于外部事件来执行,外部事件包括数据的定时和数据的出现。
Oozie工作流是放置在控制依赖DAG(有向无环图 Direct Acyclic Graph)中的一组动作(例如,Hadoop的Map/Reduce作业、Pig作业等),其中指定了动作执行的顺序。
Hbase(数据仓库)
Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩、 实时读写的分布式数据库 
功能:利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理 HBase中的海量数据,利用Zookeeper作为其分布式协同服务,主要用来存储非结构化和半结构化的松散数据(列存NoSQL数据库)
Pig
Pig是一种数据流语言和运行环境,常用于检索和分析数据量较大的数据集。Pig包括两部分:一是用于描述数据流的语言,称为Pig Latin;二是用于运行Pig Latin程序的执行环境。
功能:作为数据分析平台,侧重数据查询和分析,而不是对数据进行修改和删除等。需要把真正的查询转换成相应的MapReduce作业

二,

Hadoop MapReduce 是 Hadoop 平台根据 MapReduce 原理实现的计算框架

一个 Hadoop MapReduce 作业(job)的基本工作流程就是,首先把存储在 HDFS 中的输入数据集切分为若干个独立的数据块,由多个 Map 任务(Task)以完全并行的方式处理这些数据块。MapReduce 框架会对 Map 任务的输出先进行排序,然后把结果作为输入传送给 Reduce 任务。
一般来讲,每个 Map 和 Reduce 任务都会运行在集群的不同结点上,从而发挥集群的整体能力。作业的输入和输出通常都存储在文件系统中。MapReduce 框架负责整个任务的调度和监控,以及重新执行失败的任务。Hadoop MapReduce由 Client(客户端)、JobTracker(作业跟踪器)、TaskTracker(任务跟踪器)、Task(任务)组成。

三,Spark特点

1,优点:

1)Spark把中间数据放到内存中,迭代运算效率高。

Spark支持DAG图的分布式并行计算的编程框架,减少了迭代过程中数据的落地,提高了处理效率。

2)Spark 容错性高

Spark 引进了弹性分布式数据集 RDD (Resilient DistributedDataset) 的抽象,它是分布在一组节点中的只读对象集合,这些集合是弹性的,如果数据集一部分丢失,则可以根据“血统”(即允许基于数据衍生过程)对它们进行重建。另外在RDD 计算时可以通过 CheckPoint 来实现容错。

3)Spark更加通用

Spark提供的数据集操作类型分为:Transformations和Actions两大类。Transformations包括Map、Filter、FlatMap、Sample、GroupByKey、ReduceByKey、Union、Join、Cogroup、MapValues、Sort等多种操作类型,同时还提供Count, Actions包括Collect、Reduce、Lookup和Save等操作。

2,缺点:

1)内存问题

JVM的内存overhead太大,1G的数据通常需要消耗5G的内存。

2)性能问题

由于大量数据抄被缓存在RAM中,Java回收垃圾缓慢的情况严重,导致Spark性能不稳定。

3,对比

1、Spark处理数据是基于内存的,而MapReduce是基于磁盘处理数据的

MapReduce是将中间结果保存到磁盘中,减少了内存占用,牺牲了计算性能。

Spark是将计算的中间结果保存到内存中,可以反复利用,提高了处理数据的性能。

2、Spark比MapReduce快

有一个误区,Spark是基于内存的计算,所以快,这不是主要原因,要对数据做计算,必然得加载到内存,Hadoop也是如此,只不过Spark支持将需要反复用到的数据Cache到内存中,减少数据加载耗时,所以Spark跑机器学习算法比较在行(需要对数据进行反复迭代)。

3、Spark是粗粒度资源申请,而MapReduce是细粒度资源申请

粗粒度申请资源指的是在提交资源时,Spark会提前向资源管理器(YARN,Mess)将资源申请完毕,如果申请不到资源就等待,如果申请到就运行task任务,而不需要task再去申请资源。

MapReduce是细粒度申请资源,提交任务,task自己申请资源自己运行程序,自己释放资源,虽然资源能够充分利用,但是这样任务运行的很慢。

4、MapReduce的Task的执行单元是进程,Spark的Task执行单元是线程

进程的创建销毁的开销较大,线程开销较小。

四,Linux

五,备份

热备

 数据库 正常运行下进行备份。备份期间,数据库读写均可正常进行。

温备

数据库可用性弱于热备,备份期间,数据库只能进行读操作,不能进行写操作。

冷备

在备份期间,应用的读写操作不可进行。备份出的数据可靠性最高。

如果数据库的应用不接受服务停止的情况下,均采用热备方案,但是数据无法保证绝对的准确性。如果可以停止应用读写服务,而要求备份点数据的准确性的情况下,优先使用冷备方案。例如常规的日常备份尽量采用热备方案,而在系统迁移的情况下,为保证数据时点的准确性,倾向使用冷备方案。

六,数据类型

1.结构化数据:

结构化数据是以表格、行和列的形式组织的数据,通常存储在关系型数据库中。这些数据具有明确定义的模式和结构,例如,数据库中的表格、电子表格中的数据或日志文件中的数据。

2.半结构化数据:

半结构化数据不像结构化数据那样具有明确定义的模式,但它包含了标记或标签,使得数据可以被更容易地解释和处理。例如,XML、JSON和HTML文件通常属于半结构化数据。

3.非结构化数据:

非结构化数据是没有明确结构或组织的数据,通常以文本、图像、音频和视频的形式存在。这种类型的数据需要更复杂的处理和分析技术,以提取有用的信息。社交媒体帖子、电子邮件、照片和视频文件是非结构化数据的例子。

4.时序数据:

时序数据是按照时间顺序记录的数据,通常包括时间戳。这种类型的数据常见于传感器数据、日志数据、股票市场数据和气象数据等领域。

5.空间数据:

空间数据包括与地理位置相关的信息,通常使用地理坐标系统(如经度和纬度)来表示。这种类型的数据在地理信息系统(GIS)应用中广泛使用,用于地图制图、位置分析和导航。

6.图数据:

图数据以节点和边的形式组织,用于表示实体之间的关系。社交网络、知识图谱和互联网上的网页链接都可以表示为图数据。

7.文本数据:

文本数据包括各种文本文档,如文章、评论、新闻文章和书籍。文本数据分析可以用于自然语言处理(NLP)任务,如情感分析、文本分类和信息提取。

8.多媒体数据:

多媒体数据包括图像、音频和视频等形式的媒体内容。处理和分析多媒体数据通常需要特殊的技术,如图像处理和音频处理。

  • 36
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值