大数据生态系统基础:Apache Spark(一):介绍和编译、安装
2017-08-06 18:27
676 查看
Apache Spark 是一个快速和通用的大型数据处理引擎。
一、Spark 的特点
速度:在内存中运行程序要比Hadoop MapReduce快100倍,磁盘上的速度要快10倍。Apache Spark拥有一个先进的DAG执行引擎,它支持非循环数据流和内存计算。
易用性:在Java、Scala、Python、r中快速编写应用程序。Spark提供了超过80个高级运算,这些运算可以轻松构建并行应用程序。你可以从Scala、Python和R shell中交互式地使用它。
普遍性:组合SQL、流媒体和复杂的分析。Spark提供了一组库,其中包括SQL和DataFrames、用于机器学习的MLlib、GraphX和Spark流。您可以在同一个应用程序中无缝地组合这些库。
随处运行:Spark在Hadoop、Mesos、独立或云计算上运行。它可以访问各种各样的数据源,包括HDFS、Cassandra、HBase和S3。可以使用其独立的集群模式运行Spark,在EC2上,在Hadoop纱线上,或者在Apache Mesos上。在HDFS、Cassandra、HBase、Hive、速子和任何Hadoop数据源上访问数据。
二、下载安装
1、下载
下载地点:http://spark.apache.org/downloads.html
![](http://img.blog.csdn.net/20170806162420673)
第一是选择版本,我们选用最新的2.2.0版本。第二是选择构建在 Hadoop 的系统,Spark 不适用 HDFS,所以,可以选择任何 Hadoop 版本,这里选择的是 Hadoop 2.6版本,因为我的系统装的是2.6.4
2、Maven依赖包的定义
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.2.0</version>
</dependency>
后面在介绍开发的时候,默认都要添加该依赖包,以后不再说明。
3、解压包到 HOME 目录,并将目录改为 spark
~ $tar zxvf spark-2.2.0-bin-hadoop2.6.tar.gz
~$mv spark-2.2.0-bin-hadoop2.6 spark
设置环境变量, 这里增添了 Scala语言的环境变量
~/.bash_profile,或者/etc/profile 下。编辑完毕后,记得 source ~/.bash_profile
90 ###setup spark
91 export SPARK_HOME=$HOME/spark
92 export PATH=$SPARK_HOME/bin:$PATH
93
94 ##setup zinc,scala
95 export ZINC_HOME=/usr/local/opt/zinc/libexec
96 export SCALA_HOME=/usr/local/opt/scala/libexec
97 export PATH=$ZINC_HOME/bin:$SCALA_HOME/bin:$PATH
98 ##setup R
99 export R_HOME=/Library/Frameworks/R.framework/Resources
4、可以下载源代码自己编译
在第2步选择Source code, 然后点击 spark-2.2.0.tgz 下载
![](http://img.blog.csdn.net/20170806164425684)
编译步骤请参照:Mac OSX下编译 Hadoop 2.6.4 http://blog.csdn.net/caridle/article/details/76018314
编译完毕后,在目录下有一个 dev 目录,里面生成了一个生成部署包的脚本 make-distribution.sh
生成的安装包位于根目录下: spark-2.2.0-bin-custom-spark.tgz
生成的已经解压的文件在 dist 目录下:dist
5、 配置 slaves
进入到 spark /conf目录,
cp slaves.template slaves
在 slaves 中,增加三个从服务器的主机名称:
master
slave1
slave2
6、配置 spark-env.sh
cp spark-env.sh.template spark-env.sh
在 spark-env.sh 中增加
3 export SCALA_HOME=/usr/local/opt/scala
4 #export SPARK_WORK_MEMORY=4g
5 export SPARK_MASTER_IP=mymac
6 export MASTER=spark://mymac:7077
7、将当前的 spark 目录直接拷贝到其它的节点中
注意在 HOME 发送命令
scp -rf ~/spark wangxinnian@master:~/
scp -rf ~/spark wangxinnian@slave1:~/
scp -rf ~/spark wangxinnian@slave2:~/
然后,分别对 master, slave1,slave2的.bash_profile 增加相同的环境目录
90 ###setup spark
91 export SPARK_HOME=$HOME/spark
92 export PATH=$SPARK_HOME/bin:$PATH
93
94 ##setup zinc,scala
95 export ZINC_HOME=/usr/local/opt/zinc/libexec
96 export SCALA_HOME=/usr/local/opt/scala/libexec
97 export PATH=$ZINC_HOME/bin:$SCALA_HOME/bin:$PATH
98 ##setup R
99 export R_HOME=/Library/Frameworks/R.framework/Resources
8、运行
在 sbin目录中,直接运行 start-all.sh 和 stop-all.sh。
也可以分开运行start-master.sh 和 stop-master.sh, 以及启动 worker 的 start-slave.sh 和 stop-slave.sh。
再运行 start-slave.sh spark://mymac:7077,后面要跟 master 的参数地址。
9、问题
master: failed to launch: nice -n 0 /Users/wangxinnian/spark/bin/spark-class org.apache.spark.deploy.worker.Worker --webui-port 8081 spark://mymac:7077
master: at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
master: at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
master: full log in /Users/wangxinnian/spark/logs/spark-wangxinnian-org.apache.spark.deploy.worker.Worker-1-master.out
slave1: failed to launch: nice -n 0 /Users/wangxinnian/spark/bin/spark-class org.apache.spark.deploy.worker.Worker --webui-port 8081 spark://mymac:7077
slave1: at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
slave1: at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
slave1: full log in /Users/wangxinnian/spark/logs/spark-wangxinnian-org.apache.spark.deploy.worker.Worker-1-slave1.out
slave2: failed to launch: nice -n 0 /Users/wangxinnian/spark/bin/spark-class org.apache.spark.deploy.worker.Worker --webui-port 8081 spark://mymac:7077
slave2: at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
slave2: at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
slave2: full log in /Users/wangxinnian/spark/logs/spark-wangxinnian-org.apache.spark.deploy.worker.Worker-1-slave2.out
表示无法连接到 Master, 可以查看日志。
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/spark/launcher/Main : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
这是一个比较典型的 JDK 版本不正确的提示。
一、Spark 的特点
速度:在内存中运行程序要比Hadoop MapReduce快100倍,磁盘上的速度要快10倍。Apache Spark拥有一个先进的DAG执行引擎,它支持非循环数据流和内存计算。
易用性:在Java、Scala、Python、r中快速编写应用程序。Spark提供了超过80个高级运算,这些运算可以轻松构建并行应用程序。你可以从Scala、Python和R shell中交互式地使用它。
普遍性:组合SQL、流媒体和复杂的分析。Spark提供了一组库,其中包括SQL和DataFrames、用于机器学习的MLlib、GraphX和Spark流。您可以在同一个应用程序中无缝地组合这些库。
随处运行:Spark在Hadoop、Mesos、独立或云计算上运行。它可以访问各种各样的数据源,包括HDFS、Cassandra、HBase和S3。可以使用其独立的集群模式运行Spark,在EC2上,在Hadoop纱线上,或者在Apache Mesos上。在HDFS、Cassandra、HBase、Hive、速子和任何Hadoop数据源上访问数据。
二、下载安装
1、下载
下载地点:http://spark.apache.org/downloads.html
第一是选择版本,我们选用最新的2.2.0版本。第二是选择构建在 Hadoop 的系统,Spark 不适用 HDFS,所以,可以选择任何 Hadoop 版本,这里选择的是 Hadoop 2.6版本,因为我的系统装的是2.6.4
2、Maven依赖包的定义
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.2.0</version>
</dependency>
后面在介绍开发的时候,默认都要添加该依赖包,以后不再说明。
3、解压包到 HOME 目录,并将目录改为 spark
~ $tar zxvf spark-2.2.0-bin-hadoop2.6.tar.gz
~$mv spark-2.2.0-bin-hadoop2.6 spark
设置环境变量, 这里增添了 Scala语言的环境变量
~/.bash_profile,或者/etc/profile 下。编辑完毕后,记得 source ~/.bash_profile
90 ###setup spark
91 export SPARK_HOME=$HOME/spark
92 export PATH=$SPARK_HOME/bin:$PATH
93
94 ##setup zinc,scala
95 export ZINC_HOME=/usr/local/opt/zinc/libexec
96 export SCALA_HOME=/usr/local/opt/scala/libexec
97 export PATH=$ZINC_HOME/bin:$SCALA_HOME/bin:$PATH
98 ##setup R
99 export R_HOME=/Library/Frameworks/R.framework/Resources
4、可以下载源代码自己编译
在第2步选择Source code, 然后点击 spark-2.2.0.tgz 下载
编译步骤请参照:Mac OSX下编译 Hadoop 2.6.4 http://blog.csdn.net/caridle/article/details/76018314
a. note:提高Maven编译时的堆内存大小,防止编译过程中产生OOM异常,相关命令如下:
export MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m"
b. 编译
cd $SPARK_SOURCE_HOME(spark源码路径) mvn -Pyarn -Phadoop-2.4 -Dhadoop.version=2.4.0 -Phadoop-provided -Phive -Phive-thriftserver -Pnetlib-lgpl -DskipTests clean package
编译完毕后,在目录下有一个 dev 目录,里面生成了一个生成部署包的脚本 make-distribution.sh
./dev/make-distribution.sh --name custom-spark --tgz -Psparkr -Phadoop-2.6 -Phive -Phive-thriftserver -Pyarn
生成的安装包位于根目录下: spark-2.2.0-bin-custom-spark.tgz
生成的已经解压的文件在 dist 目录下:dist
5、 配置 slaves
进入到 spark /conf目录,
cp slaves.template slaves
在 slaves 中,增加三个从服务器的主机名称:
master
slave1
slave2
6、配置 spark-env.sh
cp spark-env.sh.template spark-env.sh
在 spark-env.sh 中增加
3 export SCALA_HOME=/usr/local/opt/scala
4 #export SPARK_WORK_MEMORY=4g
5 export SPARK_MASTER_IP=mymac
6 export MASTER=spark://mymac:7077
7、将当前的 spark 目录直接拷贝到其它的节点中
注意在 HOME 发送命令
scp -rf ~/spark wangxinnian@master:~/
scp -rf ~/spark wangxinnian@slave1:~/
scp -rf ~/spark wangxinnian@slave2:~/
然后,分别对 master, slave1,slave2的.bash_profile 增加相同的环境目录
90 ###setup spark
91 export SPARK_HOME=$HOME/spark
92 export PATH=$SPARK_HOME/bin:$PATH
93
94 ##setup zinc,scala
95 export ZINC_HOME=/usr/local/opt/zinc/libexec
96 export SCALA_HOME=/usr/local/opt/scala/libexec
97 export PATH=$ZINC_HOME/bin:$SCALA_HOME/bin:$PATH
98 ##setup R
99 export R_HOME=/Library/Frameworks/R.framework/Resources
8、运行
在 sbin目录中,直接运行 start-all.sh 和 stop-all.sh。
也可以分开运行start-master.sh 和 stop-master.sh, 以及启动 worker 的 start-slave.sh 和 stop-slave.sh。
再运行 start-slave.sh spark://mymac:7077,后面要跟 master 的参数地址。
9、问题
master: failed to launch: nice -n 0 /Users/wangxinnian/spark/bin/spark-class org.apache.spark.deploy.worker.Worker --webui-port 8081 spark://mymac:7077
master: at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
master: at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
master: full log in /Users/wangxinnian/spark/logs/spark-wangxinnian-org.apache.spark.deploy.worker.Worker-1-master.out
slave1: failed to launch: nice -n 0 /Users/wangxinnian/spark/bin/spark-class org.apache.spark.deploy.worker.Worker --webui-port 8081 spark://mymac:7077
slave1: at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
slave1: at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
slave1: full log in /Users/wangxinnian/spark/logs/spark-wangxinnian-org.apache.spark.deploy.worker.Worker-1-slave1.out
slave2: failed to launch: nice -n 0 /Users/wangxinnian/spark/bin/spark-class org.apache.spark.deploy.worker.Worker --webui-port 8081 spark://mymac:7077
slave2: at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
slave2: at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
slave2: full log in /Users/wangxinnian/spark/logs/spark-wangxinnian-org.apache.spark.deploy.worker.Worker-1-slave2.out
表示无法连接到 Master, 可以查看日志。
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/spark/launcher/Main : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
这是一个比较典型的 JDK 版本不正确的提示。
相关文章推荐
- Spark修炼之道(基础篇)——Linux大数据开发基础:第一节、Linux介绍、安装及使用初步
- 大数据生态系统基础:Apache Spark(二):运行环境和实例演示
- 大数据生态系统基础:Hadoop(一):介绍和安装
- Spark修炼之道(基础篇)——Linux大数据开发基础:第一节、Linux介绍、安装及使用初步
- 大数据生态系统基础:Apache Spark(三):Java 版本编程实例(WordCount)
- 大数据生态系统基础: HBASE(一):HBASE 介绍及安装、配置
- 大数据生态系统基础:Apache Kafka基础(一):介绍和安装
- 大数据生态系统基础: HIVE(一):HIVE 介绍及安装、配置
- 大数据生态系统基础:Apache Kafka基础(一):介绍和安装
- 【云星数据---Apache Flink实战系列(精品版)】:Apache Flink实战基础002--flink特性:流处理特性介绍
- 基于cdh5.10.x hadoop版本的apache源码编译安装spark
- Spark-基础-Spark编译与部署--Hadoop编译安装
- (大数据工程师学习路径)第四步 SQL基础课程----SQL介绍及mysql的安装
- 大数据生态系统基础:Hadoop(六):Mac 下Hadoop-Eclipse-plugin编译和集成环境配置
- 大数据基础(五)从零开始安装配置Hadoop 2.7.2+Spark 2.0.0到Ubuntu 16.04
- 大数据生态系统基础:Hadoop(二):Hadoop 3.0.0集群安装和验证
- python基础1之python介绍、安装、变量和字符编码、数据类型、输入输出、数据运算、循环
- JavaWeb整理-数据库基础/数据库介绍.MySQL安装.DB DBS DBMS关系.登陆MySQL.SQL语言认识..SQL语言对数据库操作.SQL语言对数据表操作.SQL语言对数据表中的记录操作
- Linux大数据开发基础:第一节、Linux介绍、安装及使用初步
- 大数据基础(四)Ubuntu sbt安装和Spark下的使用