spark是什么
Apache Spark™ is a unified analytics engine for large-scale data processing.
统一分析引擎为海量数据处理
统一:什么样的数据都能处理分析,什么类型的数据都可以处理,实时,离线,流式都可以
MapReduce处理数据的流程
map,reduce函数
将分析的中间结果放在磁盘中,并且后续进行分析数据的时候,再次从磁盘中去读取数据,以往此往返。。。
spark框架是如何处理数据的
并行计算的思想、
分而治之的思想
继承了scala集合高阶函数
处理数据的思想
将 要分析的数据放到集合中去,然后调用集合的高阶函数处理数据
Runs Everywhere 可以运行在任何环境
-a.spark要处理的数据在哪里
hdfs/hive/HBASE/ORC/parquet/csv/tsv/jdbc/redis/mangdb/ES/…
spark能从哪里读数据,就可以往那里写数据
-b.spark程序运行在哪里
本地模式
集群模式
Yarn,Standalone,mesos Cluster
spark分析数据的过程(3步骤)
第一步、数据的读取(输入)
将要处理的数据读取封装到一个集合RDD中(类别Scala中List列表)
val inputRDD = sc.textFile(‘…”)
第二步、数据处理(分析)
调用集合RDD中函数(高阶函数)进行处理分析
RDD –>函数 ->另外一个RDD :transformation函数
val outpuRDD = inputRDD.#(#:基本就是List中函数)
比如:
map\flatMap\filter\reducebyKey
第三步、数据的输出(输出)
调用RDD中函数,返回的不是RDD类型
outputRDD.# :此类型函数称为Action函数
foreach\count\sum\first
3步放在一起,就是链式编程
sc.textFile(…).transformation().action
Spark的安装
Spark安装的依赖
JDK8
scala
Spark的安装
到官网下载Spark的安装包,解压到Linux目录下
将spark目录下的conf目录中的配置文件重命名
mv spark-env.sh.template spark-env.sh
修改配置文件、添加JAVA环境,Scala环境,Hadoop的配置文件的目录
启动
帮助命令:
bin/spark-shell –help
启动交互式命令
bin/spark-shell --master local[2]
是否启动成功
不报错,进入交互式命令行
webui上查看
4040
简单测试
可能出现的问题
如果hadoop中配置了hive
spark在启动的时候,会去读取hive的元数据
如果hive 的元数据服务没有开启
就会抛出异常
spark appliction与MapReduce application的区别
spark-shell –master local[2]
运行一个程序在本地模式
[2] ->表示的 线程thread
每个task运行在一个线程Thread里面,都需要1core CPU
对于MapReduce application来讲
一个MapReduce application就是一个Mapreduce job
每个task(map task还是reduce task)运行在进程中(JVM process)