《Mahout算法解析与案例实战》一一1.1 Mahout应用背景

简介:

本节书摘来自华章计算机《Mahout算法解析与案例实战》一书中的第1章,第1.1节,作者:樊 哲,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.1 Mahout应用背景

随着互联网的发展,企业拥有的数据也越来越多,比如Facebook公司,从公司成立之初的100万用户数到2010年的1.34亿用户数,再到2014年的13.1亿用户数,其用户增长速度达到了令人惊叹的地步,单单用户数目的增长已经达到了如此地步,更不用说每个用户所产生的数据量了。很明显,面对如此庞大的数据量,企业再用以前的数据处理方式显然已经不能满足要求了。
正所谓,变则通,通则久。企业若想长久发展,面对日益增长的数据,在以前传统的数据处理方式显得力不从心的时候,就需要“变”。所谓“变”,其实就是对现有方式的创新。在此情况下,“云计算”便应运而生。所谓“云计算”是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需提供给计算机和其他设备,这样可以最大限度、最大效率地利用计算机资源,达到快捷、高速地处理数据的目的。
但是,单单有云计算平台还不够,还需要有适合云平台的算法。云计算的核心就是计算,要研究可以在云平台上实现的算法,这样才能发挥云计算的最大威力。以前的数据挖掘算法是在单机上实现的,单机实现的算法其编程思路和模式与云平台下的编程思路和模式很不一样,如果还是按照以前的思路,那么肯定是行不通的。
目前开源的云平台有多种,本书所述的云平台是Hadoop云平台。Hadoop云平台是一个用于处理大数据的分布式应用的开源框架,提供分布式存储和高效计算能力。Hadoop具有以下优势:
同时提供分布式存储和计算能力。
具有极高的可扩展性。
其主要的组件之一HDFS具有很高的数据吞吐量。
具有软件和硬件容错性。
允许大数据的并行工作。
在Hadoop云平台下编程不仅要求用户对Hadoop云平台框架比较熟悉,还要对Hadoop云平台下底层数据流、Map和Reduce原理非常熟悉,这是基本的编程要求。此外,用户要编写某一个算法还需要对该算法的原理比较熟悉,即需要对算法原理理解透彻。总体来看,编写云平台下的算法程序是属于高难度的开发工作了。但是,如果使用Mahout,情况就会有很大的不同,用户再也不用自己编写复杂的算法,不需要掌握太高深的云平台的框架和数据流程的理论知识。用户所需要了解的只是算法的大概原理、算法实际应用环境和如何调用Mahout相关算法的程序接口。当然,在具体的项目中,用户还应该根据实际需求在Mahout源代码基础上进行二次开发以满足具体的实际应用情况。
Mahout是Apache基金会的开源项目之一。Apache Mahout起源于2008年,当时它是Apache Lucene的子项目。在使用Hadoop云平台的基础上,可以将其功能有效地扩展到Hadoop云平台中,提高其运算效率。2010年4月,Apache Mahout最终成为了Apache的顶级项目。创建此项目的用意是建立一个可扩容的云平台算法库。目前,Mahout已经实现了多种经典数据挖掘算法,算是比较完备的算法库了。Mahout目前还在扩充中,由世界上对这个项目感兴趣的云平台算法编程高手们一起进行开发、测试,然后进行算法扩充,任何对这个项目感兴趣的个人或者组织都可以加入到该项目的社区中,为该项目做出贡献。

相关文章
|
20天前
|
存储 缓存 安全
掌握Go语言:Go语言中的字典魔法,高效数据检索与应用实例解析(18)
掌握Go语言:Go语言中的字典魔法,高效数据检索与应用实例解析(18)
|
25天前
|
机器学习/深度学习 存储 算法
sklearn应用线性回归算法
sklearn应用线性回归算法
24 0
|
23天前
|
存储 缓存 算法
Python中collections模块的deque双端队列:深入解析与应用
在Python的`collections`模块中,`deque`(双端队列)是一个线程安全、快速添加和删除元素的双端队列数据类型。它支持从队列的两端添加和弹出元素,提供了比列表更高的效率,特别是在处理大型数据集时。本文将详细解析`deque`的原理、使用方法以及它在各种场景中的应用。
|
25天前
|
安全 Java 数据安全/隐私保护
【深入浅出Spring原理及实战】「EL表达式开发系列」深入解析SpringEL表达式理论详解与实际应用
【深入浅出Spring原理及实战】「EL表达式开发系列」深入解析SpringEL表达式理论详解与实际应用
54 1
|
1天前
|
Java
并发编程之线程池的应用以及一些小细节的详细解析
并发编程之线程池的应用以及一些小细节的详细解析
11 0
|
6天前
|
Java API 数据库
深入解析:使用JPA进行Java对象关系映射的实践与应用
【4月更文挑战第17天】Java Persistence API (JPA) 是Java EE中的ORM规范,简化数据库操作,让开发者以面向对象方式处理数据,提高效率和代码可读性。它定义了Java对象与数据库表的映射,通过@Entity等注解标记实体类,如User类映射到users表。JPA提供持久化上下文和EntityManager,管理对象生命周期,支持Criteria API和JPQL进行数据库查询。同时,JPA包含事务管理功能,保证数据一致性。使用JPA能降低开发复杂性,但需根据项目需求灵活应用,结合框架如Spring Data JPA,进一步提升开发便捷性。
|
7天前
|
数据采集 算法 数据可视化
R语言聚类算法的应用实例
R语言聚类算法的应用实例
82 18
R语言聚类算法的应用实例
|
7天前
|
算法 数据可视化 数据挖掘
R语言社区主题检测算法应用案例
R语言社区主题检测算法应用案例
10 0
|
10天前
|
SQL API 数据库
Python中的SQLAlchemy框架:深度解析与实战应用
【4月更文挑战第13天】在Python的众多ORM(对象关系映射)框架中,SQLAlchemy以其功能强大、灵活性和易扩展性脱颖而出,成为许多开发者首选的数据库操作工具。本文将深入探讨SQLAlchemy的核心概念、功能特点以及实战应用,帮助读者更好地理解和使用这一框架。
|
11天前
|
机器学习/深度学习 分布式计算 BI
Flink实时流处理框架原理与应用:面试经验与必备知识点解析
【4月更文挑战第9天】本文详尽探讨了Flink实时流处理框架的原理,包括运行时架构、数据流模型、状态管理和容错机制、资源调度与优化以及与外部系统的集成。此外,还介绍了Flink在实时数据管道、分析、数仓与BI、机器学习等领域的应用实践。同时,文章提供了面试经验与常见问题解析,如Flink与其他系统的对比、实际项目挑战及解决方案,并展望了Flink的未来发展趋势。附带Java DataStream API代码样例,为学习和面试准备提供了实用素材。
33 0

推荐镜像

更多