一.介绍Hadoop生态圈相关组件
Pig:Hadoop上的数据流执行引擎,由Yahoo开源,基于HDFS和MapReduce,使用Pig Latin语言表达数据流,目的在于让MapReduce用起来更简单。
Sqoop:主要用于在Hadoop和传统数据库进行数据互导。
ZooKeeper:分布式的,开放源码的分布式应用程序协调服务。
Flume:分布式、可靠、高可用的服务,它能够将不同数据源的海量日志数据进行高效收集、汇聚、移动,最后存储到一个中心化数据存储系统中,它是一个轻量级的工具,简单、灵活、容易部署,适应各种方式日志收集并支持failover和负载均衡。
Hive:构建在Hadoop之上的数据仓库,用于解决海量结构化的日志数据统计,定义了一种类SQL查询语言。
YARN:资源协调者、Hadoop 资源管理器,提供统一的资源管理和调度。
Impala:基于Hive的大数据实时分析查询引擎,直接使用Hive的元数据库Metadata。
Solr:基于Lucene的全文检索引擎。
Hue:开源的Apache Hadoop UI系统,基于Python Web框架Django实现的。通过使用Hue可以在浏览器端的Web控制台上与Hadoop集群进行交互来分析处理数据。
Oozie:基于工作流引擎的服务器,可以在上面运行Hadoop任务,是管理Hadoop作业的工作流调度系统。
Storm:分布式实时大数据处理系统,用于流计算。
Hbase:构建在HDFS上的分布式列存储系统,海量非结构化数据仓库。
Spark:海量数据处理的内存计算引擎,Spark框架包含Spark Streaming、Spark SQL、MLlib、GraphX四部分。
Mahout:Apache Software Foundation(ASF) 旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现。
Drill:低延迟的分布式海量数据(涵盖结构化、半结构化以及嵌套数据)交互式查询引擎,使用ANSI SQL兼容语法,支持本地文件、HDFS、HBase、MongoDB等后端存储,支持Parquet、JSON、CSV、TSV、PSV等数据格式。
Tez:有向无环图的执行引擎,DAG作业的开源计算框架。
Shark:SQL on Spark,可以近似认为仅将物理执行计划从MR作业替换成了Spark作业。
二.详细介绍MapReduce的特点及运行架构
特点:
1. 易于编程。它简单的实现一些接口,就可以完成一个分布式程序,这个分布式程序可以分布到大量廉价的PC机器运行。
2. 也就是说你写一个分布式程序,跟写一个简单的串行程序是一模一样的。就是因为这个特点,使得 MapReduce 编程变得非常流行。
3. 良好的扩展性。当你的计算资源不能得到满足的时候,你可以通过简单的增加机器来扩展它的计算能力。
4. 高容错性。 MapReduce 设计的初衷就是使程序能够部署在廉价的PC机器上, 这就要求它具有很高的容错性。
5. 比如其中一台机器挂了,它可以把上面的计算任务转移到另外一个节点上运行,不至于使这个任务运行失败,而且这个过程不需要人工干预,完全是由 Hadoop 内部完成的
6. 能对PB级以上海量数据进行离线处理。适合离线处理而不适合实时处理, 比如要求毫秒级别的返回一个结果, MapReduce 很难做到。
运行架构:
MapReduce 包含4 个组成部分,分别为Client 、JobTracker 、TaskTracker 和Task 。
( 1 ) Client
每个Job 都会在用户端通过Client 类将应用程序以及配置参数Configuration 打包成JAR 文件存储在HDFS 中,并把路径提交到JobTracker 的Master 服务,然后由Master 创建每一个Task (即MapTask 和ReduceTask)将它们分发到各个TaskTracker 服务中去执行。
( 2 ) JobTracker
Job Tracker 负责资源监控和作业调度。JobTracker 监控所有TaskTracker 与Job 的健康状况,一旦发现失败,就将相应的任务转移到其他节点;同时, JobTracker 会跟踪任务的执行进度、资源使用量等信息,并将这些信息告诉任务调度器,而调度器会在资源出现空闲时,选择合适的任务使用这些资源。在Hadoop 中,任务调度器是一个可插拔的模块,用户可以根据自己的需要设计相应的调度器。
( 3) TaskTracker
TaskTracker 会周期性地通过Heartbeat 将本节点上资源的使用情况和任务的运行进度汇报给JobTracker , 同时接收JobTracker 发送过来的命令并执行相应的操作(如启动新任务、杀死任务等) 。TaskTracker 使用 slot 来衡量划分本节点上的资源量。 slot 代表单位的计算资源( CPU、内存等) 。一个τask 获取到一个slot 后才有机会运行,而Hadoop 调度器的作用就是将各个TaskTracker 上的空闲slot 分配给Task 使用。slot 分为Map slot 和
Reduce slot 两种,分别供M叩Task 和Reduce Task 使用。TaskTracker 通过slot 数目(可配置参数) 限定Task 的并发度。
( 4) Task
Task 分为Map Task 和Reduce Task 两种,均由TaskTracker 启动。HDFS 以固定大小的block 为基本单位存储数据,而对于MapReduce 而言,其处理单位是split 。
HDFS 和MapReduce 共同组成了HDFS 体系结构的核心。HDFS 在集群上实现了分布式文件系统, MapReduce 在集群上实现了分布式计算和任务处理。HDFS 在MapReduce 任务处理过程中提供了对文件操作和存储等的支持,而MapReduce在HDFS 基础上实现了任务的分发、跟踪和执行等工作,并收集结果,两者相互作用,完成了Hadoop 分布式集群的主要任务。
三.详细介绍spark的特点,并与MapReduce做对比说明区别
Spark具有运行速度快、易用性好、通用性强和随处运行等特点
1. 速度快
由于Apache Spark支持内存计算,并且通过DAG(有向无环图)执行引擎支持无环数据流,所以官方宣称其在内存中的运算速度要比Hadoop的MapReduce快100倍,在硬盘中要快10倍
Spark处理数据与MapReduce处理数据相比,有如下两个不同点:
Spark处理数据时,可以将中间处理结果数据存储到内存中
Spark Job调度以DAG方式,并且每个任务Task执行以线程方式,并不是像MapReduce以进程方式执行。2. 易于使用
Spark的版本已经更新到了Spark3.1.2(截止日期2021.06.01),支持了包括Java、Scala、Python、R和SQL语言在内的多种语言。为了兼容Spark2.x企业级应用场景,Spark仍然持续更新Spark2版本
3. 通用性强
在Spark的基础上,Spark还提供了包括Spark SQL、Spark Streaming、MLib及GraphX在内的多个工具库,我们可以在一个应用中无缝的使用这些工具库
4. 运行方式
Spark支持多种运行方式,包括在Hadoop和Mesos上,也支持Standalone的独立运行模式,同时也可以运行在云Kubernets(Spark2.3开始支持)上
对于数据源而言,Spark支持从HDFS、HBase、Cassandra及Kafka等多种途径获取和数据
四.熟练掌握Linux操作命令并演示说明
步骤一:pwd命令
格式:pwd
功能:显示当前所在目录
步骤二:ls命令
格式:ls[选项][文件|目录]
功能:显示指定目录中的文件或子目录信息。当不指定文件或目录时,显示当前工作目录中的文件或子目录信息。
步骤三:cd命令
格式:cd<路径>
功能:用于切换当前用户所在的工作目录,其中路径可以是绝对路径也可以是相对路径。
步骤四:mkdir命令
格式:mkdir[选项]目录
功能:用于创建目录。创建目录前需要保证当前用户对当前路径有修改的权限。参数-p用于创建多级文件夹。
步骤五:rm命令
格式:rm[选项]<文件>
功能:用于删除文件或目录,常用选项-r-f,-r表示删除目录,也可以用于删除文件,-f表示强制删除,不需要确认。删除文件前需保证当前用户对当前路径有修改的权限。
步骤六:cp命令
格式:cp[选项]<文件><目标文件>
功能:复制文件或目录
步骤七:mv命令
格式:mv[选项]<文件><目标文件>
功能:移动文件或对其改名。常用选项-i-f-b,-i表示若存在同名文件,则向用户询问是否覆盖,-f直接覆盖已有文件,不进行任何提示,-b当文件存在时,覆盖前为其创建一个备份。
步骤八:cat命令
格式:cat[选项][文件]
功能:查看文件内容。
五.冷备 温备 热备
冷备:读写操作均不可进行
温备:读操作可执行;但写操作不可执行
热备:读写操作均可执行
MyISAM:温备,不支持热备
InnoDB:都支持
物理和逻辑备份
物理备份:直接复制数据文件进行备份,与存储引擎有关,占用较多的空间,速度快
逻辑备份:从数据库中“导出”数据另存而进行的备份,与存储引擎无关,占用空间少,速度慢,可能丢失精度
备份时需要考虑的因素
温备的持锁多久
备份产生的负载
备份过程的时长
恢复过程的时长
备份什么数据
六、数据类型(举例说明)
int、long、short、unsigned、char、float、double、signed、_Bool、_Complex和_Imaginary