再见以前说再见 大数据计算框架复习

web 方式查看 hdfs 目录结构的地址是:http://主机名:50070

.
linux下存放公钥信息的是 id_rsa.pub 文件,放在 .ssh 目录下

.
下列可以实现定时任务调度的包括:Crontab、Oozie、Azkaban。
Hive 不可以实现定时任务调度。

.
hadoop配置文件(如:core-site.xml、hdfs-site.xml)在${HADOOP_HOME}/etc/hadoop 目录下

.
Hadoop1.0默认的调度器策略是:先进先出调度器

.
HDFS1.0 默认 Block Size大小是:64 MB

.
HBase 是 Bigtable 的开源实现

.
非关系型数据库:NoSql、Cloudant、MongoDB、redis、HBase
关系型数据库:Oracle、DB2、PostgreSQL、Microsoft SQL Server、Microsoft Access、MySQL、浪潮K-DB 等

.
NoSQL 类型:键值数据库、列族数据库、文档数据库和图形数据库
NoSQL 数据库的特点:灵活的可扩展性、灵活的数据类型、与云计算紧密耦合

.
非关系型数据库兴起原因:

  1. 关系数据库已经无法满足Web2.0的需求。主要表现在以下几个方面:
  • 无法满足海量数据的管理需求
  • 无法满足数据高并发的需求
  • 无法满足高可扩展性和高可用性的需求
  1. “One size fits all”模式很难适用于截然不同的业务场景
  • 关系模型作为统一的数据模型既被用于数据分析,也被用于在线业务。但这两者一个强调高吞吐,一个强调低延时,已经演化出完全不同的架构。用同一套模型来抽象显然是不合适的
  • Hadoop就是针对数据分析
  • MongoDB、Redis等是针对在线业务,两者都抛弃了关系模型
  1. 关系数据库的关键特性包括完善的事务机制和高效的查询机制。但是,关系数据库引以为傲的两个关键特性,到了Web2.0时代却成了鸡肋,主要表现在以下几个方面:
  • Web2.0网站系统通常不要求严格的数据库事务
  • Web2.0并不要求严格的读写实时性
  • Web2.0通常不包含大量复杂的SQL查询(去结构化,存储空间换取更好的查询性能)

.
NoSQL 数据库与关系数据库比较:

  1. 关系数据库优劣:
  • 优势:以完善的关系代数理论作为基础,有严格的标准,支持事务ACID四性,借助索引机制可以实现高效的查询,技术成熟,有专业公司的技术支持
  • 劣势:可扩展性较差,无法较好支持海量数据存储,数据模型过于死板、无法较好支持 Web2.0 应用,事务机制影响了系统的整体性能等。
  1. NoSQL 数据库优劣:
  • 优势:可以支持超大规模数据存储,灵活的数据模型可以很好地支持 Web2.0 应用,具有强大的横向扩展能力等
  • 劣势:缺乏数学理论基础,复杂查询性能不高,大都不能实现事务强一致性,很难实现数据完整性,技术尚不成熟,缺乏专业团队的技术支持,维护较困难等。
  1. 关系数据库和 NoSQL 数据库各有优缺点,彼此无法取代
  • 关系数据库应用场景:电信、银行等领域的关键业务系统,需要保证强事务一致性
  • NoSQL 数据库应用场景:互联网企业、传统企业的非关键业务(比如数据分析)
  1. 采用混合架构
    案例:亚马逊公司就使用不同类型的数据库来支撑它的电子商务应用
  • 对于“购物篮”这种临时性数据,采用键值存储会更加高效
  • 当前的产品和订单信息则适合存放在关系数据库中
  • 大量的历史订单信息则适合保存在类似 MongoDB 的文档数据库中

.
从 NoSQL 到 NewSQL:

  • NewSQL 提供了与 NoSQL 相同的可扩展性,而且仍基于关系模型,还保留了极其成熟的 SQL 作为查询语言,保证了 ACID 事务特性。
  • 简单来讲,NewSQL 就是在传统关系型数据库上集成了 NoSQL 强大的可扩展性。
  • 传统的SQL架构设计基因中是没有分布式的,而 NewSQL 生于云时代,天生就是分布式架构。

.
非结构化数据:视频监控数据
结构化数据:企业ERP数据、财务系统数据、日志数据

.
Client 端上传文件的时候:Client 端将文件切分为 Block,依次上传

.
Hadoop 不支持数据的随机读写。
hbase 支持数据的随机读写。

.
NameNode 负责管理元数据信息 metadata,client 端每次读写请求,它都会从内存中读取或会写入 metadata 信息并反馈给 client 端。

.
MapReduce 的 input split 默认是一个 block。

.
MapReduce 适于 PB 级别以上的海量数据离线处理。

.
链式 MapReduce 计算中,对任意一个 MapReduce 作业,Map 和 Reduce 阶段可以有无限个 Mapper,但 Reducer 只能有一个。

.
MapReduce 计算过程中,相同的 key 默认会被发送到同一个 reduce task 处理。

.
HBase 对于空(NULL)的列,不需要占用存储空间,没有则空不存储

.
HBase 有列和列族。

.
大数据特点(4V):数据量大(Volume)、数据类型繁多(Variety)、处理速度快(Velocity)、价值密度低(Value)。

.
大数据计算模式有哪些,针对什么问题,代表产品:

  1. 批处理计算:针对大规模数据的批量处理。MapReduce、Spark 等
  2. 流计算:针对流数据的实时计算。Storm、S4、Flume、Streams、Puma、DStream、Super Mario、银河流数据处理平台等
  3. 图计算:针对大规模图结构数据的处理。Pregel、GraphX、Giraph、PowerGraph、Hama、GoldenOrb 等
  4. 查询分析计算:大规模数据的存储管理和查询分析。Dremel、Hive、Cassandra、Impala 等

.
大数据的构成:结构化数据、半结构化数据、非结构化数据

.
大数据与云计算、物联网的关系:

  1. 云计算为大数据提供技术基础,大数据为云计算提供用武之地
  2. 物联网为云计算提供应用空间,云计算技术为物联网提供海量数据存储能力
  3. 物联网是大数据的重要来源,大数据技术为物联网数据分析提供支撑

.
名词解释:HDFS,Map/Reduce,Yarn

  1. 分布式文件系统 HDFS(Hadoop Distributed File System)是一个类似于GoogleGFS 的开源的分布式文件系统。它提供了一个可扩展、高可靠、高可用的大规模数据分布式存储管理系统,基于物理上分布在各个数据存储节点的本地 Linux 系统的文件系统,为上层应用程序提供了一个逻辑上成为整体的大规模数据存储文件系统。与 GFS 类似,HDFS 采用多副本(默认为 3 个副本)数据冗余存储机制,并提供了有效的数据出错检测和数据恢复机制,大大提高了数据存储的可靠性。
  2. Map/Reduce:分布式计算模型,完成海量数据离线处理。
  3. Yarn:负责整个集群资源的管理和调度。

.
hadoop 和 yarn 启动后,会包含哪些 java 进程?

  1. Jps
  2. hadoop:SecondaryNameNode、NameNode、DataNode
  3. yarn:NodeManager、ResourceManager

.
简述Hadoop安装步骤?
解压并安装安装包,配置 JDK 环境,设置环境变量,修改关键文件,关闭防火墙,设置免密登录,web 方式查看 hdfs 目录结构检查是否可用

.
Hadoop特性(优势):

  1. 高可靠性:采用多副本冗余存储的方式,即使一个副本发生故障,其他副本还可以对外提供服务。
  2. 高效性:采用分布式存储和分布式处理两大核心技术,高效地处理 PB 级别的数据。
  3. 高可扩展性:高效稳定地运行在廉价的计算机集群上,可以扩展到数以千计的节点。
  4. 高容错性:采用冗余存储方式,自动将失败的任务重新分配。
  5. 成本低:采用廉价的计算机集群,成本低,普通用户也可以用 pc 搭建 Hadoop 运行环境。
  6. 成熟的生态圈:拥有成熟的生态圈,囊括了大数据处理的方方面面。

.
HDFS特点:

  1. 数据冗余,硬件容错
  2. 适合存储大文件,一次写入,多次读取,顺序读写,不适合多用户并发写相同文件。
  3. 适合批量读写,吞吐量高;不适合交互式应用,低延迟很难满足。

.
HDFS数据管理策略:
为了保证数据的容错性和可靠性,HDFS 提供如下管理策略:

  1. 每个数据块 3 个副本,分布在两个机架内的三个节点上。
  2. 心跳检测:DataNode 定期向 NameNode 发送“心跳”信息,汇报自己的“健康“状态。
  3. SecondaryNameNode 定期同步元数据的映像文件(FsImage)和修改日志(Editlog),当名称节点出错时,就可以根据 SecondaryNameNode 中的 FsImage 和 Editlog 数据进行恢复。

.
数据仓库:

  1. 数据仓库是面向主题的、集成的、稳定的,随时间变化的数据集合,用于支持经营管理中决策制定过程。
  2. 数据仓库系统的构成:数据仓库(DW)、仓库管理和分析工具。

.
Hive概述:

  1. 由 Facebook 开源,用于解决海量结构化日志的数据统计问题。现为 Apache 顶级开源项目(http://hive.apache.org)。
  2. 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类 SQL 查询功能。底层支持多种执行引擎(MR / Tez / Spark);
  3. Hive 产生背景:MapReduce 门槛高,开发难度大,周期长;传统 RDBMS 人员的需要。
  4. Hive 优缺点:
    优势:
  • 解决了传统关系数据库在大数据处理上的瓶颈。适合大数据的批量处理。
  • 充分利用集群的 CPU 计算资源、存储资源,实现并行计算。
  • Hive 支持标准 SQL 语法,免去了编写 MR 程序的过程,减少了开发成本。
  • 具有良好的扩展性,拓展功能方便。
    劣势:
  • Hive 的 HQL 表达能力有限:有些复杂运算用 HQL 不易表达。
  • Hive 效率低:Hive 自动生成 MR 作业,通常不够智能;HQL 调优困难,粒度较粗;可控性差。
  • 针对 Hive 运行效率低下的问题,促使人们去寻找一种更快,更具交互性的分析框架。
  • SparkSQL 的出现则有效的提高了 Sql 在 Hadoop 上的分析运行效率。
  1. Hive 和传统数据库的对比:Hive 和 RDBMS 拥有类似的查询语言和数据存储模型。Hive 用 HDFS 存储数据,使用 HQL 语言,执行延迟高,数据处理规模大

.
Hive 运行机制:

  1. 用户通过用户接口连接 Hive,发布 Hive SQL
  2. Hive 解析查询并制定查询计划
  3. Hive 将查询转换成 MapReduce 作业
  4. Hive 在 Hadoop 上执行 MapReduce 作业

.
HBase 概述:

  1. HBase 是一个构建在 HDFS 之上的、分布式的、面向列的开源数据库 。
  2. HBase 是 Google BigTable 的开源实现(hbase.apache.org),它主要用于存储海量数据,提供准实时查询(百毫秒级),用于金融、电商、交通、电信等行业。
  3. HBase 是 Hadoop 生态中的一种分布式列式数据库,旨在提供高可靠性、高性能、可扩展性和可伸缩性的数据存储解决方案。

.
HBase 特点:

  1. 大:一个表可以有上百亿行,上百万列(一般关系型数据库记录上限 5 百万)
  2. 面向列:面向列族的存储和权限控制,列独立检索。
  3. 稀疏:对于为空(NULL)的列,并不占用存储空间,因此,表可以设计的非常稀疏。
  4. 数据多版本:每个单元中的数据可以有多个版本,默认情况下,版本号自动分配,版本号就是单元格插入时的时间戳。
  5. 无模式:每一行都有一个可以排序的主键和任意多的列,列可以根据需要动态增加,同一张表中不同的行可以有截然不同的列。
  6. 数据类型单一:HBase 中的数据都是字符串,没有类型。

.
HBase 与关系数据库对比:

  1. 数据类型:关系数据库采用关系模型,具有丰富的数据类型和存储方式,HBase 则采用了更加简单的数据模型,它把数据存储为未经解释的字符串。
  2. 数据操作:关系数据库中包含了丰富的操作,其中会涉及复杂的多表连接。HBase 操作则不存在复杂的表与表之间的关系,只有简单的插入、查询、删除、清空等,因为 HBase 在设计上就避免了复杂的表和表之间的关系。
  3. 存储模式:关系数据库是基于行模式存储的。HBase 是基于列存储的,每个列族都由几个文件保存,不同列族的文件是分离的。
  4. 数据索引:关系数据库通常可以针对不同列构建复杂的多个索引,以提高数据访问性能。HBase 只有一个索引——行键,通过巧妙的设计,HBase 中的所有访问方法,或者通过行键访问,或者通过行键扫描,从而使得整个系统不会慢下来
  5. 数据维护:在关系数据库中,更新操作会用最新的当前值去替换记录中原来的旧值,旧值被覆盖后就不会存在。而在 HBase 中执行更新操作时,并不会删除数据旧的版本,而是生成一个新的版本,旧有的版本仍然保留
  6. 可伸缩性:关系数据库很难实现横向扩展,纵向扩展的空间也比较有限。相反,HBase 和 BigTable 这些分布式数据库就是为了实现灵活的水平扩展而开发的,能够轻易地通过在集群中增加或者减少硬件数量来实现性能的伸缩

.
HBase 数据模型:

  1. Row Key:行的主键,标识一行数据,也称行键,用来检索记录的主键
  2. HBase 表中数据访问的方式:
  • 通过单个 Row Key 访问
  • 通过 Row Key 的 Range
  • 全表扫描
  1. Row Key 行键可以是任意字符串,最大长度 64 K,一般 10 ~ 100 B,保存为字节数组
  2. 存储时,数据按照 Row Key 字典序排序

.
HBase 读写流程:
读流程:

  1. 客户端向 ZooKeeper 中发送请求
  2. 从 ZooKeeper 中拿到 metadata 的存储节点
  3. 去存储 metadata 的节点获取对应 region 的所在位置
  4. 访问对应的 region 获取数据
  5. 先去 memstore 中查询数据,如果有结果,直接返回
  6. 如果没有查询到结果,去 blockcache 查找数据,如果找到,直接返回
  7. 如果没有找到,去 storefile 中查找数据,并将查询到的结果缓存会 blockcache 中,方便下一次查询
  8. 将结果返回给客户端

注意:blockcache 是缓存,有大小限制,会有淘汰机制,默认将最早的数据淘汰

写流程:

  1. client 向 ZooKeeper 发送请求
  2. 从 ZooKeeper 中拿到 metadata 的存储节点
  3. 去存储 matadata 的节点获取对应 region 所在的位置
  4. 访问对应的 region 写数据
  5. 首先会向 wal(Write-Ahead-Log)中写数据,写成功之后才会存储到 memstore
  6. 当 memstore 中的数据量达到阈值之后,进行溢写,溢写成 storefile
  7. store file 是一个个的小文件,会进行合并(minor,major)
  8. store file 是对 hfile 的封装,hfile 是实际存储再 hdfs 上的数据文件

验证 ZooKeeper 启动是否成功,看有无 QuorumPeerMain 进程。

.
HBase 启动和关闭服务:
启动:

  • 先后启动 zookeeper、hdfs,
  • 再启动 start-hbase.sh

启动后多 2 个进程 HMaser、HRegionServer

关闭:

  • 先 stop-hbase.sh
  • 再 stop-dfs.sh

.
Sqoop 概述:
Sqoop = Sql + Hadoop,是一个基于 Hadoop 与 RDBMS 间的数据传输工具,是Apache 顶级项目。

.
Sqoop 架构:
Sqoop 通过 Map 任务来传输数据,不需要 Reducer。

.
任务调度系统:

  1. 为什么需要任务调度系统:
    一个完整的数据分析系统通常都是由大量任务单元组成,shell 脚本程序,java 程序,mapreduce 程序、hive 脚本等。各任务单元之间存在时间先后及前后依赖关系,为了很好地组织起这样的复杂执行计划,需要一个工作流调度系统来调度执行。
  2. 常见任务调度系统:
  • 简单的任务调度:直接使用 linux 的 crontab 来定义。
  • 复杂的任务调度:开发调度平台或使用现成的开源调度系统,如 Azkaban、Oozie等。

.
可视化概述:

  1. 数据可视化是指将大型数据集中的数据以图形图像形式表示,并利用数据分析和开发工具发现其中未知信息的处理过程 。
  2. 数据可视化技术的基本思想是将数据库中每一个数据项作为单个图元素表示,大量的数据集构成数据图像,同时将数据的各个属性值以多维数据的形式表示,可以从不同的维度观察数据,从而对数据进行更深入的观察和分析

.
可视化工具:

  • 入门级工具:Excel
  • 信息图表工具:Google Chart API、D3、Visual.ly、Tableau、大数据魔镜等。
  • 地图工具:Google Fusion Tables、Modest Maps、Leaflet 等。
  • 时间线工具:Timetoast、Xtimeline 等。
  • 高级分析工具:R、Weka、Gephi 等。

.
ECharts 简介:
ECharts 是一款由百度前端技术部开发的,基于 Javascript 的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表,支持丰富的图表类型,现在是由 Apache 孵化器赞助的 Apache 开源基金会孵化的项目。

.
ECharts 开发环境:
ECharts 图表是嵌入到网页中展现的,我们借助于 JSP 动态网页技术,将数据库中的数据通过 Echarts 展现在网页中。
由于 Centos 中的 Eclipse 运行较慢,开发工作在 Window 下进行,访问的数据库是Centos 下的。

.
MySQL 添加用户:
默认情况下,Mysql 只接受本地客户端的访问,Window 下程序要访问 Mysql,需要授权,我们添加一个 guest 用户,可以远程访问 test 数据库下的所有表。

grant select,insert,update,delete on test.* to guest@“%” identified by “guest”;
identified by “guest”:是设置用户密码的意思

.
Eclipse 下开发 web 项目的步骤有哪些?

  1. 下载 tomcat 解压并集成到 eclipse 中;
  2. 建立 web project,编写页面;
  3. 部署工程,启动服务器,在浏览器中观察页面效果

.
大数据可视化典型案例:

  • 全球黑客活动
  • 互联网地图
  • 编程语言之间的影响力关系图
  • 百度迁徙
  • 世界国家健康与财富之间的关系
  • 3D可视化互联网地图APP

.
Spark 概述:

  1. Spark 简介
  • Spark 最初由美国加州伯克利大学(UCBerkeley)的 AMP 实验室于 2009 年开发,是基于内存计算的大数据并行计算框架,可用于构建大型的、低延迟的数据分析应用程序。
  • 2013 年 Spark 加入 Apache 孵化器项目后发展迅猛,如今已成为 Apache 软件基金会最重要的分布式计算系统开源项目之一。
  • Spark 在 2014 年打破了 Hadoop 保持的基准排序纪录:
    Spark / 206 个节点/ 23 分钟/ 110TB 数据;
    Hadoop / 2000 个节点/ 72 分钟/ 110TB 数据;
    Spark 用十分之一的计算资源,获得了比 Hadoop 快 3 倍的速度。
  1. Spark 特点
  • 运行速度快:使用 DAG 执行引擎以支持循环数据流与内存计算;
  • 容易使用:支持使用 Scala、Java、Python 和 R 语言进行编程,可以通过 Spark Shell 进行交互式编程 ;
  • 通用性:Spark 提供了完整而强大的技术栈,包括 SQL 查询、流式计算、机器学习和图算法组件;
  • 运行模式多样:可运行于独立的集群模式中,可运行于 Hadoop 中,也可运行于Amazon EC2 等云环境中,并且可以访问 HDFS、Cassandra、HBase、Hive 等多种数据源 。
  1. Scala 简介
  • Scala 是 Spark 的主要编程语言,Spark 还支持 Java、Python、R 作为编程语言。
  • Scala 是一门现代的多范式编程语言,运行于 Java 平台(JVM,Java 虚拟机),并兼容现有的 Java 程序;
  • Scala 语法简洁,提供优雅的 API,具备强大的并发性,支持函数式编程,运行速度快,可以更好地支持分布式系统,且能融合到 Hadoop 生态圈中;提供了 REPL(Read-Eval-Print Loop,交互式解释器),提高程序开发效率。
  1. Spark 与 Map / Reduce 对比:
  • Spark 的计算模式也属于 MapReduce,但不局限于 Map 和 Reduce 操作,还提供了多种数据集操作类型,编程模型比 Hadoop MapReduce 更灵活;
  • Spark 提供了内存计算,可将中间结果放到内存中,对于迭代运算效率更高;
  • Spark 基于 DAG(有向无环图)的任务调度执行机制,要优于 Hadoop MapReduce 的迭代执行机制;

.
Spark 生态系统:

  • Spark 的设计遵循“一个软件栈满足不同应用场景”的理念,逐渐形成了一套完整的生态系统;
  • 主要包含 Spark Core、Spark SQL、Spark Streaming、MLLib 和 GraphX 等组件;
    既能够提供内存计算框架,也支持 SQL 即时查询、实时流式计算、机器学习和图计算等;
  • 可以部署在资源管理器 YARN 之上,提供一站式的大数据解决方案;

.
Spark 执行流程:

  1. 基本概念
  • RDD:是 Resillient Distributed Dataset(弹性分布式数据集)的简称,是分布式内存的一个抽象概念,提供了一种高度受限的共享内存模型;
  • DAG:是 Directed Acyclic Graph(有向无环图)的简称,反映 RDD 之间的依赖关系;
  • Executor:是运行在工作节点(WorkerNode)的一个进程,负责运行 Task ;
  • Application:用户编写的 Spark 应用程序;
  • Task:运行在 Executor 上的工作单元 ;
  • Job:一个 Job 包含多个 RDD 及作用于相应 RDD 上的各种操作;
  • Stage:是 Job 的基本调度单位,一个 Job 会分为多组 Task,每组 Task 被称为Stage,或者也被称为 TaskSet,代表了一组关联的、相互之间没有 Shuffle 依赖关系的任务组成的任务集;
  1. 执行流程
    1、首先为应用构建起基本的运行环境,即由 Driver 创建一个 SparkContext,进行资源的申请、任务的分配和监控
    2、资源管理器为 Executor 分配资源,并启动 Executor 进程
    3、SparkContext 根据 RDD 的依赖关系构建 DAG 图,DAG 图提交给 DAGScheduler 解析成 Stage,然后把一个个 TaskSet 提交给底层调度器 TaskScheduler 处理;Executor向SparkContext 申请 Task,Task Scheduler 将 Task 发放给 Executor 运行,并提供应用程序代码
    4、Task 在 Executor 上运行,把执行结果反馈给 TaskScheduler,然后反馈给DAGScheduler,运行完毕后写入数据并释放所有资源

.
Spark 部署和应用方式:
Spark 部署模式主要有四种:

  • Local 模式(单机模式)
  • Standalone 模式(使用 Spark 自带的简单集群管理器)
  • YARN 模式(使用 YARN 作为集群管理器)
  • Mesos 模式(使用 Mesos 作为集群管理器)。

不同的计算框架统一运行在 YARN 中,可以带来如下好处:

  1. 计算资源按需伸缩
  2. 不用负载应用混搭,集群利用率高
  3. 共享底层存储,避免数据跨集群迁移

.
流计算应用:

  • 流计算是针对流数据的实时计算,可以应用在多种场景中,如 Web 服务、机器翻译、广告投放、自然语言处理、气候模拟预测等。
  • 如百度、淘宝等大型网站中,每天都会产生大量流数据,包括用户的搜索内容、用户的浏览记录等数据。采用流计算进行实时数据分析,可以了解每个时刻的流量变化情况,甚至可以分析用户的实时浏览轨迹,从而进行实时个性化内容推荐。
  • 但是,并不是每个应用场景都需要用到流计算的。流计算适合于需要处理持续到达的流数据、对数据处理有较高实时性要求的场景。

批量计算允许用充裕的时间处理静态数据,如 Hadoop、Hive 等。
流计算则需要及时处理数据,应达到如下要求:

  1. 高性能:处理大数据的基本要求,如每秒处理几十万条数据;
  2. 海量式:支持 TB 级甚至是 PB 级的数据规模;
  3. 实时性:保证较低的延迟时间,达到秒级别,甚至是毫秒级别;
  4. 分布式:支持大数据的基本架构,必须能够平滑扩展;
  5. 易用性:能够快速进行开发和部署;
  6. 可靠性:能可靠地处理流数据;

.
常用流计算框架:

  • 现今常用的流计算框架有三个:Storm、Spark Streaming 和 Flink,它们都是开源的分布式系统,具有低延迟、可扩展和容错性诸多优点,允许你在运行数据流代码时,将任务分配到一系列具有容错能力的计算机上并行运行,都提供了简单的 API 来简化底层实现的复杂程度。
  • Flume 是 Cloudera 提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume 支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume 提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。
    Flume 运行的核心是 Agent。Flume 以 Agent 为最小的独立运行单位,一个 Agent 就是一个 JVM(Java Virtual Machine),它是一个完整的数据采集工具,包含三个核心组件,分别是数据源(Source)、数据通道(Channel)和数据槽(Sink)。通过这些组件,“事件”可以从一个地方流向另一个地方。
  • Kafka 是由 LinkedIn 公司开发的一种高吞吐量的分布式消息订阅分发系统,用户通过 Kafka 系统可以发布大量的消息,也能实时订阅和消费消息。

.
Kafka:

  1. Kafka 特性:
    1、高吞吐量、低延迟:Kafka 每秒可以处理几十万条消息,它的延迟最低只有几毫秒;
    2、可扩展性:Kafka 集群具有良好的可扩展性;
    3、持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份,防止数据丢失;
    3、容错性:允许集群中节点失败(若副本数量为 n,则允许 n-1 个节点失败);
    4、高并发:支持数千个客户端同时读写。使用消息队列能够使关键组件顶住突发的访问压力,而不会因为突发的超负荷的请求而完全崩溃;
    5、顺序保证:在大多使用场景下,数据处理的顺序都很重要。大部分消息队列本来就是排序的,并且能保证数据会按照特定的顺序来处理。Kafka 保证一个分区内的消息的有序性;
    6、异步通信:很多时候,用户不想也不需要立即处理消息。消息队列提供了异步处理机制,允许用户把一个消息放入队列,但并不立即处理它。想向队列中放入多少消息就放多少,然后在需要的时候再去处理它们。
  2. Kafka应用场景:
    1、日志收集:一个公司可以用 Kafka 收集各种日志,这些日志被 Kafka 收集以后,可以通过 Kafka 的统一接口服务开放给各种消费者,例如 Hadoop、HBase、Solr 等;
    2、消息系统:可以对生产者和消费者实现解耦,并可以缓存消息;
    3、用户活动跟踪:Kafka 经常被用来记录 Web 用户或者 APP 用户的各种活动,如浏览网页、搜索、点击等活动,这些活动信息被各个服务器发布到 Kafka 的主题(Topic)中,然后订阅者通过订阅这些主题来做实时的监控分析,或者装载到Hadoop、数据仓库中做离线分析和挖掘;
    4、运营指标:Kafka 也经常用来记录运营监控数据,包括收集各种分布式应用的数据,生产环节各种操作的集中反馈,比如报警和报告;
    5、流式处理:Kafka 实时采集的数据可以传递给流处理框架(比如 Spark Streaming、Storm、Flink)进行实时处理。
  3. Kafka 消息传递模式
    Kafka 采用消息发布、订阅模式,消息被持久化到一个主题(topic)中,消费者可以订阅一个或多个主题,消费者可以消费该主题中所有的数据,同一条数据可以被多个消费者消费,数据被消费后不会立马删除。在发布订阅消息系统中,消息的生产者称为“发布者”,消费者称为“订阅者”。
  4. 相关概念
  • Broker:Kafka 集群包含一个或多个服务器,这些服务器被称为“Broker”。
  • Topic:每条发布到 Kafka 集群的消息都有一个类别,这个类别被称为“Topic(主题)”。物理上不同 Topic 的消息分开存储,逻辑上一个 Topic 的消息虽然保存于一个或多个 Broker 上,但用户只需指定消息的 Topic,即可生产或消费数据,而不必关心数据存于何处。
  • Partition:是物理上的概念,每个 Topic 包含一个或多个 Partition。
  • Producer:负责发布消息到 Kafka Broker。
  • Consumer:消息消费者,向 Kafka Broker 读取消息的客户端。
  • Consumer Group:每个 Consumer 属于一个特定的 Consumer Group,可为每个 Consumer 指定 Group Name,若不指定 Group Name,则属于默认的 Group。同一个 Topic 的一条消息只能被同一个 Consumer Group 内的一个 Consumer 消费,但多个 Consumer Group 可同时消费这一消息。

一个典型的 Kafka 集群中包含若干 Producer、若干 Broker、若干 Consumer 以及一个 Zookeeper 集群。Kafka 通过 Zookeeper 管理集群配置。Producer 使用 push 模式将消息发布到 Broker,Consumer 使用 pull 模式从 Broker 订阅并消费消息。

.
Kettle简介

Kettle 是纯 java 开发,开源的 ETL 工具,用于数据库间的数据迁移 。可以在 Linux、Windows、Unix 中运行。有图形界面,也有命令脚本还可以二次开发。作为一个端对端的数据集成平台,可以对多种数据源进行抽取(Extraction)、加载(Loading)、数据落湖(Data Lake Injection)、对数据进行各种清洗(Cleasing)、转换(Transformation)、混合(Blending),并支持多维联机分析处理(OLAP)和数据挖掘(Data mining)

猜你喜欢

转载自blog.csdn.net/m0_64799907/article/details/131332971
今日推荐