16 ,spark 读取 s3 文件,版本最终确定 ( 本地运行 )

一 ,基础配置 :

1 ,测试 spark 安装是否正确 :

  1. 用 ssh 工具连接主节点。
  2. 指定命令 :
spark-submit -class org.apache.spark.examples.SparkPi /usr/lib/spark/examples/jars/spark-examples.jar 1000
  1. 正确的标志 : 看到 π
    16 ,spark 读取 s3 文件,版本最终确定 ( 本地运行 )_第1张图片

2 ,windows 安装本地 hadoop 环境 ( 2.8.5 )

  1. 下载,解压 : hadoop-2.8.5.tar.gz
  2. 配置环境变量 : hadoop_home
    16 ,spark 读取 s3 文件,版本最终确定 ( 本地运行 )_第2张图片
  3. 下载解压 winutils-master.zip 。
  4. 直接解压好的 Hadoop 不支持 Windows 系统,我们需要修改一些配置方便在 Windows 上运行 。
  5. 拿到 winutils 中的 bin 目录 :
    16 ,spark 读取 s3 文件,版本最终确定 ( 本地运行 )_第3张图片
  6. 将原来的 2.8.5 中的 bin 目录干掉,用我们的 bin 替换他
    16 ,spark 读取 s3 文件,版本最终确定 ( 本地运行 )_第4张图片
  7. 配置 path 环境变量 : bin ,sbin
    16 ,spark 读取 s3 文件,版本最终确定 ( 本地运行 )_第5张图片

3 ,hadoop 配置文件 :

  1. hadoop-env.cmd
set JAVA_HOME=D:\07java\jdk
  1. core-site.xml

    
        hadoop.tmp.dir
        /D:/dev/hadoop/workplace/tmp
    
    
        dfs.name.dir
        /D:/dev/hadoop/workplace/name
    
    
        fs.default.name
        hdfs://localhost:9000
    

  1. mapred-site.xml

    
       mapreduce.framework.name
       yarn
    
    
       mapred.job.tracker
       hdfs://localhost:9001
    

  1. hdfs-site.xml

    
    
        dfs.replication
        1
    
    
        dfs.data.dir
        /D:/dev/hadoop/workplace/data
    

  1. yarn-site.xml

    
       yarn.nodemanager.aux-services
       mapreduce_shuffle
    
    
       yarn.nodemanager.aux-services.mapreduce.shuffle.class
       org.apache.hadoop.mapred.ShuffleHandler
    
`

4 ,hadoop 需要的目录创建 :

D:/dev/hadoop/workplace/tmp
D:/dev/hadoop/workplace/name
D:/dev/hadoop/workplace/data

5 ,格式化节点

  1. 运行 cmd 窗口
  2. 执行 : hdfs namenode -format
  3. 成功的标志 :
    16 ,spark 读取 s3 文件,版本最终确定 ( 本地运行 )_第6张图片

6 ,启动 hadoop :

start-all.cmd

7 ,启动成功的标志 :看到 4 个窗口

16 ,spark 读取 s3 文件,版本最终确定 ( 本地运行 )_第7张图片

8 ,为了让 hadoop 支持 s3 ,需要配置一下 core-site.xml :

  1. s3 模板 :

    fs.s3.access.key
    AD219WWP7J246X6M88D2


    fs.s3.secret.key
    DhK8SZdmAVwwDDYh0KXbUPQelIejl7snZOwPNlNh


    fs.s3.impl
    org.apache.hadoop.fs.s3.S3FileSystem

  1. s3n 模板 :

    fs.s3n.access.key
    access.key


    fs.s3n.secret.key
   secret.key


    fs.s3n.impl
    org.apache.hadoop.fs.s3native.NativeS3FileSystem

  1. s3a 模板 :我们选这个

    fs.s3a.access.key
    access.key


    fs.s3a.secret.key
    secret.key


    fs.s3a.impl
    org.apache.hadoop.fs.s3a.S3AFileSystem

9 ,不管用哪个 传输协议,都必须配置的 2 个配置项 :


  fs.s3a.connection.ssl.enabled
  false


    fs.s3a.endpoint
    endpoint:port

10 ,s3,s3a,s3n 的区别 :

  1. 本地 win 支持 : s3a
  2. 集群支持 : s3
  3. 开发 :
    代码用 s3a 测试
    打包到集群的话,变成 s3

二 ,spark 控制台 :

1 ,前提条件 :

三台机器至少都是 xlarge 类型的机器

2 ,切换到 root 用户 :

sudo -i

3 ,进入 spark-shell 控制台 :

spark-shell

三 ,spark 读取 s3 文件 ( 程序运行在 idea 中 )

1 ,我们的集群版本

  1. emr 版本 : 5.26.0
    16 ,spark 读取 s3 文件,版本最终确定 ( 本地运行 )_第8张图片
  2. scala 版本 : 2.11.12
    16 ,spark 读取 s3 文件,版本最终确定 ( 本地运行 )_第9张图片
  3. spark 版本 : 2.4.3
  4. hadoop 版本 :2.8.5-amzn-4
  5. python 版本 : 2.7.16

2 ,pm.xml


<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0modelVersion>

    <groupId>com.lifeCyclegroupId>
    <artifactId>sflThirdartifactId>
    <version>1.0-SNAPSHOTversion>

    <repositories>
        <repository>
            <id>emr-5.18.0-artifactsid>
            <name>EMR 5.18.0 Releases Repositoryname>
            <releases>
                <enabled>trueenabled>
            releases>
            <snapshots>
                <enabled>falseenabled>
            snapshots>
            <url>https://s3.us-west-1.amazonaws.com/us-west-1-emr-artifacts/emr-5.18.0/repos/maven/url>
        repository>
    repositories>
    <properties>
        <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
        <scala.version>2.11.12scala.version>
        <spark.version>2.4.3spark.version>
        <hadoop.version>2.8.5hadoop.version>
        <spark.pom.scope>compilespark.pom.scope>
    properties>

    <dependencies>
        <dependency>
            <groupId>com.amazonawsgroupId>
            <artifactId>aws-java-sdkartifactId>
            <version>1.11.636version>
        dependency>
        <dependency>
            <groupId>org.scala-langgroupId>
            <artifactId>scala-libraryartifactId>
            <version>${scala.version}version>
            <scope>${spark.pom.scope}scope>
        dependency>
        <dependency>
            <groupId>org.apache.sparkgroupId>
            <artifactId>spark-core_2.11artifactId>
            <version>${spark.version}version>
            <scope>${spark.pom.scope}scope>
        dependency>
        <dependency>
            <groupId>org.apache.sparkgroupId>
            <artifactId>spark-sql_2.11artifactId>
            <version>${spark.version}version>
            <scope>${spark.pom.scope}scope>
        dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.coregroupId>
            <artifactId>jackson-coreartifactId>
            <version>2.6.3version>
        dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.coregroupId>
            <artifactId>jackson-databindartifactId>
            <version>2.6.3version>
        dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.coregroupId>
            <artifactId>jackson-annotationsartifactId>
            <version>2.6.3version>
        dependency>
        <dependency>
            <groupId>org.apache.hadoopgroupId>
            <artifactId>hadoop-awsartifactId>
            <version>2.8.5version>
        dependency>
        <dependency>
            <groupId>org.apache.hadoopgroupId>
            <artifactId>hadoop-clientartifactId>
            <version>2.8.5version>
        dependency>
        <dependency>
            <groupId>net.java.dev.jets3tgroupId>
            <artifactId>jets3tartifactId>
            <version>0.9.4version>
        dependency>
        <dependency>
            <groupId>org.apache.httpcomponentsgroupId>
            <artifactId>httpcoreartifactId>
            <version>4.4version>
        dependency>
        <dependency>
            <groupId>org.apache.httpcomponentsgroupId>
            <artifactId>httpclientartifactId>
            <version>4.4version>
        dependency>
    dependencies>
project>

3 ,scala - spark 代码 :

package com.scalaDemo

import org.apache.spark.sql.SparkSession

object SparkScalaTest {
    def main(args: Array[String]): Unit = {
        val spark = SparkSession.builder()
            .master("local[*]")
            .config("spark.eventLog.enabled", "false")
            .config("spark.driver.memory", "2g")
            .config("spark.executor.memory", "2g")
            .appName("SparkDemoFromS3")
            .getOrCreate()
        spark.sparkContext.hadoopConfiguration.set("fs.s3a.access.key", "zhanghao")
        spark.sparkContext.hadoopConfiguration.set("fs.s3a.secret.key", "mima")
        spark.sparkContext.hadoopConfiguration.set("fs.s3a.endpoint", "s3.cn-northwest-1.amazonaws.com.cn")
        val rdd = spark.sparkContext.textFile("s3a://demo02/jia.csv")
        println(rdd.count())
    }
}

你可能感兴趣的:(16 ,spark 读取 s3 文件,版本最终确定 ( 本地运行 ))