Spark 学习 从零开始
Spark 简介 从零开始
Spark是什么
spark是一个快速且通用的集群计算平台
Spark是快速的
Spark扩充了流行的Mapreduce计算模型
Spar是基于内存的计算
Spark是通用的
Spark的设计容纳了其它分布式系统拥有的功能
批处理,迭代式计算,交互查询和流处理等
优点:降低了集群的维护成本
Spark是高度开放的
Spark提供了Python,Java Scala,SQL的API和丰富的内之库。
Spark和其它的大数据工具整合的很好,包括hadoop,kafka等
Spark的组件
Spark Core
包括Spark的基本功能,包括任务调度,内存管理,容错机制等。
应用场景,为其他组件提供底层的服务
Spark SQL:
是Spark处理结构化数据的库,就像Hive SQL,Mysql一样。
应用场景,企业中用来做报表统计。
Spark Streaming:
实时数据流处理组件,类似Storm。
Sparm Streaming提供了API来操作实时流数据。
应用场景,企业中用来从kafka接受数据做实时统计。
Mlib:
一个包含通用机器学习功能的包,Machine learning lib。
包含分类,聚类,回归等,还包含模型评估,和数据导入。
MLlib提供的上面这些方法,都支持集群上的横向扩展。
应用场景,机器学习。
Graphx:
是处理图的库(例如,涉及网络图),并进行图的并行计算。
像Spark Streaming,Spark SQL一样,它也继承了RDD API。
它提供了各种图的操作,和常用的图算法,例如PangeRank算法。
应用场景,图计算。
Cluster Managers:
就是集群管理,Spark自带一个集群管理是单独调度器。
常见的集群管理包括Hadoop YARN,Apache Mesos
紧密集成的优点:
Spark底层优化了,基于Spark底层的组件,也得到了相应的优化。
紧密集成,节省了各个组件使用时的部署,测试时间。
向Spark增加新的组件时,其它组件,可立即享用新组件的功能。
--------------------------------------------------------------
Spark与Hadoop的比较
Hadoop应用场景
离线处理
对时效性要求不高
Spark应用场景
实时性要求高的场景
机器学习等领域
比较
Doug Cutting的观点
这是生态系统,每个组件都有其作用,各善其职即可
Spark不具有HDFS的存储能力,要借助HDFS等持久化数据。
大数据将会孕育出等多的新技术
--------------------------------------------------------------
Spark安装
Spark运行环境:
Spark是Scala写的,运行在JVM上,所以运行环境Java7+。
如果使用Python API,需要安装Python2.6+或者Python3.4+。
Spark 1.6.2 -Scala2.10 Spark 2.0.0 -Scala 2.11
Spark下载:
下载地址:http://spark.apache.org/downloads.html
搭Spark不需要Hadoop,如有Hadoop集群,可下载相应的版本。
解压
也可以在linux上通过wget命令下载

然后直接进行解压

Spark目录:
bin包含了用来和Spark交互的可执行文件,如Spark shell.
core,streaming,pytho,...包含主要组件的源代码。
examples包含了一些单机Spark job,你可以研究和运行这些例子。

Spark的shell:
Spark的shell使你能够处理分布在集群上的数据。
Spark把数据加载到节点的内存中,因此分布式处理可在妙级完成。
快速的迭代式计算,实时查询、分析一般能够在shell中完成。
Spark提供了Python shells和Scala shells。
Python Shell:
bin/pyspark
例如:./pyspark
退出:exit();
Scala Shell:
bin/spark-shell
例子:
val lines = sc.textFile("../../testfile/")
lines.count() 当前条数
lines.first 第一行
修改日志级别 log4j.rootCategory = WARN,console
目录conf/log4j.properties



--------------------------------------------------------------
Spark开发环境搭建
Scala安装
下载地址: http://www.scala-lang.org/download/2.10.5.html
默认安装选项会自动配置环境变量。
Spark 1.6.2 -Scala2.10 Spark 2.0.0 -Scala 2.11
Intellij IDEA的下载,安装:
下载地址:http://www.jetbrains.com/idea/
注册码地址: http://idea.lanyus.com
插件安装
plugins,搜索Scala直接安装,插件中有scala和sbt.
步骤
在Intellij中点击File,选择settings,然后点击plugins,在弹出的右面的搜索框中输入scala,然后找到直接点击下载就可以。

开发第一个Spark程序
配置ssh无密登录:
ssh-keygen
.ssh目录下 catxxx_rsa.pub > authorized_keys
chmod 600 authorized_keys
Spark开发环境搭建
搭建开发环境常遇到的问题:
网络问题,导致sbt查询加载失败,解决方法,好的网络环境
版本匹配问题 Scala2.10.5 , Jdk1.8 , Spark1.6.2, Sbt0.13.8
开发第一个Spark 程序
新建好的scala项目如下
File -> new -> Project.. -> 选择Scala 右面的SBT选项 Next
如图



如图所示 红框中指明 Spark-core 版本号,点击上面的刷新,然后自动下载

开始写入程序如图

打包:
配置jar包
build
File - > Project Structure... -> Artifacts ->点击+号 -> JAE -> From modules with dependencies... -> 选择项目名 指明要打包的代码
如图所示 配置jar包成功

然后开始buld
Build -> Build Artifact... ->build
打包提交之前需要启动集群
进入 /usr/local/xiaoma/spark/spark-2.2.0-bin-hadoop2.6/sbin
启动集群:
启动master ./sbin/start-master.sh
启动worker ./bin/spark-class
提交作业 ./bin/spark-submit
例如:
1. 启动master
././bin/start-master.sh

2.启动worder
./bin/spark-class org.apache.spark.deploy.worker.Worker spark://localhost.localdomain:7077
http://www.imooc.com/video/14395
3.提交作业
./bin/spark-submit --master spark://localhost.localdomain:7077 --class WordCount /home/mainxia/soft/wordcount.jar

浙公网安备 33010602011771号