centos6.8安装单机spark2.2.3

 

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

 

 

  1. 安装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

编辑slaves文件,里面的内容为:

localhost

 

关闭防火墙,启动,外网就可以访问

$HADOOP_HOME/sbin/start-all.sh

spark访问网址:http://192.168.198.111:8080

 

 

 

  1. 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

 

  1. 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 的行数

  1. 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 "$@"

注意这里的最后一行的 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))

  }

}

 

 

这里写图片描述

 

e.添加配置文件

 

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

  1. 通过网页查看

关闭防火墙

临时关闭: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

 

posted @ 2019-03-26 16:41  yasepix  阅读(423)  评论(0编辑  收藏  举报