分布式机器学习主要笔记

Mahout:机器学习

Mahout是hadoop的一个机器学习库,主要的编程模型是MapReduce;

每个企业的数据都是多样的和特别针对他们需求的。然而, 在对那些数据的分析种类上却没多少多样性。Mahout项目是实施普通分析计算的一个Hadoop库。用例包括用户协同过滤、用户建议、聚类和分类。

MLlib:机器学习

MLlib 运行在spark上(一个基于内存计算的框架),
MLib和mahout都运行在hadoop上,底层都是基于HDFS文件系统;但Mlib运行在spark上,主要基于内存计算。
MLlib目前支持4种常见的机器学习问题: 分类、回归、聚类和协同过滤

MapReduce和Spark的主要区别

MapReduce和Spark的主要区别在于,MapReduce使用分布式文件系统(HDFS)持久存储,而Spark使用弹性分布式数据集(RDDS)。Spark 在内存中处理数据,而 Hadoop MapReduce 是通过 map 和 reduce 操作在磁盘中处理数据。

数据处理

MapReduce是一种批量处理引擎。MapReduce以顺序步骤来操作,先从集群读取数据,然后对数据执行操作,将结果写回到集群,从集群读 取更新后的数据,执行下一个数据操作,将那些结果写回到结果,依次类推。
Spark执行类似的操作,不过是在内存中一步执行。它从集群读取数据后,对数据 执行操作,然后写回到集群。

spark下运行程序如果内存溢出怎么办?
1 加内存, 简单粗暴
2 将rdd的数据写入磁盘不要保存在内存之中
3 如果是collect操作导致的内存溢出, 可以增大 Driver的 memory 参数

简答说一下hadoop的map-reduce编程模型

首先map task会从本地文件系统读取数据,转换成key-value形式的键值对集合

使用的是hadoop内置的数据类型,比如longwritable、text等

将键值对集合输入mapper进行业务处理过程,将其转换成需要的key-value在输出

之后会进行一个partition分区操作,默认使用的是hashpartitioner,可以通过重写hashpartitioner的getpartition方法来自定义分区规则

之后会对key进行进行sort排序,grouping分组操作将相同key的value合并分组输出,在这里可以使用自定义的数据类型,重写WritableComparator的Comparator方法来自定义排序规则,重写RawComparator的compara方法来自定义分组规则

之后进行一个combiner归约操作,其实就是一个本地段的reduce预处理,以减小后面shufle和reducer的工作量

reduce task会通过网络将各个数据收集进行reduce处理,最后将数据保存或者显示,结束整个job

Spark之所以快是因为它运行在内存之中
RDD:Resilient Distributed Dataset,弹性分布式数据库。
DataFrame:可以从 结构化的数据文件、Hive中的表、外部的数据库、已存在的RDD来创建。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值