赞
踩
大量化(volume),快速化(velocity),多样化(variety),价值化(value);四个V
Volume—数量大:数据每两年就增长一倍(大数据摩尔定律)
Velocity—速度快:
Variety—多样化:大数据是由结构化和非结构化数据组成的
–10%的结构化数据,存储在数据库中
–90%的非结构化数据,与人类信息密切相关
非结构化数据类型多样(邮件、视频、微博、位置信息、链接信息、网页点击)
Value—价值:价值密度低,商业价值高
全样而非抽样
效率而非精确
相关而非因果
数据规模(MB vs GB,TB,PB),
数据类型(结构化 vs 非结构化,半结构化,结构化),
模式与数据关系(数据库是先有模式,大数据是先有数据,后有模式,模式随着数据量增长改变),
处理对象(数据本身 vs 数据作为一种资源来辅助解决其他诸多领域的问题),
处理工具,
大数据集成:
大数据分析:
大数据隐私问题:数据更多以数字化的形式存储在电脑中,互联网的发展则使数据更加容易产生和传播。
隐性的数据暴露,–面临技术和人力(众包)的双重考验
数据公开与隐私保护的矛盾,–隐私保护数据挖掘
数据动态性,–现有隐私保护技术基于静态数据
大数据能耗问题:能源价格上涨、数据中心存储规模不断扩大
大数据处理与硬件协同:硬件的快速升级换代照成大量不同架构硬件共存的局面
大数据管理易用性问题:
易用性的挑战突出体现在两个方面:
达到易用性,关注三个准则:可视化原则,匹配原则,反馈原则
性能测试基准:目前尚未有针对大数据管理的测试基准
构建大数据测试基准面临的主要挑战:
系统复杂度高
用户案例的多样性
数据规模庞大
系统的快速演变
重新构建还是复用现有的测试基准
大数据为什么强调快?
数据的价值像商品一样会折旧
数据跟新闻和金融行情一样,具有时效性
时间在分母上,越小,单位价值越大
大数据的快体现在两个方面:动态数据来的快,正使用数据处理的快
如何实现快的数据处理:
大数据三种状态:静止数据,正使用数据,动态数据
批处理:数据不动,处理逻辑进来,算完后出去
流处理:处理逻辑不动,动态数据进来,计算完后价值留下,原始数据加入静止数据,或者丢弃
流处理与批处理的组合:
Hadoop
Spark
文件系统:HDFS,GFS,TFS
数据库系统
NoSQL技术:
索引和 查询技术
数据分析技术:MapReduce计算模型,实时数据处理
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eKJUXYAQ-1656911923910)(C:\Users\27562\AppData\Roaming\Typora\typora-user-images\image-20220625233212479.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HbXU7yXI-1656911923911)(C:\Users\27562\AppData\Roaming\Typora\typora-user-images\image-20220626001853944.png)]
HDFS的主要目标之一就是在硬件出错的时候保证数据的完整性,它把磁盘错误作为肯定会出现的情况来对待,而不是异常。
常见的数据存储中出现的错误:
–目录节点错误
–数据节点错误
–网络传输异常
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-62byNtiH-1656911923911)(C:\Users\27562\AppData\Roaming\Typora\typora-user-images\image-20220626233632720.png)]
需要查询数据时,子表先查memStore。如果没有,则再查磁盘上的StoreFile。
开始数据更新时,先查子表服务器,然后向子表提交数据更新请求。提交的数据并不直接存储到磁盘上的数据文件中,而是添加到一个基于内存的子表数据对象memStore中,当memStore中的数据达到一定大小时,系统将自动将数据写入到文件数据块StoreFile中
元数据子表采用三级索引结构:
根子表->用户表的元数据表->用户表
driver是任务的起点,负责任务调度
Worker管理计算节点worknode,创建并处理并行任务
cache存储中间结果
Job:包含多个Task的并行计算,由Spark action催生
Stage:Job拆分成多组Task,每组任务被称为Stage,也可称为TaskSet
Task:基本程序执行单元,在一个executor上执行
每个线程可以执行一个task。同一个Executor进程内,多个task之间可以共享内存资源。
Driver向Cluster Manager申请资源,并构建Application的运行环境,即启动SparkContext
sparkcontext:spark运行的核心模块,对是spark程序进行必要的初始化
Cluster manager:集群当中的资源调度服务选取。Standalone模式下,ClusterManager即为Master。在YARN下,ClusterManager为资源管理器
application->job->stage->task
转换transformation:这是一种惰性计算,只是定义了一个新的RDD,并不马上计算新的RDD的值
动作action:立即计算RDD的值,并返回结果给程序,或者把结果写入外存
val filterRDD=file.filter(line=>line.contains(“ERROR”))
这个操作对于Spark来说仅仅记录从file这个RDD通过filter操作变换到filterRDD这个RDD的变换,现在并不实际计算filterRDD的结果
val result = filterRDD.count()
计算最终的result是多少,操作包括前边transformation时的变换
val file = spark.textFile(“hdfs://…”)
val counts = file.flatMap(line => line.split(“ ”)) //分词
.map(word => (word, 1)) //对应mapper的工作
.reduceByKey(_ + _) //相同key的不同value之间进行”+”运算
counts.saveAsTextFile(“hdfs://…”)
从HDFS上读取数据转化为RDD,将RDD中的每个数据对象转化为向量形成新的RDD存入缓存,随机抽样K个向量作为全局初始聚类中心
计算RDD中的每个向量p到聚类中心cluster centers的距离,将向量划分给最近的聚类中心,生成以<ClusterID, (p, 1)>为元素的新的RDD
聚合新生成的RDD中Key相同的<ClusterID, (p, 1)>键值对,将相同ClusterID下的所有向量相加并求取向量个数n,生成新的RDD
对生成的RDD中每一个元素<ClusterID, (pm, n)>, 计算ClusterID聚类的新的聚类中心,生成以<ClusterID, pm/n>为元素的新的RDD
判断是否达到最大迭代次数或者迭代是否收敛,不满足条件则重复步骤2到步骤5,满足则结束,输出最后的聚类中心
读取数据和初始化聚类中心
val lines = sc.textFile(“data/mllib/kmeans_data.txt” )
val data = lines.map(s =>
s.split(" ").map(_.toDouble)).cache()
val kPoints = data.takeSample(false, K, 42)
.map(s => spark.util.Vector(s))
//takeSample(Boolean, Int, Long)采样函数,false表示不使用替换方法采样,K表示样本数,42表示随机种子
划分数据给聚类中心
val closest = data.map // 产生<ClusterID, (p, 1)>键值对
(p =>
( closestPoint(spark.util.Vector§, kPoints), // closestPoint计算最近的聚类中心,
// 产生<ClusterID, (spark.util.Vector§, 1)>
) )
聚合生成新的聚类中心
//同一个聚类下所有向量相加并统计向量个数
val pointStats = closest.reduceByKey {
case ((x1, y1), (x2, y2)) => (x1 + x2, y1 + y2) //产生(pm, n)
} //将同一clusterID的所有(p, 1)的两个分量分别相加,得到<ClusterID, (pm, n)>
//计算生成新的聚类中心
val newPoints = pointStats.map {
pair => (pair._1, pair._2._1 / pair._2._2)}.collectAsMap()
//由<ClusterID, (pm, n)>产生(ClusterID, pm/n)。其中,pair._1表示聚类的ClusterID,pair._2._1表示聚类中所有向量之和pm ,pair._2._2表示聚类中所有向量的个数n
Rank leak : 没有连接的网页产生排名泄漏
解决办法:
1.将无出度的节点递归地从图中去掉,待其他节点计算完毕后再加上
2.对无出度的节点添加一条边,指向那些指向它的顶点
Rank Sink :整个网页图中若有网页没有入度链接,如节点A所示,其所产生的贡献会被由节点B、C、D构成的强联通分量“吞噬”掉,就会产生排名下沉,节点A的PR值在迭代后会趋向于0
计算测试样本到各训练样本的距离,取其中距离最小的K个,并根据这K个训练样本的标记进行投票得到测试样本的标记
//Mapper伪代码
class Mapper
setup(…)
{
读取全局训练样本数据文件,转入本地内存的数据表TR中
}
map(key, ts) // ts为一个测试样本
{ Φ ->MaxS (k)
ts -> tsid, A’, y’
for i=0 to TR.lenghth()
{ TR[i] -> trid, A, y
S = Sim(A, A’);//计算相似度
若S属于k个最大者, (S, y) -> MaxS;
}
根据MaxS和带加权投票表决模型计算出y’ =∑Si*yi/∑Si
emit(tsid, y’)
}
流计算是针对流式数据的实时计算
流式数据:是指将数据看作数据流的形式来处理。数据流是在时间分布和数量上无限的一系列动态数据集合体;数据记录是数据流的最小组成单元
流数据具有实时持续不断到达,到达次序独立,数据来源众多,格式复杂,数据规模大且不关注存储,注重数据的整体价值而不是个别数据点的特点
流计算应用:
处理金融服务如股票交易、银行交易等产生的大量实时数据
各种实时Web服务中,广告推荐,个性化推荐
storm特点:简单编程模型,支持各种语言,容错性,水平扩展,可靠的消息处理,快速,容易部署
Storm对于流Stream的抽象:流是一个不间断的无界的连续Tuple(元组,是元素有序列表)
使用storm的公司:淘宝,亚马逊
流计算是针对流式数据的实时计算
流式数据:是指将数据看作数据流的形式来处理。数据流是在时间分布和数量上无限的一系列动态数据集合体;数据记录是数据流的最小组成单元
流数据具有实时持续不断到达,到达次序独立,数据来源众多,格式复杂,数据规模大且不关注存储,注重数据的整体价值而不是个别数据点的特点
流计算应用:
处理金融服务如股票交易、银行交易等产生的大量实时数据
各种实时Web服务中,广告推荐,个性化推荐
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。