大数据常见知识

作者: 较劲儿 | 来源:发表于2019-05-19 19:54 被阅读4次

    大数据的4v特性

    1、巨量化:作为大数据的系统,那么首先必须要保证的是数据量的本身庞大,所以,我们认为凡是可以称作大数据系统的,必须要有至少PB级别以上的数据,才能够叫做大数据。

    2、多样性:大数据的数据源和数据类型其实都是符合多样化的,在最早期的网络中,我们往往只传输文字和表格等相关的简单数据,但是现在的互联网更多传输的是视频,语音和图片等相关的数据。那么数据类型的多样,本身就构成了多样化。第二个多样性主要是体现在 来源多样性,最早期的互联网,由于更多的是由上层的互联网厂商向下游输出数据,所以我们基础用户更多的是去接收数据,但是随着网络和技术发展,现在底层用户成为了数据的最大的贡献者。数据的来源就从最早期的厂商推送到后来的个人用户反馈,日志收集以及工厂的传感器等等。

    3、大数据的系统整体数据价值很高,但是价值密度很低。

    4、速度快,大数据的系统一定要保证数据的及时响应,因为时间如果超过了有效期,数据可能会失效。

    大数据的工作

    1、数据获取——Kafka、Flume

    2、数据存储——HDFS、HBase、Hive

    3、数据分析——MapReduce、Spark2x、Streaming、Flink

    4、数据挖掘——Spark2x

    数据分析和数据挖掘最大的区别在于,数据挖掘可以找到数据中隐含的规律和知识,并且可以进行预测。数据分析只是对数据进行可见化的操作和计算,找到其中的一些相关的规律和知识,但是数据挖掘,他更多的是站在数学的角度上去发现相关的规律,以及更深层次的隐含知识。通过信息论、概率学、大数计算、线性代数等相关的方式去进行知识提取。然后将这些知识用于对未来或者是未知的数据做预测操作。

    1、结构化数据:txt、excel

    2、非结构化数据:图片,视频,音频

    3、半结构化数据:网页文件

    集群、分布式

    集群:多台设备承载同一个工作对外提供统一业务。

    分布式:将一个业务拆分成子业务,交给不同的设备去运行,对外显示的还是统一业务。

    Hadoop组件关系

    Hadoop组件关系图

    HDFS

    元数据:描述数据的数据,主要是说明了文件的属性信息,比如名字,大小,创建时间,修改时间等等。

    HDFS做为分布式的文件系统,其必须要能够承载海量数据。

    1、为了保证大数据的安全,HDFS将数据的安全保护交给了自身,而不是底层的硬件。

    2、为了能够适应大数据的数据读取和写入,那么HDFS提供了海量数据的传输的能力。

    3、大文件存储:由于大数据中单文件的大小都是比较大规模的,那么HDFS提供了对单个大文件的存储能力,并且理论上没有上限。

    4、HDFS是基于通用硬件平台的。也就是指不管底层是什么框架什么系统,HDFS都可以进行搭载。

    HDFS不适合对小文件进行存储,因为为了保护HDFS的高速查询和读取。所以HDFS都是将元数据存放在内存中的。而每个元数据固定大小是150b。那么小文件越多,占用的元数据空间也就越大,那么内存的占用率就会越高,那么小文件一旦很多,HDFS性能就会收到很大的影响,但是如果大文件比较多,这个时候性能就很优异。

    在大数据中,往往我们的数据和系统都是一次写入多次读取的。所以HDFS使用的是WORM模型write once read many,也就是HDFS只允许一次数据写入,之后就不允许在做更改了,然后HDFS提供了每个时刻的N个进程用于做数据处理,但是只有1个进程是用于处理写入的业务的,其他的进程全部用于对外提供数据的读取。

    MapReduce

    离线计算引擎

    MapReduce主要的功能就是做离线计算使用的,那么离线计算往往是计算海量数据的,每个基础数据集至少会大于1TB。

    MapReduce易于编程,程序员可以直接指定自己的计算目的,其他的都交给MapReduce来执行。MapReduce主要是分为了Map过程和Reduce过程。Map主要做的是数据的输入和计算,Reduce主要做的是结果的输出。

    MapReduce的计算如果无法满足要求,可以通过添加硬件的方式进行线性的性能提升,比如内存或者硬盘不满足要求的时候,可以通过直接添加服务器的方式进行性能提升。那么性能提升效率和整体的计算能力都会得到很大的改善,MapReduce通过内部的Yarn资源管理器来进行资源管理。以此避免设备的极大的管理开销。这样就可以实现理论上的无限拓展。可以将计算能力拉升到一个很高的值。

    机器管理设备的开销=新添加的设备的资源量

    MapReduce的缺点在于如果使用其计算,数据必须要存储在HDFS上,而且计算需要消耗大量的时间,所以一般对于实时性要求很高的业务,我们都不推荐使用MapReduce。

    为了减少计算的时间和开销,我们提出了使用Spark,Spark叫做基于内存的计算引擎。

    也就是说,Spark在计算的时候,所有的数据处理都是在内存中交互完成的,而不是在硬盘中,所以Spark的计算速度非常的快。

    Spark中主要分为了以下几个组件:

    SparkCore:主要是用于做核心计算的组件,那么所有的Spark计算最终都会转变为core去进行相关的数据计算

    sql:Spark对结构化数据进行计算的一个引擎。

    Mlib:machine learning library机器学习算法库

    Graph:图计算

    Hbase分布式数据库

    Hbase作为大数据的数据库组件,主要提供的是对海量数据的存储功能,Hbase底层的数据还是存储在HDFS上的,但是Hbase提供的主要就是二次的结构维护能力,Hbase支持对结构化数据,非结构化数据和半结构化数据进行存储。所以其适用性更强,而且Hbase是面向于列的存储,这也使Hbase更适合于做数据分析。通过调用Zookeeper的业务,Hbase实现了自身的组件和数据的安全性保证,而且借助HDFS的数据安全性能,其可以做二次数据保护,提升整个系统的安全防护能力、

    Streaming

    Streaming是一个事件驱动型的计算引擎。所谓事件驱动型,就是指Streaming的计算只要有事件触发马上就会开始工作。

    Spark等传统的引擎都是用户上传计算的软件包,然后Spark等计算引擎计算完成之后,将结果反馈并且关闭自己。所以传统的计算引擎都是进行自我管理的。用户只需要下发计算包,其余的都由引擎自己完成,计算中如果需要添加数据,或者是做一些更改都是不可行的,而且停止计算之后,如果想要重启,就只能从头计算。

    Streaming作为一个事件驱动型的计算引擎,其主要的优势就在于它进行的计算的时候,下发的计算包会一直存在,不会自动关闭,平时不计算的时候就处于休眠状态,那么一旦有数据进入,就会马上唤醒进行正常的计算工作。我们就将这个过程称为事件驱动型,事件其实就是数据写入做唤醒Streaming的这个动作。

    Flink和Streaming其实本质上区别不是很大,功能上基本一致,但是Flink可以同时支持批处理和流处理。

    批处理指的就是将数据预先存储到本地,然后进行计算。

    流处理指的就是将数据不预先存储,有输入就实时计算并反馈结果。

    批处理主要用于处理大量的数据,并且只进行一次计算

    流处理主要用于处理实时性数据,并且数据量要比较小。而且要做多次计算。

    Flume主要做的是日志收集的工作,其主要用于收集相关的日志信息。并且转发给底层的存储组件。Flume可以提供短时间的数据临时存储功能。

    Kafka主要做的是海量数据的收集工作,其主要用于收集订阅的数据,Kafka可以用于收集海量数据并且做长期的存储。

    Kafka的主要特点在于其数据的读取和写入是具有强顺序性的。通过指针的方式去限定数据读取的次序和每次读取的数据的大小。Flume就可以去做实时性的读取。

    Zookeeper主要是为Hadoop中所有的组件提供安全性保障的一个组件。通过Zookeeper可以保证所有的组件都绝对不丢失相关的配置信息。Zookeeper至少需要3台及3台以上的设备组成,通过分布式的方式,去实现整体数据安全。

    相关文章

      网友评论

        本文标题:大数据常见知识

        本文链接:https://www.haomeiwen.com/subject/penqzqtx.html