zoukankan      html  css  js  c++  java
  • CentOS7 安装spark集群

    Spark版本 1.6.0

    Scala版本 2.11.7

    Zookeeper版本 3.4.7

    配置虚拟机


    3台虚拟机,sm,sd1,sd2

    1. 关闭防火墙

    systemctl stop firewalld

    systemctl stop firewalld

    如果不关闭防火墙,需要为防火墙添加进站出站规则,否则无法访问spark的管理页面

    2. 修改机器名

    hostnamectl set-hostname sm

    其他2台机器同上

    3. 修改host

    vim /etc/hosts

    4. 配置ssh免密码登陆

    在sm机器

    ssh-keygen -t rsa

    ssh-copy-id -i ~/.ssh/id_rsa.pub peter@sd1

    ssh-copy-id -i ~/.ssh/id_rsa.pub peter@sd2

    ssh-copy-id -i ~/.ssh/id_rsa.pub peter@sm

    如果不配置本机的ssh免密码登陆,在后面启动spark集群的时候,会发现本机的worker无法启动

    4. 安装Java

    安装Zookeeper


    复制zookeeper的gz文件至sm机器

    1. 解压

    tar zxf zookeeper-3.4.7.tar.gz

    2. 配置

    cd conf

    cp zoo_sample.cfg zoo.cfg

    vim zoo.cfg

    3. 设置serverid

    进入data文件夹

    cd /home/peter/App/Spark/zookeeper-3.4.7/data

    sm机器

    echo "1">myid

    4. Copy至其他机器

    scp -r /home/peter/App/Spark/zookeeper-3.4.7  peter@sd2:/home/peter/App/Spark/zookeeper-3.4.7

    5. 修改另外台机器的serverid

    重复第3步,分别将id设置为配置文件中对应的id

    cd /home/peter/App/Spark/zookeeper-3.4.7/data

    sd1

    echo "2">myid

    sd2

    echo "3">myid

    安装Spark


    在sm机器

    1. 拷贝安装文件并解压

    scala-2.11.7.tgz

    spark-1.6.0-bin-hadoop2.6.tgz

    hadoop-2.6.0.tar.gz

    分别解压

    2. 设置环境变量

    vim ~/.bash_profile

    export JAVA_HOME=/home/peter/App/jdk1.8.0_66
    export PATH=$JAVA_HOME/bin:$PATH
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    
    export SCALA_HOME=/home/peter/App/Spark/scala-2.11.7
    
    export SPARK_HOME=/home/peter/App/Spark/spark-1.6.0-bin-hadoop2.6
    
    export HADOOP_HOME=/home/peter/App/Spark/hadoop-2.6.0
    export HADOOP_CONF_DIR=/home/peter/App/Spark/hadoop-2.6.0/etc/hadoop
    
    export PATH=$PATH:$SCALA_HOME/bin:$SPARK_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

    source ~/.bash_profile

    3. 设置Spark

    cd /home/peter/App/Spark/spark-1.6.0-bin-hadoop2.6/conf

    cp spark-env.sh.template spark-env.sh

    export SCALA_HOME=/home/peter/App/Spark/scala-2.11.7
    export SPARK_WORKER_MEMORY=1G
    export JAVA_HOME=/home/peter/App/jdk1.8.0_66
    export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=sm:2181,sd1:2181,sd2:2181 -Dspark.deploy.zookeeper.dir=/spark"

    配置slaves

    cp slaves.template slaves

    vim slaves

    4. 拷贝安装文件以及配置文件至其他机器

    Java安装文件及配置文件

    Hadoop

    Spark

    Scala

    5. 启动Spark集群

    每台机器启动ZK

    /home/peter/App/Spark/zookeeper-3.4.7/bin/zkServer.sh start

    在SM机器启动Spark集群

    cd /home/peter/App/Spark/spark-1.6.0-bin-hadoop2.6

    ./sbin/start-all.sh

    选中一台机器作为Standby Master,启动Master进程

    ./sbin/start-master.sh

    启动后,可访问Spark Alive Master的管理页面以及Standby Master的管理页面

    如果将Alive Master节点关闭或者Kill掉ZK以及Master进程,Spark会自动切换到Standby Master

    提交任务至Spark


    参考Spark QuickStart中的例子

    提交一个Jar包进行测试

    POM配置

        <dependencies>
            <dependency> <!-- Spark dependency -->
                <groupId>org.apache.spark</groupId>
                <artifactId>spark-core_2.10</artifactId>
                <version>1.6.0</version>
            </dependency>
        </dependencies>
    public class Entry {
        public static void main(String[] args)
        {
            System.out.println("Step 1");
            String logFile = "/home/peter/App/Spark/spark-1.6.0-bin-hadoop2.6/README.md"; // Should be some file on your system
            SparkConf conf = new SparkConf().setAppName("Test Application")
                    .setMaster("spark://192.168.1.90:7077")
                    //.set("spark.driver.host", "192.168.1.111")
                   // .set("SPARK_WORKER_IP","192.168.1.111")
                    //.setJars(new String[]{"/home/peter/App/Spark/work/homework.jar"})
                    ;
    
            System.out.println("Step 2.");
    
            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);
    
        }
    }

    生成Jar包

    可能哪里的配置有些问题,Jar包开始无法正确运行,查找了一些资料后,是一些引用版本比较混乱引起的。

    在Jar包的META-INF文件夹中删除下面的文件

    MANIFEST.MF文件中也必须有Main-Class

    Manifest-Version: 1.0
    Main-Class: Entry

    拷贝jar包至sm机器上,并运行

    
    
    
  • 相关阅读:
    c#调用java
    Shell脚本之Crontab的格式
    windows安装的mysql中文乱码的坑
    要成为一个 Java 架构师得学习哪些知识?
    月薪 30K Java 程序员,需要掌握哪些技术?
    职场
    资源汇总
    SpringBoot布道系列 | 目录汇总 | 2019持续更新ing
    史上最简单的 SpringCloud 教程 | 终章
    SpringBoot 企业级核心技术学习专题
  • 原文地址:https://www.cnblogs.com/dopeter/p/5119725.html
Copyright © 2011-2022 走看看