一,
多进程:方便控制资源,以为独享进程空间,但是消耗更多的启动时间,不适合运行那些低延时作业,导致mapreduce时效相差
多线程:spark的运行方式,所以spark适合低延迟类型的作业。好处:(1)任务启动速度快(2)同节点上的任务由于在一个进程中,所以共享内存——》适合内存密集任务(加载大量词表的程序)(3)同节点上所有任务运行在JVM进程(Executor)里面,适合Executor所占资源被多批任务调用 。stage(阶段)是spark独有的,一般一个job有多个stage ,各个stage之间按照顺序执行。
Spark:基于弹性分布式数据集模型,具有良好的通用性、容错性和并行处理数据的能力。
RDD(Resilient Distributed DataSet):弹性分布式数据集(相当于集合),本质是数据的描述(只读的、可分布的分布式数据集),而不是数据本身。不包含待处理的数据,真正的数据只有在执行的时候才加载进来。加载数据主要有两个来源:1:spark外部——》HDFS ,2:spark内部:——》其他RDD。
RDD特征: 懒操作:延迟计算,action的时候才操作。 瞬时性:用时才产生,用完就释放。记录 数据的变换而不是数据本身保证 容错 (lineage):RDD 采用数据变换,若部分数据丢失,可通过计算得到
Spark任务来说,最终的目标是ACtion(save,collect)
==================================================================================================二,Spark配置及启动
1,下载Spark软件包,注意要与Hadoop版本相配套,同时要下载Scala和sbt(这是啥,我也不知道),这两个文件不用配置,下载后放在/usr/local/src/目录下就好。
解压spark后,进入conf 目录下修改spark-env.sh 和slaves文件。先要拷贝,因为没有,cp spark-emv.sh.template spark-env.sh
调整如下内容:
export SCALA_HOME=/usr/local/src/scala-2.11.4
export JAVA_HOME=/usr/local/src/jdk1.7.0_45
export HADOOP_HOME=/usr/local/src/hadoop-2.6.1
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
SPARK_MASTER_IP=master
SPARK_LOCAL_DIRS=/usr/local/src/spark-1.6.0-bin-hadoop2.6
SPARK_DRIVER_MEMORY=1G
修改slaves的内容:
然后,将配置好的spark安装目录,分发到slave1和slave2节点上。
最后,配置bashrc文件,(vim ~/.bashrc)(前提配置好Java和Hadoop环境变量)
export SCALA_HOME=/usr/local/src/scala-2.11.4
export SBT_HOME=/usr/local/src/sbt
export HADOOP_HOME=/usr/local/src/hadoop-2.6.1
export PATH=$HADOOP_HOME/bin:$JAVA_HOME/bin:$SCALA_HOME/bin:$SBT_HOME/bin:$PATH
export HADOOP_HOME_WARE_SUPPRESS=not_null
2,启动Spark
先启动Hadoop,进入spark-1.6.0-bin-hadoop2.6目录下,执行./sbin/start-all.sh
查看相关进程jps:主节点在原先的Hadoop原有的进程基础上多出一个master进程,从节点多出一个worker进程。
3,验证Spark
(1)本地模式:
./bin/run-example SparkPi 10 --master local[2]
(2)集群模式Spark Stand alone:
./bin/spark-submit --class org.apache.spark.examples.SparkPi --master spark://master7077 lib/spark-examples-1.6.0-hadoop2.6.0.jar 100
(3)集群模式Spark on Yarn集群yarn-cluster模式:
./bin/spark-submit --class org.apache.spark.examples.SparkPi --master yarn-cluster lib/spark-examples-1.6.0-hadoop2.6.0.jar 10