赞
踩
谈大数据
现如今互联网的发展,我们也看到了,作为一个见证互联网从2G到4G,甚至现在华为的5G,再到未来的6G的我们,总会听到一个词那就是大数据时代,那到底大数据是什么?
大数据到底是什么这个问题困扰了许多的程序员以及从事互联网的,阿里巴巴的马云说过,我们不知道什么是大数据,但是大数据时代已经来了,就是这么猝不及防,如果说非要给大数据去做个定义的话,我的理解那就是大数据就是一种短时间内快速产生大量的、多样的、有价值的信息。
举个例子,在90年代甚至更早以前,在互联网还没普及之前,我们国家所有人所产生的数据大概10T,当我们进入到20世纪后,我们所产生的数据是之前的10倍还多,像淘宝的双十一、京东的618等等…无论你是在浏览商品还是购物,还是完成交易,这些都会产生数据。前几年腾讯在山西某个地区耗费3个亿买了两座山,将其挖空,不就是为了存放这些数据,腾讯在游戏行业做的成绩大家有目共睹,我们这些90后也经历过穿越火线、地下城时代,那个时候的玩家将近3亿甚至更多,现在随着各大游戏厂家崛起,更多的数据都被存储在里面,而且不仅仅游戏,你的微信、QQ每天聊天所产生的数据也都存放在里面。
但是也会有人问了这些数据有用么?我能回答你绝对有用,我曾经在接触编程之前做过百度的信息流广告销售,什么公司就不提了,就是一个百度旗下的外包公司,但是产品的原理确实符合大数据的特性,比如你在手机上使用百度的APP,首页一定会有新闻,而在新闻的第五行以及第12行(现在不知道是多少行)那个地方就会出现广告,你会发现他长得和新闻一样,点开就是一个个宣传页,最重要的是,百度不是随随便便推送给你这个广告,他会在数据库中分析你的信息,将你整个人分析出相应的标签,根据你平时浏览的习惯、经常看的新闻类型、平时搜索的内容,以及你曾经去过哪、你的手机上的App使用情况,结合这些来分析你的喜好,再根据你的喜好进行推送,这样你就会发现他给你推送的广告都是符合你爱好的,不仅仅是百度,就连抖音你也会发现它会推送给你类似的抖音小视频,这就是大数据的魅力。
说了这么多,那到底大数据要怎么实现?我们在学习大数据时要先理解它的运行原理,我们在拿到数据源后要先把它存储在一个地方,然后进行分析,筛选出我们需要的信息,然后把它反馈给前台或者App等,那这么多的数据怎么存储就是一个问题,所以衍生出两种解决办法,第一种就是垂直扩展,也就是我们平时在使用电脑时内存不够了,把电脑加上几个硬盘,把电脑的内存扩大;第二种就是横向扩展,也就是再添加其他的电脑或者服务器,然后将数据都放进里面,比如接下来我要说的Hadoop生态圈就是这个原理。
什么是Hadoop生态圈?
Hadoop生态圈是由Apache Lucene 创始人 道格·卡丁创建,它是根据谷歌的三大论文Google Fs、MapReduce、BigTable,这三篇论文奠定了风靡全球的大数据算法的基础,想了解的可以在CSDN查找或者在网上搜索,有中文翻译的版本。
Hadoop就是类似于我们人类所在的地球,它是一种生态圈,里面各种物种都有,我们要用到的有用于数据处理的编程模型MapReduce、HDFS数据块、YARN集群资源管理系统,接下来我们来一个一个分析它们都是做什么的。
相关模型介绍
学习大数据之前就要介绍一下相关的学习方向,我们需要掌握的我都一 一列举
一、HDFS分布式文件系统
它是一个高容错性的系统,适合大规模的数据的应用,是以流形式来访问文件系统中的数据。
二、YARN资源和任务调度
它是一种新的Hadoop资源管理器,就相当于我们公司中的秘书一职,是Hadoop传达大量数据时,进行资源协调的一种资源管理系统,具体功能在接下来介绍读写时会提到。
三、MapReduce批处理
它是面向大规模数据处理的并行计算模型和方法,就是可以在处理数据的同时处理其他数据,加快了计算速度。
四、spark计算引擎
是为大规模数据处理而设计的快速通用的计算引擎。
我们需要学spark core 就是一些基础的东西、sparkSQL 可以使用sql语句来处理
sparkStreaming 流式处理
mllib 机器学习库
具体实现
说了这么多,那到底Hadoop是如何运用,如何使用的,这里就不得不提到它的主从架构,这种架构是以主节点(Namenode)、从节点(Datanode)、以及client组成,它实现了存文件、读文件、备份这么三个过程,实现了我们前期接收数据的过程。
存文件和读文件我们使用到了HDFS的读写机制,而备份就是解决了安全问题,试想一下如果你读取下来文件之后,你的服务器坏了,而你这时又因为工作时间紧迫,为了完成工作,你就需要备份一下文件,否则一旦原来的文件出问题,那你就像热锅上的蚂蚁,无所适从,而且有意思的是Hadoop备份还不是随便就备份的,它是遵守一定规则,下面我先来介绍备份的原理。
数据备份
数据的备份先以block(文件线性切割成一个个block块)块的形式将大文件进行相应的存储,1.X的版本的最大容量是64M,2.X的版本的最大容量是128M,当然了这个容量是你自己可以随意定义的,但是不能超过最大容量。
每一个block块都是分散存储在集群节点中,单一文件Block大小一致,文件与文件可以不一致,比如我们在处理1G的大文件时每一个block块我们设置它最大容量是100M,假如是以1000计算,我们可以分成
10块block块,在单一文件中,每一个blocak块就都是100M的,而当我们再处理一个1G的大文件时,我们设置它是128M的容量,这时我们分割出了8个block块(1000/128≈7.8,我们在数据不足最大容量时,无论是多少即使是0.1我们也要再分割一个Block存放它,所以是8块),我们可以看出第二个文件中的block块和第一个block块是不一样大的。
block可以设置副本数,副本分散在不同节点中,副本数不要超过节点数量,也就是我上面提到的,block是可以随意设置最大容量的,但是不能超过版本最大容量,节点就是HDFS集群中的节点,总共有两类,下面我会介绍,block是需要被分布在各个不同的节点上,是不可以超过节点数量的,否则就没有地方放着block了,这点下面的备份机制会提到。
已上传的文件block副本数可以调整,大小不变,只支持一次写入多次读取,同一时刻只有一个写入者,这点就保证了你在写入数据时的一个安全性和完整性。
HDFS两大类节点
一、NameNode(管理者)
管理者节点只能存在一个,它就类似于公司中的老板,主要负责掌控全局,管理DataNode(工作者)的信息,管理元数据(描述数据的数据,源数据就是我们的数据),而且也会接收client(秘书)的请求,也就是读写机制,还会与DataNode(工作者)进行相应的通信。
二、DataNode(工作者)
也就类似于公司中的员工,需要去存储数据,并向管理者节点去汇报自己的情况,当处理大规模数据时也需要去接收秘书的一个安排。
读写机制
注:这里管理者节点都是NameNode、工作者节点都是DataNode
一、写操作
这里举大文件处理的情况为例,当我们处理大规模文件时,client会将大文件进行切块产生block(小规模的话NameNode(管理者)就会进行切块),切完块之后会向NameNode去汇报情况:1.切割的块数、2.文件的大小、3.文件的权限、4.文件的属主、5.文件的上传时间
在block循环分割中需要进行操作:1.client切割block块、2.client会向管理者节点去申请资源,也就是工作者的信息、3.管理者会返回一批负载不高的工作者节点给client
4.client就会向工作者里面发送block并且做好备份
5.工作者节点存放block块之后会向管理者汇报情况
二、读操作
1.管理者会向client发送一个请求,client接收到请求之后,会向管理者节点申请节点信息(blockid)
2.管理者会向client发送一些节点信息
3.client获取到节点信息只够去工作者拿取数据-----就近原则
备份机制
了解了什么是数据备份,那什么是备份机制?它是如何备份的?有放置在哪里呢?
一、备份机制有两种方式
1.集群内提交
就是在节点上防止block,上面我说过,节点就是HDFS的节点机制,集群内提交就是在提交命令执行的节点上放置备份,也就是说我们假设在一个服务器上有管理者节点,又有一个工作者节点,当client提出上传命令时,备份就会放置在这个服务器节点上。
2.集群外提交
集群外提交是选择一个负载不高的节点进行存放,而且还不止备份一份,它是会放置在与第一个备份不同机架的任意节点上,第三份放置在第二个机架的不同节点上。也就是说集群外提交是在集群外部client执行提交命令,把备份放置在其他的服务器中的某个节点上,这么做是为了放置集群内提交后如果因为外部因素导致服务器关机等情况,当我们又想使用数据时,就需要在其他的机架上放置备份,那么就要遵守集群外提交的规则。
pipeline管道
在client安排工作者工作时会形成一个管道,当管理者返回给client一些工作者的信息之后,client会和这些工作者形成一个管道并将block切割成一个个ackPackage(64k大小),工作者会从中拿去相应的数据进行存储,当存储数据之后,工作者会向管理者进行汇报。这个管道会使文件保证完整,保证了文件的安全性。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。