zoukankan      html  css  js  c++  java
  • Apache Spark介绍及集群搭建

    简介

    Spark是一个针对于大规模数据处理的统一分析引擎。其处理速度比MapReduce快很多。其特征有:

    1、速度快

    spark比mapreduce在内存中快100x,比mapreduce在磁盘中快10x
    spark比mapreduce快的主要2个原因:
      1)spark的job中间结果数据可以保存在内存中,mapreduce的job中间结果数据只能够保存在磁盘。后面又有其他的job需要依赖于前面job的输出结果,对于spark来说,直接可以从内存获取得到,
    大大减少磁盘io操作,对于mapreduce来说就需要进行大量磁盘io操作,性能来说肯定是降低了。​
      2)mapreduce以进程的方式运行在整合yarn中,比如一个job有100个mapTask,这个时候运行100个map task就需要启动100个进程。
    spark以线程的方式运行的进程中,运行100个map task可以只启动1个进程,在一个进程中运行100个线程。启动一个进程和启动一个线程时间代价肯定不一样,启动进程需要的时间和调度大大增加。

    2、易用性

    可以快速写一个Spark应用程序通过 java/scala/python/R/SQL不同的语言去进行代码开发

    3、通用性

    Spark框架是一个生态系统,有很多不同的模块(sparksql、sparkStreaming、Mlib、Graphx)应用到不同的业务场景中。

    4、兼容性

    Spark程序就是一个计算任务的程序,哪里可以给当前这个任务提供对应的资源,我们就可以把这个任务提交到哪里去运行。
    
    standAlone
        spark自带的集群模式,任务的资源分配由Master负责。
    
    yarn
        spark可以把任务提交到yarn中去运行,任务的资源分配由resourceManager负责
    
    mesos
        是一个apache开源的类似于yarn的资源管理平台

    Spark集群的安装部署

    1 新建文件夹,分别用来存放压缩包、解压后的文件

    mkdir -p /export/software   
    mkdir -p /export/servers 

    2 把安装文件放到服务器上的software文件夹内 然后解压到servers文件夹内

    cd /export/software    
    tar -zxvf spark-2.1.3-bin-hadoop2.7.tgz -C /export/servers/
    cd /export/servers
    mv spark-2.1.3-bin-hadoop2.7 spark

    3 修改配置文件

    cd /export/servers/spark/conf
    mv spark-env.sh.template spark-env.sh
    vim spark-env.sh 
    #指定java环境变量
    export JAVA_HOME=/export/servers/jdk1.8.0_141
    #指定spark集群中老大地址 
    export SPARK_MASTER_HOST=node1
    #指定spark集群中老大端口
    export SPARK_MASTER_PORT=7077
    mv slaves.template slaves
    vim slaves 
    
    #指定哪些节点是worker
    node2
    node3

    4 添加spark的环境变量

    vim  /etc/profile
    
    export SPARK_HOME=/export/servers/spark
    export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin

    5 分发spark的安装目录和spark变量

    scp -r spark node2:/export/servers
    scp -r spark node3:/export/servers
    
    scp /etc/profile node2:/etc
    scp /etc/profile node3:/etc

    6 在所有节点执行脚本

    source /etc/profile

    启动和关闭Spark集群

    在主节点上的spark目录下sbin目录执行
    ./start-all.sh
    ./stop-all.sh

    7 基于zk构建Spark HA集群

    #安装zk集群
    
    #修改配置文件
    vim spark-env.sh
    
    #需要注释掉手动指定那个节点是master
    #指定spark集群中老大地址
    #export SPARK_MASTER_HOST=node1
    
    #引入zk相关配置 构建sparkHA
    export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER  -Dspark.deploy.zookeeper.url=node1:2181,n
    ode2:2181,node3:2181  -Dspark.deploy.zookeeper.dir=/spark"
    
    #分发spark-env.sh 到其他节点
    scp spark-env.sh node2:$SPARK_HOME/conf
    scp spark-env.sh node3:$SPARK_HOME/conf
    
    #启动zk器群
    #启动spark集群
    
    #为了保证master的高可用 可以在其他节点单独启动Master
    sbin/start-master.sh

    Spark集群的管理界面:

    master主机名或者ip:8080

  • 相关阅读:
    4.19Java.util.Arrays类
    4.19Java数组的拷贝
    Inverse matrix of 4x4 matrix
    自言自语
    病了两天
    当年3ds max盗版光碟上的广告
    头晕的厉害
    复习了一下STL容器的知识
    一个简单的能处理MIPMAP的类
    空间变换代码,相当简洁优美
  • 原文地址:https://www.cnblogs.com/blazeZzz/p/9829503.html
Copyright © 2011-2022 走看看