何为Hadoop生态圈

Hadoop 生态圈

        Hadoop是目前应用最为广泛的分布式大数据处理框架,其具备可靠、高效、可伸缩等特点。
Hadoop的核心组件是HDFS、MapReduce。随着处理任务不同,各种组件相继出现,丰富Hadoop生态圈,目前生态圈结构大致如图所示:

根据服务对象和层次分为:数据来源层、数据传输层、数据存储层、资源管理层、数据计算层、任务调度层、业务模型层。

1.HDFS(分布式文件系统)

HDFS是整个hadoop体系的基础,负责数据的存储与管理。HDFS有着高容错性(fault-tolerant)的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。

1.1特点介绍

1 高容错和高可用性,硬件错误是常态而不是异常

2流式数据访问

3弹性存储,支持大规模数据集

HDFS支持大文件存储,典型的文件在GB甚至TB级别,可以支持数以千万计的大规模数据集。根据业务的需要灵活的增加或者缩减存储节点。弹性存储的最大挑战是减少在修改存储节点时的数据震荡问题。

4简单一致性模型

HDFS文件实行一次性写、多次读的访问模式,设计为文件一经创建、写入和关闭后就不需要再更改了,这种设计和假定简化了数据一致性的问题,提高吞吐量成为了可能,但是现在可以通过设置一些参数进行追加。

5移动计算而非移动数据

由于HDFS支持大文件的存储,对于大文件来说,移动计算比移动数据的代价要低。这样可以减少网络的拥塞和提高系统的吞吐量。

6协议和接口多样性(Http协议、https协议、ftp协议、file://)

为上层应用提供了多种接口,HttpRestful接口、NFS接口、Ftp接口等等POSIX标准协议。

7多样的数据管理功能
对于数据压缩、数据加密、数据缓存和存储配置等提供了多样的管理功能。

2.MapReduce(分布式计算框架)

MapReduce是一种基于磁盘的分布式并行批处理计算模型,用于处理大数据量的计算。其中Map对应数据集上的独立元素进行指定的操作,生成键-值对形式中间,Reduce则对中间结果中相同的键的所有值进行规约,以得到最终结果。

2.1MapReduce编程模型简述

这里以词频统计为例进行说明,MapReduce 处理的流程如下:

在这里插入图片描述

MapReduce 编程模型中 splitting 和 shuffing 操作都是由框架实现的,需要我们自己编程实现的只有 mapping 和 reducing,这也就是 MapReduce 这个称呼的来源。

2.2MapReduce优缺点

2.2.1优点

MapReduce 易于编程,良好的扩展性,高容错性,适合PB级以上海量数据的离线处理。

2.2.2 缺点

不擅长实时计算,不擅长流式计算,不擅长DAG(有向无环图)计算。

3.Spark(分布式计算框架)

3.1 Spark 框架概述

Spark 是加州大学伯克利分校AMP实验室(Algorithms Machines and People Lab)开发的通用大数据框架。Spark生态圈也称为BDAS,是伯克利AMP实验室所开发的,力图在算法(Algorithms)、机器(Machines)和人(Person)三种之间通过大规模集成来展现大数据应用的一个开源平台。AMP实验室运用大数据、云计算等各种资源以及各种灵活的技术方案,对海量数据进行分析并转化为有用的信息,让人们更好地了解世界。

Spark的发展历史,经历过几大重要阶段,如下图所示:
在这里插入图片描述

3.2Spark 四大特点

Spark 使用Scala语言进行实现,它是一种面向、函数式编程语言,能够像操作本地集合一样轻松的操作分布式数据集。Spark具有运行速度快、易用性好、通用性强和随处运行等特点。

3.2.1速度快

由于 Apache Spark 支持内存计算,并且通过 DAG(有向无环图)执行引擎支持无环数据流,所以官方宣称其在内存中的运算速度要比 Hadoop 的 MapReduce快 100 倍,在硬盘中要快 10 倍。

3.2.2易于使用

Spark 的版本已经更新到 Spark 2.4.5,支持了包括 Java、Scala、Python 、R和SQL语言在内的多种语言。

3.2.3通用性强

通用性强
在 Spark 的基础上,Spark 还提供了包括 Spark SQL、Spark Streaming、MLib 及 GraphX 在内的多个工具库,我们可以在一个应用中无缝地使用这些工具库。其中,Spark SQL 提供了结构化的数据处理方式,Spark Streaming 主要针对流式处理任务(也是本书的重点),MLib 提供了很多有用的机器学习算法库,GraphX提供图形和图形并行化计算。


3.2.4运行方式多样

Spark 支持多种运行方式,包括在 Hadoop 和 Mesos 上,也支持 Standalone的独立运行模式,同时也可以运行在云Kubernetes(Spark 2.3开始支持)上。

3.3spark的架构抽象

Spark是主从架构,如下图是spark高层次的架构抽象。
在Spark的架构中,Driver主要负责作业调度工作,Executor主要负责执行具体的作业计算任务,ClusterManager主要负责资源管理和调度。

在这里插入图片描述

4.Flink(分布式计算框架)

Flink是一个基于内存的分布式并行处理框架,类似于Spark,但在部分设计思想有较大出入。对 Flink 而言,其所要处理的主要场景就是流数据,批数据只是流数据的一个极限特例而已。

5.Yarn/Mesos(分布式资源管理器)

YARN是下一代MapReduce,即MRv2,是在第一代MapReduce基础上演变而来的,主要是为了解决原始Hadoop扩展性较差,不支持多计算框架而提出的。

Mesos诞生于UC Berkeley的一个研究项目,现已成为Apache项目,当前有一些公司使用Mesos管理集群资源,比如Twitter。与yarn类似,Mesos是一个资源统一管理和调度的平台,同样支持比如MR、steaming等多种运算框架。

6.Zookeeper(分布式协作服务)

解决分布式环境下的数据管理问题:统一命名,状态同步,集群管理,配置同步等。
Hadoop的许多组件依赖于Zookeeper,它运行在计算机集群上面,用于管理Hadoop操作

7.Sqoop(数据同步工具)

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

8.Hive/Impala(基于Hadoop的数据仓库)

Hive定义了一种类似SQL的查询语言(HQL),将SQL转化为MapReduce任务在Hadoop上执行。通常用于离线分析。HQL用于运行存储在Hadoop上的查询语句,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中定制数据发送方,从而支持收集各种不同协议数据。

mapreduce和spark的区别

1 mapreduce是基于磁盘的,spark是基于内存的。mapreduce会产生大量的磁盘IO,而 spark基于DAG计算模型,会减少Shaffer过程即磁盘IO减少。

2spark是多线程运行,mapreduce是多进程运行。进程的启动和关闭和会耗费一定的时间。

3兼容性:spark可单独也可以部署为on yarn模式,mapreduce一般都是on yarn模式

4shuffle与排序,mapreduce有reduce必排序

5spark有灵活的内存管理和策略

结构化数据与非结构化数据是什么

1什么是结构化数据

大多数人都熟悉结构化数据的工作原理。结构化数据,可以从名称中看出,是高度组织和整齐格式化的数据。它是可以放入表格和电子表格中的数据类型。它可能不是人们最容易找到的数据类型,但与非结构化数据相比,无疑是两者中人们更容易使用的数据类型。另一方面,计算机可以轻松地搜索它。

结构化数据也被成为定量数据,是能够用数据或统一的结构加以表示的信息,如数字、符号。在项目中,保存和管理这些的数据一般为关系数据库,当使用结构化查询语言或SQL时,计算机程序很容易搜索这些术语。结构化数据具有的明确的关系使得这些数据运用起来十分方便,不过在商业上的可挖掘价值方面就比较差。

典型的结构化数据包括:信用卡号码、日期、财务金额、电话号码、地址、产品名称等

2什么是非结构化数据

非结构化数据本质上是结构化数据之外的一切数据。它不符合任何预定义的模型,因此它存储在非关系数据库中,并使用NoSQL进行查询。它可能是文本的或非文本的,也可能是人为的或机器生成的。简单的说,非结构化数据就是字段可变的的数据。

非结构化数据不是那么容易组织或格式化的。收集,处理和分析非结构化数据也是一项重大挑战。这产生了一些问题,因为非结构化数据构成了网络上绝大多数可用数据,并且它每年都在增长。随着更多信息在网络上可用,并且大部分信息都是非结构化的,找到使用它的方法已成为许多企业的重要战略。更传统的数据分析工具和方法还不足以完成工作。

3结构化数据与非结构化数据:有何区别

从上文的解释中,结构化和非结构化数据之间的差异逐渐变得清晰。除了存储在关系数据库和存储非关系数据库之外的明显区别之外,最大的区别在于分析结构化数据与非结构化数据的便利性。针对结构化数据存在成熟的分析工具,但用于挖掘非结构化数据的分析工具正处于萌芽和发展阶段。

并且非结构化数据要比结构化数据多得多。非结构化数据占企业数据的80%以上,并且以每年55%~65%的速度增长。如果没有工具来分析这些海量数据,企业数据的巨大价值都将无法发挥。

Linux简单操作命令实训练习

pwd 命令功能:显示当前所在目录(即工作目录)

ls 命令功能:显示指定目录中的文件或子目录信息。当不指定文件或目录时,显示 当前工作目录中的文件或子目录信息。

-a :全部的档案,连同隐藏档( 开头为 . 的档案) 一起列出来。

-l :长格式显示,包含文件和目录的详细信息。

-R :连同子目录内容一起列出来。

cd 命令功能:用于切换当前用户所在的工作目录,其中路径可以是绝对路径也可以 是相对路径。

mkdir 命令功能:用于创建目录。创建目录前需保证当前用户对当前路径有修改的权 限。参数 -p 用于创建多级文件夹。

rm 命令功能:用于删除文件或目录,常用选项-r -f,-r 表示删除目录,也可以用于 删除文件,-f 表示强制删除,不需要确认。删除文件前需保证当前用户对当 前路径有修改的权限

cp 命令功能:复制文件或目录。

mv 命令功能:移动文件或对其改名。常用选项-i -f -b,-i 表示若存在同名文件,则向用户 询问是否覆盖;-f 直接覆盖已有文件,不进行任何提示;-b 当文件存在时,覆盖 前为其创建一个备份

cat 命令功能:查看文件内容。常用选项:-n 显示行号(空行也编号)。

  • 22
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值