企业数据湖和Lambda架构原理——实践技术组件、各模块涉及的技术框架(一)

企业数据湖和Lambda架构原理——实践技术组件、各模块涉及的技术框架(一)(间断持续更新…)

目录

  • 数据湖概览
  • Lambda架构:一种数据湖的实现模式
  • 数据湖中Lambda中的应用
  • 数据获取层
    1. 批数据获取:Apache Sqoop
    2. 流数据获取:Apache Flume
  • 消息层
    1. Kafaka消息中间件
  • 数据处理层
    1. Apache Flink
  • 数据存储
    1. Apache Hadoop
  • 全文索引
    1. Elasticsearch

一、数据湖概览

  • 数据湖是如何工作的
数据获取
数据处理
数据分析
数据存储
数据获取数据处理数据分析数据存储
数据可能以不同的形式存在,可能需要不同的机制来获取他们;尽量获取最原始的数据,数据在获取过程中成为数据湖的一部分获取到的数据需要进一步进行处理,从而得到有用的信息,如商品推荐、业务洞察力等,此时可能会用到机器学习技术;数据可能会被转换为等价的模型,但同时会保留原始数据数据会进一步被分析,以便按需访问;数据分析需求受信息访问模式驱动数据分析结果需要存储在合适的数据存储系统中;数据湖中的数据存储系统的选择依赖具体的数据服务需求
  • 数据湖和数据仓库的区别
数据湖数据仓库
能处理所有类型的数据,如结构化,半结构化,非结构化等,数据的类型依赖于数据源系统的原始数据格式只能对结构化数据进行处理,而且这些数据必须与数据仓库定义的数据模型吻合
拥有足够强的计算能力用于处理和分析所有类型的数据,分析后的数据会被存储起来供用户使用处理结构化数据,将他们或者转化为多维数据,报表,以满足后续的高级报表和数据分析需求
数据湖通常包含更多的相关信息,这些信息被访问的概率很高,并且能够为企业挖掘新的运营需求通常用于存储和维护长期数据,因此数据可以按需访问
  • Lambda架构的数据湖
  1. 数据摄取层——摄取数据用于处理和存储

将数据快速的传递到Lambda架构的工作模型中,负责消费消息层中的数据,对消息做适当的转换,从中提取所期望的信息,然后交给Lambda处理。

  1. 批处理层——批量处理已提取数据

对已提取数据进行批量处理,以确保系统资源的最佳利用,同时也可将长时间运行的操作应用于数据,以确保输出数据的高质量。

  1. 快速处理层——近实时处理数据

对从数据摄取层获取到的数据执行近实时处理。

  1. 数据存储层——存储所有数据

定义整个解决方案对传入时间/数据流的反应。

  1. 服务层——数据交付于导出

数据可以以多种方式在系统间传递,其中最重要的一种方式就是服务(service),在数据湖背景中,这些服务被称为数据服务,因此他们的主要功能是传输数据;另外一种传输数据的方式是数据导出,数据最终可导出为多种格式,如消息、文件、数据备份等,导出的数据供其他系统消费。

  1. 数据获取层——从源系统获取数据

将数据转换为在数据湖中可进行后续处理的消息,因此获取层必须能适应多种数据模式,同时必须支持快速的连接机制,无缝推送所有转换过的数据消息到数据湖中去。

系统可靠性/故障恢复
数据
connector推送/拉取
圆角长方形
数据转换
消息发布者
本地缓冲
消息层
  1. 消息层——数据传输的保障

即消息中间件,主要作用是让数据湖个组件之间解耦,同时保证消息传递的安全性。

  1. Lambda层(绝大部分大数据架构大同小异)

批处理层;
快速处理层;
服务层;
数据存储层;
关系数据存储;
分布式数据存储;

二、Lambda架构

  • Lambda架构的原则
  1. 容错原则:即处理硬件错误,软件错误或人工引起的错误的能力
  2. 不可变数据原则:从各个源系统导入的数据应该按他们的原始数据格式来存储
  3. 重新计算原则:数据湖中的原始数据一直处于可访问的状态,始终可以通过计算来满足新的需求
  • Lambda架构完整的工作原理
Lambda架构作用及特点
批处理层存储不可变的数据,数据量不断增长,随时重新计算视图
快速处理层不间断的数据流;存储可变的数据;数据量较小;视图只能在指定的时间段内存在并且没过一段时间就会被丢弃
服务层负责索引并确保对外暴露的批处理视图工作良好;对外暴露由快速处理层创建的实时视图;将批处理层和快速处理层的视图合并统一
  • 架构优势
  1. 数据以原始格式存储
  2. 原则中包括了重新计算原则,有助于纠正错误,不会有太大的额外开销
  3. 将不同的职能划分重新定义为明确、边界清晰的功能模块层
  4. 可插拔

三、Lambda的应用简介

  1. Hadoop发行版本

Hortonworks:提升了Hadoop存储层的性能;增强了Hadoop平台的可用性。
Cloudera:提供特定的集群管理功能。
MapR:独特的MapRFS功能;集成了多种文件系统,包括NFS;提供对多节点NFS直接访问的支持。

  1. 批处理层和数据处理

HDFS分布式数据存储系统
在这里插入图片描述

NameNode服务器:负责调度和追踪散布在集群中的job。
SecondaryNameNode服务:记录Hadoop集群的内存快照,追踪预写式日志及事务属性,备份集群状态;注意,不是NameNode的备份节点,只是用来记录快照。
YARN:整个Hadoop集群的资源管理者,主要作用为单点故障恢复,任务重启。
数据存储结点DataNode:数据默认备份共3份。

Flume用于数据获取
在这里插入图片描述

Source用于连接数据源,其中有很多内置的connector。
Channel用于事件路由,可以理解为一个消息中间件,暂存事件/消息或发送给Sink。
Sink作为事件目的地,代表目标系统的connector。

Spark Streaming用于实时处理
SparkStreaming
在这里插入图片描述
DStream是一个基本的抽象概念,表示一个连续的流,要么从远端接入数据流,要么通过转换输入流生成已处理数据流;由一串连续的RDD表示,这是Spark对不可变的分布式数据集的抽象,数据流中的每个RDD都包含特定间隔的数据。
DataFrame代表数据处理操作被允许的时间窗口,被处理的数据集也是基于时间窗口。简单而言就是执行SQL。

Flink克服了Spark Streaming的限制
在这里插入图片描述
支持基于时间、计数和会话的window

Flume、Spark Streaming和Flink的关键区别

FlumeSpark StreamingFlink
对于数据获取而言,Flume主要充当事件生产者的角色。通过实现自定义的Sink,Flume可用于流式数据处理提供 流处理能力作为Hadoop的一部分,并提供跨节点拓扑的流式处理与运行在集群之上,基于内存的近实时处理框架
通过增加Sink提供可扩展性,配置是静态的,如要修改,需要重启支持对基于集群节点的拓扑的动态扩展支持基于集群节点的处理拓扑的动态扩展
数据处理以事件为单位,为实时场景提供了单次处理和批处理支持以微批处理方式处理数据,会导致一定的延时,对时间要求高的应用达不到预期的效果近实时方式处理数据
对每个事件至少处理一次,有可能重复处理支持最多处理一次,也支持至少处理一次支持只处理一次
  1. 服务层

从数据角度来看,服务层由那些能立即满足用户需要的数据组成。所以这些数据一般都是经过处理之后的有价值的数据。
从客户角度来看,处理过的数据有可能存在于物化视图、数据服务当中,或者经服务导出,或者由报表直接展示。

可构建数据湖的数据服务层的技术

数据服务层组件技术
关系数据库PostgreSQL
大数据表、视图Hive、Impala
索引Elasticsearch
NoSQLHBase、Couchbase
数据服务Spring Boot Service
数据导出Hadoop MapReduce、Sqoop、Pig Scripts
数据发布JMS、Kafka

四、Sqoop

五、Flume

六、Kafka

七、Flink

八、Hadoop

九、Elasticsearch

十、技术整合

整个数据湖已经实现的部分组件,注意:是实现的部分组件,不是绝对的完整的数据湖!
【图片】
数据湖中各组件的作用

HDFS分布式文件存储
MapReduce批处理引擎
YARN资源调度管理
HBase列式键值对Nosql数据库,运行在HDFS之上
Hive查询引擎,提供了Hql类似于sql的对HDFS中的数据进行查询的接口
Impala快速查询引擎,对HDFS 中数据进行查询分析
Sqoop数据获取
Flume数据获取及流式事件数据摄取
Kafka可扩展分布式消息引擎
Flink实时处理引擎,也支持批处理
Spark快速批处理数据引擎,以微批处理的方式进行实时处理
Elasticsearch基于Lucene的快速分布式索引引擎,也可作为基于文本的NoSQL数据存储

数据湖部分技术导览图:(正扩展…)(待完善…)

数据湖
数据获取层
批处理层
快速处理层
数据存储层
服务层
消息层
基础层
Sqoop
Flume
Hive
Spark
Elasticsearch
Spark
Flink
Storm
HDFS
Hbase
Redis
Elasticsearch
Kafka
Zookeeper
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值