1.Spark概念
Spark是一个基于内存的分布式计算框架。
效率高:因为是基于内存的,所以在数据处理过程中,数据不会落地,而是存入内存中,效率较MR更高
易用:提供了很多算子,简化开发流程
通用性:Spark之上,还有Spark SQL、Spark Streaming、MLlib、GraphX这几个子框架去处理各种应用场景
运行在各个地方:Spark可以跑在YARN之上,Mesos、standlone(Spark自带的集群管理方式),能够访问HDFS、HBase等数据源
2.Spark环境搭建
2.1 下载
http://spark.apache.org/downloads.html
下载之后,进行解压
2.2 源码编译【以下以Spark2.1为例】
前置要求:Maven 3.5.4+,JDK8+
因为maven的内存可能会不够,所以先执行
export MAVEN_OPTS="-Xmx2g -XX:ReservedCodeCacheSize=512m"
mvn编译命令
./build/mvn -Pyarn -Phadoop-2.6 -Phive-thriftserver -Dhadoop.version=2.6.0-cdh5.7.0 -DskipTests clean package
然后就是漫长的等待~【我第一次编译用了好久,注意:虚拟机内存至少2G以上,否则可能会卡死】
编译完成后,会生成一个spark-2.1.0-bin-2.6.0-cdh5.7.0这样的包
2.3 Spark Local 模式环境搭建
首先,把Spark编译之后的包放进环境变量中。
然后执行以下命令,使其生效
source /etc/profile
运行Local模式【运行在本地,启动2个线程】
spark-shell --master local[2] --jars /home/Kiku/mysql-connector-java-5.1.27-bin.jar
2.4 Spark Standlone模式搭建
架构: 1 master + n worker
修改spark-env.sh配置文件
Spark_worker_instance = 2 表示开启2个worker
Spark_worker_memory = 2g 表示每个worker占用2G内存
Spark_worker_cores = 2 表示每个worker上有2个core可以去执行任务
还有一个slaves配制文件,这个是配制worker节点的ip。当start-all.sh的时候,会在hadoop000机器上启动master进程,在slaves文件配置的所有hostname的机器上启动worker进程
执行
./start-all.sh
执行Standlone模式
spark-shell --master spark://hadoop000:7077 --jars /home/Kiku/mysql-connector-java-5.1.27-bin.jar
3.Spark简单使用
我们以单词统计为例。首先准备一份文件 wc.txt
hello,world,hello
hello,world
welcome
我们通过本地模式运行Spark-shell