https://blog.csdn.net/uq_jin/article/details/51513307
https://www.cnblogs.com/zengxiaoliang/p/6478859.html
https://www.cnblogs.com/liugh/p/6624923.html
- 安装spark
a.下载:http://spark.apache.org/downloads.html
b.安装spark
上传文件:把下载下来的spark-2.2.3-bin-hadoop2.7.tgz上传到/home/hadoop目录下
cd /home/hadoop
sudo tar -zxvf spark-2.2.3-bin-hadoop2.7.tgz -C /app/
cd /app/spark-2.2.3-bin-hadoop2.7/
sudo chown -R hadoop:hadoop . # 此处的 hadoop为用户名
c. 配置环境变量
sudo vim /etc/profile
SPARK_HOME=/app/spark-2.2.3-bin-hadoop2.7
export PATH=$PATH:$SPARK_HOME/bin
source /etc/profile
echo $PATH
/app/jdk1.8.0_121/bin:/app/jdk1.8.0_121/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/app/hadoop-2.7.2/bin:/home/hadoop/bin:/app/hadoop-2.7.2/bin:/app/spark-2.2.3-bin-hadoop2.7/bin
d. 配置spark
安装后,需要在 ./conf/spark-env.sh 中修改 Spark 的 Classpath,执行如下命令拷贝一个配置文件:
cd /app/spark-2.2.3-bin-hadoop2.7
cp ./conf/spark-env.sh.template ./conf/spark-env.sh
编辑 ./conf/spark-env.sh(vim ./conf/spark-env.sh) ,在最后面加上如下一行:
export SPARK_disT_CLAsspATH=$(/app/hadoop-2.7.2/bin/hadoop classpath)
保存后,Spark 就可以启动了。
cp ./conf/slaves.template ./conf/slaves
localhost
关闭防火墙,启动,外网就可以访问
$HADOOP_HOME/sbin/start-all.sh
spark访问网址:http://192.168.198.111:8080
- spark的简单使用
在 ./examples/src/main 目录下有一些 Spark 的示例程序,有 Scala、Java、Python、R 等语言的版本。我们可以先运行一个示例程序 SparkPi(即计算 π 的近似值),执行如下命令:
cd /app/spark-2.2.3-bin-hadoop2.7
./bin/run-example SparkPi
执行时会输出非常多的运行信息,输出结果不容易找到,可以通过 grep 命令进行过滤(命令中的 2>&1 可以将所有的信息都输出到 stdout 中,否则由于输出日志的性质,还是会输出到屏幕中):
cd /app/spark-2.2.3-bin-hadoop2.7
./bin/run-example SparkPi 2>&1 | grep "Pi is roughly"
过滤后的运行结果如下图所示,可以得到 π 的 近似值 :
如果是Python 版本的 SparkPi, 则需要通过 spark-submit 运行:
./bin/spark-submit examples/src/main/python/pi.py
- spark的交互模式
a.启动spark shell
Spark shell 提供了简单的方式来学习 API,也提供了交互的方式来分析数据。Spark Shell 支持 Scala 和 Python,本文中选择使用 Scala 来进行介绍。
Scala 是一门现代的多范式编程语言,志在以简练、优雅及类型安全的方式来表达常用编程模式。它平滑地集成了面向对象和函数语言的特性。Scala 运行于 Java 平台(JVM,Java 虚拟机),并兼容现有的 Java 程序。
Scala 是 Spark 的主要编程语言,如果仅仅是写 Spark 应用,并非一定要用 Scala,用 Java、Python 都是可以的。使用 Scala 的优势是开发效率更高,代码更精简,并且可以通过 Spark Shell 进行交互式实时查询,方便排查问题。
cd /app/spark-2.2.3-bin-hadoop2.7
./bin/spark-shell
b.spark shell使用小例子
Spark 的主要抽象是分布式的元素集合(distributed collection of items),称为RDD(Resilient distributed Dataset,弹性分布式数据集),它可被分发到集群各个节点上,进行并行操作。RDDs 可以通过 Hadoop InputFormats 创建(如 HDFS),或者从其他 RDDs 转化而来。
我们从 ./README 文件新建一个 RDD,代码如下(本文出现的 Spark 交互式命令代码中,与位于同一行的注释内容为该命令的说明,命令之后的注释内容表示交互式输出结果):
val textFile = sc.textFile("file:///app/spark-2.2.3-bin-hadoop2.7/README.md")
代码中通过 “file://” 前缀指定读取本地文件。Spark shell 默认是读取 HDFS 中的文件,需要先上传文件到 HDFS 中,否则会报错。
RDDs 支持两种类型的操作
transformations: 转换,从现有数据集创建一个新的数据集
actions: 在数据集上运行计算后返回值
下面我们先来演示 count() 和 first() 操作(actions):
textFile.count() // RDD 中的 item 数量,对于文本文件,就是总行数
textFile.first() //RDD 中的第一个 item,对于文本文件,就是第一行内容
接着演示 transformation,通过 filter transformation 来返回一个新的 RDD,代码如下:
val linesWithSpark = textFile.filter(line => line.contains("Spark")) // 筛选出包含 Spark 的行
linesWithSpark.count() // 统计行数
transformation 和action可以用链式操作的方式结合使用,使代码更为简洁:
textFile.filter(line => line.contains("Spark")).count() // 统计包含 Spark 的行数
- spark执行独立程序
a.配置spark和hadoop环境变量
cd ~
sudo vim /etc/profile
找到PATH参数,在最后添加spark和hadoop的环境变量,具体到bin即可。注意每条之间使用冒号隔开。如下图
source /ect/profile
文件生效。同样可以使用echo $PATH 来查看环境变量是否添加成功。
b.安装sbt
SBT(Simple Build Tool)即简单构造工具,它是用scala写的,具有强大的依赖管理功能,所有任务的创建都支持Scala,可连续执行命令。可以在工程的上下文里启动REPL。
一般来说,使用 Scala 编写的程序需要使用 sbt 进行编译打包,相应的,Java 程序使用 Maven 编译打包,而 Python 程序通过 spark-submit 直接提交。但是scala也可以使用maven来打包,不过配置起来较为复杂。这里就不再赘述了。
到官网下载安装包(http://www.scala-sbt.org/)。安装到/usr/local/sbt文件夹中
sudo mkdir /usr/local/sbt
sudo chown -R hadoop /usr/local/sbt # 此处的 hadoop 为你的用户名
cd /usr/local/sbt
接着在 /usr/local/sbt 中创建 sbt 脚本(vim ./sbt),添加如下内容:
SBT_OPTS="-xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M"
java $SBT_OPTS -jar `dirname $0`/sbt-launch.jar "[email protected]"
注意这里的最后一行的 dirname 0,它是被倒引号括起来的,不是单引号。被倒引号括起来的东西表示要执行的命令。dirname0,它是被倒引号括起来的,不是单引号。被倒引号括起来的东西表示要执行的命令。dirname0 只能用在脚本中,在命令行中是无效的,它的意思是去当前脚本所在位置的路径。
这里写图片描述
很明显。这里你要检查/usr/local/sbt 夹下sbt-launch.jar这个文件是否存在。因为笔者和网上众多教程都提到了,因为网络的原因,sbt下载的时候,这个依赖包有可能缺失。如果没有,请自行下载(http://pan.baidu.com/s/1gfHO7Ub)
这里写图片描述
c.构建scala工程目录
sbt打包scala是有固定工程目录结构的。
cd ~
mkdir ./sparkapp # 创建应用程序根目录
mkdir -p ./sparkapp/src/main/scala # 创建所需的文件夹结构
d.编写独立程序
这里我们借用官网上的一个小的demo.
cd ~
cd sparkapp/src/main/scala
vi SimpleApp.scala
/* SimpleApp.scala */
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
- object SimpleApp {
def main(args: Array[String]) {
val logFile = "file:///usr/local/spark/README.md" // Should be some file on your system
val conf = new SparkConf().setAppName("Simple Application")
val sc = new SparkContext(conf)
val logData = sc.textFile(logFile,2).cache()
val numAs = logData.filter(line => line.contains("a")).count()
val numBs = logData.filter(line => line.contains("b")).count()
println("Lines with a: %s,Lines with b: %s".format(numAs,numBs))
}
}
这里写图片描述
cd ~
cd sparkapp/
vi simple.bat
name := "Simple Project"
version := "1.0"
scalaVersion := "2.11.8"
libraryDependencies += "org.apache.spark" %% "spark-core" % "2.0.0"
这里写图片描述
*注意,这里的scalaVersion和spark-core后面的版本号都要换成你自己的。
这两个版本号,在启动spark的时候有显示。如下图*
这里写图片描述
至此为止,检查一下工程目录结构
cd ~
cd sparkapp
find .
这里写图片描述
f.使用sbt打包scala程序
cd ~
cd sparkapp/
sbt package
第一次打包时间很长,需要下载各种依赖包,所以请耐心等待。生成的jar包位置在~/sparkapp/target/scala-2.11/simple-project_2.11-1.0.jar
g.提交编译后的程序
cd ~
cd /usr/local/spark
./bin/spark-submit --class "SimpleApp" ~/sparkapp/target/scala-2.11/simple-project_2.11-1.0.jar
输出信息较多,可使用grep过滤结果
.bin/spark-submit --class "SimpleApp" ~/sparkapp/target/scala-2.11/simple-project_2.11-1.0.jar 2>&1 | grep "Lines with a:"
1
这里写图片描述
到此为止,本文就结束了,关于文章中没有介绍的spark sql和DataFrames,大家有兴趣的可以到下面列出的参考文献中查找。
按照惯例,列出参考文献供大家参考:
https://www.cnblogs.com/dion-90/articles/9058500.html
1.http://spark.apache.org/docs/latest/building-spark.html
2.http://spark.apache.org/docs/latest/quick-start.html
3.http://spark.apache.org/docs/latest/programming-guide.html
4.http://www.importnew.com/4311.html
5.http://www.scala-sbt.org/
6.http://blog.csdn.net/czmchen/article/details/41047187
7.http://blog.csdn.net/zwhfyy/article/details/8349788
8.http://jingyan.baidu.com/article/948f59242c231fd80ff5f9ec.html
9.http://dblab.xmu.edu.cn/blog/install-hadoop/
10.http://dblab.xmu.edu.cn/blog/spark-quick-start-guide/
11.http://dblab.xmu.edu.cn/blog/install-hadoop-in-centos/
https://blog.csdn.net/ouyangyanlan/article/details/52355350
- 通过网页查看
关闭防火墙
临时关闭:sudo service iptables stop
永久关闭:sudo chkconfig iptables off
Ssh
ssh-keygen –t rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 authorized_keys
ssh localhost
启动hdfs:
$HADOOP_HOME/sbin/start-all.sh
Hadoop访问网址:http://192.168.198.111:50070
$HADOOP_HOME/sbin/start-all.sh
spark访问网址:http://192.168.198.111:8080
停止:
$HADOOP_HOME/sbin/stop-all.sh
$SPARK_HOME/sbin/stop-all.sh
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。