1. Spark简介
2. Spark是什么?
3. Spark能代替hadoop吗?
不完全对
因为我们只能使用spark core代替mr做离线计算,数据的存储还是要依赖hdfs
Spark+Hadoop的组合,才是未来大数据领域最热门的组合,也是最有前景的组合!
4. Spark的特点
速度
容易使用
一站式解决方案
可以运行在任意的平台
5. Spark的缺点
JVM的内存overhead太大,1G的数据通常需要消耗5G的内存 (Project Tungsten 正试图解决这个问题 )
不同的spark app之间缺乏有效的共享内存机制(Project Tachyon 在试图引入分布式的内存管理,这样不同的spark app可以共享缓存的数据)
6. Spark vs MR
6.1 mr的局限性
6.2 Spark解决了mr中的那些问题?
抽象层次低,需要手工编写代码来完成,使用上难以上手
只提供两个操作,Map和Reduce,表达力欠缺
一个Job只有Map和Reduce两个阶段
中间结果也放在HDFS文件系统中(速度慢)
延迟高,只适用Batch数据处理,对于交互式数据处理,实时数据处理的支持不够
对于迭代式数据处理性能比较差
==因此,Hadoop MapReduce会被新一代的大数据处理平台替代是技术发展的趋势,而在新一代的大数据处理平台中,Spark目前得到了最广泛的认可和支持==
7. Spark的版本
8. Spark单机版的安装
准备安装包spark-2.2.0-bin-hadoop2.7.tgz
tar -zxvf spark-2.2.0-bin-hadoop2.7.tgz -C /opt/ mv spark-2.2.0-bin-hadoop2.7/ spark
修改spark-env.sh
export JAVA_HOME=/opt/jdk export SPARK_MASTER_IP=uplooking01 export SPARK_MASTER_PORT=7077 export SPARK_WORKER_CORES=4 export SPARK_WORKER_INSTANCES=1 export SPARK_WORKER_MEMORY=2g export HADOOP_CONF_DIR=/opt/hadoop/etc/hadoop
配置环境变量
#配置Spark的环境变量 export SPARK_HOME=/opt/spark export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
启动单机版spark
start-all-spark.sh
查看启动
http://uplooking01:8080
9. Spark分布式集群的安装
配置spark-env.sh
[root@uplooking01 /opt/spark/conf] export JAVA_HOME=/opt/jdk #配置master的主机 export SPARK_MASTER_IP=uplooking01 #配置master主机通信的端口 export SPARK_MASTER_PORT=7077 #配置spark在每个worker中使用的cpu核数 export SPARK_WORKER_CORES=4 #配置每个主机有一个worker export SPARK_WORKER_INSTANCES=1 #worker的使用内存是2gb export SPARK_WORKER_MEMORY=2g #hadoop的配置文件中的目录 export HADOOP_CONF_DIR=/opt/hadoop/etc/hadoop
配置slaves
[root@uplooking01 /opt/spark/conf] uplooking03 uplooking04 uplooking05
分发spark
[root@uplooking01 /opt/spark/conf] scp -r /opt/spark uplooking02:/opt/ scp -r /opt/spark uplooking03:/opt/ scp -r /opt/spark uplooking04:/opt/ scp -r /opt/spark uplooking05:/opt/
分发uplooking01上配置的环境变量
[root@uplooking01 /] scp -r /etc/profile uplooking02:/etc/ scp -r /etc/profile uplooking03:/etc/ scp -r /etc/profile uplooking04:/etc/ scp -r /etc/profile uplooking05:/etc/
启动spark
[root@uplooking01 /] start-all-spark.sh
10. Spark高可用集群
先停止正在运行的spark集群
修改spark-env.sh
#注释以下这两行内容 #export SPARK_MASTER_IP=uplooking01 #export SPARK_MASTER_PORT=7077
添加内容
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=uplooking03:2181,uplooking04:2181,uplooking05:2181 -Dspark.deploy.zookeeper.dir=/spark"
分发修改的[配置
scp /opt/spark/conf/spark-env.sh uplooking02:/opt/spark/conf scp /opt/spark/conf/spark-env.sh uplooking03:/opt/spark/conf scp /opt/spark/conf/spark-env.sh uplooking04:/opt/spark/conf scp /opt/spark/conf/spark-env.sh uplooking05:/opt/spark/conf
启动集群
[root@uplooking01 /] start-all-spark.sh [root@uplooking02 /] start-master.sh
11. 第一个Spark-Shell程序
spark-shell --master spark://uplooking01:7077 #spark-shell可以在启动时指定spark-shell这个application使用的资源(总核数,每个work上使用的内存) spark-shell --master spark://uplooking01:7077 --total-executor-cores 6 --executor-memory 1g #如果不指定 默认使用每个worker上全部的核数,和每个worker上的1g内存
sc.textFile("hdfs://ns1/sparktest/").flatMap(_.split(",")).map((_,1)).reduceByKey(_+_).collect
12. Spark中的角色
Master
Worker
Spark-Submitter ===> Driver
13. Spark提交作业的大体流程
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
本文向大家介绍初识PHP,包括了初识PHP的使用技巧和注意事项,需要的朋友参考一下 1.在PHP中,全局变量都要大写; 2.在PHP表单提交方式中,method属性设置了获取和提交数据的方式; 3.如果在表单中使用了上传元素,那么就要给表单添加属性:enctype="multipart/form-data"; 4.注销用户功能的实现: 删除多个会话:$_SESSION=array(); 5.p
本文向大家介绍初识Laravel,包括了初识Laravel的使用技巧和注意事项,需要的朋友参考一下 #缘由 这两天,我在做一个小活儿的一个小功能,想想反正现在时间不急,我就尝试一下新的工具,Laravel。 #Laravel官网截图: #Laravel哲学 Laravel是一套web应用开发框架,它具有富于表达性且简洁的语法。我们相信,开发过程应该是愉悦、创造性的体验。Laravel努力剔除开发过
用twisted的方式实现前面的内容 最终我们将使用twisted的方式来重新实现我们前面的异步模式客户端。不过,首先我们先稍微写点简单的twisted程序来认识一下twisted。 最最简单的twisted程序就是下面的代码,其在twisted-intro目录中的basic-twisted/simple.py中。 from twisted.internet import reactor reac
Rust 是一门系统级编程语言,被设计为保证内存和线程安全,并防止段错误。作为系统级编程语言,它的基本理念是 “零开销抽象”。理论上来说,它的速度与 C / C++ 同级。 Rust 可以被归为通用的、多范式、编译型的编程语言,类似 C 或者 C++。与这两门编程语言不同的是,Rust 是线程安全的! Rust 编程语言的目标是,创建一个高度安全和并发的软件系统。它强调安全性、并发和内存控制。尽管
Spark 编程的第一步是需要创建一个 SparkContext 对象,用来告诉 Spark 如何访问集群。在创建 SparkContext 之前,你需要构建一个 SparkConf 对象, SparkConf 对象包含了一些你应用程序的信息。 val conf = new SparkConf().setAppName(appName).setMaster(master) new SparkCon
本文向大家介绍初识php MVC,包括了初识php MVC的使用技巧和注意事项,需要的朋友参考一下 学习一个框架之前,基本上我们都需要知道什么是mvc,即model-view-control,说白了就是数据控制以及页面的分离实现,mvc就是这样应运而生的,mvc分为了三个层次,而且三个层次各司其职,互不干扰,首先简单介绍下,各个层次,view即是视图,也就是web页面,control即是控制器 向