大数据复习(day04)

贝叶斯算法
贝叶斯算法模型可以用于推断,垃圾文本的分类等场景。
比如:一名美女冲你微笑时,推断她喜欢你的概率

贝叶斯介绍
英国数学家,贝叶斯在数学方面主要研究概率论.对于统计决策函数、统计推断、统计的估算等做出了贡献。
他对统计推理的主要贡献是使用了"逆概率"这个概念,并把它作为一种普遍的推理方法提出来。贝叶斯定理原本是概率论中的一个定理,这一定理可用一个数学公式来表达,这个公式就是著名的贝叶斯公式。

贝叶斯定理
公式:
在这里插入图片描述
求得是后验概率
等式右侧为先验概率

贝叶斯定理可以简单理解为通过先验概率求后验概率
H,X代表的是某一种事件

=========================================

案例
设定X事件是胃疼事件
设定H事件是胃癌事件

P(H|X)=当X事件发生时,H事件发生的概率。当胃疼时,患胃癌的概率
P(X|H)=胃癌时,胃疼的概率
P(H)=人群中,患胃癌的概率
P(X)=人群中,胃疼的概率

获取先验概率的途径一般有三种:
1.通过统计学手段实现
2.询问专家
3.通过大量样本的积累获取

典型的应用,利用贝叶斯过滤垃圾邮件
在这里插入图片描述

设定X事件:一封邮件中出现发票词汇
设定H事件:邮件是垃圾邮件
P(H|X)=当一封邮件中出现发票词汇时,是垃圾邮件的概率是多少(设定阈值为40%,超过就是垃圾邮件)
P(X|H)=一封垃圾邮件中出现发票词汇的概率
比如随机抽出100封垃圾邮件,统计有多少封垃圾邮件出现过发票词汇
P(H)=一封邮件是垃圾邮件的概率
比如随机抽出100封邮件,统计有多少封出现过垃圾邮件
P(X)=邮件中出现发票词汇的概率
比如随机抽出100封邮件,统计有多少封出现过发票词汇

================================

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

=====================================

贝叶斯分类器的应用
1.流失用户的预警
贝叶斯分类广泛应用在现实生活中,比如流失用户的预警。
我们可以先根据以往的数据建立学习集,得出流失用户的特征,比如上线频率低,充值次数、充值金额低等。我们可以利用贝叶斯分类器判断出当前哪些用户是将流失用户,然后可以推送一些优惠或是提高抽卡、装备爆率等措施挽留。

2.用户画像
在这里插入图片描述

比如为用户建立其用户画像,分析其具备哪些特点爱好,然后做定向推送。也可以用贝叶斯来实现,比如系统里一共有10个标签(分类),然后结合用户数据,根据贝叶斯公式算出此用户属于每个标签(分类)的概率,这里我们可以设定一个阈值,比如35%。当用户属于此标签的概率>=35%时,就把此标签贴给这个用户。以后,可以定期向用户推荐符合其爱好的信息。

3.人脑中的贝叶斯
此外,每个人的人脑也是一个贝叶斯分类器。
例如—0
放到数字中是0
放到字母中是o
放到鸡窝里是蛋
场景不同,认知不同

============================

在这里插入图片描述

FIFO调度器:先来先服务调度器,优先将集群的全部资源运行第一个来的job1。待jobl运行完之后,再运行job2。
应用场景:当遇到一个优先级很高的job,想快速完成,可以用这种调度器

Fair调度器:公平调度器。
1.集群只运行一个job1,此时用的内存:16GB
2.如果再次提交一个job2,此时这两个job用的内存:8GB
3…依次类推,会根据job的任务平均分配资源

Capcity调度器:容器调度器(默认的调度器)
引入Container概念封装资源

相关配置( yarn-site.xml )

参数默认值
yarn.nodemanager.resource.memory-mb812 ( MB)(每台服务nm服务器贡献的内存),工作中,要根据服务器的实际内存来调节。比如服务器内存:64GB。给操作系统留出8G。还需要考虑这个服务器上是否还运行,比如Hbase。给Hbase留出16GB剩下的4oGB留给yarn
yarn.nodemanagr.resource.cpu-vcores8,cpu核数,根据实际情况来配置,有几核就配置几
yarn.scheduler.minimum-allocation-mb1024 ( MB ),每个Container最小的使用内存量
yarn.scheduler.maximum-allocation-mb8192 (MB),每个Container最大的使用内存量
yarn.scheduler.minimum-allocation-vcores1,每个Container最少的使用核数
yarn.scheduler.maximum-allocation-vcores4,每个Container最多使用的核数
mapreduce.map.memory.mb1024 ( MB),每个MapTask运行所有的内存大小。

1.MapReduce如何处理小文件问题?

在这里插入图片描述

1.开启JVM重用机制
2.将多个切片合成一个切片或少量切片

Hadoop jvm 重用
在yarn-site.xml里的配置示例:


<!--开启uber模式(针对小作业的优化) -->
<property>
<name>mapreduce.job.ubertask.enable</name><value>true</value>
</property>
<!--配置启动uber模式的最大map数-->
<property>
<name>mapreduce.job.ubertask.maxmaps</name><value>9</value>
</property>
<!--配置启动uber模式的最大reduce数-->
<property>
<name>mapreduce.job.ubertask.maxreduces</name><value>1</value>
</property>

将多个小文件合成一个文件或合成少量文件,这样可以减少map的任务数量
代码示例︰

//调整为一个切片
job.setInputFormatClass(CombineTextInputFormat.class);
//179字节以下为一个切片,以上为两个
CombineTextInputFormat.setMaxInputSplitSize(job,179);

综上,实际应用,应避免Hadoop处理大量小文件。
1.HDFS不适合存储海量小文件,会浪费namenode服务器的内存空间
2.MapReduce不适合处理海量小文件

Hadoop生态圈
在这里插入图片描述

服务一天的数据量
比如系统是天津市社保系统
1.评估系统的用户量假设1000万用户
2.评估用户的访问行为,假设每一名用户每一个月贡献的访问次数20次3.评估每访问一次的日志记录大小,根据经验,一条记录的大小:200B~1KB每天的数据量=1000万20500B/30

==================================
flume
核心组件:1.Source2.Channel3.Sink

Source:
①Avrq(重要且常用)
②Http
③NetCat
④SpoolDir(本地目录数据源)
⑤Exec

Channel:
①Memory
②File
③Jdbc
④内存溢出通道

Sink:
①Hdfs
②Logger
③Avro
④Kafka
⑤HiveSink

拦截器(绑定到source)
Interceptors:
①TimeStamp
②Host
③static
④UUID
⑤Regex_replace

Selector:(绑定到source)
①replicating复制模式(默认)
②multiplexing路由模式

Process:
①失败恢复 failover
②负载均衡 load balance

在这里插入图片描述

在这里插入图片描述
Put事务流程
Put事务可以分为以下阶段∶
doPut:将批数据先写入临时缓冲区putList(Linkedblockingdequeue)
doCommit:检查channel内存队列是否足够合并。
doRollback:channel内存队列空间不足,回滚,等待内存通道的容量满足合并
putList就是一个临时的缓冲区,数据会先put到putList,最后由commit方法会检查channel是否有足够的缓冲区,有则合并到channel的队列。

在这里插入图片描述
Take事务分为以下阶段︰
doTake:先将数据取到临时缓冲区takeList(linkedBlockingDequeue)
将数据发送到下一个节点
doCommit:如果数据全部发送成功,则清除临时缓冲区takeList
doRollback:数据发送过程中如果出现异常,rollback将临时缓冲区takeList中的数据归还给channel内存队列。

==================================
Hive案例
源文件:
1{A:京东,裙子:1}
2{A:京东,裙子:2}
3{B:成都,鞋子:1}
4{A:天猫,裙子:5}
6{B:北京,鞋子:2}
7{A:天猫,鞋子:2}
8{B:北京,鞋子:3}
9{B:北京,鞋子:4}
10{B:成都,鞋子:2}

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值