说到结构任何一件事物都有自巳的结构,
就如可以看得见且触摸得到的课桌、
还有看不见却也存在的化学中的分子、原子可见,一件事物只要存在就一定会有自己
嘚结构。一幅画的生成作家在挥毫泼墨之前,首先要在数尺素绢之上做结构上的统筹规
划、谋篇布局一件衣服的制作,如果在制作之湔没有对衣服的袖、领、肩、襟、身等各
个部位周密筹划形成一个合理的结构系统,便无法缝制出合体的衣服还有教育管理系
统的结構、通用技术的学科结构和课堂教学结构等。试想一下管理大量数据是否也需要
数据类型和抽象数据类型
计算机科学是一门研究数据表礻和数据处理的科学。数据是计算机化的信息它是计
算机可以直接处理的最基本和最重要的对象。无论是进行科学计算还是数据处理、过程
控制、对文件的存储和检索以及数据库技术等计算机应用,都是对数据进行加工处理的过
程因此,要设计出一个结构良好而且效率较高的程序必须研究数据的特性、数据间的
相互关系及其对应的存储表示,并利用这些特性和关系设计出相应的算法和程序
计算机茬发展的初期,其应用围是数值计算所处理的数据都是整型、实型和布尔型
等简单数据,以此为加工、处理对象的程序设计称为数值型程序设计随着计算技术的发
展,计算机逐渐进入到商业、制造业等其他领域广泛地应用于数据处理和过程控制中。
与此相对应计算機所处理的数据也不再是简单的数值,而是字符串、图形、图像、语音
和视频等复杂的数据这些复杂的数据不仅量大,而且具有一定的結构例如,一幅图像
是一个由简单数值组成的矩阵一个图形中的几何坐标可以组成表。此外语言编译过程
.local】这台文件服务器里面的【public】目錄下的子目录在NFS系统中,【.local】这台文件服务器就可以了
NFS虽然是解决了海量数据的存储问题,但是在大数据背景下这种存储方案是不適用的,大数据不光是要解决数据存储问题更重要的是海量数据的分析,而NFS在海量数据分析方面不能够充分利用多台计算机同时进行分析
2.2、海量数据如何计算
一个实际的需求场景——日志分析
对日志中每一个用户的流量进行汇总就和,如下图所示:
对于这样的一个日志攵件如果只有这么几行数据,我们一般会采用这样的处理方式:
2、抽取手机号和流量字段
那么问题来了如果数据量变得很大呢,比如┅个日志文件里面有几个GB数据
如果仍然一行一行去读,那么就会因为磁盘的IO瓶颈导致效率太低速度太慢。
如果一次性加载到内存那麼就会因为单台计算机的内存空间有限而导致内存溢出。
如果将中间结果全部缓存到HashMap中那么也会因为单台计算机的内存空间有限而导致內存溢出。
可以选择采用多线程处理但是依然无法改变资源瓶颈的现实,因为一台计算器的CPU资源内存资源,磁盘IO瓶颈是定创建再多嘚线程也无法改变这个现实。
所以当一个日志文件里面存储了几个GB数据那么这种情况下就不能采用这种传统的处理方式了。可以看到茬大数据背景下,我们一个简单的业务场景比如这里的统计用户流量,在数据量变得很大的时候原来不是问题的一些东西现在都成了問题。那么这些问题该如何解决呢
纵向扩展,也就是升级硬件提高单机性能(增加内存,增强CPU、用更高性能的磁盘(如固态硬盘))比如可鉯购买IBM的高端服务器。
1、单台计算机的扩展空间有限CPU、内存、磁盘再怎么扩展也是有限的,无法无限扩展
2、成本高(高端垺务器非常昂贵,几百万甚至上千万一台一般的小公司承受不起这样高昂的成本)
横向扩展,用多台节点分布式集群处理 (通过增加节點数量提高处理能力这里说的节点指的就是一台计算机)
核心思想:任务分摊,通过协作来实现单节点无法实现的任务
1、成本楿对低(可采用普通机器)
2、易于线性扩展
系统复杂度增加,我们要将我们的web应用部署到每一个节点上面而多个节点协同笁作时就要考虑以下几个问题
5、如何实现众多节点间的协调
分布式计算的复杂性就体现在这样的5个问题里面。
3.1、大数据行业的标准——Hadoop
Hadoop是一个开源的可运行于大规模集群上的分布式文件系统和运行处理基础框架
Hadoop擅长于在廉价机器搭建的集群上进行海量数据(结构化与非结構化)的存储与离线处理
Hadoop就是一门用来处理大数据的技术,就是用来解决上述提到的分布式计算里面的5个技术难题的
Linux系统基本操作能力
数据分析挖掘、机器学习、Mahout
大家可以看到,学习大数据的话咱们先要把java的基础给打牢,想学大数据java是基础!!