一、介绍Hadoop生态圈相关组件Hadoop 是一个能够对大量数据进行分布式处理的软件框架。具有可靠、高效、可伸缩的特点。Hadoop 的核心是 HDFS 和 Mapreduce,HDFS 还包括 YARN。
1,HDFS(hadoop分布式文件系统)是hadoop体系中数据存储管理的基础。他是一个高度容错的系统,能检测和应对硬件故障。client:切分文件,访问HDFS,与namenode交互,获取文件位置信息,与DataNode交互,读取和写入数据。 namenode:master节点,在hadoop1.x中只有一个,管理HDFS的名称空间和数据块映射信息,配置副本策略,处理客户 端请求。 DataNode:slave节点,存储实际的数据,汇报存储信息给namenode。 secondary namenode:辅助namenode,分担其工作量:定期合并fsimage和fsedits,推送给namenode;紧急情况下和辅助恢复namenode,但其并非namenode的热备。
2,mapreduce(分布式计算框架)mapreduce是一种计算模型,用于处理大数据量的计算。其中map对应数据集上的独立元素进行指定的操作,生成键-值对形式中间,reduce则对中间结果中相同的键的所有值进行规约,以得到最终结果。jobtracker:master节点,只有一个,管理所有作业,任务/作业的监控,错误处理等,将任务分解成一系列任务,并分派给tasktracker。tacktracker:slave节点,运行 map task和reducetask;并与jobtracker交互,汇报任务状态。map task:解析每条数据记录,传递给用户编写的map()并执行,将输出结果写入到本地磁盘(如果为map—only作业,则直接写入HDFS)。reduce task:从map 它深刻地执行结果中,远程读取输入数据,对数据进行排序,将数据分组传递给用户编写的reduce函数执行。
3, hive(基于hadoop的数据仓库)由Facebook开源,最初用于解决海量结构化的日志数据统计问题。hive定于了一种类似sql的查询语言(hql)将sql转化为mapreduce任务在hadoop上执行。
4,hbase(分布式列存数据库)hbase是一个针对结构化数据的可伸缩,高可靠,高性能,分布式和面向列的动态模式数据库。和传统关系型数据库不同,hbase采用了bigtable的数据模型:增强了稀疏排序映射表(key/value)。其中,键由行关键字,列关键字和时间戳构成,hbase提供了对大规模数据的随机,实时读写访问,同时,hbase中保存的数据可以使用mapreduce来处理,它将数据存储和并行计算完美结合在一起。
5,zookeeper(分布式协作服务)解决分布式环境下的数据管理问题:统一命名,状态同步,集群管理,配置同步等。
6,sqoop(数据同步工具)sqoop是sql-to-hadoop的缩写,主要用于传统数据库和hadoop之间传输数据。数据的导入和导出本质上是mapreduce程序,充分利用了MR的并行化和容错性。
7,pig(基于hadoop的数据流系统)定义了一种数据流语言-pig latin,将脚本转换为mapreduce任务在hadoop上执行。通常用于离线分析。
8,mahout(数据挖掘算法库)mahout的主要目标是创建一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。mahout现在已经包含了聚类,分类,推荐引擎(协同过滤)和频繁集挖掘等广泛使用的数据挖掘方法。除了算法是,mahout还包含了数据的输入/输出工具,与其他存储系统(如数据库,mongoDB或Cassandra)集成等数据挖掘支持架构。
9,flume(日志收集工具)cloudera开源的日志收集系统,具有分布式,高可靠,高容错,易于定制和扩展的特点。他将数据从产生,传输,处理并写入目标的路径的过程抽象为数据流,在具体的数据流中,数据源支持在flume中定制数据发送方,从而支持收集各种不同协议数据。
10,资源管理器的简单介绍(YARN和mesos)随着互联网的高速发展,基于数据 密集型应用 的计算框架不断出现,从支持离线处理的mapreduce,到支持在线处理的storm,从迭代式计算框架到 流式处理框架s4,...,在大部分互联网公司中,这几种框架可能都会采用,比如对于搜索引擎公司,可能的技术方法如下:网页建索引采用mapreduce框架,自然语言处理/数据挖掘采用spark,对性能要求到的数据挖掘算法用mpi等。公司一般将所有的这些框架部署到一个公共的集群中,让它们共享集群的资源,并对资源进行统一使用,这样便诞生了资源统一管理与调度平台,典型的代表是mesos和yarn。
11,其他的一些开源组件: 1)cloudrea impala: 一个开源的查询引擎。与hive相同的元数据,SQL语法,ODBC驱动程序和用户接口,可以直接在HDFS上提供快速,交互式SQL查询。impala不再使用缓慢的hive+mapreduce批处理,而是通过与商用并行关系数据库中类似的分布式查询引擎。可以直接从HDFS或者Hbase中用select,join和统计函数查询数据,从而大大降低延迟。 2)spark:spark是个开源的数据 分析集群计算框架,最初由加州大学伯克利分校AMPLab,建立于HDFS之上。spark与hadoop一样,用于构建大规模,延迟低的数据分析应用。spark采用Scala语言实现,使用Scala作为应用框架。spark采用基于内存的分布式数据集,优化了迭代式的工作负载以及交互式查询。与hadoop不同的是,spark与Scala紧密集成,Scala象管理本地collective对象那样管理分布式数据集。spark支持分布式数据集上的迭代式任务,实际上可以在hadoop文件系统上与hadoop一起运行(通过YARN,MESOS等实现)。3)stormstorm是一个分布式的,容错的计算系统,storm属于流处理平台,多用于实时计算并更新数据库。storm也可被用于“连续计算”,对数据流做连续查询,在计算时将结果一流的形式输出给用户。他还可被用于“分布式RPC”,以并行的方式运行昂贵的运算。4)kafka kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。 对于像Hadoop的一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息5)redis Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
二、详细介绍MapReduce的特点及运行架构
1.First MapReduce运行架构图如下所示:
2、Second MapReduce的特点
▶️ 可扩展性:由于MapReduce模型的并行处理特性,它能够有效地处理大规模数据集。通过将任务分解为多个并行的Map和Reduce任务,可以在集群中的多个计算节点上同时处理数据,从而实现横向扩展。
▶️容错性:在MapReduce中,每个Map和Reduce任务都是独立的,它们之间没有依赖关系。当一个计算节点发生故障时,系统可以自动重新分配任务给其他可用的节点,从而实现容错性。
▶️简单性:MapReduce模型提供了一种简单而直观的方法来处理大规模数据集。
三、详细介绍spark的特点,并与MapReduce作对比说明区别
1.spark的特点
(1)运行速度快,如果数据由磁盘读取,速度是hadoop mapreduce的10倍以上,如果数据从内存读取,速度是hadoop mapreduce的100倍以上。主要原因是因为基于内存计算和引入DAG执行引擎。
(2)易用性好,spark不仅支持scala编程呢个,还支持java和python编写。
(3)通用性好
(4)随处运行
2.spark和mapreduce的比较
(1)spark把中间数据放在内存中,迭代运算效率高。mapreduce中的计算结果保存在磁盘上,而spark支持DAG图的分布式并行计算的编程框架,减少了迭代过程中数据的落地,提高了处理效率。(2)spark容错性高。引进了RDD,如果数据集一部分丢失,则可以重建。另外,在RDD计算时可以通过checkpoint来实现容错。spark更加通用。不像hadoop只提供map和reduce两种操作。spark提供的数据集操作类型有很多种,大致分为转换操作和行动操作。转换操作包括map,filter,flatmap,sample,groupbykey,reducebykey,union,join,cogroup,mapvalues,sort和partionby等多种操作类型,行动操作包括collect,reduce,lookup和save等操作类型。另外,各个处理节点之间的通信模型不再像Hadoop只有shuffle一种模式,用户可以命名,物化,控制中间结果的存储,分区等。
四、熟练掌握Linux操作命令并演示说明
五、冷备 温备 热备
热备(在线备份):在数据库正常运行时直接备份,对数据库操作没有任何影响(数据库读写均可正常运行)。
冷备(离线备份):在数据库停止时进行备份。在备份期间,应用的读写操作不可进行。备份出的数据可靠性最高。
温备:在数据库运行时加全局读锁备份,保证了备份数据的一致性,但对性能有影响。数据库可用性弱于热备,备份期间,数据库只能进行读操作,不能进行写操作。
六、数据类型 (举例说明) 大数据包含各种不同类型的数据,以下是一些常见的大数据数据类型:1.结构化数据: 结构化数据是以表格、行和列的形式组织的数据,通常存储在关系型数据库中。这些数据具有明确定义的模式和结构,例如,数据库中的表格、电子表格中的数据或日志文件中的数据。2.半结构化数据: 半结构化数据不像结构化数据那样具有明确定义的模式,但它包含了标记或标签,使得数据可以被更容易地解释和处理。例如,XML、JSON和HTML文件通常属于半结构化数据。3.非结构化数据: 非结构化数据是没有明确结构或组织的数据,通常以文本、图像、音频和视频的形式存在。这种类型的数据需要更复杂的处理和分析技术,以提取有用的信息。社交媒体帖子、电子邮件、照片和视频文件是非结构化数据的例子。4.时序数据: 时序数据是按照时间顺序记录的数据,通常包括时间戳。这种类型的数据常见于传感器数据、日志数据、股票市场数据和气象数据等领域。5.空间数据: 空间数据包括与地理位置相关的信息,通常使用地理坐标系统(如经度和纬度)来表示。这种类型的数据在地理信息系统(GIS)应用中广泛使用,用于地图制图、位置分析和导航。6.图数据: 图数据以节点和边的形式组织,用于表示实体之间的关系。社交网络、知识图谱和互联网上的网页链接都可以表示为图数据。7.文本数据: 文本数据包括各种文本文档,如文章、评论、新闻文章和书籍。文本数据分析可以用于自然语言处理(NLP)任务,如情感分析、文本分类和信息提取。8.多媒体数据: 多媒体数据包括图像、音频和视频等形式的媒体内容。处理和分析多媒体数据通常需要特殊的技术,如图像处理和音频处理。