安装启动Spark并使用spark完成java程序及读写Mysql数据库

本文详细介绍了在CentOS上安装Spark并进行验证,编写并打包Spark独立应用程序,包括Scala和Java两种方式,以及如何连接MySQL数据库的全过程。涉及内容包括:CentOS安装、Spark本地模式安装、Sbt与Maven的使用、Java与Scala程序编写、JDBC驱动的下载与使用,最后通过SparkShell连接MySQL并进行数据操作。
摘要由CSDN通过智能技术生成

实践目标

实践步骤

一、安装CentOS

本次实践采用虚拟机的方式安装CentOS,需要提前准备虚拟机运行软件VMWare,以及CentOS操作系统镜像。(需要压缩包欢迎留言)

安装好后设置两个账户,root、spark,用户名和密码如下 (可自行设定):
root:123
spark:123

二、安装Spark

1.下载spark压缩包

网址:http://spark.apache.org/downloads.html
(需要压缩包欢迎留言)
在这里插入图片描述
在这里插入图片描述

2. 新建spark专用文件夹
ls 						#查看~路径下文件信息 
cd /usr 				#切换路径
sudo mkdir /usr/spark/	#当前路径下新建文件夹spark

在这里插入图片描述

出现报错信息:普通用户不具有新建文件夹权限
在这里插入图片描述

解决办法:

  1. 切换到超级用户root
  2. 添加sudo文件的写权限
  3. 编辑sudoers文件
    在这里插入图片描述
    具体编辑信息更改如下:
    在这里插入图片描述
3.解压spark包到指定路径/usr/spark下

切换路径到压缩包所在位置 输入ls指令确保能找到相应spark压缩包

sudo tar -zxf spark-3.0.1-bin-hadoop3.2.tgz -C /usr/spark/

嘱咐几句:极有可能博文中的文件路径与实践中操作的路径会出现不一致,
所以要知其所以然,学会自己排查错误。以下是几点排错体会:

  1. 命令行Tab键能实现自动扩充(输入的前几个字符在当前路径下唯一)
    快捷键能很好地降低长文件名手动输入的错误
    在这里插入图片描述
    例如切换路径进入spark目录 只需要输入cd sp 然后Tab键能实现自动扩充
  2. 掌握cd逐层排查某个文件的路径
4. 移动spark-3.0.1-bin-hadoop3.2下所有文件

执行红色部分命令行即可,其他部分很好地解释了整个移动过程中相应文件夹内容的变化。
在这里插入图片描述

5. 修改文件权限

注意:命令行中第一个 spark 为用户名 ,建议查阅chown指令的基本参数。
在这里插入图片描述

6. 验证是否安装成功

到此为止,已经安装好local模式的spark,通过运行spark自带示例验证spark是否安装成功。
注:如果想要spark在真正的分布式环境运行,还需要安装jdk和Hadoop
在这里插入图片描述

7. 测试spark shell交互式命令界面

在这里插入图片描述

8. 查看spark集群

通过/usr/spark/sbin下的start-all.sh启动spark,
通过http://localhost:8080看到spark集群信息。
Centos没有默认浏览器,需要自行下载firefox或Google等浏览器
在这里插入图片描述
在这里插入图片描述

三、Spark独立应用程序编程

1. 安装sbt
  1. 创建文件夹sbt
    在这里插入图片描述

  2. 下载sbt:访问“http://www.scala-sbt.org”下载安装文件sbt-1.3.8.tgz
    在这里插入图片描述3. 解压文件
    在这里插入图片描述

  3. 修改sbt文件权限
    在这里插入图片描述

  4. bin目录下的sbt-launch.jar复制到sbt安装目录
    在这里插入图片描述

  5. 创建脚本文件sbt

vim /usr/sbt//sbt  #//注意双斜杠

输入以下内容:

#!/bin/bash
SBT_OPTS="-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M"
java $SBT_OPTS -jar `dirname $0`/sbt-launch.jar "$@"

在这里插入图片描述
6. 修改脚本执行权限
在这里插入图片描述
7. 查看sbt版本(初次安装会消耗5-10分钟):
在这里插入图片描述

2. 编写应用程序
  1. home目录创建一个sparkapp作为应用程序根目录
    在这里插入图片描述
  2. ./sparkapp/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/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))
        }
    }

3. sbt打包程序
  1. ./sparkapp 中新建文件 simple.sbt(vim ./sparkapp/simple.sbt),添加内容如下,声明该独立应用程序的信息以及与 Spark 的依赖关系
name := "Simple Project"
version := "1.0"
scalaVersion := "2.12.10"
libraryDependencies += "org.apache.spark" %% "spark-core" % "3.0.1"

此处scalaVersion和 spark-core为前面启动spark shell过程中显示的内容。
在这里插入图片描述
2. 将整个应用程序打包成 JAR(首次运行需要下载依赖包,下载时间比较长)
首次运行效果截图:
在这里插入图片描述
非首次运行效果截图:
在这里插入图片描述
3. 查看生成的jar包位置(具体指令cd切换路径)
生成的 jar 包的位置为 ~/sparkapp/target/scala-2.12/simple-project_2.12-1.0.jar

4.通过spark-submit提交并运行程序

在这里插入图片描述
借鉴一下其他指令(scala-2.11得按照实际的版本 别盲目照搬):
在这里插入图片描述

运行结果放大图:
在这里插入图片描述

四、Java独立程序

1. 安装maven
  1. maven官网下载maven包:https://maven.apache.org/download.cgi#Files
  2. maven包解压到/usr/目录
sudo tar -zxvf apeche-maven-3.8.4-bin.tar.gz -C /usr/

ls指令查看解压前后变化 增加maven文件
在这里插入图片描述

  1. 更改文件名
    在这里插入图片描述
  2. 更改权限
    在这里插入图片描述
2. 编写java程序
  1. 创建一个文件夹sparkapp2作为应用程序根目录
    在这里插入图片描述
    2…/sparkapp2/src/main/java下建立一个名为SimpleApp.java 的文件
/*** SimpleApp.java ***/
    import org.apache.spark.api.java.*;
    import org.apache.spark.api.java.function.Function; 
    public class SimpleApp {
        public static void main(String[] args) {
            String logFile = "file:///usr/spark/README.md"; // Should be some file on your system
            JavaSparkContext sc = new JavaSparkContext("local", "Simple App",
                "file:///usr/spark/", new String[]{"target/simple-project-1.0.jar"});
            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);
        }
    }

  1. ./sparkapp2中新建文件pom.xml
    添加以下内容:
<project>
        <groupId>edu.berkeley</groupId>
        <artifactId>simple-project</artifactId>
        <modelVersion>4.0.0</modelVersion>
        <name>Simple Project</name>
        <packaging>jar</packaging>
        <version>1.0</version>
        <repositories>
            <repository>
                <id>Akka repository</id>
                <url>http://repo.akka.io/releases</url>
            </repository>
        </repositories>
        <dependencies>
            <dependency> <!-- Spark dependency -->
                <groupId>org.apache.spark</groupId>
                <artifactId>spark-core_2.11</artifactId>
                <version>2.1.0</version>
            </dependency>
        </dependencies>
    </project>

3. maven打包java程序
  1. 首次运行mvn package命令时,系统会自动从网络下载相关的依赖包
/usr/maven/bin/mvn package

错误信息:
在这里插入图片描述
解决方法:
当编译通过后,会弹出“No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?”的错误,主要原因是maven需要在jdk基础上运行,而之前所装为非原生jdk,需要用yum来安装。

yum install java-devel

成功截图:
在这里插入图片描述

4. 通过spark-submit 运行程序

在这里插入图片描述

五、连接MySQL数据库

1. 下载mysql yum repo配置文件

在这里插入图片描述

2. 安装repo相应版本

在这里插入图片描述

3. 验证是否安装成功

在这里插入图片描述

4.配置mysql版本

执行vim指令编辑repo文件:

sudo vim /etc/yum.repos.d/mysql-community.repo

enabled 为1表示启用,将要安装的版本的enabled改为1后保存
这里修改的是第一个mysql55
在这里插入图片描述

5. 安装mysql
sudo yum install mysql-community-server.x86_64

在这里插入图片描述

6. 启动mysql
  1. 启动mysql:注意是mysqld,不是mysql
    在这里插入图片描述
    2.查看mysql状态
    在这里插入图片描述
7. 管理用户并操作数据库
  1. mysql安装完成之后,在/var/log/mysqld.log文件中给root生成了一个默认的原始密码。为了避免后面忘记或者换成自己熟悉的密码,可以通过下面的方式找到root默认密码,然后登录mysql进行修改:

在这里插入图片描述
2. 登录账号
在这里插入图片描述
3. 修改用户密码(注意:最新版本mysql会进行密码强度校验:密码设置时必须包含大小写字母、特殊符号、数字,并且长度大于8位)
在这里插入图片描述
4. 查看数据库
在这里插入图片描述
5. 开启数据库远程控制(MySQL默认是没有开启远程控制的,必须添加远程访问的用户,即默认是只能自己访问,不允许其他主机访问)
在这里插入图片描述
6.为了避免中文出现乱码,还要对数据库的字符集进行设置
查看数据库字符集:
在这里插入图片描述
编辑配置文件:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
再次进入数据库:mysql -u root -p

六、Spark SQL 读写数据库

1. 创建数据库及数据表

在这里插入图片描述

2.下载JDBC驱动包:

https://dev.mysql.com/downloads/ connector/j
(1)选择第五个
在这里插入图片描述

(2)选择第二个进行下载(重点说明:此时官网最新版本的MySQL是8.0版本、JDBC最新版本也是8.X版本。所以,此时不用担心JDBC中jar包与MySQL的冲突。)
在这里插入图片描述

3. 解压:

在这里插入图片描述

4. 移动jar包:
5. 启动spark-shell:

5.6 连接数据库:

5.7 查询数据

写在最后

  • 1
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值