美文网首页
Spark2.4.0 分布式环境搭建

Spark2.4.0 分布式环境搭建

作者: 井地儿 | 来源:发表于2019-03-19 17:01 被阅读0次

    系统环境

    软件版本

    软件 安装包版本
    hadoop hadoop-2.7.7.tar.gz
    jdk jdk-8u191-linux-x64.tar.gz
    scala scala-2.12.8.tgz
    mysql mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz
    spark spark-2.4.0-bin-hadoop2.7.tgz

    集群环境


    ip hostname system
    master 10.96.81.166 jms-master-01 centos7.2 [ CPU: 4 & 内存: 12G & 硬盘大小: 100G ]
    node 10.96.113.243 jms-master-02 centos7.2 [ CPU: 4 & 内存: 12G & 硬盘大小: 100G ]
    node 10.96.85.231 jms-master-03 centos7.2 [ CPU: 4 & 内存: 12G & 硬盘大小: 100G ]

    约定规范

    约定所有软件的安装目录:/home/hadoop/tools
    约定所有的安装包存放目录:/home/hadoop/tools/package

    前期准备

    本文默认已经搭建好了hadoop集群环境。

    安装包下载

    为节省时间,提前在官网下载好和hadoop环境版本匹配的spark安装包spark-2.4.0-bin-hadoop2.7.tgz
    如果没有安装scala,请下载scala安装包scala-2.12.8.tgz,并安装。

    scala安装

    先在master节点完成安装,然后scp到其他各个node节点。

    master主节点安装

    以下安装在master(jms-master-01)进行:
    上传scala安装包至master节点:
    scp scala-2.12.8.tgz jms-master-01:/home/hadoop/tools/package

    解压

    tar -xzvf scala-2.12.8.tgz -C /home/hadoop/tools/

    配置scala环境变量

    sudo vim /etc/profile

    # scala home
    export SCALA_HOME=/home/hadoop/tools/scala-2.12.8
    export PATH=$SCALA_HOME/bin:$PATH
    

    环境变量立即生效

    source /etc/profile

    验证

    [hadoop@jms-master-01 tools]$ scala
    Welcome to Scala 2.12.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_191).
    Type in expressions for evaluation. Or try :help.
    
    scala> :q
    

    退出scala交互窗口命令
    :q

    node节点分发

    # 分发scala
    scp -r scala-2.12.8 jms-master-02:/home/hadoop/tools/
    scp -r scala-2.12.8 jms-master-03:/home/hadoop/tools/
    # 分发配置
    sudo scp /etc/profile  jms-master-02:/etc/profile
    sudo scp /etc/profile  jms-master-03:/etc/profile
    

    最后在各节点刷新profile文件使配置生效,并验证scala是否安装成功。

    Spark安装

    先在master节点完成安装,然后scp到其他各个node节点。

    master主节点安装

    上传&解压

    scp spark-2.4.0-bin-hadoop2.7.tgz jms-master-01:/home/hadoop/tools/package
    tar -xzvf spark-2.4.0-bin-hadoop2.7.tgz -C /home/hadoop/tools/

    添加Spark环境变量

    sudo vim /etc/profile
    # spark home
    export SPARK_HOME=/home/hadoop/tools/spark-2.4.0-bin-hadoop2.7
    export PATH=$SPARK_HOME/bin:$PATH
    

    修改Spark配置文件

    spark配置文件模版在: cd ${SPARK_HOME}/conf/
    主要修改两个配置文件:spark-env.sh和slaves

    spark-env.sh

    # 复制模版
    cp spark-env.sh.template spark-env.sh
    # 添加配置
    vim spark-env.sh
    export SCALA_HOME=/home/hadoop/tools/scala-2.12.8
    export JAVA_HOME=/home/hadoop/tools/java/jdk1.8.0_191
    export SPARK_MASTER_IP=jms-master-01
    export SPARK_WORKER_MEMORY=2g
    export HADOOP_CONF_DIR=/home/hadoop/tools/hadoop-2.7.7/etc/hadoop
    

    slaves

    cp slaves.template slaves
    vim slaves
    # localhost
    jms-master-01
    jms-master-02
    jms-master-03
    

    node节点分发

    # 分发spark
    scp -r spark-2.4.0-bin-hadoop2.7 jms-master-02:/home/hadoop/tools/
    scp -r spark-2.4.0-bin-hadoop2.7 jms-master-03:/home/hadoop/tools/
    # 分发配置
    sudo scp /etc/profile  jms-master-02:/etc/profile
    sudo scp /etc/profile  jms-master-03:/etc/profile
    

    最后在各节点刷新profile文件使配置生效。

    启动Spark集群

    启动前确定Hadoop集群已经启动。
    启动命令
    sh $SPARK_HOME/sbin/start-all.sh

    [hadoop@jms-master-01 spark-2.4.0-bin-hadoop2.7]$ cd sbin/
    [hadoop@jms-master-01 sbin]$ ls
    slaves.sh         start-history-server.sh         start-slave.sh          stop-master.sh                 stop-slaves.sh
    spark-config.sh   start-master.sh                 start-slaves.sh         stop-mesos-dispatcher.sh       stop-thriftserver.sh
    spark-daemon.sh   start-mesos-dispatcher.sh       start-thriftserver.sh   stop-mesos-shuffle-service.sh
    spark-daemons.sh  start-mesos-shuffle-service.sh  stop-all.sh             stop-shuffle-service.sh
    start-all.sh      start-shuffle-service.sh        stop-history-server.sh  stop-slave.sh
    [hadoop@jms-master-01 sbin]$ sh start-all.sh
    starting org.apache.spark.deploy.master.Master, logging to /home/hadoop/tools/spark-2.4.0-bin-hadoop2.7/logs/spark-hadoop-org.apache.spark.deploy.master.Master-1-jms-master-01.out
    jms-master-03: starting org.apache.spark.deploy.worker.Worker, logging to /home/hadoop/tools/spark-2.4.0-bin-hadoop2.7/logs/spark-hadoop-org.apache.spark.deploy.worker.Worker-1-jms-master-03.out
    jms-master-01: starting org.apache.spark.deploy.worker.Worker, logging to /home/hadoop/tools/spark-2.4.0-bin-hadoop2.7/logs/spark-hadoop-org.apache.spark.deploy.worker.Worker-1-jms-master-01.out
    jms-master-02: starting org.apache.spark.deploy.worker.Worker, logging to /home/hadoop/tools/spark-2.4.0-bin-hadoop2.7/logs/spark-hadoop-org.apache.spark.deploy.worker.Worker-1-jms-master-02.out
    [hadoop@jms-master-01 sbin]$ jps
    20514 Master
    20675 Jps
    48852 NodeManager
    20614 Worker
    48375 DataNode
    48729 ResourceManager
    48556 SecondaryNameNode
    48222 NameNode
    

    Spark集群测试

    运行第一个spark任务WorldCount

    1,准备一个测试文件,摘录一段百度词条中对spark的介绍内容。

    vim spark-test.txt
    

    Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是——Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。
    Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使 Spark 在某些工作负载方面表现得更加优越,换句话说,Spark 启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。
    Spark 是在 Scala 语言中实现的,它将 Scala 用作其应用程序框架。与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集。
    尽管创建 Spark 是为了支持分布式数据集上的迭代作业,但是实际上它是对 Hadoop 的补充,可以在 Hadoop 文件系统中并行运行。通过名为 Mesos 的第三方集群框架可以支持此行为。Spark 由加州大学伯克利分校 AMP 实验室 (Algorithms, Machines, and People Lab) 开发,可用来构建大型的、低延迟的数据分析应用程序。

    2,将测试文件上传到hdfs中
    hadoop fs -put spark-test.txt /user/hadoop/input

    测试代码

    val f = sc.textFile("hdfs://jms-master-01:9000/user/hadoop/input/spark-test.txt")
    f.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey( +).collect().foreach(println)

    启动spark-shell:

    spark-shell

    [hadoop@jms-master-01 spark-2.4.0-bin-hadoop2.7]$ spark-shell
    2019-03-19 13:37:08 WARN  NativeCodeLoader:62 - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
    Setting default log level to "WARN".
    To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
    Spark context Web UI available at http://jms-master-01:4040
    Spark context available as 'sc' (master = local[*], app id = local-1552973836296).
    Spark session available as 'spark'.
    Welcome to
          ____              __
         / __/__  ___ _____/ /__
        _\ \/ _ \/ _ `/ __/  '_/
       /___/ .__/\_,_/_/ /_/\_\   version 2.4.0
          /_/
    
    Using Scala version 2.11.12 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_191)
    Type in expressions to have them evaluated.
    Type :help for more information.
    
    scala> 
    

    测试

    scala> val f = sc.textFile("hdfs://jms-master-01:9000/user/hadoop/input/spark-test.txt")
    f: org.apache.spark.rdd.RDD[String] = hdfs://jms-master-01:9000/user/hadoop/input/spark-test.txt MapPartitionsRDD[9] at textFile at <console>:24
    
    scala> f.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey( _+_).collect().foreach(println)
    (的补充,可以在,1)
    (MapReduce的通用并行框架,Spark,拥有Hadoop,1)
    (AMP,2)
    (是为了支持分布式数据集上的迭代作业,但是实际上它是对,1)
    (Apache,1)
    (相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使,1)
    ((Algorithms,,1)
    (Lab),1)
    (实验室,1)
    ((加州大学伯克利分校的AMP实验室)所开源的类Hadoop,1)
    (不同,Spark,1)
    (能够紧密集成,其中的,1)
    (文件系统中并行运行。通过名为,1)
    (由加州大学伯克利分校,1)
    (是一种与,1)
    (Scala,4)
    (是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UC,1)
    (Machines,,1)
    (MapReduce所具有的优点;但不同于MapReduce的是——Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。,1)
    (启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。,1)
    (和,1)
    (用作其应用程序框架。与,1)
    (开发,可用来构建大型的、低延迟的数据分析应用程序。,1)
    (lab,1)
    (Mesos,1)
    (Spark,5)
    (尽管创建,1)
    (在某些工作负载方面表现得更加优越,换句话说,Spark,1)
    (People,1)
    (可以像操作本地集合对象一样轻松地操作分布式数据集。,1)
    (是在,1)
    (and,1)
    (的第三方集群框架可以支持此行为。Spark,1)
    (语言中实现的,它将,1)
    (Berkeley,1)
    (Hadoop,4)
    
    scala>
    

    至此,Spark2.4.0分布式环境搭建完成。

    相关文章

      网友评论

          本文标题:Spark2.4.0 分布式环境搭建

          本文链接:https://www.haomeiwen.com/subject/shhgmqtx.html