• 大数据学习06-Spark分布式集群部署


    前期准备,每台服务器都需要配置

    配置好IP
    vim /etc/sysconfig/network-scripts/ifcfg-ens33

    TYPE="Ethernet"
    PROXY_METHOD="none"
    BROWSER_ONLY="no"
    BOOTPROTO="static"
    DEFROUTE="yes"
    IPV4_FAILURE_FATAL="no"
    IPV6INIT="yes"
    IPV6_AUTOCONF="yes"
    IPV6_DEFROUTE="yes"
    IPV6_FAILURE_FATAL="no"
    IPV6_ADDR_GEN_MODE="stable-privacy"
    NAME="ens33"
    UUID="bcd315b9-9d9a-4ad7-8f75-9546f71e49a4"
    DEVICE="ens33"
    ONBOOT="yes"
    
    IPADDR=192.168.245.200 #IP地址
    GATEWAY=192.168.245.1  #默认网关
    NETWORK=255.255.255.0  #子网掩码
    DNS1=114.114.114.114   #DNS
    DNS2=8.8.8.8
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    修改主机名
    vi /etc/hostname

    做好IP映射
    vim /etc/hosts

    192.168.245.200 master
    192.168.245.201 slave1
    192.168.245.202 slave2
    
    • 1
    • 2
    • 3

    关闭防火墙
    systemctl status firewalld
    systemctl stop firewalld
    systemctl disable firewalld
    配置SSH免密登录
    ssh-keygen -t rsa

    for i in {1..2};do scp -r ~/.ssh/authorized_keys root@slave${i}:~/.ssh/;done
    
    • 1

    安装Scala

    下载Scala安装包

    tar -zxvf scala-2.11.12.tgz -C /home/local
    
    • 1

    配置环境变量

    vim /etc/profile
    
    • 1

    添加如下配置

    export SCALA_HOME=/home/local/scala
    export PATH=$SCALA_HOME/bin:$PATH
    
    • 1
    • 2

    使环境生效

    source /etc/profile
    
    • 1

    验证

    scala -version
    
    • 1

    安装spark

    Spark官网
    在这里插入图片描述

    解压

    上传软件安装包至linux系统 /home/tools目录下

    tar -zxvf spark-2.2.3-bin-hadoop2.6.tgz -C /home/local
    
    • 1

    移动文件目录至spark

    mv spark-2.2.3-bin-hadoop2.6 spark
    
    • 1

    配置环境

    export SPARK_HOME=/home/local/spark
    export PATH=$PATH:${SPARK_HOME}/bin:${SPARK_HOME}/sbin
    
    • 1
    • 2

    修改配置

    进入${SPARK_HOME}/conf路径下,拷贝spark-env.sh.template为spark-env.sh

    cp spark-env.sh.template spark-env.sh
    
    • 1

    修改spark-env.sh文件

    vim spark-env.sh
    
    • 1

    添加如下配置

    
    export JAVA_HOME=/home/local/java
    
    export SCALA_HOME=/home/local/scala
    
    export SPARK_DIST_CLASSPATH=$(/home/local/hadoop/bin/hadoop classpath)
    
    export HADOOP_CONF_DIR=/home/local/hadoop/etc/hadoop
    #指定spark主节点,通过主机映射
    export SPARK_MASTER_HOST=master
    #指定从节点worker并行数量
    export SPARK_WORKER_CORES=2
    #指定内存大小
    export SPARK_WORKER_MEMORY=2g
    #指定主节点端口
    export SPARK_MAETER_PORT=7070
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    拷贝slave.template为slaves

    cp slaves.template slaves
    
    • 1

    修改slaves文件

    [root@master conf]# vim slaves
    master
    slave1
    slave2
    
    • 1
    • 2
    • 3
    • 4

    分发spark目录至每个服务器节点

    for i in {1..2};do scp -r /home/local/spark/ root@slave${i}:/home/local/;done
    
    • 1

    在${SPARK_HOME}/sbin目录下启动spark

    ./start-all.sh
    
    • 1

    在Spark Shell中,你可以使用以下方法来读取HDFS文件:

    1.读取文本文件:

    val textFile = sc.textFile("hdfs://")
    
    • 1

    统计包含mike的数据记录

    textFile.filter(line=>line.contains("mike")).count()
    
    • 1

    2.读取多个文本文件:

    val textFiles = sc.wholeTextFiles("hdfs://")
    
    • 1

    3.读取二进制文件:

    val binaryFiles = sc.binaryFiles("hdfs://")
    
    • 1

    4.读取其他格式的文件(如Parquet、Avro等):

     val dataframe = sqlContext.read.format("<文件格式>").load("hdfs://")
     这将返回一个 DataFrame 对象,可以使用Spark SQL进行数据分析。
    
    • 1
    • 2

    pyspark读取文件

    1.导入PySpark模块:

    from pyspark.sql import SparkSession
    
    • 1

    2.创建SparkSession:

    spark = SparkSession.builder \
        .appName("PySpark Example") \
        .getOrCreate()
    
    • 1
    • 2
    • 3

    3.加载数据

    # 加载文本文件
    text_data = spark.read.text("path/to/text/file.txt")
    
    # 加载CSV文件
    csv_data = spark.read.csv("path/to/csv/file.csv", header=True, inferSchema=True)
    
    # 加载JSON文件
    json_data = spark.read.json("path/to/json/file.json")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    4.数据处理和转换

    # 显示DataFrame的内容
    df.show()
    
    # 选择特定的列
    df.select("column1", "column2")
    
    # 过滤数据
    df.filter(df.column1 > 10)
    
    # 聚合操作
    df.groupBy("column1").agg({"column2": "sum"})
    
    # 排序数据
    df.orderBy("column1", ascending=False)
    
    # 添加新列
    df.withColumn("new_column", df.column1 * 2)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    5.执行sql查询

    # 创建临时视图
    df.createOrReplaceTempView("my_view")
    
    # 执行SQL查询
    result = spark.sql("SELECT * FROM my_view WHERE column1 > 10")
    
    • 1
    • 2
    • 3
    • 4
    • 5

    6.将数据保存到文件:

    # 保存为文本文件
    df.write.text("path/to/save/text/file.txt")
    
    # 保存为CSV文件
    df.write.csv("path/to/save/csv/file.csv")
    
    # 保存为Parquet文件
    df.write.parquet("path/to/save/parquet/file.parquet")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    7.关闭SparkSession

    spark.stop()
    
    • 1
  • 相关阅读:
    Antd按钮点击完返回未点样式
    图库 | 图计算的适用场景有哪些?
    Mybatis-plus apply函数使用
    【Matplotlib绘制图像大全】(十七):散点图
    bat脚本总结
    计算机视觉与人工智能在医美人脸皮肤诊断方面的应用
    剑指offer——JZ26 树的子结构 解题思路与具体代码【C++】
    Android 长时间待机后系统概率性无声
    物联网漏洞利用整体情况
    laravel日期字段carbon 输出格式转换
  • 原文地址:https://blog.csdn.net/Java721/article/details/132603062