hadoop的数据分析和分布式存储
摘 要生在信息革命的今天,数据成指数爆炸形式增长着,TB,PB,ZB的时代一步步的进入人们的生活当中,传统的数据存储和数据挖掘技术已经跟不上了时代的脚步了,于是大数据计数开始在计算机行业开始流广开来。Apache实验室由google的三篇的论文实现了Hadoop分布式文件系统和并行计算编程模型,通过云计算等技术得到了广泛的部署和应用。Hadoop的分布式存储技术让海量数据的存储得到了很好的解决,可以说做到了海量数据存储的终结者的地位,而在对大数据的计算和硬件资源管理的终结者的最有力竞争者得数Spark了,他的出现让比如协同过滤、聚类、回归等一些传统数据挖掘算法找到了栖身之地。本文将介绍Hadoop和Spark分布式集群的具体搭建过程与基于Spark的数据挖掘。
目 录
第一章 概述 1
1.1引言 1
1.2 大数据现状 1
1.3关于Spark 1
1.4关于数据挖掘 2
1.5系统的开发环境 2
第二章 系统的实现技术 4
2.1 Hadoop核心 4
2.2 HDFS 4
2.3 MapReduce 5
2.4 Spark 6
2.5 数据挖掘 8
第三章 系统设计方案 9
3.1系统的主要构成 9
3.2设计的总体方案 10
3.4机器学习和实例介绍 11
第四章 系统的实现 23
4.1 虚拟集群搭建 23
4.2 Hadoop集群安装 26
结束语 40
致 谢 41
参考文献 42
概述
1.1引言
随着近20多年来计算机技术的不断革新,企业积累了大量数据。数字传感器的进步使得通信系统越来越广泛的使用,尤其是移动平台和移动终端的飞速增长;系统运行产生的大量日志一起越来越多的企业采用了无纸化办公的工作方式,这些情况都使得企业积攒了海量的数据。我们正处于一个数据爆炸增长的时代,也是一个越来越依靠数据进行决策的时代,对海量数据的挖掘分析也从抽样数据分析变成了全量数据分析。为此,业界用钱了许多新
*好棒文|www.hbsrm.com +Q: ^351916072^
技术,Apache Hadoop是其中当之无愧的王者。当前Hadoop已然发展为拥有HDFS、YARN、MapReduce、等系统的较为完整的大数据系统生态圈,为大数据的开发一用提供了比较全面的解决方案。毫无疑问,Hadoop已成为大数据行业发展背后强劲的驱动力。
1.2 大数据现状
在Hadoop开发的前些年的时间,大多数的数据存储采用的还是HBase和HDFS,近些年也不例外,但是在对海量数据的挖掘和处理工作的重心却从传统的MapReduce转向了方向,因为MapReduce的的运行太过依赖于I/O操作所以数据的处理非常的慢,并且Hadoop的设计之初是将一群廉价的PC机组合成集群,也是因为廉价机所发生故障的概率较大,也正是这两个因素让MapReduce的应用场景非常狭窄,越来越无法满足用户的需求。在这样的背景下,Spark于2009年诞生于AMPLab实验室。一经推出,其精妙的数据集抽象、数据重阳机制、以及人性化的用户接口,都给人们留下深刻印象。尤其是Spark特别擅长的迭代式计算,相较于MapReduce,性能上有上百倍的提升。下面Apache官网给出MapReduce和Spark的性能比较图(图11)。
图1-1 Hadoop和Spark运行效率对比
1.3关于Spark
2013年成为Apache顶级项目后,Spark基于自身的核心API,发展出适应大数据处理的多种场景的生态组件,包括Shark/Spark SQL、Spark Streaming、Spark GraphX、Spark MLlib 等,而这里的MLlib 的API的全拼为Machine Learning Library 是其中API是囊括了大多数传统的数据的库函数,如果没有这个库的话去写传统的机器学习的程序那代码将会达到上万行,比如传统的MapReduce在写传统的协同过滤的算法那代码量也是能让一个程序员看到害怕,虽然这些也是可以通过后期封装来实现代码再次编写的代码减少,但是至少还是会让一个初学者望而生畏吧。尤其看见Spark不仅能让运行效率得到提高,在编写程序的效率上也得到了相应的提高,极大地满足了用户的需求。
1.4关于数据挖掘
简单地说,数据挖掘是从大量数据中提取或“挖掘”知识。该术语实际上有点用词不当。注意,从矿石或砂子挖掘黄金称作黄金挖掘,而不是砂石挖掘。这样,数据挖掘应当更正确地命名为“从 数据中挖掘知识”,不幸的是它有点长。“知识挖掘”是一个短术语可能不能强调从大量数据中挖掘。毕竟,挖掘是一个很生动的术语,它抓住了从大量的、未加工的材料中发现少量金块这一过程的特点(图 12)。这样,这种用词不当携带了“数据”和“挖掘”,成了流行的选择。还有一些术语,具有和数据挖掘类似,但稍有不同的含义,如数据库中知识挖掘、知识提取、数据/模式分析、数据考古和数据捕捞。本文将介绍数据挖掘几个经典算法如协同过滤、线性回归、聚类、决策树等。
图 12 数据挖掘描述
1.5系统的开发环境
本系统主要以Hadoop作为存储中心,将数据存以文件的形式存于HDFS当中,由Spark为计算中心,其中数据挖掘部分将会调用Spark中的MLlib的机器学习的库莱进行数据挖掘。由于Spark是由Scala编写,所以主要的数据挖掘代码由Eclipse for Scala 的IDE编写。在对数据展示界面有Android来完成,其开发环境为Eclipse for Android 的IDE完整,客户端的之间的通信有Socket完成,Socket 由Java编写,其开发环境为Eclipse for Java EE。
第二章 系统的实现技术
2.1 Hadoop核心
Hadoop的核心就是HDFS和MapReduce,而两者只是理论基础,不是具体可使用的高级应用,Hadoop旗下有很多经典子项目,比如HBase、Hive等,这些都是基于HDFS和MapReduce发展出来的。要想了解Hadoop,就必须知道HDFS和MapReduce是什么。
2.2 HDFS
HDFS(Hadoop Distributed File System,Hadoop分布式文件系统),它是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,适合那些有着超大数据集(large data set)的应用程序。
目 录
第一章 概述 1
1.1引言 1
1.2 大数据现状 1
1.3关于Spark 1
1.4关于数据挖掘 2
1.5系统的开发环境 2
第二章 系统的实现技术 4
2.1 Hadoop核心 4
2.2 HDFS 4
2.3 MapReduce 5
2.4 Spark 6
2.5 数据挖掘 8
第三章 系统设计方案 9
3.1系统的主要构成 9
3.2设计的总体方案 10
3.4机器学习和实例介绍 11
第四章 系统的实现 23
4.1 虚拟集群搭建 23
4.2 Hadoop集群安装 26
结束语 40
致 谢 41
参考文献 42
概述
1.1引言
随着近20多年来计算机技术的不断革新,企业积累了大量数据。数字传感器的进步使得通信系统越来越广泛的使用,尤其是移动平台和移动终端的飞速增长;系统运行产生的大量日志一起越来越多的企业采用了无纸化办公的工作方式,这些情况都使得企业积攒了海量的数据。我们正处于一个数据爆炸增长的时代,也是一个越来越依靠数据进行决策的时代,对海量数据的挖掘分析也从抽样数据分析变成了全量数据分析。为此,业界用钱了许多新
*好棒文|www.hbsrm.com +Q: ^351916072^
技术,Apache Hadoop是其中当之无愧的王者。当前Hadoop已然发展为拥有HDFS、YARN、MapReduce、等系统的较为完整的大数据系统生态圈,为大数据的开发一用提供了比较全面的解决方案。毫无疑问,Hadoop已成为大数据行业发展背后强劲的驱动力。
1.2 大数据现状
在Hadoop开发的前些年的时间,大多数的数据存储采用的还是HBase和HDFS,近些年也不例外,但是在对海量数据的挖掘和处理工作的重心却从传统的MapReduce转向了方向,因为MapReduce的的运行太过依赖于I/O操作所以数据的处理非常的慢,并且Hadoop的设计之初是将一群廉价的PC机组合成集群,也是因为廉价机所发生故障的概率较大,也正是这两个因素让MapReduce的应用场景非常狭窄,越来越无法满足用户的需求。在这样的背景下,Spark于2009年诞生于AMPLab实验室。一经推出,其精妙的数据集抽象、数据重阳机制、以及人性化的用户接口,都给人们留下深刻印象。尤其是Spark特别擅长的迭代式计算,相较于MapReduce,性能上有上百倍的提升。下面Apache官网给出MapReduce和Spark的性能比较图(图11)。
图1-1 Hadoop和Spark运行效率对比
1.3关于Spark
2013年成为Apache顶级项目后,Spark基于自身的核心API,发展出适应大数据处理的多种场景的生态组件,包括Shark/Spark SQL、Spark Streaming、Spark GraphX、Spark MLlib 等,而这里的MLlib 的API的全拼为Machine Learning Library 是其中API是囊括了大多数传统的数据的库函数,如果没有这个库的话去写传统的机器学习的程序那代码将会达到上万行,比如传统的MapReduce在写传统的协同过滤的算法那代码量也是能让一个程序员看到害怕,虽然这些也是可以通过后期封装来实现代码再次编写的代码减少,但是至少还是会让一个初学者望而生畏吧。尤其看见Spark不仅能让运行效率得到提高,在编写程序的效率上也得到了相应的提高,极大地满足了用户的需求。
1.4关于数据挖掘
简单地说,数据挖掘是从大量数据中提取或“挖掘”知识。该术语实际上有点用词不当。注意,从矿石或砂子挖掘黄金称作黄金挖掘,而不是砂石挖掘。这样,数据挖掘应当更正确地命名为“从 数据中挖掘知识”,不幸的是它有点长。“知识挖掘”是一个短术语可能不能强调从大量数据中挖掘。毕竟,挖掘是一个很生动的术语,它抓住了从大量的、未加工的材料中发现少量金块这一过程的特点(图 12)。这样,这种用词不当携带了“数据”和“挖掘”,成了流行的选择。还有一些术语,具有和数据挖掘类似,但稍有不同的含义,如数据库中知识挖掘、知识提取、数据/模式分析、数据考古和数据捕捞。本文将介绍数据挖掘几个经典算法如协同过滤、线性回归、聚类、决策树等。
图 12 数据挖掘描述
1.5系统的开发环境
本系统主要以Hadoop作为存储中心,将数据存以文件的形式存于HDFS当中,由Spark为计算中心,其中数据挖掘部分将会调用Spark中的MLlib的机器学习的库莱进行数据挖掘。由于Spark是由Scala编写,所以主要的数据挖掘代码由Eclipse for Scala 的IDE编写。在对数据展示界面有Android来完成,其开发环境为Eclipse for Android 的IDE完整,客户端的之间的通信有Socket完成,Socket 由Java编写,其开发环境为Eclipse for Java EE。
第二章 系统的实现技术
2.1 Hadoop核心
Hadoop的核心就是HDFS和MapReduce,而两者只是理论基础,不是具体可使用的高级应用,Hadoop旗下有很多经典子项目,比如HBase、Hive等,这些都是基于HDFS和MapReduce发展出来的。要想了解Hadoop,就必须知道HDFS和MapReduce是什么。
2.2 HDFS
HDFS(Hadoop Distributed File System,Hadoop分布式文件系统),它是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,适合那些有着超大数据集(large data set)的应用程序。
版权保护: 本文由 hbsrm.com编辑,转载请保留链接: www.hbsrm.com/jsj/jsjkxyjs/2155.html