目录
一、Hadoop 生态圈组件介绍
1.Hadoop概述
Hadoop是较早用于处理大数据集合的分布式存储计算基础架构,目前由Apache软件基金会管理。通过Hadoop,用户可以在不了解分布式底层细节的情况下,开发分布式程序,充分利用集群的威力执行高速运算和存储。Hadoop是一个平台,在它之上可以更容易地开发和运行处理大规模数据的软件。
2.Hadoop组件
Hadoop是目前应用最为广泛的分布式大数据处理框架,其具备可靠、高效、可伸缩等特点,其中核心组件是YARN、HDFS、MapReduce。
HDFS(Hadoop Distribute File System):hadoop的数据存储工具。
YARN(Yet Another Resource Negotiator,另一种资源协调者):Hadoop 的资源管理器。
Hadoop MapReduce:分布式计算框架
根据服务对象和层次分为:数据来源层、数据传输层、数据存储层、资源管理层、数据计算层、任务调度层、业务模型层。
HDFS分布式文件系统:HDFS是Hadoop的分布式文件系统,它是Hadoop生态系统中的核心项目之一,是分布式计算中数据存储管理基础。通过目录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。
YARN资源管理器:Apache Hadoop YARN (Yet Another Resource Negotiator,另一种资源协调者)是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。
sqoop数据迁移工具: Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。
Mahout数据挖掘算法库: Mahout 是 Apache Software Foundation(ASF) 旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout包含许多实现,包括聚类、分类、推荐过滤、频繁子项挖掘。此外,通过使用 Apache Hadoop 库,Mahout 可以有效地扩展到云中。
Hbase分布式存储系统: HBase™ 是 Hadoop 数据库,是一个分布式、可扩展的大数据存储。是HBase是Google Bigtable克隆版,它是一个针对对结构化数据的可伸缩,高可靠,高性能,分布式和面向列的动态模式数据库。
Zookeeper分布式协作服务:是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和HBase的重要组件。
Hive基于Hadoop的数据仓库:Hive是基于Hadoop的一个分布式数据仓库工具,可以将结构化的数据文件映射为一张数据库表,将SQL语句转换为MapReduce任务进行运行。
Flume日志收集工具:Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。
二、重点介绍MapReduce概述
1.MapReduce概述
MapReduce定义:MapReduce是一个分布式运算程序的编程框架,是用户开发“基于Hadoop的数据分析应用”的核心框架。
MapReduce核心功能:是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并行运行在一个Hadoop集群上。
2.MapReduce优点
1)MapReduce 易于编程:它简单的实现一些接口,就可以完成一个分布式程序,这个分布式程序可以分布到大量廉价的PC机器上运行。也就是说你写一个分布式程序,跟写一个简单的串行程序是一模一样的。就是因为这个特点使得MapReduce编程变得非常流行。
2)良好的扩展性:当你的计算资源不能得到满足的时候,你可以通过简单的增加机器来扩展它的计算能力。
3)高容错性:MapReduce设计的初衷就是使程序能够部署在廉价的PC机器上,这就要求它具有很高的容错性。比如其中一台机器挂了,它可以把上面的计算任务转移到另外一个节点上运行,不至于这个任务运行失败,而且这个过程不需要人工参与,而完全是由Hadoop内部完成的。
4)适合PB级以上海量数据的离线处理:可以实现上千台服务器集群并发工作,提供数据处理能力。
3.MapReduce缺点
1)不擅长实时计算:MapReduce无法像MySQL一样,在毫秒或者秒级内返回结果。
2)不擅长流式计算:流式计算的输入数据是动态的,而MapReduce的输入数据集是静态的,不能动态变化。这是因为MapReduce自身的设计特点决定了数据源必须是静态的。
3)不擅长DAG(有向无环图)计算:多个应用程序存在依赖关系,后一个应用程序的输入为前一个的输出。在这种情况下,MapReduce并不是不能做,而是使用后,每个MapReduce作业的输出结果都会写入到磁盘,会造成大量的磁盘IO,导致性能非常的低下。
4. MapReduce核心编程思想
核心编程思想如下图
分布式的运算程序往往需要分成至少2个阶段。
- 第一个阶段的MapTask并发实例,完全并行运行,互不相干。
- 第二个阶段的ReduceTask并发实例互不相干,但是他们的数据依赖于上一个阶段的所有MapTask并发实例的输出。
MapReduce编程模型只能包含一个Map阶段和一个Reduce阶段,如果用户的业务逻辑非常复杂,那就只能多个MapReduce程序,串行运行。
三、重点介绍spark技术特点和概述
1. spark概述
Spark 是当今大数据领域最活跃、最热门、最高效的大数据通用计算平台之一。与Hadoop相比,Spark基于Mapreduce将计算的中间结果内存化并引入DAG(有向无环图)执行引擎。
- 是对Mapreduce的重大改进,中间数据压缩保存到内存,运算时间会比磁盘低两个数量级。
- 是对RDD的建模,描述了RDD之间的依赖关系。
2.Spark具有以下几个显著的特点
1)速度快基于内泛计算:与Hadoop相比.Spark基于内存的运算效事要快100倍以上,基于硬盘的运算效率也要快10倍以上。
2)易用性:Spark编程支持Java、Python、Scala及R语言,并且还拥有超过80种高级算法.除此之外:Spark还支持交互式的Shell操作.
3)通用性:Spark提供了统一的解决方案,适用于批处理、交互式查询(Spark SQL)、 实时流处理 (Spark Streaming)、机器学习(Spark MEhb和图计算(GraphX)。
4)兼容性:Spark可以运行在Hadoop模式、Mesos模式、Standalone独立模式或Cloud中,并且还可以访问各种数据源包括本地文件系统、HDFS.Cassandra、HBase和Hive等。
3.Spark 应用场景
1)在数据科学应用中 ,数据工程师可以利用Spark进行数据分析与建模
2)在数据处理应用中,大数据工程师将Spark技术应用于广告、报表、推荐系统等业务中
3)Spark拥有完整而强大的技术栈,如今已吸引了国内外各大公司的研发与使用,淘宝技术团队使用Spark来解决多次迭代的机器学习算法、高计算复杂度的算法等问题,应用于商品推荐、社区发现等功能。
四、对比mapreduce和spark的区别
1.Spark 基于内存的计算
Spark中我们有一种优化策略:移动计算、不移动数据。旨在减少数据传输的开销,提高计算效率。其核心思想是将计算任务尽可能的放在数据所在的节点上执行,而不是将数据传输到计算节点。具体来说,包括下面两个方面:
1. 数据本地性:Spark 会尽量将计算任务分配到存储有数据的节点上,以利用数据的本地性。这样可以减少数据传输的开销。通过在数据所在节点上执行计算任务,可以避免将数据传输到其他节点,从而提高计算性能。
2. 任务调度: Spark 不会移动实际的数据。数据仍然保留在存储节点上,只有计算任务被分发到存储数据的节点上执行。
2.MapReduce基于磁盘的计算
1. 数据读取:输入数据从磁盘读取到内存中进行处理。也就是说,每次需要处理数据时,都需要从磁盘读取相应的数据块到内存中进行计算操作。
2. 中间结果存储:MapReduce 框架会将 Map 和 Reduce 阶段的中间结果存储在磁盘上。在 Map 阶段,将 Map 任务的输出写入磁盘中的临时文件。在 Reduce 阶段,Reduce 任务会从磁盘上读取中间结果,并根据键值对进行合并和排序。
3. 数据持久性:将数据存储在持久化的磁盘介质上,及时在节点故障或计算过程中断的情况下,数据也能够持久保存。这样可以确保数据的可靠性和容错性。
五、结构化数据与非结构化数据是什么
1.结构化数据
指按照一定的规则和格式进行组织和存储的数据。它具有明确的数据类型和关系,可以通过预定义的模式或模型进行描述和解释。常见的结构化数据包括关系型数据库中的表格数据、电子表格中的数据、XML文件中的数据等。指具有固定格式或有限长度的数据,如数据库,元数据等。
2.非结构化数据
没有明确的结构和格式的数据,它不符合传统的表格、行列或关系型数据库的组织形式。非结构化数据的特点是多样性、复杂性和不规则性。指不定长或无固定格式的数据,如邮件,word文档等。
3.结构化数据和非结构化数据的区别
结构化数据 | 非结构化数据 | |
数据组织形式 | 按照预定义的模式和格式进行组织,具有明确的数据类型和关系,通常以表格、行列或关系型数据库的形式存储。 | 没有明确的结构和格式,多样性、复杂性和不规则性较高,以文本、图像、音频、视频等形式存在。 |
数据处理方式 | 通过传统的查询语言(如SQL)进行处理和分析,可以进行数据的筛选、排序、聚合等操作。 | 需要使用特定的技术和工具,如自然语言处理、图像识别、语音识别等,以提取有用的信息和洞察。 |
数据分析能力 | 有明确的结构和格式,可以进行较为精确的数据分析和建模,可以进行统计分析、预测建模等。 | 相对更具挑战性,需要使用更复杂的技术和算法,如文本挖掘、情感分析、图像识别等。 |
数据应用领域 | 常用于企业的业务数据管理、报表生成、决策支持等方面。 | 用于社交媒体分析、舆情监测、情感分析、图像识别、语音识别等领域。 |
需要注意的是,现实世界中的数据往往是结构化数据和非结构化数据的混合,因此在数据处理和分析时,需要综合考虑两种类型的数据。
六、Linux简单操作命令实训练习
1.文件与目录操作
1.1 pwd命令
格式:pwd
功能:显示当前所在目录(即工作目录)
1.2 ls命令
格式:ls[选项][文件|目录]
功能:显示指定目录中的文件或子目录信息。
-a:全部的档案,连同隐藏档一起列出来。
-l:长格式显示,包含文件和目录的详细信息。
-R:联通子目录内容一起列出来。
1.3 cd命令
格式:cd <路径>
功能:用于切换当前用户所在的工作目录,其中路径可以是绝对路径也可以时相对路径。
1.4 mkdir命令
格式:mkdir [选项] 目录
功能:用于创建目录。创建目录前需要保证当前用户对当前路径有修改的权限。
-p:用于创建多级文件夹。
1.5 rm命令
格式:rm [选项] <文件>
功能:用于删除文件或目录。
-r:表示删除目录,也可以用于删除文件。
-f:表示强制删除,不需要确认。
1.6 cp命令
格式:cp [选项] <文件> <目标文件>
功能:复制文件或目录。
1.7 mv命令
格式:mv [选项] <文件> <目标文件>
功能:移动文件或对其改名。
-i:表示若存在同名文件,则向用户询问是否覆盖。
-f:直接覆盖已有文件,不存在任何提示。
-b :当文件存在是,覆盖前为其创建备份。
1.8 cat命令
格式:cat [选项] [文件]
功能:查看文件内容。
-n:显示空行号 。
1.9 tar命令
格式: tar [选项] [档案名] [文件或目录]
功能:为文件和目录创建档案。利用tar命令,可以爸一大堆的文件和目录全部打包成一个文件,该命令可以反过来使用。
-c:创建新的备份文件。
-C <目录>:切换工作目录,先进入指定目录再执行压缩/解压操作。
-x:从归档文件中提取文件。
-z:通过gzip指令压缩/解压文件,文件名为*.tar.gz。
-f <备份文件>:指定备份文件。
-v:显示命令执行过程。
2.用户操作
2.1 useradd命令
格式:useradd 用户名
功能:创建新用户,该命令只能由root用户使用。
2.2 passwd命令
格式:passwd 用户名
功能:设置或修改指定用户的口令。
2.3 chow命令
格式:chown [选项]
功能:见文件或目录的拥有者改为指定的用户或组,用户可以是用户名或者用户ID,组可以是组名或者组ID,文件时以空格分开的要改变权限的文件列表支持通配符。
-R:表示对目前目录下的所有文件的所有文件与子目录进行相同的拥有者变更。
2.4 chmod命令
格式:chomd [-R] 模式 文件或目录
功能:修改文件或目录的访问权限。
-R:表示递归设置指定目录下的所有文件和目录的权限。
模式为文件或目录的权限表示,有三种表示方法。
- 数字表示。用三个数字表示文件或者目录的权限,第一个表示所有者权限,第二个表示所有者同组用户的权限,第三个表示其他用户的权限。每类用户董雅三类权限:读、写、执行。对应的数字为4、2、1。一个用户的权限数字表示为三类权限数字之和。
- 字符赋值。用字符u表示所有者,g表示与所有者同组用户,o表示其他用户。用字符r、w、x分别表示读、写、执行。用等号“=”来给用户赋值权限。
- 字符加减权限。同上,用加号“+”来给用户加权限,减号“-” 来给用户减权限。
用数字表示
用字符赋值
用字符加减权限
2.5 su命令
格式:su [-] 用户名
功能:见当前操作员的身份切换到指定用户。如果使用选项“-”,则用户切换后使用新用户的环境变量,否则环境变量不变。
个人作业,仅供参考