zoukankan      html  css  js  c++  java
  • Spark(一)【spark-3.0安装和入门】

    一.Windows安装

    1.安装

    将spark-3.0.0-bin-hadoop3.2.tgz解压到非中文目录

    2.使用

    bin/spark-shell.cmd : 提供一个交互式shell

    val result: String = sc.textFile("input").flatMap(_.split(" ")).map((_, 1)).reduceByKey( _ + _).collect().mkString(",")
    

    可以打开WEB UI:http://localhost:4040/(每一个spark-shell会初始化一个spark-context,是一个job,关闭窗口后,就没有这个页面了)

    bin/spark-submit.cmd: 将程序打包后,提交运行!打包过程参考:idea开发spark程序

    1)进入D:SoftWaresparkspark-3.0.0-bin-hadoop3.2in

    2)将jar包上传到bin目录下,和测试的文件

    3)在该目录路径输入cmd打开cmd窗口

    输入以下命令测试

    spark-submit --class com.spark.day01.WcCount 09sparkdemo-1.0-SNAPSHOT.jar 1.txt
    

    二.Linux安装

    Local模式

    一般可以使用local模式进行测试,学习

    1.安装

    将spark-3.0.0-bin-hadoop3.2.tgz文件上传到linux并解压缩,放置在指定位置,改包名为spark-local

    tar -zxvf spark-3.0.0-bin-hadoop3.2.tgz -C /opt/module
    cd /opt/module 
    mv spark-3.0.0-bin-hadoop3.2.tgz spark-local
    
    2.使用

    进入 /opt/module/spark-local目录下

    spark-shell:命令行工具

    执行以下命令

    [hadoop@hadoop103 spark-local]$ bin/spark-shell
    
    [hadoop@hadoop103 spark-local]$ bin/spark-shell 
    20/07/29 18:54:55 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).
    20/07/29 18:55:06 WARN Utils: Service 'SparkUI' could not bind on port 4040. Attempting port 4041.
    Spark context Web UI available at http://hadoop103:4041
    Spark context available as 'sc' (master = local[*], app id = local-1596020106480).
    Spark session available as 'spark'.
    Welcome to
          ____              __
         / __/__  ___ _____/ /__
        _ / _ / _ `/ __/  '_/
       /___/ .__/\_,_/_/ /_/\_   version 3.0.0
          /_/
             
    Using Scala version 2.12.10 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_212)
    Type in expressions to have them evaluated.
    Type :help for more information.
    
    scala> 
    

    通过WEB UI 界面查看:http://hadoop103:4040/jobs/

    执行代码

    scala> sc.textFile("/opt/module/spark_testdata/1.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect
    res0: Array[(String, Int)] = Array((hello,2), (world,2), (spark,1), (hi,2))  
    

    spark-submit :提交应用

    将写好的spark打包上传至linux,然后执行以下命令

    [hadoop@hadoop103 spark-local]$bin/spark-submit --class com.spark.day01.WcCount /opt/module/spark_testdata/09sparkdemo-1.0-SNAPSHOT.jar /opt/module/spark_testdata/1.txt
    
    bin/spark-submit                --提交应用
    --class com.spark.day01.WcCount  --主类名字
    /opt/module/spark_testdata/09sparkdemo-1.0-SNAPSHOT.jar  --应用类所在的jar包
    /opt/module/spark_testdata/1.txt --程序的入口参数
    

    yarn模式

    前提,环境中已经安装好hadoop

    spark只是类似一个客户端(选择任意一台可以连接上YARN的机器安装即可),YARN是服务端!

    1.安装

    将spark-3.0.0-bin-hadoop3.2.tgz文件上传到linux并解压缩,放置在指定位置,改包名为spark-yarn

    tar -zxvf spark-3.0.0-bin-hadoop3.2.tgz -C /opt/module
    cd /opt/module 
    mv spark-examples_2.12-3.0.0 spark-yarn
    

    配置

    ①修改hadoop的/hadoop/etc/hadoop/yarn-site.xml配置文件,然后分发

    <!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是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将Job的日志,提交给Hadoop的历史服务 -->
    <property>
         <name>yarn.log.server.url</name>
         <value>http://hadoop102:19888/jobhistory/logs</value>
    </property>
    

    ②修改conf/spark-env.sh,添加JAVA_HOME和YARN_CONF_DIR配置

    改名 : mv spark-env.sh.template spark-env.sh

    YARN_CONF_DIR=/opt/module/hadoop-3.1.3/etc/hadoop
    #环境变量中有可以不配
    export JAVA_HOME=/opt/module/jdk1.8.0_144 
    
    2.使用

    ① 启动HDFS和yarn集群

    jps验证下

    [hadoop@hadoop103 spark-local]$ myjps 
    ================  hadoop102 JPS  =====================
    1809 NameNode
    2434 Jps
    1939 DataNode
    2281 NodeManager
    ================  hadoop103 JPS  =====================
    2867 NodeManager
    2552 DataNode
    2744 ResourceManager
    3263 Jps
    ================  hadoop104 JPS  =====================
    1587 DataNode
    1797 NodeManager
    1676 SecondaryNameNode
    1951 Jps
    

    web界面验证下:

    HDFS:http://hadoop102:9870/

    YARN:http://hadoop103:8088/

    ② 提交应用

    官方案例

    bin/spark-submit 
    --class org.apache.spark.examples.SparkPi 
    --master yarn 
    --deploy-mode cluster 
    ./examples/jars/spark-examples_2.12-3.0.0.jar 
    10
    

    自定义的WordCount程序

    bin/spark-submit 
    --class com.spark.day01.WcCount 
    --master yarn 
    --deploy-mode cluster 
    /opt/module/spark_testdata/09sparkdemo-1.0-SNAPSHOT.jar 
    hdfs://hadoop102:8020/input	
    

    注意

    ​ 读取的文件最好放在hdfs路径,注意端口号别写错,core-site.xml中配置。

    ​ 放在本地路径可能出现文件找不到的异常。

    3.spark的历史服务器集成yarn

    ① 修改spark-defaults.conf.template文件名为spark-defaults.conf

    spark.eventLog.enabled           true
    #HDFS的节点和端口和目录
    spark.eventLog.dir               hdfs://hadoop102:8020/spark-logs
    
    #spark的历史服务器,在spark所在节点,端口18080
    spark.yarn.historyServer.address=hadoop03:18080
    spark.history.ui.port=18080
    

    注意:HDFS上的目录需要提前存在。

    ② 修改spark-env.sh文件,配置日志存储路径

    #spark的历史服务器
    export SPARK_HISTORY_OPTS="
    -Dspark.history.ui.port=18080 
    -Dspark.history.fs.logDirectory=hdfs://hadoop102:8020/spark-logs 
    -Dspark.history.retainedApplications=30"
    

    ③ 启动spark的历史服务器

    sbin/start-history-server.sh
    

    ④ 提交应用程序

    bin/spark-submit 
    --class org.apache.spark.examples.SparkPi 
    --master yarn 
    --deploy-mode client 
    ./examples/jars/spark-examples_2.12-3.0.0.jar 
    10
    

    ⑤ 观察web界面

    yarn:http://hadoop103:8088/

    spark的历史服务器

    hadoop的历史服务器

  • 相关阅读:
    《山里的日子(记录片)》观后感——回不去的农村
    Android事件分发传递
    《活着》观后感——时代
    Android6.0动态获取权限
    Androidannotations框架
    Android屏幕适配笔记
    Android 网络状态检测
    氢氘交换
    springboot datajpa 简明说明
    算法学习
  • 原文地址:https://www.cnblogs.com/wh984763176/p/13399538.html
Copyright © 2011-2022 走看看