spark集群配置以及java操作spark小demo

  • spark

    • 安装
    • 配置
    • 使用java来操作spark

spark

安装

tar -zxvf spark-2.4.0-bin-hadoop2.7.tgz
rm spark-2.4.0-bin-hadoop2.7.tgz
mv spark-2.4.0-bin-hadoop2.7 spark

sudo vim /etc/profile
    export SPARK_HOME=/usr/local/storm
    export PATH=$PATH:$SPARK_HOME/bin

source /etc/profile

准备 master worker1 worker2 worker3 这四台机器

首先确保你的Hadoop集群能够正常运行worker1 worker2 worker3为DataNode, master为NameNode
具体配置参照我的博客https://www.cnblogs.com/ye-hcj/p/10192857.html

配置

  1. spark-env.sh

    进入spark的conf目录下,cp spark-env.sh.template spark-env.sh
    
    sudo vim spark-env.sh
        输入如下配置
        export JAVA_HOME=/usr/local/jdk/jdk-11.0.1
        export SCALA_HOME=/usr/local/scala/scala
        export HADOOP_HOME=/usr/local/hadoop/hadoop-3.1.1
        export SPARK_HOME=/usr/local/spark/spark
        export HADOOP_CONF_DIR=/usr/local/hadoop/hadoop-3.1.1/etc/hadoop
        export SPARK_MASTER_HOST=master
        export SPARK_WORKER_MEMORY=1g
        export SPARK_WORKER_CORES=1
  2. slaves
    进入spark的conf目录下,cp slaves.template slaves
    
    sudo vim slaves
        输入如下配置
        master
        worker1
        worker2
        worker3
  3. 启动
    在master中运行 sbin/start-all.sh 即可
    
    访问http://master:8080/即可看到spark的ui

使用java来操作spark

写个小demo,用来分析10万个数据中男女人数

  1. 模拟数据的java代码

    // 模拟数据
    // 10万个人当中,统计青年男性和青年女性的比例,看看男女比例是否均衡
    FileOutputStream f = null;
    ThreadLocalRandom random = ThreadLocalRandom.current();
    String str = "";
    int count = 0;
    try {
        f = new FileOutputStream("C:\\Users\\26401\\Desktop\\data.txt", true);
        for(;count<100000;count++) {
            str = count + " " + random.nextInt(18, 28) + " " + (random.nextBoolean()?‘M‘:‘F‘);
            f.write((str + "\r\n").getBytes());
        }
    
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        try {
            if(f != null) f.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
  2. 依赖
    <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>test</groupId>
        <artifactId>test</artifactId>
        <version>1.0.0</version>
        <name>test</name>
        <description>Test project for spring boot mybatis</description>
        <packaging>jar</packaging>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
            <java.version>1.8</java.version>
            <maven.compiler.source>1.8</maven.compiler.source>
            <maven.compiler.target>1.8</maven.compiler.target>
        </properties> 
    
        <dependencies>
    
            <dependency>
                <groupId>org.apache.spark</groupId>
                <artifactId>spark-core_2.12</artifactId>
                <version>2.4.0</version>
            </dependency>
    
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>1.7.25</version>
            </dependency>
    
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>3.8.1</version>
            </dependency>
    
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <configuration>
                        <archive>
                            <manifest>
                                <addClasspath>true</addClasspath>
                                <useUniqueVersions>false</useUniqueVersions>
                                <classpathPrefix>lib/</classpathPrefix>
                            </manifest>
                        </archive>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </project>
  3. java代码
    package test;
    
    import java.io.Serializable;
    
    import org.apache.spark.SparkConf;
    import org.apache.spark.api.java.JavaRDD;
    import org.apache.spark.api.java.JavaSparkContext;
    import org.apache.spark.api.java.function.Function;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    public class App implements Serializable
    {
    
        private static final long serialVersionUID = -7114915627898482737L;
    
        public static void main(String[] args) throws Exception {
            Logger logger=LoggerFactory.getLogger(App.class);
    
            SparkConf sparkConf = new SparkConf();
    
            sparkConf.setMaster("spark://master:7077");
            sparkConf.set("spark.submit.deployMode", "cluster");
            sparkConf.setAppName("FirstTest");
    
            JavaSparkContext sc = new JavaSparkContext(sparkConf);
            JavaRDD<String> file = sc.textFile("hdfs://master:9000/data.txt");
    
            JavaRDD<String> male = file.filter(new Function<String, Boolean>() {
                private static final long serialVersionUID = 1L;
    
                @Override
                public Boolean call(String s) throws Exception {
                    logger.info(s);
                    return s.contains("M");
                }
            });
            logger.info("**************************************");
            logger.info(male.count()+""); // 49991
            logger.info("**************************************");
            sc.close();
    
            // 其他的api请自行查阅,很简单,不想看,可以自己瞎点
        }
    }
  4. 运行
    1. 将生成的测试数据data.txt上传至hdfs
    2. 将打包的jar上传到master机器
    3. 运行 bin/spark-submit --master spark://master:7077 --class test.App test-1.0.0.jar
    4. 进入spark的ui界面可以清楚的看到打印的消息

原文地址:https://www.cnblogs.com/ye-hcj/p/10280114.html

时间: 2024-10-07 11:34:24

spark集群配置以及java操作spark小demo的相关文章

Spark教程-构建Spark集群-配置Hadoop单机模式并运行Wordcount(1)

安装ssh Hadoop是采用ssh进行通信的,此时我们要设置密码为空,即不需要密码登陆,这样免去每次通信时都输入秘密,安装如下: 输入“Y”进行安装并等待自动安装完成. 安装ssh完成后启动服务 以下命令验证服务是否正常启动: 可以看到ssh正常启动: 设置免密码登录,生成私钥和公钥: 在/root/.ssh中生成两个文件:id_rsa和id_rsa.pub,id_rsa为私钥,id_rsa.pub为公钥,我们将公钥id_rsa.pub追加到 authorized_keys中,因为author

HA分布式集群配置三 spark集群配置

(一)HA下配置spark 1,spark版本型号:spark-2.1.0-bin-hadoop2.7 2,解压,修改配置环境变量 tar -zxvf spark-2.1.0-bin-hadoop2.7.tgz mv spark-2.1.0-bin-hadoop2.7 /usr/spark-2.1.0 vim /etc/profile export JAVA_HOME=/usr/java export SCALA_HOME=/usr/scala export HADOOP_HOME=/usr/h

kafka集群配置和java编写生产者消费者操作例子

kafka 安装 修改配置文件 java操作kafka kafka kafka的操作相对来说简单很多 安装 下载kafka http://kafka.apache.org/downloads tar -zxvf kafka_2.12-2.1.0.tgz rm kafka_2.12-2.1.0.tgz mv kafka_2.12-2.1.0 kafka sudo vim /etc/profile export KAFKA_HOME=/usr/local/kafka export PATH=$PAT

Redis 3.2 Linux 环境集群搭建与java操作

redis 采用 redis-3.2.4 版本. 安装过程 1. 下载并解压 cd /usr/local wget http://download.redis.io/releases/redis-3.2.4.tar.gz tar -zxvf redis-3.2.4.tar.gz 2. 编译安装 cd redis-3.2.4 make && make install 3. 将 redis-trib.rb 复制到 /usr/local/bin 目录下 cd src cp redis-trib.

Apache Cassandra随笔之多节点跨数据中心集群配置以及日常操作

Cassandra是去中心化的集群架构,没有传统集群的中心节点,各个节点地位都是平等的,通过Gossip协议维持集群中的节点信息.为了使集群中的各节点在启动时能发现其他节点,需要指定种子节点(seeds),各节点都先和种子节点通信,通过种子节点获取其他节点列表,然后和其他节点通信.种子节点可以指定多个,通过在 conf/ cassandra.yaml中的seeds属性配置. 环境介绍 主机信息如下表所示:所有节点已安装了jdk 8.如下: [[email protected] ~]# java

Spark教程-构建Spark集群-配置Hadoop伪分布模式并运行Wordcount示例(1)

第四步:配置Hadoop伪分布模式并运行Wordcount示例 伪分布模式主要涉及一下的配置信息: 修改Hadoop的核心配置文件core-site.xml,主要是配置HDFS的地址和端口号: 修改Hadoop中HDFS的配置文件hdfs-site.xml,主要是配置replication; 修改Hadoop的MapReduce的配置文件mapred-site.xml,主要是配置JobTracker的地址和端口: 在具体操作前我们先在Hadoop目录下创建几个文件夹: 下面开始构建具体的伪分布式

Spark教程-构建Spark集群-配置Hadoop伪分布模式并运行Wordcount(2)

执行文件拷贝操作 拷贝后的“input”文件夹的内容如下所示: 和我们的hadoop安装目录下的“conf”文件的内容是一样的. 现在,在我们刚刚构建的伪分布式模式下运行wordcount程序: 运行完成后我们查看一下输出的结果: 部分统计结果如下: 此时我们到达Hadoop的web控制台会发现我们提交并成功的运行了任务: 最后在Hadoop执行完任务后,可以关闭Hadoop后台服务: 至此,Hadoop伪分布式环境的搭建和测试你完全成功! 至此,我们彻底完成了实验.

实验室中搭建Spark集群和PyCUDA开发环境

1.安装CUDA 1.1安装前工作 1.1.1选取实验器材 实验中的每台计算机均装有双系统.选择其中一台计算机作为master节点,配置有GeForce GTX 650显卡,拥有384个CUDA核心.另外两台计算机作为worker节点,一个配置有GeForce GTX 650显卡,另外一个配置有GeForce GTX 750 Ti显卡,拥有640个CUDA核心. 在每台计算机均创建hadoop用户并赋予root权限,本文所有的操作都将在hadoop用户下进行. 1.1.2安装前准备 用以下命令来

Spark学习笔记—01 Spark集群的安装

一.概述 关于Spark是什么.为什么学习Spark等等,在这就不说了,直接看这个:http://spark.apache.org, 我就直接说一下Spark的一些优势: 1.快 与Hadoop的MapReduce相比,Spark基于内存的运算要快100倍以上,基于硬盘的运算也要快10倍以上.Spark实现了高效的DAG执行引擎,可以通过基于内存来高效处理数据流. 2.易用 Spark支持Java.Python和Scala的API,还支持超过80种高级算法,使用户可以快速构建不同的应用.而且Sp