赞
踩
一、hadoop生态圈相关组件
1.Hadoop是目前应用最为广泛的分布式大数据处理框架,其具备可靠性、高效性、可伸缩性等特点。
Hadoop的核心组件是HDFS、MapReduce。随着处理的任务不同,各种组件的相继出现,有着丰富的Hadoop生态圈。
组件介绍
1、HDFS(分布式文件系统)
HDFS是整个Hadoop体系的基础,负责数据的存储与管理,Hdfs有着高容错性的特点,并且设计用来部署在低廉的硬件上,适合那些有着超大数据集的应用程序。
2、MapReduce(分布式计算框架)MapReduce是一种基于磁盘的分布式并行批处理的计算模型,用于大数据量的计算。\n\nMapReduce是一种基于磁盘的分布式并行批处理的计算模型,用于处理和生成大型数据集,他将计算任务分为两个阶段:map阶段和reduce阶段,MapReduce用于在HDFS上处理大量数据,尤其是批量处理任务。
3、Spark(分布式计算框架)\nSpark是一种基于内存的分布式并行计算框架,与MapReduce不同的是-----Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好的适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。
4、Flink(分布式计算框架)
Flink是一个基于内存的分布式并行处理框架,类似与Spark,但是在部分设计思想方面有很多不同的,对与Flink而言,适合处理事实数据和流式数据,具有更好的状态管理和任务调度能力,而Spark适合处理离线批处理数据,,具有更好的内存管理和执行引擎能力。
5.YARN (分布式资源管理器)
任务的调度和集群资源的管理, YARN是Hadoop 的资源管理和任务调度框架。
它负责管理和调度集群中的计算资源,以便为各种应用程序执行任务。
6.Zookeeper(分布式协作服务)
解决分布式环境下的数据管理问题:统一命名,状态同步,集群管理,配置同步等。\nHadoop的许多组件依赖于Zookeeper,它运行在计算机集群上面,用于管理Hadoop操作。
7、Sqoop(数据同步工具)
Sqoop是SQL-to-Hadoop的缩写,主要用于传统数据库和Hadoop之前传输数据。
数据的导入和导出本质上是Mapreduce程序,充分利用了MR的并行化和容错性。
8、Hive(基于Hadoop的数据仓库)
Hive定义了一种类似SQL的查询语言(HQL),将SQL转化为MapReduce任务在Hadoop上执行。通常用于离线分析。
HQL用于运行存储在Hadoop上的查询语句,Hive让不熟悉MapReduce开发人员也能编写数据查询语句,\n然后这些语句被翻译为Hadoop上面的MapReduce任务。
9、HBase(分布式列存储数据库)\nHBase是一个建立在HDFS之上,面向列的针对结构化数据的可伸缩、高可靠、高性能、分布式和面向列的动态模式数据库。
>HBase采用了BigTable的数据模型:增强的稀疏排序映射表(Key/Value),其中,键由行关键字、列关键字和时间戳构成。HBase提供了对大规模数据的随机、实时读写访问,同时,HBase中保存的数据可以使用MapReduce来处理,它将数据存储和并行计算完美地结合在一起。
10、Flume(日志收集工具)
Flume以Agent为最小的独立运行单位,一个Agent就是一个JVM。单个Agent由Source、Sink和Channel三大
组件构成
Source:从客户端收集数据,并传递给Channel。\nChannel:缓存区,将Source传输的数据暂时存放。
Sink:从Channel收集数据,并写入到指定地址。
Event:日志文件、avro对象等源文件
11、Kafka(分布式消息队列)
kafka 是一个分布式流处理平台,用于构建实时数据流管道和应用程序。
它可以处理高吞吐量的事件数据,并将其存储在可持久化的主题中以供实时处理和分 析。
Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的 所有动作流数据。
实现了主题、分区及其队列模式以及生产者、消费者架构模式。
12.Oozie(工作流调度器)
Oozie是一个可扩展的工作体系,集成于Hadoop的堆栈,用于协调多个MapReduce作业的执行。
它能够管理一个复杂的系统,基于外部事件来执行,外部事件包括数据的定时和数据的出现。
13.Hadoop 主要模块
Core-site.xml(工具模块)
hdfs-site.xml(数据存储模块)
Mapred-site.xml(数据处理模块)
Datax的特点:sqoop在导入导出数据时充分采用了MapReduce计算框架,根据输入条件生成一个MapReduce作业,在hadoop集群中运行,采用MapReduce框架同时在多个节点进行import和export操作,速度比单节点运行多个并行导入导出效率高,同时提供了良好的容错性和并发性;可以将关系型数据库中的数据导入到hdfs、hive或者hbase等hadoop组件中,也可以将hadoop组件中的数据导入到关系型数据库中支持insert、update模式,可以选择参数,若内容存在就更新,不存在就插入;对国外主流的关系型数据库支持性好;(MySQL、Oracle、DB2、SQL Server)Sqoop的特点:异构数据库和文件系统之间的数据交换;采用framework+plugin架构构建,framework处理了缓冲、流控,并发,上下文加载等高速数\n据交换的大部分技术问题,提供了简单的接口与插件交互,插件仅需实现对数据处理系统的访问;数据传输过程中在单线程内完成,全内存操作,不读写磁盘,也没有ipc开放式的框架,开发者可以在极短的时间开发一个新插件以快速支持新的数据库/文件系统Sqoop和Datax的区别:SqoopDatax采用了MapReduce计算框架进行导入Datax仅仅运行在Datax的单台机器上进行数据的抽取和加载速度比sqoop慢只可以在关系型数据库和hadoop的组件之间进行数据迁移,而在hadoop相关组件之间(Hive和Hbase之间无法使用Sqoop)同时在关系型数据库之间(MySQL和Oracle就不能)之间就无法通过sqoop导入数据Datax能够分别实现关系型数据库和hadoop组件之间、关系型数据库之间、hadoop组件之间的数据迁移sqoop专为hadoop而生,对hadoop支持度极好Datax可能会出现不支持高版本hadoop的现象sqoop只支持官方提供的指定几个关系型数据库和hadoop组件之间的数据交换而在Datax中用户只需根据自生需求修改文件,生成响应的rpm包,自行安装后可以使用自己定制的插件。
二、Mapreduce的特点及运行架构
1.MapReduce是一种基于磁盘的分布式并行批处理计算模型,用于处理大数据量的计算。其中Map对应数据集上的独立元素进行指定的操作,生成键-值对形式中间,Reduce则对中间结果中相同的键的所有值进行规约,以得到最终结果。
①易于编程:只需要使用hadoop接口进行编程,即可实现多台计算机分布式计算和分布式存储。
②高扩展性:存储空间不足或者计算能力不足,则可以添加计算机完成。
③容错性高:如果某个节点宕机,hadoop可以自动切换讲计算任务转移到其他节点上完成,不会影响计算结果。
如果计算任务执行了一半失败,出错,内部自动重试机制。
⑤应用场景:PB级别以上海量数据的离线处理,无法实时处理和流失动态处理。(每日)
2.MapReduce执行过程MapReduce的map与reduce过程`MapReduce`流程总览:`MapReduce`详细流程:`Map`端分析:`Shuffle`过程分析:`map`端的`shuffle`:`Reduce`端的`shuffle`:`Reduce`端分析:MapReduce架构在MapReduce中,用于执行MapReduce任务的机器有两个角色:JobTracker和TaskTracker。其中JobTracker是用于调度工作的。TaskTracker是用于执行工作的。一个Hadoop集群中只有一台JobTracker。MapReduce架构图如下:
客户端向JobTracker提交一个作业,JobTracker把这个作业拆分成很多份,然后分配给TaskTracker去执行,TaskTracker会隔一段时间向JobTracker发送心跳信息(Heartbeat),如果JobTracker在一段时间内没有收到TaskTracker的心跳信息,JobTracker会认为TaskTracker挂掉了,会把TaskTracker的作业任务分配给其他TaskTracker
三、spark的特点,并与mapreduce作对比说明区别
1.①速度快
由于Apache Spark支持内存计算,并且通过DAG(有向无环图)执行引擎支持无环数据流,所以官方宣称其在内存中的运算速度要比Hadoop的MapReduce快100倍,在硬盘中要快10倍Spark处理数据与MapReduce处理数据相比,有如下两个不同点:Spark处理数据时,可以将中间处理结果数据存储到内存中Spark Job调度以DAG方式,并且每个任务Task执行以线程方式,并不是像MapReduce以进程方式执行
②易于使用
Spark的版本已经更新到了Spark3.1.2(截止日期2021.06.01),支持了包括Java、Scala、Python、R和SQL语言在内的多种语言。为了兼容Spark2.x企业级应用场景,Spark仍然持续更新Spark2版本
③通用性强
在Spark的基础上,Spark还提供了包括Spark SQL、Spark Streaming、MLib及GraphX在内的多个工具库,我们可以在一个应用中无缝的使用这些工具库
④运行方式
Spark支持多种运行方式,包括在Hadoop和Mesos上,也支持Standalone的独立运行模式,同时也可以运行在云Kubernet(Spark2.3开始支持)上对于数据源而言,Spark支持从HDFS、HBase、Cassandra及Kafka等多种途径获取和数据
2.①内存计算
spark 将数据存储在内存中进行计算;MapReduce 将数据存储在磁盘上。由于内存访问速度更快,spark 在处理迭代计算和交互式查询等工作负载时通常MapReduce 更高效。Spark 基于内存的计算:Spark中我们有一种优化策略:移动计算、不移动数据。旨在减少数据传输的开销,提高计算效率。其核心思想是将计算任务尽可能的放在数据所在的节点上执行,而不是将数据传输到计算节点。具体来说,包括下面两个方面:1. 数据本地性:Spark 会尽量将计算任务分配到存储有数据的节点上,以利用数据的本地性。这样可以减少数据传输的开销。通过在数据所在节点上执行计算任务,可以避免将数据传输到其他节点,从而提高计算性能。2. 任务调度:Spark 不会移动实际的数据。数据仍然保留在存储节点上,只有计算任务被分发到存储数据的节点上执行。MapReduce基于磁盘的计算:1. 数据读取:输入数据从磁盘读取到内存中进行处理。也就是说,每次需要处理数据时,都需要从磁盘读取相应的数据块到内存中进行计算操作。2. 中间结果存储: MapReduce 框架会将 Map 和 Reduce 阶段的中间结果存储在磁盘上。在 Map 阶段,将 Map 任务的输出写入磁盘中的临时文件。在 Reduce 阶段,Reduce 任务会从磁盘上读取中间结果,并根据键值对进行合并和排序。3. 数据持久性:将数据存储在持久化的磁盘介质上,及时在节点故障或计算过程中断的情况下,数据也能够持久保存。这样可以确保数据的可靠性和容错性。
②执行速度
Spark 的内存计算特性 和 基于DAG有向无环图 的执行模型,通常比 MapReduce 更快。Spark可以在内存中保留数据和计算结果,并通过多个任务合并为更少的阶段来减少磁盘的读写开销。
③API 和编程模型Spark提供了丰富的API,包括 scala、Java、Python等。开发起来更加灵活、表达能力更强。而 MapReduce 使用 Java 编程语言来编写 Map 和 Reduce 函数,需要手动编写更多的代码来实现处理逻辑。
④扩展性 Spark 有更好的扩展性,可以方便的与其他数据处理框架和工具集成。如:Spark Streaming用于流处理、Spark SQL 用于查询和结构化数据处理、Spark MLlib用于机器学习等。
⑤容错性
Spark提供了弹性式分布数据集RDD,具有自动容错和数据恢复机制。能够在节点故障时重新计算丢失的数据。
MapReduce 需要在每个任务的开始和结束时将数据写入磁盘,因此在故障情况下需要重新启动整个计算。
四、熟练掌握linux命令并演示说明
1.pwd命令
2.ls命令
3.cd命令
4.mkdir命令
5.rm命令
6.cp命令
7.mv命令
8.cat命令
9.tar命令
10.useradd命令
11.passwd命令
12.chown命令
13.chmod命令
14.su命令
15.文本操作命令
16.clear命令
17.hostname,hostnamectl命令
18.ip命令
19.systemctl命令
20.export命令
21.echo命令
22.source命令
23.reboot命令
24.poweroff命令
五、冷备,温备,热备
热备、冷备、温备热备(在线备份):在数据库运行时直接备份,对数据库操作没有任何影响。冷备(离线备份):在数据库停止时进行备份。温备:在数据库运行时加全局读锁备份,保证了备份数据的一致性,但对性能有影响。热备流程备份开始时,记录重做日志的日志序号(LSN)。复制共享表空间和独立表空间的文件。复制完后,再次记录重做日志的日志序号(LSN)。通过前面记录的日志序号来复制在备份时产生的重做日志。冷备优点备份简单,只需要复制相关文件即可。恢复简单而且速度快,不需要执行任何 SQL 语句,也不需要重建索引。
六、数据类型
Local vector(本地向量)\nLabeled point(带标签数据点)\nLocal matrix(本地矩阵)\nDistrubuted matrix(分布式矩阵):RowMatrix、IndexedRowMatrix、CoordinateMatrix、BlockMatrix\nMLlib支持存储在单个机器上的本地的向量和矩阵,以及一个或多个RDD组成的分布式矩阵。本地向量和本地矩阵是用作公共接口的简单数据模型,底层的线性代数运算由Breeze提供。在监督学习中的样本被称为带标签数据点。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。