建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
请选择 进入手机版 | 继续访问电脑版
设置昵称

在此一键设置昵称,即可参与社区互动!

确定
我再想想
选择版块

蓝书签

发帖: 54粉丝: 16

级别 : 版主

Rank: 7Rank: 7Rank: 7

发消息 + 关注

发表于2019-4-17 09:16:59 20360 2 楼主 显示全部楼层
大数据笔记分享

b(bit)

B(Byte) 1B=8b 100Mb=12.5MB 100Mbps(bit per second)

KB 1KB=1000B

MB 

GB 

TB

PB

EB

ZB 44ZB

YB 2YB


大数据的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.半结构化数据:网页文件


集群、分布式:

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

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


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台以上的设备组成,通过分布式的方式,去实现整体数据安全。


回复 举报
分享

分享文章到朋友圈

分享文章到微博

高晓云

发帖: 33粉丝: 19

级别 : 管理员

Rank: 9Rank: 9Rank: 9

发消息 + 关注

发表于2019-4-17 09:24:35 沙发 显示全部楼层

顶,正在学习中!

点赞 回复 举报

softium

发帖: 0粉丝: 0

级别 : 新手上路

Rank: 1

发消息 + 关注

发表于2019-5-13 15:02:12 板凳 显示全部楼层

感谢分享!02.png

点赞 回复 举报

游客

您需要登录后才可以回帖 登录 | 立即注册