• Spark安装笔记


    Spark基础

    第一节:什么是Spark?Spark的特点和结构
    1、什么是Spark?
    Spark是一个针对大规模数据处理的快速通用引擎。
    类似MapReduce,都进行数据的处理

    2、Spark的特点:
    (1)基于Scala语言、Spark基于内存的计算
    (2)快:基于内存
    (3)易用:支持Scala、Java、Python
    (4)通用:Spark Core、Spark SQL、Spark Streaming
    MLlib、Graphx
    (5)兼容性:完全兼容Hadoop

    3、Spark体系结构:主从结构
    (1)主节点:Master
    (2)从节点:Worker

    第二节:搭建Spark的伪分布模式环境
    1、解压:tar -zxvf spark-2.1.0-bin-hadoop2.4.tgz -C ~/training/
    2、配置参数文件: conf/spark-env.sh

    # --------------------------------系统准备
    #修改hosts和主机名
    # 修改/etc/hosts 以及/etc/sysconfig/network 文件, 分别设置不同的HOSTNAME
    vim /etc/hosts
    192.168.112.10 node-4
    192.168.112.11 node-5
    192.168.112.12 node-6
    
    vim /etc/sysconfig/network
    HOSTNAME=node-4
    
    hostname node-4 # 修改当前系统进程主机名
    
    ### 每台都要 关闭下列防火墙
    service iptables stop  
    setenforce 0  
    chkconfig iptables off  # chkconfig iptables --list 查看
    
    ssh-keygen  #创建.ssh目录
    ssh-copy-id -i ~/.ssh/id_rsa.pub node-5 #复制公钥到每台目标主机
    ssh-copy-id -i ~/.ssh/id_rsa.pub node-6 #复制公钥到每台目标主机
    ssh root@node-5 ##或者 ssh root@node-6 都能成功,不用密码,则互信成功.
    
    
    ############################ 基于yarn的集群上, 搭一个spark 分布式环境。
    
    # 前提: JDK, Hadoop安装并启动. 下载scala-2.12.5.tgz并解压
    # 下载spark  https://www.apache.org/dyn/closer.lua/spark/spark-2.2.1/spark-2.2.1-bin-hadoop2.7.tgz
    # 解压 重命名目录 进入conf目录
    cp spark-env.sh.template spark-env.sh
    vim spark-env.sh #添加如下内容:
    export SCALA_HOME=/usr/local/src/scala-2.12.5
    export JAVA_HOME=/usr/local/src/jdk1.8.0_161
    export HADOOP_HOME=/usr/local/src/hadoop-2.7.5
    export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
    SPARK_MASTER_IP=master
    SPARK_LOCAL_DIRS=/usr/local/src/spark-2.2.1
    SPARK_DRIVER_MEMORY=1G
    #正常生产环境,应该将内存调大
    
    vim slaves
    node-5
    node-6
    
    # 分发到各个从节点上
    scp -r scala-2.12.5 node-5:/usr/local/src/
    scp -r scala-2.12.5 node-6:/usr/local/src/
    scp -r spark-2.2.1 node-5:/usr/local/src/
    scp -r spark-2.2.1 node-6:/usr/local/src/
    
    
    ############################ standalone 模式。
    # 安装JDK
    
    # conf
    cp spark-env.sh.template spark-env.sh
    vim spark-env.sh #添加如下内容:
    export JAVA_HOME=/usr/local/src/jdk1.8.0_161
    SPARK_MASTER_HOST=node-4
    SPARK_MASTER_PORT=7077
    
    vim slaves # 指定从节点
    node-5
    node-6
    # --------------------- 忘记sudo vim时,:w !sudo tee %
    
    # 远程拷贝
    # for i in {5..6}; do echo $i; done # 测试循环
    for i in {5..6); do scp -r /bigdata/spark-2.2.1/ node-$i/bigdata/; done # 依次复制到别的节点
    
    #-----------------------------------------------------------------------------#
    #-------------------------------HA 配置:---------------------------------------#
    # spark-env.sh 中如下修改:
    # SPARK_MASTER_HOST=node-4 注释掉
    # SPARK_MASTER_PORT=7077 注释掉
    # 指定spark进程关联的zookeeper.
    export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=node-1:2181,node-2:2181,node-3:2181 -Dspark.deploy.zookeeper.dir=/spark"
    # 还可以指定硬件资源
    export SPARK_WORKER_CORES=2
    export SPARK_WORKER_MEMORY=1g
    # 保存退出 并将配置文件复制到其它节点。
    #
    # 先启动好zookeeper
    # 启动Master及Worker 。最后手动启动备份的Master节点 sbin/start-master.sh 
    # 检验备份节点jps进程,以及状态 http://node-3:8080 
    #-----------------------------------------------------------------------------#
    #-----------------------------------------------------------------------------#

    启动后的验证及简单示例:

    ############################## 启动后:  通过jps 看到一个master, 两个worker
    cd spark-2.2.1/sbin
    ./start-all.sh 
    
    # web UI 监控页面 
    http://node-4:8080
    
    ##### 验证:本地2个进程模拟      
    ./bin/run-example SparkPi 10 --master local[2] 
    
    ###### 验证:spark standalone  可以在http://node-4:8080监控    #参数100是这个示例的执行轮数
    ./bin/spark-submit --class org.apache.spark.examples.SparkPi --master spark://node-4:7077 examples/jars/spark-examples_2.11-2.2.1.jar 100 
    #       提交        指定类 Main()方法 通过反射来执行 官方示例   指定Master在哪              指定jar包位置                             采样次数 
    # 参数需要在jar包之前指定
    # spark执行过程中,Master产生进程:SparkSubmit   Worker产生进程:CoarseGrainedExecutorBackend 
    
    bin/spark-submit 
    --master spark://node-4:7077 
    --class org.apache.spark.examples.SparkPi 
    --executor-memory 512mb 
    --total-executor-cores 4 
    examples/jars/spark-examples_2.11-2.2.1.jar 100 
    # 指定每个executor内存大小, 以及一共用多少核
    # --master spark://node-4:7077,node-5:7077  如果是HA可以指定多个Master
    
    
    ####### 验证:spark on yarn 需要在yarn上监控 http://node-4:8088    # --master yarn-cluster 是固定写法
    ./bin/spark-submit --class org.apache.spark.examples.SparkPi --master yarn-cluster examples/jars/spark-examples_2.11-2.2.1.jar 10 
    
    # 计算结果不在终端显示,显示在yarn上, 打开http://node-4:8088  点击Tracking UI下的ApplicationMaster, 再点击Tracking URL:  History   再点击 Logs , stdout可以看到结果. 
    
    
    #####------------------------------------------- client方式
    spark-2.2.1/bin/pyspark # 以python shell的方式开发spark , 进入>>> 后,直接使用python交互
    # Using Python version 2.7.14 (default, Apr  9 2018 20:37:18)
    # SparkSession available as 'spark'.
    
    #####------------------------------------------- spark shell 
    spark-2.2.1/bin/spark-shell # 以本地模式启动shell的方式, 进入 scala> 后使用scala语言
    bin/spark-shell --master spark://master:7077 # 指定了Master地址就会提交到集群。开始时sparksubmit(客户端)要连接Master,
    # 并申请计算资源(内存和核数),Master进行资源调度(让那些Worker启动Executor),在准备工作时,这些进程都已经创建好了
    
    
    # 用spark Shell完成WordCount计算
    # 启动HDFS(上传数据到hdfs),sc是spark core(RDD)的执行入口
    
    sc.textFile("/home/test/1.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect # 本地文件
    # 如果报错文件找不到,可以将文件放在Master所在机器上。
    sc.textFile("/home/test/2.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).sortBy(_._2,false).collect # 加上了以数量降序
    
    sc.textFile("hdfs://node-4:9000/data/input/1.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect # hdfs文件
    # 如果连接HDFS的nameservice则需要复制配置文件到spark中

    Spark最好的开发语言是Scala 点此下载:Scala语言规范

  • 相关阅读:
    洛谷 P2986 [USACO10MAR]伟大的奶牛聚集Great Cow Gat…(树规)
    STREAMING #5 题解 3.高位网络
    冲刺NOIP2015提高组复赛模拟试题(五) 3.破坏基地
    冲刺NOIP2015提高组复赛模拟试题(五)2.道路修建
    冲刺NOIP2015提高组复赛模拟试题(五)1.数学作业
    洛谷P1186 玛丽卡 spfa+删边
    清北学堂 day6 花
    清北学堂 day6 兔子
    C++ STL 全排列函数
    flash分区的意义
  • 原文地址:https://www.cnblogs.com/frx9527/p/spark.html
Copyright © 2020-2023  润新知