大数据开发的总体架构
很多小伙伴在学习了多年大数据后,最后不得不感慨:“大数据的知识太繁杂了,我已经被淹没在大数据的海洋里了!”确实是的,在大数据学习的过程中,随着学习的深入,越来越多的新名词和新框架让学习者有种欲哭无泪的感觉,那么,这篇博文就对大数据开发的一个总体架构做一个介绍吧,让大家学习过程中,不至于迷失方向。先上一张图:
好了,现在来大概说明一下:
(1)数据来源层
在大数据领域,数据的来源往往是关系型数据库、日志文件和其他非结构化数据等。要想对这些大量的数据进行离线或实时分析,需要使用数据传输工具将其导入Hadoop平台或其他大数据集群中。
(2)数据传输层
数据传输工具常用的有Flume、Sqoop、Kafka。Flume是一个日志收集系统,用于将大量日志数据从许多不同的源进行收集、聚合,最终移动到一个集中的数据中心进行存储;Sqoop主要用于将数据在关系型数据库和Hadoop平台之间进行相互转移;Kafka是一个发布与订阅消息系统,它可以实时处理大量消息数据以满足各种需求,相当于数据中转站。
(3)数据存储层
数据可以存储于分布式文件系统HDFS中,也可以存储于分布式数据库HBase中,而HBase的底层实际上还是将数据存储于HDFS中。此外,为了满足对大量数据的快速检索与统计,可以使用Elasticsearch作为全文检索引擎。
(4)资源管理层
YARN是大数据开发中常用的资源管理器,它是一个通用资源(内存、CPU)管理系统,不仅可以集成于Hadoop中,也可以集成于Spark等其他大数据框架中。
(5)数据计算层
MapReduce是Hadoop的核心组成,可以结合Hive通过SQL的方式进行数据的离线计算,当然也可以单独编写MapReduce应用程序进行计算;Storm用于进行数据的实时计算;而Spark既可以做离线计算(Spark SQL),又可以做实时计算(Spark Streaming),它们底层都使用的是Spark的核心(Spark Core)。
(6)任务调度层
Oozie是一个用于Hadoop平台的工作流调度引擎。若任务不复杂,则可以使用Linux系统自带的Crontab定时任务进行调度。(7)业务模型层
对大量数据的处理结果,最终需要通过可视化的方式进行展示,可以使用Java、PHP等处理业务逻辑,查询结果数据库,最终结合Echarts等前端可视化框架展示处理结果。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人