Hadoop 之 Spark 配置与使用(五)

这篇具有很好参考价值的文章主要介绍了Hadoop 之 Spark 配置与使用(五)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.Spark 配置

环境说明
环境 版本
Anolis Anolis OS release 8.6
Jdk java version “11.0.19” 2023-04-18 LTS
Spark 3.4.1

1.Spark 下载

Spark 下载

Hadoop 之 Spark 配置与使用(五),Hadoop,hadoop,spark,java,集群,hdfs

2.单机测试环境配置

## 1.创建目录
mkdir -p /usr/local/spark
## 2.解压 sprak 到指定目录
tar -zxvf spark-3.4.1-bin-hadoop3.tgz -C /usr/local/spark/
## 3.进入安装目录(可将解压后文件夹重命名为 spark 即可)
cd /usr/local/spark/spark-3.4.1-bin-hadoop3/
## 4.修改环境变量并更新
echo 'export SPARK_HOME=/usr/local/spark/spark-3.4.1-bin-hadoop3' >> /etc/profile
echo 'PATH=${SPARK_HOME}/bin:${PATH}' >> /etc/profile
source /etc/profile
## 5.复制 spark 配置
cd $SPARK_HOME/conf
cp spark-env.sh.template spark-env.sh
## 6.测试
cd  $SPARK_HOME/bin
./run-example SparkPi

Hadoop 之 Spark 配置与使用(五),Hadoop,hadoop,spark,java,集群,hdfs

## 1.启动
./spark-shell

Hadoop 之 Spark 配置与使用(五),Hadoop,hadoop,spark,java,集群,hdfs

UI访问:控制打印地址为虚拟机域名,Windows 未添加 Host 解析,直接通过IP地址访问

Hadoop 之 Spark 配置与使用(五),Hadoop,hadoop,spark,java,集群,hdfs

Hadoop 之 Spark 配置与使用(五),Hadoop,hadoop,spark,java,集群,hdfs

## 1.停止
scala> :quit

Hadoop 之 Spark 配置与使用(五),Hadoop,hadoop,spark,java,集群,hdfs

## 1.交互分析
cd $SPARK_HOME/bin
cat /home/test.txt
./spark-shell
## 2.取文件
var file=sc.textFile("file:///home/test.txt")
## 3.打印行数和第一行信息
file.count()
file.first()
## 4.过滤
var hello=file.filter(line=>line.contains("Hello"))
hello.count()

Hadoop 之 Spark 配置与使用(五),Hadoop,hadoop,spark,java,集群,hdfs

3.集群配置

域名 地址 类别
nn 192.168.1.6 master
nd1 192.168.1.7 slave
nd2 192.168.1.8 slave

同单机配置,在 nd1 、nd2 部署 spark,并设置环境变量(也可利用 scp 命令将住节点下配置好的文件拷贝到从节点)

## 1.修改 nn 配置(此处旧版本为 slave)
cd $SPARK_HOME/conf
cp workers.template workers
vim workers
## 2.添加主从节点域名
echo 'nn' >> workers
echo 'nd1' >> workers
echo 'nd2' >> workers
## 3.保存并将配置文件分发到 nd1、nd2
scp workers root@nd1:$SPARK_HOME/conf/
scp workers root@nd2:$SPARK_HOME/conf/
## 4.增加 spark 配置
echo 'export JAVA_HOME=/usr/local/java/jdk-11.0.19/' >> spark-env.sh
echo 'export SPARK_MASTER_HOST=nn' >> spark-env.sh
echo 'export SPARK_MASTER_PORT=7077' >> spark-env.sh
## 5.将配置分发到 nd1、nd2
scp spark-env.sh root@nd1:$SPARK_HOME/conf/
scp spark-env.sh root@nd2:$SPARK_HOME/conf/

workers 文件配置内容如下

Hadoop 之 Spark 配置与使用(五),Hadoop,hadoop,spark,java,集群,hdfs

## 1.修改 host 将本机域名与IP地址绑定
vim /etc/hosts
## 2.启动
cd $SPARK_HOME/sbin/
./start-all.sh
## 3.停止
./stop-all.sh

Host 配置
Hadoop 之 Spark 配置与使用(五),Hadoop,hadoop,spark,java,集群,hdfs

启动日志

Hadoop 之 Spark 配置与使用(五),Hadoop,hadoop,spark,java,集群,hdfs

查看集群 UI:http://192.168.1.6:8080/

Hadoop 之 Spark 配置与使用(五),Hadoop,hadoop,spark,java,集群,hdfs

二.Java 访问 Spark

当前测试环境为 VM Ware 虚拟机,本地为 WIN 10 IDEA 
调试问题记录:
  • Spark 回调本机超时,Win 防火墙未关闭,端口不通
  • Lamdba 语法 cannot assign instance of java.lang.invoke.SerializedLambda,本地 Jdk 版本和 Spark 集群环境 Jdk 版本要一致
  • String Serialized 序列化问题,Java 依赖包和 Spark Jar 包版本要一致
  • Jdk 版本过高,某些类解析提示 unnamed,可以在 IDEA 启动命令配置上:–add-exports java.base/sun.nio.ch=ALL-UNNAMED
  • 域名 由于虚拟机原因,本机存在虚拟网卡,虚拟机内访问本地会通过域名(默认本地主机名)访问,要注意服务回调端口绑定的地址是虚拟网卡地址还是真实网卡地址,并将该地址配置配置到虚拟机的 Hosts | Linux 配置域名解析 vim /etc/hosts

Hadoop 之 Spark 配置与使用(五),Hadoop,hadoop,spark,java,集群,hdfs

1.Pom 依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>spark-demo</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <properties>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.12</artifactId>
            <version>3.4.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-sql_2.12</artifactId>
            <version>3.4.1</version>
        </dependency>

    </dependencies>
    <build>
        <finalName>mySpark</finalName>
    </build>
</project>

2.测试代码

1.计算 π

package org.example;

import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.RowFactory;
import org.apache.spark.sql.SQLContext;
import org.apache.spark.sql.types.DataTypes;
import org.apache.spark.sql.types.StructField;
import org.apache.spark.sql.types.StructType;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import static org.apache.spark.sql.functions.col;

/**
 * @author Administrator
 */
public class SparkApp {
    public static void main(String[] args) throws Exception {
        SparkConf conf = new SparkConf()
                .setAppName("MySpark")
                //远程连接时需要将本地包分发到 worker 否则可能报错: cannot assign instance of java.lang.invoke.SerializedLambda
                .setJars(new String[]{"E:\\IdeaProjects\\spark-demo\\target\\mySpark.jar"})
                .setMaster("spark://192.168.1.6:7077");

        JavaSparkContext jsc = new JavaSparkContext(conf);
        getPi(jsc);
    }

    /**
     * 计算 pi
     * 即(0,1)随机数落在 1/4 圆占单位正方形的概率 => (1/4 * (Pi*1^2))/(1^2) => Pi/4 = count/numSamples
     */
    public static void getPi(JavaSparkContext jsc){
        int numSamples = 1000000;
        List<Integer> l = new ArrayList<>(numSamples);
        for (int i = 0; i < numSamples; i++) {
            l.add(i);
        }
        //统计命中数
        long count = jsc.parallelize(l).filter(i -> {
            double x = Math.random();
            double y = Math.random();
            return x*x + y*y < 1;
        }).count();
        System.out.println("Pi is roughly " + 4.0 * count / numSamples);
    }
}

Hadoop 之 Spark 配置与使用(五),Hadoop,hadoop,spark,java,集群,hdfs

三.Spark 配置 Hadoop

1.配置 Hadoop

## 1.停止 spark 服务 修改主节点 spark 配置(基于前面教程搭建的 Hadoop 集群)
echo 'export HADOOP_CONF_DIR=/usr/local/hadoop/hadoop-3.3.6/etc/hadoop' >> $SPARK_HOME/conf/spark-env.sh
## 2.启动 Hadoop 服务
$HADOOP_HOME/sbin/start-all.sh
## 3.启动 Spark 服务
$SPARK_HOME/sbin/start-all.sh
## 4.查看 Hadoop 文件
hadoop fs -cat /log/test.txt

Hadoop 之 Spark 配置与使用(五),Hadoop,hadoop,spark,java,集群,hdfs

2.测试代码

1.统计字符数

package org.example;

import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;

/**
 * @author Administrator
 */
public class SparkApp {
    public static void main(String[] args) throws Exception {
        SparkConf conf = new SparkConf()
                .setAppName("MySpark")
                //远程连接时需要将本地包分发到 worker 否则可能报错: cannot assign instance of java.lang.invoke.SerializedLambda
                .setJars(new String[]{"E:\\IdeaProjects\\spark-demo\\target\\mySpark.jar"})
                .setMaster("spark://192.168.1.6:7077");

        JavaSparkContext jsc = new JavaSparkContext(conf);
        dataFrame(jsc);
    }

    /**
     * DataFrame API examples
     */
    public static void dataFrame(JavaSparkContext jsc){
        // Creates a DataFrame having a single column named "line"
        JavaRDD<String> lines = jsc.textFile("hdfs://192.168.1.6:9000/log/test.txt");
        JavaRDD<Integer> lineLengths = lines.map(s -> s.length());
        int totalLength = lineLengths.reduce((a, b) -> a + b);
        System.out.println(totalLength);

    }

}

Hadoop 之 Spark 配置与使用(五),Hadoop,hadoop,spark,java,集群,hdfs文章来源地址https://www.toymoban.com/news/detail-608194.html

到了这里,关于Hadoop 之 Spark 配置与使用(五)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 大数据篇 | Hadoop、HDFS、HIVE、HBase、Spark之间的联系与区别

    Hadoop是一个开源的分布式计算框架,用于存储和处理大规模数据集。它提供了一个可扩展的分布式文件系统(HDFS)和一个分布式计算框架(MapReduce),可以在大量廉价硬件上进行并行计算。 HDFS(Hadoop Distributed File System)是Hadoop的分布式文件系统。它被设计用于在集群中存储

    2024年02月16日
    浏览(55)
  • 林子雨 VirtualBox + Ubuntu[linux] 配置 java、hadoop、Spark[python]、pyspark快速配置流程

    按照步骤快速执行shell,最快速配置。 读者可以根据该篇随记快速回顾流程,以及用到的shell指令和相关配置文件。 是林老师教程的精简版,初次配置者只能作为流程参考,主要和林子雨Spark[python]版课程配套。  林老师厦大实验指南链接如下: Spark编程基础(Python版)教材官

    2024年04月12日
    浏览(41)
  • hadoop集群搭建、spark集群搭建、pyspark搭建(linux+window)

    本文记录学习过程中Hadoop、zookeeper、spark集群搭建,主要为pyspark库服务(具体为window上pyspark环境和pyspark库,linux上spark框架、pyspark应用程序、pyspark环境和pyspark库)。pyspark环境是用anaconda3搭建的环境。pyspark应用程序,是安装spark集群里面自带的,提供一个python解释器环境来执

    2024年01月22日
    浏览(46)
  • 云计算与大数据之间的羁绊(期末不挂科版):云计算 | 大数据 | Hadoop | HDFS | MapReduce | Hive | Spark

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 大数据是需求,云计算是手段。没有大数据,就不需要云计算;没有云计算,就无法处理大数据。 所有的计算能力、存储能力、和各种各样功能的应用都通过网络

    2024年02月04日
    浏览(59)
  • Windows下配置Hadoop及Spark环境

    教程所用各版本说明 由于项目用的JDK17,所以单独给Hadoop配了JDK11,建议直接配置JAVA_HOME环境变量为JDK11,因为后面Spark需要用到JAVA_HOME 下载JDK11 链接:https://www.oracle.com/java/technologies/javase/jdk11-archive-downloads.html 目前Hadoop和Spark兼容 JDK11 和 JDK8 单独修改Hadoop的话,需要在Hadoop目

    2023年04月20日
    浏览(40)
  • Mac 配置Hadoop、spark、Scala、jdk

    下载地址: Java Downloads | Oracle 1.下载好使用 终端 进行解压 2.配置环境变量 1.终端打开 .bash_profile 2.将以下代码放进 .bash_profile 里面(注意修改路径) 3.esc按键 + :号键 输入 wq (保存并退出) 4.重新加载 .bash_profile 文件 5.输入以下代码检查配置是否成功 下载链接: News | Apache

    2024年03月26日
    浏览(42)
  • 云计算集群搭建记录[Hadoop|Zookeeper|Hbase|Spark | Docker |OpenStack]更新索引 |动态更新

    为了能够更好的查看所更新的文章,讲该博文设为索引 为了解决在编辑文件等操作的过程中的权限问题,博主一律 默认采用 root 账户登录 对于初次安装的用户可以采用如下命令行: 另外推荐一款终端工具:Tabby,既能够连接自己的服务器,也能够连接自己本地的虚拟机,还

    2023年04月13日
    浏览(54)
  • Spark编程实验一:Spark和Hadoop的安装使用

    目录 一、目的与要求 二、实验内容 三、实验步骤 1、安装Hadoop和Spark 2、HDFS常用操作 3、Spark读取文件系统的数据 四、结果分析与实验体会 1、掌握在Linux虚拟机中安装Hadoop和Spark的方法; 2、熟悉HDFS的基本使用方法; 3、掌握使用Spark访问本地文件和HDFS文件的方法。 1、安装

    2024年04月14日
    浏览(33)
  • ubuntu20.04配置hadoop&&spark(直接配置,无需借助虚拟机)

    hadoop作为一个开源的分布式计算和存储框架,在人工智能、大数据领域有非常广泛的应用。笔者在查阅资料发现网络博客介绍的配置方法大多需要借助虚拟机,或者需要重新创建ubuntu账户并设置密码为空以避免hadoop连接不上的问题,甚至是在ubuntu系统内再搭建一个虚拟机的

    2024年04月17日
    浏览(53)
  • Java 操作 Hadoop 集群之 HDFS 的应用案例详解

    注意:本文内容基于 Hadoop 集群搭建完成基础上: Linux 系统 CentOS7 上搭建 Hadoop HDFS集群详细步骤 本文的内容是基于下面前提: Hadoop 集群搭建完成并能正常启动和访问 Idea 和 Maven 分别安装完成 需要有 JavaSE 基础和熟悉操作hadoop 的 hdfs dfs 命令 Maven 及 idea 中 Maven 相关配置 本地

    2024年04月16日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包