• spark教程(一)-集群搭建


    spark 简介 

    建议先阅读我的博客 大数据基础架构

    spark 一个通用的计算引擎,专门为大规模数据处理而设计,与 mapreduce 类似,不同的是,mapreduce 把中间结果 写入 hdfs,而 spark 直接写入 内存,这使得它能够实现实时计算。

    spark 由 scala 语言开发,他能够和 scala 完美结合,同时实现了 java、python、R 等接口。

    搭建模式

    spark 有 3 种搭建模式

    local 模式:即单机模式,这种安装加压即可,具体安装方法穿插在 Standalone 模式

    Standalone 模式:即搭建 spark 集群,但不与其他框架集成,如 yarn,此时 spark 运行在集群中

    基于 yarn 的 spark 集群部署:yarn 集群 + spark 集群,此时 spark 运行在 yarn 中

    local 和 standalone 模式必须启动 spark,yarn 模式无需启动 spark

    具体怎么理解这 3 种模式,后面有空我会详细讲

    Standalone 模式

    第一步:安装环境

    1. 安装java:很简单,请自行百度

    2. 安装 hadoop 集群:具体参考我的博客 hadoop 集群搭建

      // 如果 spark 读取 hdfs 就需要 hadoop,如果只玩本地,无需这步

    3. 安装 scala:spark tar 包带有 scala 依赖,所以无需专门安装

    4. python2.7 以上版本:如果要使用 pyspark 才需要安装,也就是说玩 python 才需要这步

    第二步:下载并安装

    1. 官网下载 spark

    下载地址 spark

    注意选择 hadoop 对应的版本

    2. 解压 tar 包

    上传至集群的每个节点,解压,设置环境变量

    export SPARK_HOME=/usr/lib/spark
    export PATH=.:$HADOOP_HOME/bin:$JAVA_HOME/bin:$SPARK_HOME/bin:$PATH

    至此已经完成单机模式的 spark 安装

    3. 配置 spark

    进入 spark 解压目录,需要配置 conf/slaves,conf/spark-env.sh 两个文件

    注意这两个文件是不存在的,需要 cp 复制一下

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

    slaves

    末尾去掉 localhost,加上以下内容

    hadoop10
    hadoop11
    hadoop12
    hadoop13

    spark-env.sh

    加上以下内容

    export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk.x86_64
    export SPARK_MASTER_IP=hadoop1
    export SPARK_MASTER_PORT=7077
    export SPARK_WORKER_MEMORY=1G

    设置 spark 的主节点 和 端口;

    spark_worker_memory 表示计算时使用的内存,越大越好,spark 是基于内存的计算

    4. 向其他节点远程下发配置

    scp -r conf/ root@hadoop11:/usr/lib/spark
    scp -r conf/ root@hadoop12:/usr/lib/spark
    scp -r conf/ root@hadoop13:/usr/lib/spark

    5. 启动 spark

    cd /usr/lib/spark/sbin、
    ./start-all.sh

    停止就是对应的 stop

    6. 验证是否启动成功

    6.1 jsp 查看进程

    主节点显示 master 和 worker 两个进程

    从节点显示 worker 进程

    Standalone 模式显示的是 master worker,yarn 显示的不是

    6.2 浏览器访问 http://192.168.10.10:8080/

    第三步:操作 spark 集群

    这里只做简单介绍,验证 spark 是否启动,然后看看长啥样即可

    客户端操作 spark 集群的命令都在 spark 的 bin 目录下

    1. spark-shell 模式  【 scala 模式】

    输入命令

    spark-shell
    
    # 也可以设置参数
    spark-shell --master spark://hadoop10:7077 --executor-memory 600m
    [root@hadoop10 spark]# bin/spark-shell 
    19/10/09 17:47:54 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
    Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
    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://hadoop10:4040
    Spark context available as 'sc' (master = local[*], app id = local-1570668484546).
    Spark session available as 'spark'.
    Welcome to
          ____              __
         / __/__  ___ _____/ /__
        _ / _ / _ `/ __/  '_/
       /___/ .__/\_,_/_/ /_/\_   version 2.4.4
          /_/
             
    Using Scala version 2.11.12 (OpenJDK 64-Bit Server VM, Java 1.8.0_222)

    注意绿色的两句,意思是 shell 中内置了 可用的 spark context 和 spark session,名字分别为 sc 和 spark

    按 :quit 退出

    2. pyspark 模式  【python 模式】

    输入命令 pyspark 即可

    [root@hadoop10 spark]# bin/pyspark 
    Python 2.7.12 (default, Oct  2 2019, 19:43:15) 
    [GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    19/10/02 22:08:17 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
    Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
    Setting default log level to "WARN".
    To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
    Welcome to
          ____              __
         / __/__  ___ _____/ /__
        _ / _ / _ `/ __/  '_/
       /__ / .__/\_,_/_/ /_/\_   version 2.4.4
          /_/
    
    Using Python version 2.7.12 (default, Oct  2 2019 19:43:15)
    SparkSession available as 'spark'.
    >>> 

    注意这里只有 spark session,但是 spark context 也可以直接用 

    如果出现 NameError: name 'memoryview' is not defined,说明 python 版本不对,2.7 及以上

    如果出现未导入包什么的,请自行解决,一般是 python 没装好

    基于 yarn 的 spark 部署

    第一步:安装环境

    1. 安装java:很简单,请自行百度

    2. 安装 hadoop 集群:具体参考我的博客 hadoop 集群搭建;必须有,因为要用 yarn

    3. 安装 scala:spark tar 包带有 scala 依赖,所以无需专门安装

    4. python2.7 以上版本:如果要使用 pyspark 才需要安装,也就是说玩 python 才需要这步

    第二步:安装 spark

    spark on yarn 模式只需在 hadoop 集群的任一节点安装 spark 即可,不需要 spark 集群;

    因为 spark 应用提交到 yarn 后,yarn 负责集群资源调度。

    spark 安装参照 Standalone 模式,大致如下:

    1. 配置环境变量

    2. spark-env.sh 添加如下内容

    YARN_CONF_DIR=/usr/lib/hadoop-2.6.5/etc/hadoop

    这个地址是 hadoop yarn 的配置文件的地址

    第三步:修改 hadoop yarn 的配置

    修改 yarn-site.xml,添加如下内容

    <!-- spark 部署到 yarn 上需要这两个配置 --> 
    <!-- 是否启动一个线程检查每个任务正在使用的物理内存,如果超出分配值,则直接杀掉该任务,默认为 true -->
    <property>
            <name>yarn.nodemanager.pmem-check-enabled</name>
            <value>false</value>
     </property>
     
    <!-- 是否启动一个线程检查每个任务正在试用的虚拟内存,如果超出分配值,则直接杀掉该任务,默认为 true -->
    <property>
            <name>yarn.nodemanager.vmem-check-enabled</name>
            <value>false</value>
     </property> 
    <!-- spark 部署到 yarn 上需要这两个配置 --> 

    分发到各节点

    不配置这步可能报错,特别是分配内存较小时,如虚拟机情况下。

    至此配置完毕,注意,无需启动 spark

    第四步:操作 yarn 模式

    spark-shell --master yarn-client    # 这种方式在 spark2.x 中被废弃,替代命令为下面这句
    spark-shell --master yarn --deploy-mode client

    yarn 模式 不在 spark UI 上监控,而是在 hadoop UI 上,地址为 http://192.168.10.10:8088

    参考资料:

    https://www.cnblogs.com/swordfall/p/7903678.html  安装

    https://www.jianshu.com/p/5626612bf10c       安装

    https://blog.csdn.net/penyok/article/details/81483527        安装

    https://blog.csdn.net/chengyuqiang/article/details/77864246     spark on yarn

  • 相关阅读:
    web service基础知识
    saltstack高效运维
    vim与程序员
    主动学习与被动学习
    macos安装postman
    stm32——fmsc控制外部SRAM——小结
    关于头文件中的 static inline函数
    w25qxx的nor flash学习笔记
    C标准:C90、C99、C11_C/C++
    lubuntu16.04.6安装GMP库
  • 原文地址:https://www.cnblogs.com/yanshw/p/11614988.html
Copyright © 2020-2023  润新知