开发者社区> 脚丫先生> 正文

一文看懂大数据的技术生态

简介: 大数据技术生态,就是这么容易懂!
+关注继续查看

大家好,我是脚丫先生 (o^^o)

大数据时代这个词被提出已经10年有余,特别是最近几年风风火火的贵州贵阳。

乘着时代的风口和国家的有力支撑,已被称之为“中国数谷”。

大数据的力量如此巨大,难免让人好奇不已。那么到底什么是大数据呢?

大数据的概念、大数据技术、大数据平台,一条龙服务,尽在下文!!!

一、大数据

大数据(Big Data)本身是个很宽泛的概念,根据字面理解,可知是很大很大的数据。

数据大到了极限,造成传统技术已经无法处理。

专业术语:大数据指的是传统数据处理应用软件,不足以处理(存储和计算)它们,大而复杂的数据集。

可以理解 为一种规模大到在获取、存储、管理、分析方面大大超出了传统数据库,软件工具能力范围的数据集合,具有海量的数据规模、快速的数据流转、多样的数据类型和价值密度低。

总而言之,大数据就是指数据很大,传统技术无法高效的处理该数据。

四大特征大量,多样,高速,低价值密度。

(1) 大量:数据容量大。从TB级别,跃升到PB级别。
海量的数据,可谓是数据的海洋。


(2) 多样:数据类型的多样性,包括文本,图片,视频,音频。
相对于以往便于存储的以文本为主的结构化数据,非结构化数据越来越多,包括网络日志、音频、视频、图片、地理位置信息等。

传统技术的处理多类型的数据已经不堪重任,因此对于数据的处理能力提出了更高要求。

(3) 高速:指获得数据的速度以及处理数据的速度,数据的产生呈指数式爆炸式增长,处理数据要求的延时越来越低。

(4) 价值密度低:价值密度的高低与数据总量的大小成反比。以视频为例,一部1小时的视频,在连续不间断的监控中,会产生大量的数据,但是有用数据可能仅有一二秒。


价值密度低,就好比一整部电影,无数个镜头,然而仅有一两个镜头较为经典。

二、大数据核心技术

我们知道了大数据的特点之后,就要改变传统的数据处理模式。

解决,海量数据的存储和计算问题。

因此引进了新处理模式,大数据技术。

大数据的概念比较抽象,而大数据技术栈的庞大程度将让你叹为观止。

来吧,我们一起漂进大数据技术的海洋,从此一去不复返!!!

这些就是大数据生态圈的技术组件,可谓是眼花缭乱,应接不暇(好吧,其实是杂乱无章)。

那么,大数据生态圈的技术组件(技术栈),又是如何解决海量数据的存储和计算问题呢

先放大数据技术生态圈的一个大致组件分布图,之后我们一步步的进行分解组合。

我们可以看到,已经把之前杂乱的大数据组件摆放的规规矩矩,有条有序的。

看着由杂乱无章到仅仅有条的大数据生态圈有点舒服。

似乎有点像家里修建房屋一样,一层一层,往上拔高,逐渐精彩。

那么我们接下来就一起把大数据生态圈这栋房子开始修建

2.1 HDFS分布式文件系统

既然要把大数据生态圈这栋房子修建,那么我们首先要进行的就是打建地基

地基不稳,地动山摇。

HDFS分布式文件系统就好比我的地基。我们知道传统的文件系统是单机的,不能横跨不同的机器。

HDFS分布式文件系统的设计本质上是为了大量的数据能横跨成百上千台机器。

简而言之,把多台机器存储的数据,用一个软件进行统一管理,执行增删改查操作。

万事开头难,我们终于有了HDFS分布式文件系统作为房屋的地基,此刻我们的大数据生态圈房屋是这样的。

此刻,已经有了房屋的地基HDFS,也就是可以进行数据的存储。

吐一口气,算是解决了海量大数据的存储问题。

那么既然有了数据,我就应该去解决海量大数据的计算问题。因此,开始了我们房屋的第一层修建。

2.2 MapReduce计算引擎

当把海量数据存储于HDFS分布式文件系统之后,就开始考虑怎么处理数据。

虽然HDFS可以为你整体管理不同机器上的数据,但是这些数据太大了。在一台服务器读取TP级别的海量数据(比如整个东京热有史以来所有高清电影的大小甚至更大)。

是需要消耗非常多的时间,比如微博要更新24小时热博,它必须在24小时之内处理完海量的数据,显然单机服务器的计算能力是无法完成的。

但是如果我们用很多台服务器,利用这些机器的资源进行分布式处理数据,那么就可以大大的提高执行效率,这就是MapReduce的功能,一种分布式并行处理框架。

到此,我们第一层,计算引擎MapReduce算是正式修建完毕。此时,我们的大数据生态圈房屋是这样的。

2.3 Hive数据仓库

有了MapReduce分布式处理框架之后我们发现MapReduce的程序写起来很麻烦,对于不懂程序开发的人非常不友好。

希望简化这个过程,能有个更高层更抽象的语言层来描述算法和数据处理流程。

就好比,虽然MapReduce这层房可以住,但是它并不好住,不是喜欢的风格。我们希望能在它基础上进行修改成我们喜欢的style。

于是就有了Hive,开发人员只需要编写简单易上手的SQL语句,它就把SQL语言翻译成MapReduce程序,让计算引擎去执行,从而让你从繁琐的MapReduce程序中解脱出来,用更简单更直观的语言去写程序了。

我们的第二层,Hive数据仓库层算是正式修建完毕。此时,我们的大数据生态圈房屋是这样的。

2.4 快一点吧 Spark/Flink

其实大家都已经发现Hive后台使用MapReduce作为执行引擎,实在是有点慢。

Spark/Flink应运而生,它是用来弥补基于MapReduce处理数据速度上的缺点,它的特点是把数据装载到内存中计算而不是去读硬盘。

Spark/Flink支持批处理和流处理,是非常先进的计算引擎。

就好比,当我们修建好MapReduce和Hive层后,过了很多年,发现已经过时了。

我们需要该基础上,保留原来风格的同时,进行翻修。于是得到了Spark/Flink。

此时,我们的大数据生态圈楼房已经进化成了这样。

2.5 Oozie / Azkaban任务调度

在大数据生态圈楼房中,我们已经修建好了计算引擎层,这层每天都需要清洁阿姨定时打扫。于是我们联系了一个家政的阿姨进行每天处理计算引擎层的卫生。

Oozie / Azkaban任务调度组件,就相当于家政阿姨,它需要根据我们设定的时间执行任务。

Oozie / Azkaban任务调度组件只针对于离线批处理任务。

此时,你的大数据生态圈楼房继续升级

2.6 yarn资源管理器

yarn资源管理器,就好比我们修建大数据生态圈时候的房屋的楼层使用说明,哪一层是干嘛的,这些楼层的使用顺序都是规定安排好的,不然那么多层随便使用,会杂乱无章的,有了yarn我们就在大数据生态圈,互相尊重而有序的使用这些楼层。

简而言之,可以把yarn理解为,相当于一个分布式的操作系统平台,而mapreduce等运算程序则相当于运行于操作系统之上的应用程序,Yarn为这些程序提供运算所需的资源(内存、cpu)。

我们的大数据生态圈楼房继续升级。

2.7 数据采集 Sqoop / Flume / DataX/Kafka

大数据生态圈楼房,所有的楼层和楼层使用顺序设计都已经完成后,我们此时差不多就已经完成了修建。是时候安排人员入住了。那么我们通过什么方式去邀请人来入住呢?

这里的,就相当于数据,只有有了数据,整个大数据生态圈才有意义。

因此我们就有了Sqoop/Flume/DataX/Kafka

通过这些工具去采集数据到HDFS文件系统,进而处理数据。

大数据生态圈楼,继续升级

此时,我们的大数据生态圈楼房,基本的建设可以说是完成。剩余的工作就是一些装饰和家具了。

从以上所述,我们可以知道,大数据生态圈的技术栈多而杂乱,只有让它们有序的组合一起工作。

才能解决海量数据的存储和计算

三、从0到1搭建大数据平台

在我们很清晰明白了大数据生态圈的技术栈各个功能,以及技术栈组件的分布图之后。

那么我们就可以进一步来设计属于自己的大数据平台!!!

进一步对大数据平台架构深入认识

首先给出一个通用化的大数据处理框架,主要分为下面几个方面:数据采集与预处理、数据存储、数据清洗、数据查询分析和数据可视化。
在这里插入图片描述
数据采集:这是大数据处理的第一步,数据来源主要是两类,第一类是各个业务系统的关系数据库,通过Sqoop或者Cannal等工具进行定时抽取或者实时同步;第二类是各种埋点日志,通过Flume进行实时收集。

数据存储:收集到数据后,下一步便是将这些数据存储在HDFS中,实时日志流情况下则通过Kafka输出给后面的流式计算引擎。

数据处理:这一步是数据处理最核心的环节,包括离线处理和流处理两种方式,对应的计算引擎包括MapReduce、Spark、Flink等,处理完的结果会保存到已经提前设计好的数据仓库中,或者HBase、Redis、RDBMS等各种存储系统上。

数据应用:包括数据的可视化展现、业务决策、或者AI等各种数据应用场景。

通过上述的内容,我们看到了大数据技术组件的组合使用,形成了一个大数据平台。

解决大量数据的存储和计算问题。

好了,今天就聊这么多,后期继续完成从0到1搭建大数据平台

我是脚丫先生,我们下期见~

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
如何设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云安全组设置详细图文教程(收藏起来) 阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程。阿里云会要求客户设置安全组,如果不设置,阿里云会指定默认的安全组。那么,这个安全组是什么呢?顾名思义,就是为了服务器安全设置的。安全组其实就是一个虚拟的防火墙,可以让用户从端口、IP的维度来筛选对应服务器的访问者,从而形成一个云上的安全域。
20123 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
29512 0
阿里云服务器安全组设置内网互通的方法
虽然0.0.0.0/0使用非常方便,但是发现很多同学使用它来做内网互通,这是有安全风险的,实例有可能会在经典网络被内网IP访问到。下面介绍一下四种安全的内网互联设置方法。 购买前请先:领取阿里云幸运券,有很多优惠,可到下文中领取。
22701 0
阿里云服务器ECS登录用户名是什么?系统不同默认账号也不同
阿里云服务器Windows系统默认用户名administrator,Linux镜像服务器用户名root
16730 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
20893 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
23609 0
腾讯云服务器 设置ngxin + fastdfs +tomcat 开机自启动
在tomcat中新建一个可以启动的 .sh 脚本文件 /usr/local/tomcat7/bin/ export JAVA_HOME=/usr/local/java/jdk7 export PATH=$JAVA_HOME/bin/:$PATH export CLASSPATH=.
14909 0
+关注
脚丫先生
知名国企开发工程师,目前大数据和后端开发,致力全栈。
13
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载