大数据学习内容:
1.存储框架
HDFS —— 分布式文件系统
HBase —— 分布式数据库:Nosql,列式存储
Kafka —— 分布式消息中间件/消息队列
1.1 HDFS
-
什么是HDFS?
HDFS是Hadoop Distribute File System 的简称,意为:Hadoop分布式文件系统,是Hadoop核心组件之一,作为最底层的分布式存储服务而存在。 1.易于扩展的分布式文件系统 2.运行在大量普通廉价机器上提供容错机制 3.为大量用户提供性能不错的存取服务
-
HDFS基本组件
HDFS使用Master和Slave结构对集群进行管理。一般一个HDFS集群只有一个Namenode和一定数目的Datenode组成。Namenode是HDFS集群主节点,Datenode是HDFS集群从节点,两种角色各司其职,共同协调完成分布式的文件存储服务。 1.Namenode是管理者:负责管理,管理集群各个结点 2.Datenode是工作则:负责工作,周期向Namenode汇报,进行读写数据 3.secondarynamenode:namenode的助理,帮助加载元数据,紧急情况下可以帮助恢复数据
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9itBG0JK-1620457106022)(001.png)]
-
HDFS 分块存储
HDFS将所有的文件全部抽象成为block块进行存储,不管文件大小,全部都是以block块的统一大小进行存储,方便我们的分布式文件系统对文件的管理 所有文件都是以block块的方式存放在HDFS文件系统中,在Hadoop1中,文件的block块默认大小128M,在Hadoop2中block块默认的大小是256M,block块的大小可以通过hsdf-site.xml当中的配置文件进行指定
<property> <name>dfs.block.size</name> <value>块大小 以字节为单位</value> <property>
1.2 Hbase
-
什么是HBase
HBase是一种构建在HDFS之上的分布式、面向列的存储系统 需要实时读写、随机访问超大规模数据集,使用HBse HBse通过线性方式从下到上增加结点来进行拓展。 HBse不是关系型数据库,也不支持SQL,但是它有自己的特长,这是RDBMS不能处理的,HBse巧妙的将大而稀的表放在商用的服务器集群上。
-
HBase与Google Bigtable
HBase是Google Gigtable的开源实现,与Google Bigtable利用GFS作为其文件存储系统类似, HBase是利用Hadoop HDFS作为其文件存储系统; Google运行MapReduce来处理Bigtable中的海量数据,HBse同样利用Hadoop MapReduce来处理HBase中的海量数据; Google Bigtable利用Chubby作为协同服务,HBase利用Zookeeper作为对应。
-
HBase的特点
1.大,一个表可以有上亿行,上百万列 2.面向列,面向列表的存储和权限控制,列独立检索。 3.稀疏,对于为空的列,并不占用存储空间,因此,表可以设计的非常稀疏 4.无模式,每一行都有一个可以排序的主键和任意多的列,列可以根据需要动态增加,同一张表中不同的行可以有截然不同的列。 5.数据多版本,每个单元中的数据可以有多个版本,默认情况下,版本号自动分配,版本号就是单元格插入时的时间戳。 6.数据类型单一,HBase中的数据都是字符串,没有类型
-
HBase的高并发和实时处理数据
Hadoop是一个高容错、高延时的分布式文件系统和高并发的批处理系统,不适用与提供实时计算。 HBase是可以提供那个实时计算的分布式数据库,数据被报错在HDFS分布式文件系统上,由HDFS保证高容错性,但是在生产环境中,HBase是如何基于Hadoop提供实时性呢? HBase上的数据是以StoreFile二进制流的形式存储在HDFS上的block块中。但是HDFS并不知道hbase存的什么,它之上把存储文件是二进制文件。 也就是说,HBase的存储数据对于HDFS文件系统是透明的。
1.3Kafka
-
什么是Kafka
Kafka是一个分布式、分区的、多副本的,多订阅者的消息发布订阅系统
-
Kafka的使用场景
应用耦合、异步处理、限流削峰、消息驱动
-
Kafka的优缺点
优点: 1.可靠性(分布式-分区-副本) 2.拓展性(可伸缩) 3.性能高(数据读写) 4.耐用性强(数据持久化) 5.时效性强 缺点: 1.数据批量发送,数据并非真正的实时 2.仅支持统一分区内消息有序,无法实现全局消息有序 3.有可能消息重复消费 4.依赖zookeeper进行元数据管理
2.运算框架
Mapreduce-Hadoop的分布式运算框架:批式计算
Spark —— spark批式计算/准实时计算:秒,100倍
Strom —— 全实时,准确毫秒
Flink —— 批/实时
2.1Mapreduce
-
什么是Maprduce
Maprduce是一个分布式运算程序的编程框架,是用户开发“基于Hadoop的数据分析应用”的核心框架。 Maprduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个Hadoop集群上。
-
Hadoop四大组件
HDFS:分布式存储系统 MapRduce:分布式计算系统 YARN:Hadoop的资源调度系统 Common:以上三大组件的底层支撑组件,主要提供基础工具包和RPC框架
-
为什么需要MapRduce?
1.海量数据在单机上处理因为硬件资源限制,无法胜任 2.一旦将单机版程序拓展到集群来分布式运行,将极大增加程序的复杂程度和开发难度 3.引入MapRduce框架后,开发人员可以将绝大部分的工作集中在业务逻辑的开发上,而将分布式计算中的复杂性交给框架进行处理 4.提高开发效率,减轻开发者的负担
-
MapRduce的优缺点
优点: 1.易于编程 2.良好的拓展性 3.高容错性 4.适合PB级别以上的大数据的分布式离线批处理 缺点: 1.难以实时计算(MapRduce处理的是在本地磁盘上的离线数据) 2.不能流式计算(MapRduce设计处理的数据源是静态的) 3.难以DAG计算MapRduce这些并行计算大都是基于非循环的数据流模型,也就是说,一次计算过程中,不同的结点之间保持高度并行,这样的数据流模型使得那些需要反复使用一个特定数据集的迭代算法无法高效的运行
2.2 Spark
-
什么是Spark
Apache Spark是一个轻量级的内存集群计算平台,通过不同的组件来支撑批、流和交互式用例 Apache Spark是一个开源和兼容Hadoop的集群计算平台 Spark相对于Hadoop而言: 1.Spark的速度更快; 2.Spark丰富的API带来更强大的易用性 3.Spark不单单支持传统批处理应用,更支持交互式查询、流式计算、机器学习、图计算等应用
-
Spark的5大优势
1.更高的性能,因为数据被加载到集群主机的分布式内存中。数据可以被快速的转换迭代,并缓存用以后的频繁访问需求。很多对Spark含兴趣的同志都听过这样一句话-在数据全部加载到内存的情况下,Spark可以比Hadoop快100倍,在内存不够存放所有数据的情况下快Hadoop 10倍。 2.通过建立在Java、Scala、python、SQL的标准API以方便各行业使用,同时还含有大量开箱即用的机器学习库。 3.与现有Hadoop v1(SIMR)和2.x(YARN)生态兼容,因此急吼吼可以进行无缝迁移 4.方便下载和安装。方便的shell可以对API进行交互式的学习。 5.借助高等级的架构提高生产力,从而可以将精力放到计算上。 同时,Apache Spark由Scala实现,代码非常简洁
2.3Strom
-
什么是Strom?
这是一个分布式、容错的实时计算系统。 Strom为分布式实时计算提供了一组通用原语,可被用于“流处理”之中,实时处理消息并更新数据库。 Strom可用于“连续计算”,对数据流做连续查询,在计算时就将结果以流的形式输出给用户。 Strom可以方便的在一个计算机集群中编写与拓展复杂的实时计算,Strom之于实时处理,就好比Hadoop之于批处理。Strom保证每个消息都会得到处理,而且它很快-在一个小集群中,每秒可以处理数以百万计的消息 更方便的是可以使用任意编程语言开发。
-
Strom的特点
1.简单的编程模型 2.可以使用任何编程语言 3.容错性 4.水平扩展 5.可靠的消息处理 6.快速 7.本地模式
3.辅助框架
Flume —— 日志采集
Sqoop —— 数据迁移
Canal —— 数据迁移:MySQL/mariaDB
Hive —— 数据仓库工具
Elastic Search —— 分布式检索,全文检索
Presto —— 数据分析引擎
clickhouse —— 分布式向量存储引擎
...