欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 焦点 > ubantu18.04(Hadoop3.1.3)之Spark安装和编程实践

ubantu18.04(Hadoop3.1.3)之Spark安装和编程实践

2025/4/27 11:52:54 来源:https://blog.csdn.net/m0_73595857/article/details/147483384  浏览:    关键词:ubantu18.04(Hadoop3.1.3)之Spark安装和编程实践

说明:本文图片较多,耐心等待加载。(建议用电脑)

注意所有打开的文件都要记得保存。

 第一步:准备工作

本文是在之前Hadoop搭建完集群环境后继续进行的,因此需要读者完成我之前教程的所有操作。

以下所有操作均在Master主机进行。

 第二步:安装 Spark2.4.0

1.首先需要下载Spark安装文件,在虚拟机打开浏览器粘贴下面的地址

Index of /dist/spark

 2.找到2.4.0,点击

3.点击 spark-2.4.0-bin-without-hadoop.tgz

 第三步:安装Spark(Local模式)

1.打开终端输入粘贴以下命令:(注意最后一句是你的用户名

sudo tar -zxf ~/下载/spark-2.4.0-bin-without-hadoop.tgz -C /usr/local/
cd /usr/local
sudo mv ./spark-2.4.0-bin-without-hadoop/ ./spark
sudo chown -R hadoop:hadoop ./spark          # 此处的 hadoop 为你的用户名

 2.继续在终端输入以下命令:

cd /usr/local/spark
cp ./conf/spark-env.sh.template ./conf/spark-env.sh

3.继续在终端入:

vim ./conf/spark-env.sh

在第一行添加以下配置信息:

export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath)

 记得保存退出。

4.验证Spark是否安装成功。出现如下界面即成功

cd /usr/local/spark
bin/run-example SparkPi 2>&1 | grep "Pi is"

第四步:使用 Spark Shell 编写代码

 1.启动Spark Shell

在终端继续输入:

cd /usr/local/spark
bin/spark-shell

 

2.加载text文件

 在终端继续输入:

val textFile = sc.textFile("file:///usr/local/spark/README.md")

3.简单RDD操作

终端可以输入:

//获取RDD文件textFile的第一行内容
textFile.first()
//获取RDD文件textFile所有项的计数
textFile.count()
//抽取含有“Spark”的行,返回一个新的RDD
val lineWithSpark = textFile.filter(line => line.contains("Spark"))
//统计新的RDD的行数
lineWithSpark.count()
//找出文本中每行的最多单词数
textFile.map(line => line.split(" ").size).reduce((a, b) => if (a > b) a else b)

 4.退出Spark Shell

输入:

:quit

 第五步:独立应用程序编程

(一)使用sbt对Scala独立应用程序进行编译打包

1. 安装sbt

说明一下,因为这个地址下载之前版本的时候,是从github拉取得,我这里在虚拟机下载很慢,就直接在主机进行下载(魔法),然后放到共享文件夹,然后拖到下载目录。

在虚拟机的浏览器复制下面地址

Download | sbt

 找到sbt-1.3.8.tgz。

我这里在共享文件夹,(不知道在哪里的翻前面的教程第一章) 

 然后拖到下载里

在终端中执行如下命令: (注意下面的hadoop,是你自己的用户名

sudo mkdir /usr/local/sbt 
cd ~/下载
sudo tar -zxvf ./sbt-1.3.8.tgz -C /usr/local
cd /usr/local/sbt
sudo chown -R hadoop /usr/local/sbt
cp ./bin/sbt-launch.jar ./ 

 

使用下面命令创建一个Shell脚本文件 

vim /usr/local/sbt/sbt

添加以下内容到文件 

#!/bin/bash

SBT_OPTS="-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M"

java $SBT_OPTS -jar `dirname $0`/sbt-launch.jar "$@"

 保存后,还需要为该Shell脚本文件增加可执行权限:继续执行以下命令

chmod u+x /usr/local/sbt/sbt

最后,可以使用如下命令查看sbt版本信息: 

注意出现以下界面极为成功,但是需等待时间很长,取决于你的网速,博主这里网速较慢就去刷了10分钟抖音,大家也可以去了。记的回来哈!

有想提速解决这个问题的的,可以去看看教程里给的博客,我这里就“苦等”了。(刷dy)

./sbt sbtVersion

 

Scala应用程序代码

 在终端中执行如下命令创建一个文件夹 sparkapp 作为应用程序根目录:

cd ~ 
mkdir ./sparkapp
mkdir -p ./sparkapp/src/main/scala

继续输入

vim ./sparkapp/src/main/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 ~/sparkapp
vim simple.sbt

在文本添加以下内容

name := "Simple Project"

version := "1.0"

scalaVersion := "2.11.12"

libraryDependencies += "org.apache.spark" %% "spark-core" % "2.4.0"

保存退出,继续输入以下: 

cd ~/sparkapp
find .

 出现以上界面成功。

使用 sbt 打包 Scala 程序

接着,我们就可以通过如下命令将整个应用程序打包成 JAR(首次运行同样需要下载依赖包 ):

/usr/local/sbt/sbt package

  出现以上界面成功。

通过 spark-submit 运行程序,终端输入以下命令:

/usr/local/spark/bin/spark-submit --class "SimpleApp" ~/sparkapp/target/scala-2.11/simple-project_2.11-1.0.jar 2>&1 | grep "Lines with a:"

  出现以上界面成功。 

(二)使用Maven对Java独立应用程序进行编译打包

1. 安装Maven

在虚拟机浏览器粘贴一下地址

Index of /dist/maven/maven-3

找到 3.6.3

继续 

 继续

在终端继续输入下面的命令: (注意最后一句是你的用户名

sudo unzip ~/下载/apache-maven-3.6.3-bin.zip -d /usr/local
cd /usr/local
sudo mv apache-maven-3.6.3/ ./maven
sudo chown -R hadoop-202202810203- ./maven

 

2. Java应用程序代码 

cd ~
mkdir -p ./sparkapp2/src/main/java
vim ./sparkapp2/src/main/java/SimpleApp.java

在文件里添加以下内容:

/*** SimpleApp.java ***/
import org.apache.spark.api.java.*;
import org.apache.spark.api.java.function.Function;
import org.apache.spark.SparkConf;

public class SimpleApp {
    public static void main(String[] args) {
        String logFile = "file:///usr/local/spark/README.md"; // Should be some file on your system
        SparkConf conf = new SparkConf().setMaster("local").setAppName("SimpleApp");
        JavaSparkContext sc = new JavaSparkContext(conf);
        JavaRDD<String> logData = sc.textFile(logFile).cache(); 
        long numAs = logData.filter(new Function<String, Boolean>() {
            public Boolean call(String s) { return s.contains("a"); }
        }).count(); 
        long numBs = logData.filter(new Function<String, Boolean>() {
            public Boolean call(String s) { return s.contains("b"); }
        }).count(); 
        System.out.println("Lines with a: " + numAs + ", lines with b: " + numBs);
    }
}

 继续在终端输入:

cd ~/sparkapp2
vim pom.xml

在文件里添加在下面的内容

<project>

    <groupId>cn.edu.xmu</groupId>

    <artifactId>simple-project</artifactId>

    <modelVersion>4.0.0</modelVersion>

    <name>Simple Project</name>

    <packaging>jar</packaging>

    <version>1.0</version>

    <repositories>

        <repository>

            <id>jboss</id>

            <name>JBoss Repository</name>

            <url>http://repository.jboss.com/maven2/</url>

        </repository>

    </repositories>

    <dependencies>

        <dependency> <!-- Spark dependency -->

            <groupId>org.apache.spark</groupId>

            <artifactId>spark-core_2.11</artifactId>

            <version>2.4.0</version>

        </dependency>

    </dependencies>

</project>  

 为了保证maven能够正常运行,先执行如下命令检查整个应用程序的文件结构:

保存退出,继续在终端输入以下命令

find .

 ​​​出现下面的结构

继续输入 下面的命令

大家可以去刷15分钟抖音了,这里也很慢哈。

/usr/local/maven/bin/mvn package

 出现下面的界面极为成功。

通过spark-submit 运行程序 ,继续在终端输入

/usr/local/spark/bin/spark-submit --class "SimpleApp" ~/sparkapp2/target/simple-project-1.0.jar 2>&1 | grep "Lines with a"

  出现下面的界面极为成功。

 (三)使用Maven对Scala独立应用程序进行编译打包

 Scala应用程序代码

在终端中执行如下命令创建一个文件夹 sparkapp3作为应用程序根目录:

cd ~           # 进入用户主文件夹
mkdir ./sparkapp3        # 创建应用程序根目录
mkdir -p ./sparkapp3/src/main/scala     # 创建所需的文件夹结构

继续输入:

vim ./sparkapp3/src/main/scala/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))
    }
}

使用Maven进行编译打包

在终端中执行如下命令

cd ~/sparkapp3
vim pom.xml

 在文件里添加下面的内容

<project>

    <groupId>cn.edu.xmu</groupId>

    <artifactId>simple-project</artifactId>

    <modelVersion>4.0.0</modelVersion>

    <name>Simple Project</name>

    <packaging>jar</packaging>

    <version>1.0</version>

    <repositories>

        <repository>

            <id>jboss</id>

            <name>JBoss Repository</name>

            <url>http://repository.jboss.com/maven2/</url>

        </repository>

    </repositories>

    <dependencies>

        <dependency> <!-- Spark dependency -->

            <groupId>org.apache.spark</groupId>

            <artifactId>spark-core_2.11</artifactId>

            <version>2.4.0</version>

        </dependency>

    </dependencies>

  <build>

    <sourceDirectory>src/main/scala</sourceDirectory>

    <plugins>

      <plugin>

        <groupId>org.scala-tools</groupId>

        <artifactId>maven-scala-plugin</artifactId>

        <executions>

          <execution>

            <goals>

              <goal>compile</goal>

            </goals>

          </execution>

        </executions>

        <configuration>

          <scalaVersion>2.11.12</scalaVersion>

          <args>

            <arg>-target:jvm-1.8</arg>

          </args>

        </configuration>

    </plugin>

    </plugins>

</build>

</project>

继续执行下面的内容

find  .

  出现上面的界面极为成功。

继续在终端输入:

大家可以去刷15分钟抖音了,这里也很慢哈。

/usr/local/maven/bin/mvn  package

出现上面的界面极为成功。 

通过 spark-submit 运行程序

继续在终端输入:

/usr/local/spark/bin/spark-submit --class "SimpleApp" ~/sparkapp3/target/simple-project-1.0.jar 2>&1 | grep "Lines with a:"

出现如上界面即为成功。 

结语:整体的操作步我都给大家写出来,并且截图了,大家只需要无脑粘贴就好了,具体的讲解可以看我的资料里的文档解释更加详细,这个实验就结束了。 

上面内容制作不易,喜欢的点个赞和收藏支持一下吧!!

后期会持续更新更多大数据内容,如果想共同学习,就点点关注把(

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词