基于Hadoop平台的Spark框架研究

2014-12-31 00:52陈虹君
电脑知识与技术 2014年35期
关键词:机器学习大数据

陈虹君

摘要:Hadoop是大数据挖掘的主流平台,在该平台上可以进行大数据的挖掘。数据挖掘的规模和速度是我们需要考虑的问题。Spark框架是一个优秀的框架,它集机器学习,图计算和在线学习为一身,是简洁、强大、高效的。该文先讨论了Spark的组成,接着讨论Spark的任务调度方式,最后讨论了Spark的环境及测试。

关键词:大数据;Hadoop;Spark;机器学习;图计算;实时处理

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)35-8407-02

Spark Framework Based on Hadoop Platform

CHEN Hong-jun

(ChengDu College of university of Electronic Science And Technology of China, Chengdu 611740, China)

Abstract: Hadoop is the main platform of big data mining on which you can mine big data.The scale and speed of data mining is an issue we need to consider. Spark framework is an excellent framework, which combines machine learning, graphs computing and online processing in one framework, which is a simple, powerful and efficient. This paper first discusses the Spark composition, followed by a discussion Spark task scheduling, and finally discuss the environment and test the Spark.

Key words: big data; Hadoop; Spark; machine learnin; graphs computing; online processing

云计算的研究与发展十分迅速,云计算的具体应用大数据挖掘更是具有很高的实用价值和商业价值。如何对大数据进行挖掘,并且如何对大数据进行快速、高效的挖掘更是值得研究。

1 Spark—新一代大数据挖掘平台

Spark称为快数据,比Hadoop的传统处理方式MapReduce有着很大的差别,效率至少提高100倍以上。

Spark分为四大模块:Spark SQL-RDD(数据执行的基本单元),MLlib(机器学习)、Graphx(图计算),Spark Streaming(实时处理)。这四个部分的数据处理单元都是RDD。所以整个框架形成了大数据处理各种应用场景编程的一致性。

同时,Spark是基于内存的编程模型,它可以把中间的迭代过程不放在磁盘中,直接数据不落地在内存中执行,极大地提高了它的执行速度。下面来介绍它的各个模块。

2 Spark SQL

Spark SQL允许在SQL和HiveQL中的相关查询表达式在Spark中的执行。这个组件的核心是一个新型的RDD,JavaSchemaRDD。JavaSchemaRDD是由Row对象和schema描述行中每一列的数据类型。JavaSchemaRDD类似一个关系型数据库中的表。一个JavaSchemaRDD可以通过已存在的RDD,Parquet文件,一个JSON数据集或者存储在Apache Hive通过HiveQL运行的数据来创建。

Spark SQL程序都需要程序的入口:

public static void main(String[] args) throws Exception {

SparkConf sparkConf = new SparkConf().setAppName("JavaSparkSQL");

JavaSparkContext ctx = new JavaSparkContext(sparkConf);

//创建SQL查询的入口点,上下文。可以用来创建SchemaRDD来执行SQL查询。

JavaSQLContext sqlCtx = new JavaSQLContext(ctx);

…}

3 MLlib

MLlib是一些常用机器学习算法和工具中非常突出的,分类,回归,聚类,协同过滤,降维,以及相关的优化原语。

许多标准的机器学习方法可以归结为一个凸优化问题,例如一项任务,去找到一个凸面函数f的最小值,这个凸面函数依赖于可变的vector w 向量,这个向量在一个node 中叫做weights 权值,我们可以把这个在客观函数里写成最优化问题,

[minw∈?d f(w)]

[f(w):=1ni=1nL(w;xi,yi)+λR(wi).]

这个[vectors xi∈?d]是训练数据例子, 1≤i≤n, and yi∈R 是他们对应的标签,这也是我们想预测的标签。

MLlib 包括的评价指标有:精确度,回收,F值,ROC,精密回收曲线,曲线下面积(AUC),AUC常用来比较模型,而精确度,回收,F值,ROC用来确定阀值。

4 Graphx

GraphX是新的(alpha)Spark用于图表和图形,并行计算的的API。 在一个高层次上, GraphX 延伸了Spark RDD 通过引入Resilient Distributed Property Graph (弹性分布式属性图): 一个有向多重图与附加到每个顶点和边的属性。为了支持图形计算, GraphX 公开了一组基本的运算符 (e.g., subgraph (子图), joinVertices, and mapReduceTriplets) 以及一个最优的转变的Pregel API. 此外, GraphX 包含一个对图形 algorithms (算法) and builders(构建器) 不断增长的包集合,用以简化图形分析任务。endprint

从社交网络到语言建模,图形数据的增长规模和重要性,带动众多新图形并行系统(例如, Giraph and GraphLab)的发展。通过限制可以被表示计算的类型和引入新技术来划分和分配图形,这些系统能够有效地执行复杂的图形算法命令并远快于大多数普通的数据并行系统。

5 Spark Streaming

如果要用一句话来概括Spark Streaming的处理思路的话,那就是" 将连续的数据持久化,离散化,然后进行批量处理" 。

Spark Streaming 是Spark核心的扩展API,允许使高通量、容错实时数据流的流处理。数据可以从许多来源摄取如Kafka,Flume,Twitter,ZeroMQ或普通TCP套接字和使用复杂的算法表达式处理的高级函数如:map, reduce, join 和window的数据。最后处理过的数据可以放到文件系统,数据库和可视化仪表板上。事实上,你可以引用内置的Spark的机器学习算法,数据流图处理算法。

6 Spark 的任务调度方式

Spark应用程序在集群上是一个独立运行的过程,在你的主程序中有SparkContext对象协调(驱动程序)。SparkContext可以连接多种类型的cluster managers(Sparks own standalone cluster manager or Mesos/YARN),跨应用程序分配资源。一旦连接,Spark获得集群中节点的executors(执行权),应用程序进行计算和存储数据是一个过程。接下来,它将发送你的程序代码(JAR或Python文件传递给SparkContext)到executors。最后,SparkContext发送tasks给executors执行。

7 Spark 的环境搭建与测试

配置1台,克隆两台,修改/etc/hostname即可。

创建hadoop用户组和用户。创建用户组sudo addgroup hadoop;创建用户

sudo adduser -ingroup hadoop hadoop;给hadoop用户添加权限,打开/etc/sudoers文件:sudo gedit /etc/sudoers;在root ALL=(ALL)ALL行下添加ALL=(ALL:ALL) ALL。如果不添加这行,hadoop将不能执行sudo操作。

解压jdk1.7.0_10配置好,采用桥接模式获得静态虚拟机ip,关闭防火墙重启虚拟机生效。配置ssh可以实现远程登录和管理

进入etc下修改配置文件

cd /usr/local/hadoop/etc/hadoop

编辑hadoop-env.sh(修改JAVA_HOME的配置)

sudo gedit hadoop-env.sh

export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_45

编辑yarn-env.sh,在底部增加

export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_45

测试:数据含义:共计一百万条数据,每条数据左边是名字,右边是年龄。

8 总结

大数据的快速挖掘在Spark框架中是可以很方便地实现的,以廉价的内存资源获取高效的大数据处理速度是值得的。无可否认,Spark的应用将会快速地繁荣起来。

参考文献:

[1] Spark编程指南[EB/OL].http://spark.apache.org/docs/latest/programming-guide.html,2013.

[2] 机器学习库[EB/OL].http://blog.csdn.net/johnny_lee/article/details/25656343,2013.

[3] Graphx学习[EB/OL].http://spark.apache.org/docs/latest/graphx-programming-guide.html,2012.

[4] 云计算的分类[EB/OL].http://tech.qq.com/a/20101103/000074.htm,2010.

[5] 最近的spark文档[EB/OL].http://spark.apache.org/docs/latest/,2014.endprint

从社交网络到语言建模,图形数据的增长规模和重要性,带动众多新图形并行系统(例如, Giraph and GraphLab)的发展。通过限制可以被表示计算的类型和引入新技术来划分和分配图形,这些系统能够有效地执行复杂的图形算法命令并远快于大多数普通的数据并行系统。

5 Spark Streaming

如果要用一句话来概括Spark Streaming的处理思路的话,那就是" 将连续的数据持久化,离散化,然后进行批量处理" 。

Spark Streaming 是Spark核心的扩展API,允许使高通量、容错实时数据流的流处理。数据可以从许多来源摄取如Kafka,Flume,Twitter,ZeroMQ或普通TCP套接字和使用复杂的算法表达式处理的高级函数如:map, reduce, join 和window的数据。最后处理过的数据可以放到文件系统,数据库和可视化仪表板上。事实上,你可以引用内置的Spark的机器学习算法,数据流图处理算法。

6 Spark 的任务调度方式

Spark应用程序在集群上是一个独立运行的过程,在你的主程序中有SparkContext对象协调(驱动程序)。SparkContext可以连接多种类型的cluster managers(Sparks own standalone cluster manager or Mesos/YARN),跨应用程序分配资源。一旦连接,Spark获得集群中节点的executors(执行权),应用程序进行计算和存储数据是一个过程。接下来,它将发送你的程序代码(JAR或Python文件传递给SparkContext)到executors。最后,SparkContext发送tasks给executors执行。

7 Spark 的环境搭建与测试

配置1台,克隆两台,修改/etc/hostname即可。

创建hadoop用户组和用户。创建用户组sudo addgroup hadoop;创建用户

sudo adduser -ingroup hadoop hadoop;给hadoop用户添加权限,打开/etc/sudoers文件:sudo gedit /etc/sudoers;在root ALL=(ALL)ALL行下添加ALL=(ALL:ALL) ALL。如果不添加这行,hadoop将不能执行sudo操作。

解压jdk1.7.0_10配置好,采用桥接模式获得静态虚拟机ip,关闭防火墙重启虚拟机生效。配置ssh可以实现远程登录和管理

进入etc下修改配置文件

cd /usr/local/hadoop/etc/hadoop

编辑hadoop-env.sh(修改JAVA_HOME的配置)

sudo gedit hadoop-env.sh

export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_45

编辑yarn-env.sh,在底部增加

export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_45

测试:数据含义:共计一百万条数据,每条数据左边是名字,右边是年龄。

8 总结

大数据的快速挖掘在Spark框架中是可以很方便地实现的,以廉价的内存资源获取高效的大数据处理速度是值得的。无可否认,Spark的应用将会快速地繁荣起来。

参考文献:

[1] Spark编程指南[EB/OL].http://spark.apache.org/docs/latest/programming-guide.html,2013.

[2] 机器学习库[EB/OL].http://blog.csdn.net/johnny_lee/article/details/25656343,2013.

[3] Graphx学习[EB/OL].http://spark.apache.org/docs/latest/graphx-programming-guide.html,2012.

[4] 云计算的分类[EB/OL].http://tech.qq.com/a/20101103/000074.htm,2010.

[5] 最近的spark文档[EB/OL].http://spark.apache.org/docs/latest/,2014.endprint

从社交网络到语言建模,图形数据的增长规模和重要性,带动众多新图形并行系统(例如, Giraph and GraphLab)的发展。通过限制可以被表示计算的类型和引入新技术来划分和分配图形,这些系统能够有效地执行复杂的图形算法命令并远快于大多数普通的数据并行系统。

5 Spark Streaming

如果要用一句话来概括Spark Streaming的处理思路的话,那就是" 将连续的数据持久化,离散化,然后进行批量处理" 。

Spark Streaming 是Spark核心的扩展API,允许使高通量、容错实时数据流的流处理。数据可以从许多来源摄取如Kafka,Flume,Twitter,ZeroMQ或普通TCP套接字和使用复杂的算法表达式处理的高级函数如:map, reduce, join 和window的数据。最后处理过的数据可以放到文件系统,数据库和可视化仪表板上。事实上,你可以引用内置的Spark的机器学习算法,数据流图处理算法。

6 Spark 的任务调度方式

Spark应用程序在集群上是一个独立运行的过程,在你的主程序中有SparkContext对象协调(驱动程序)。SparkContext可以连接多种类型的cluster managers(Sparks own standalone cluster manager or Mesos/YARN),跨应用程序分配资源。一旦连接,Spark获得集群中节点的executors(执行权),应用程序进行计算和存储数据是一个过程。接下来,它将发送你的程序代码(JAR或Python文件传递给SparkContext)到executors。最后,SparkContext发送tasks给executors执行。

7 Spark 的环境搭建与测试

配置1台,克隆两台,修改/etc/hostname即可。

创建hadoop用户组和用户。创建用户组sudo addgroup hadoop;创建用户

sudo adduser -ingroup hadoop hadoop;给hadoop用户添加权限,打开/etc/sudoers文件:sudo gedit /etc/sudoers;在root ALL=(ALL)ALL行下添加ALL=(ALL:ALL) ALL。如果不添加这行,hadoop将不能执行sudo操作。

解压jdk1.7.0_10配置好,采用桥接模式获得静态虚拟机ip,关闭防火墙重启虚拟机生效。配置ssh可以实现远程登录和管理

进入etc下修改配置文件

cd /usr/local/hadoop/etc/hadoop

编辑hadoop-env.sh(修改JAVA_HOME的配置)

sudo gedit hadoop-env.sh

export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_45

编辑yarn-env.sh,在底部增加

export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_45

测试:数据含义:共计一百万条数据,每条数据左边是名字,右边是年龄。

8 总结

大数据的快速挖掘在Spark框架中是可以很方便地实现的,以廉价的内存资源获取高效的大数据处理速度是值得的。无可否认,Spark的应用将会快速地繁荣起来。

参考文献:

[1] Spark编程指南[EB/OL].http://spark.apache.org/docs/latest/programming-guide.html,2013.

[2] 机器学习库[EB/OL].http://blog.csdn.net/johnny_lee/article/details/25656343,2013.

[3] Graphx学习[EB/OL].http://spark.apache.org/docs/latest/graphx-programming-guide.html,2012.

[4] 云计算的分类[EB/OL].http://tech.qq.com/a/20101103/000074.htm,2010.

[5] 最近的spark文档[EB/OL].http://spark.apache.org/docs/latest/,2014.endprint

猜你喜欢
机器学习大数据
基于网络搜索数据的平遥旅游客流量预测分析
前缀字母为特征在维吾尔语文本情感分类中的研究
基于支持向量机的金融数据分析研究
基于大数据背景下的智慧城市建设研究