时间:2023-08-29 16:30:07 浏览:53
相信很多学java的同学都有转大数据或者学大数据的想法,但是在网上看到大数据的技术栈,就看了一下,比如hadoop,hdfs,mapreduce,hive,卡夫卡,zookeeper,hbase,sqoop,flume,spark,storm,flink等等。
童鞋可能突然慌了,想学java的有ssm,跳羚,春云,mysql等。台词很清楚,所以学起来相对简单,但是大数据就不一样了。技术栈太多,刚开始可能会被吓到外面。今天,博主们把大数据技术栈和java技术栈进行对比,告诉你这些大数据技术栈是为了什么。
架构图
在我们开始解释之前,让我们看一下下图:
数据连接器模块
我们按照图的顺序逐一介绍。第一,sqoop(发音:skup)是一个开源工具,主要用于hadoop(hive)和传统数据库(mysql、postgresql、……)之间的数据传输,可以从一个关系型数据库(比如mysql、oracle、postgres等)导入数据。)到hadoop hdfs
如果非要比较功能的话,很像阿里的canal组件,用来同步数据。
水道
水槽是一个高度可用、可靠和分布式的系统,用于收集、聚合和传输cloudera提供的大量日志。水槽支持定制日志系统中的各种数据发送器,用于收集数据;同时,flume提供了简单处理数据和到达各种数据接收者(可定制)的能力。
水槽的功能类似于elk(日志实时检索系统)中的logstash,用于传输和处理日志数据。
卡夫卡
卡夫卡是一个高吞吐量的分布式发布订阅消息系统,可以处理网站中消费者的所有动作流数据。
说白了就是一个mq消息传递系统,和java常用的rabbitmq、rocketmq一样,只是侧重点不同。卡夫卡专注于高吞吐量,能够处理海量数据。
分布式文件系统
hadoop分布式文件系统(hdfs)是指设计为在商用硬件上运行的分布式文件系统。它与现有的分布式文件系统有许多共同之处。但同时也明显不同于其他分布式文件系统。hdfs是一个高容错系统,适合部署在廉价的机器上。hdfs可以提供高吞吐量的数据访问,非常适合大规模数据集。
像java这样的项目,不可避免的会涉及到文件上传和下载。此时,您要么自己构建分布式文件系统,要么使用第三方。一般来说,gfs、hdfs、lustre、ceph、gridfs、mogilefs、tfs、fastdfs等。如果用第三方,一般会用七牛云,腾讯云oss对象存储,阿里巴巴云oss对象存储。
储备
hive是基于hadoop的数据仓库工具,用于数据的提取、转换和加载。它是一种能够存储、查询和分析hadoop中存储的大规模数据的机制。hive数据仓库工具可以将结构化数据文件映射成数据库表,提供sql查询功能,将sql语句转换成mapreduce任务执行。
与java相比,有点类似于mysql(不太准确),它不仅可以存储表结构数据,还可以通过sql查询这些数据,但不能修改,只能离线操作。
数据库
hadoop数据库是一个高度可靠、高性能、面向列和可扩展的分布式存储系统。通过使用hbase技术,可以在廉价的pc服务器上构建大规模的结构化存储集群。
糖化血红蛋白实际上是一种nosql,类似于java中常用的redis,只是它们的底层实现不同。
动物园管理员
zookeeper是一个分布式、开源的分布式应用协调服务,是google chubby的开源实现,是hadoop和hbase的重要组成部分。它是为分布式应用提供一致服务的软件,功能包括配置维护、域名服务、分布式同步、群组服务等。
zookeer在java里也很有名,基于dubbo的注册中心一般都是用zookeer实现的。类似的有:尤里卡、执政官等等,都是著名的微服注册中心。
大数据
hadoop是apache基金会开发的分布式系统基础设施。用户可以开发分布式程序,而不知道分布式的底层细节。充分利用集群的力量进行高速计算和存储。hadoop实现了hadoop分布式文件系统(简称hdfs)。
hdfs具有高容错性的特点,设计用于低成本硬件。而且它提供了访问应用数据的高吞吐量,适合大数据集的应用。
hdfs放宽)posix的要求,并可以流式访问文件系统中的数据。hadoop框架的核心设计是hdfs和mapreduce。hdfs为海量数据提供存储,而mapreduce为海量数据提供计算
从java的角度来看,hadoop和spring cloud有些类似。它们不仅仅是一种特定的技术,而是一个生态圈。hadoop包括hive、mapreduce、hdfs等。所以不要把hadoop仅仅当作一种单一的技术。
数据处理技术
mapreduce、spark、storm/flink都是用来处理数据的,比如数据清理、计算、统计等等。
数据处理
mapreduce是一种大数据并行处理的计算模型、框架和平台,隐含以下三层含义:
mapreduce是一个基于集群的高性能并行计算平台(集群基础设施)。它允许市场上常见的商用服务器形成一个具有数十、数百到数千个节点的分布式并行计算集群。
mapreduce是一个用于并行计算和运行的软件框架。它提供了一个庞大但设计良好的并行计算软件框架,可以自动完成计算任务的并行处理,自动划分计算数据和计算任务,在集群节点上自动分配和执行任务,收集计算结果,并将并行计算中涉及的数据分布式存储、数据通信、容错处理等许多系统底层的复杂细节移交给系统,大大减轻了软件开发人员的负担。
mapreduce是一种并行编程模型方法。借助函数式编程语言lisp的设计思想,提供了一种简单方便的并行编程方法。它使用map和reduce函数对基本并行计算任务进行编程,并提供抽象操作和并行编程接口,从而简单方便地完成大规模数据编程和计算处理
技术的概念一般比较严谨复杂。这里mapreduce缩写为mr,主要功能是处理线下大数据。它可以通过分析大量离线数据来计算我们需要的结果。
火花
apache spark是一款专为大规模数据处理设计的快速通用计算引擎。spark是一个类似hadoop mapreduce的通用并行框架,由加州大学伯克利分校amp实验室开放。spark具有hadoop mapreduce的优势。然而,与mapreduce不同,——job的中间输出结果可以保存在内存中,因此不再需要读写hdfs。因此spark可以更好的应用到需要迭代的mapreduce算法中,比如数据挖掘、机器学习等。
spark是一个类似hadoop的开源集群计算环境,但两者有一些区别。这些有用的差异使spark在某些工作负载中表现更好。换句话说,spark启用了内存分布式数据集,这不仅可以提供交互式查询,还可以优化迭代工作负载。
从概念上可以看出,spark不仅仅是一种技术,而是类似于hadoop,有一个成熟的生态系统,比如spark sql和spark streaming,类似于hadoop中的hive和mr。目前spark广泛用于处理海量数据,因为它既能实现离线数据分析,又能实现实时数据分析。
storm/flink
apache flink是apache software foundation开发的开源流处理框架,其核心是用java和scala编写的分布式流数据流引擎。flink以并行和流水线方式执行任意流数据程序,flink的流水线运行时系统可以执行批处理和流处理程序。另外,flink的运行时本身也支持迭代算法的执行(storm的功能和上面类似,这里就不啰嗦了)。
spark streaming是一个实时数据处理框架。为什么需要storm/flink?因为实时和实时是有时间差的,看下图就能看出两者的区别。
相关文章
怀孕周期
备孕分娩婴儿早教
猜你喜欢