1. Spark概述
Spark 是一个用来实现快速而通用的集群计算的平台。
在速度方面,Spark 扩展了广泛使用的 MapReduce 计算模型,而且高效地支持更多计算模式,包括交互式查询和流处理。 在处理大规模数据集时,速度是非常重要的。速度快就意味着我们可以进行交互式的数据操作,否则我们每次操作就需要等待数分钟甚至数小时。
Spark 的一个主要特点就是能够在内存中进行计算,因而更快。不过即使是必须在磁盘上进行的复杂计算,Spark 依然比 MapReduce 更加高效。
2. Spark学网站
1)databricks
网站
2)spark
官网
3)github
网站
3. Spark2.x源码下载及编译生成版本
1)Spark2.2源码
下载到node5节点的/opt/softwares/目录下,解压
tar -zxf spark-2.2.0.tgz -C /opt/modules/2)spark2.2编译所需要的环境:Maven3.3.9和Java8
tar -zxf jdk8u11-linux-x64.tar.gz -C /opt/modules/b)JAVA_HOME配置/etc/profile
export JAVA_HOME=/opt/modules/jdk1.8.0_11 export PATH=$PATH:$JAVA_HOME/bin编辑退出之后,使之生效
source /etc/profilec)如果遇到不能加载当前版本的问题
rpm -qa|grep jdk rpm -e --nodeps jdk版本d)下载并解压Maven
下载Maven,解压maven
tar -zxf apache-maven-3.3.9-bin.tar.gz -C /opt/modules/配置MAVEN_HOME(/etc/profile)
export MAVEN_HOME=/opt/modules/apache-maven-3.3.9 export PATH=$PATH:$MAVEN_HOME/bin export MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=1024M -XX:ReservedCodeCacheSize=1024M"编辑退出之后,使之生效
source /etc/profile查看maven版本
mvn -versione)编辑make-distribution.sh内容,可以让编译速度更快
VERSION=2.2.0 SCALA_VERSION=2.11.8 SPARK_HADOOP_VERSION=2.6.4 # 支持spark on hive SPARK_HIVE=14)编译前安装一些压缩解压缩工具
yum install -y snappy snappy-devel bzip2 bzip2-devel lzo lzo-devel lzop openssl openssl-devel5)maven编译,仅仅是为了编译源码, 编译后可以导入idea中
mvn clean package -Phadoop-2.6 -Dhadoop.version=2.6.4 -Phive -Phive-thriftserver -Pyarn -DskipTests6)通过make-distribution.sh源码编译spark,打包后可以丢到生产环境了
./dev/make-distribution.sh --name custom-spark --tgz -Phadoop-2.6 -Dhadoop.version=2.6.4 -Phive -Phive-thriftserver -Pyarn -DskipTests编译完成之后解压
tar -zxf spark-2.2.0-bin-custom-spark.tgz -C /opt/modules/
4. scala安装及环境变量设置
1) 下载
2)解压
tar -zxf scala-2.11.8.tgz -C /opt/modules/3)配置环境变量(/etc/profile)
export SCALA_HOME=/opt/modules/scala-2.11.8 export PATH=$PATH:$SCALA_HOME/bin4)编辑退出之后,使之生效
source /etc/profile
5. spark2.2.0本地模式运行测试
1)启动spark-shell测试./bin/spark-shell scala> val textFile = spark.read.textFile("README.md") textFile: org.apache.spark.sql.Dataset[String] = [value: string] scala> textFile.count() res0: Long = 126 scala> textFile.first() res1: String = # Apache Spark scala> val linesWithSpark = textFile.filter(line => line.contains("Spark")) linesWithSpark: org.apache.spark.sql.Dataset[String] = [value: string] scala> textFile.filter(line => line.contains("Spark")).count() // How many lines contain "Spark"? res3: Long = 152)词频统计
a)创建一个本地文件stu.txt,内容为
hadoop storm spark hbase spark flume spark dajiangtai spark hdfs mapreduce spark hive hdfs solr spark flink storm hbase storm es solr dajiangtai scala linux java scala python spark mlib kafka spark mysql spark es scala azkaban oozie mysql storm storm storm scala mysql es spark spark sparkb)spark-shell 词频统计
./bin/spark-shell scala> val rdd = spark.read.textFile("/opt/datas/stu.txt") # 词频统计 scala> val lines = rdd.flatmap(x => x.split(" ")).map(x => (x,1)).rdd.reduceBykey((a,b) => (a+b)).collect # 对词频进行排序 scala> val lines = rdd.flatmap(x => x.split(" ")).map(x => (x,1)).rdd.reduceBykey((a,b) => (a+b)).map(x =>(x._2,x._1)).sortBykey().map(x => (x._2,x._1)).collect