spark 安装入门(一)scala spark单词统计 ; java spark单词统计spark反转排序

本文介绍了Spark的基本概念、安装步骤及高可用性设置,讲解了如何在Scala和Java中进行单词统计,并探讨了Spark的性能优势。内容包括:1. Spark的特性与优势;2. Spark集群的搭建,包括standalone、YARN和Mesos模式;3. Zookeeper在实现Spark高可用中的作用;4. SparkShell的使用和WordCount示例;5. Java Spark进行单词统计及反转排序操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

spark 安装入门

这篇博客 可以让你学习到 三点 知识:
1.熟悉spark的相关概念。
2.搭建一个spark集群。
3.编写简单的spark应用程序。

spark是一个针对于大规模数据处理的统一分析引擎。

为什么要学spark?
一句话:spark处理速度比mapreduce快很多。
具体快的原因:
Spark是一个开源的类似于Hadoop MapReduce的通用的并行计算框架,Spark基于map reduce算法实现的分布式计算,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Spark中的Job中间输出和结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的map reduce的算法。
Spark是MapReduce的替代方案,而且兼容HDFS、Hive,可融入Hadoop的生态系统,以弥补MapReduce的不足

spark 的四大特性:
1.速度快:
spark比mapreduce在内存中快100x,比mapreduce在磁盘中快10x

  • spark比mapreduce快的主要2个原因

    (1)sparkjob中间结果数据可以保存在内存中mapreduce的job中间结果数据只能够保存在磁盘。这样依赖,后续又有其他的job需要依赖于前面job的输出结果,对于spark来说,直接可以从内存获取得到,大大减少磁盘io操作,对于mapreduce来说就需要进行大量磁盘io操作,性能来说肯定是降低了。
    select name,age from (select * from user where age >30)

    (2) mapreduce以进程的方式运行在整合yarn中,比如一个job有100个mapTask,这个时候在运行这100个map task就需要启动100个进程spark以线程的方式运行的进程中。这个在运行这个100个map task可以只启动1个进程,在一个进程中运行100个线程。启动一个进程和启动一个线程时间代价肯定不一样,启动进程需要的时间和调度大大增加。
    2.易用性
    可以快速写一个spark应用程序通过 java/scala/python/R/SQL不同的语言去进行代码开发
    3.通用性
    spark框架是一个生态系统,可以通过有很多不同的模(sparksqlsparkStreaming、Mlib、Graphx)应用到不同的业务场景中。
    4.兼容性
    spark程序就是一个计算任务的程序,哪里可以给当前这个任务提供对应的资源,我们就可以把这个任务提交到哪里去运行。

    • standAlone
      • spark自带的集群模式,整个任务的资源分配由Master负责。
    • yarn
      • spark可以把任务提交到yarn中去运行,整个任务的资源分配由resourceManager负责
    • mesos
      • 是一个apache开源的类似于yarn的资源管理平台

spark 官网:http://spark.apache.org

在这里插入图片描述
一 spark 安装 开始:
上传 spark 包到linux
在这里插入图片描述
1.安装目录:/export/servers
2.解压安装包到指定的规划目录:tar -zxvf spark-2.1.3-bin-hadoop2.7.tgz -C /export/servers
3.重命名解压目录:mv spark-2.1.3-bin-hadoop2.7 spark
4.修改配置文件:进入到spark安装目录下conf文件夹: vim spark-env.sh (mv spark-env.sh.template spark-env.sh)【此处到时加zookepper配置 实现集群的高可用 考虑主机宕机情况 zk有选举机制 主机宕机和选举其他机器作为主机 过程可能要1-2分钟】

#指定java环境变量
export JAVA_HOME=/export/servers/jdk
#指定spark集群中老大地址
export SPARK_MASTER_HOST=node1
#指定spark集群中老大端口
export SPARK_MASTER_PORT=7077
JAVA_HOME=/usr/jdk

  1. vim slaves (mv slaves.template slaves)
    指定哪些节点是worker
    node2
    node3
    6.添加spark的环境变量
    vim /etc/profile
    export SPARK_HOME=/export/servers/spark
    export PATH= P A T H : PATH: PATH:SPARK_HOME/bin:$SPARK_HOME/sbin
    7.分发spark的安装目录和spark变量
    scp -r spark note2:/export/servers
    scp -r spark note3:/export/servers

scp /etc/profile note2:/etc
scp /etc/profile note3:/etc

7让所有节点的spark环境变量生效:source /etc/profile

8.启动spark 集群 :sbin 下 : start-all.sh
9.停止spark集群:sbin 下 :stop-all.sh
10.启动好spark集群之后可以访问地址: master 主机ip +8080端口

可以看到整个spark集群相关信息,包括spark集群健康状态信息、spark集群整个资源信息、spark集群已经使用的资源信息、spark集群还剩的资源信息、整个任务运行的相关信息、已经完成的任务相关信息。
Standby:休眠状态。

在这里插入图片描述

考虑到主机有宕机的可能性,我们需要用到zookeeper 【因为zookeeper 有自己的选举机制,当主机宕机 其他机器发现主机宕机 就会在其他机器上投票选举主机,也就是出于standby:休眠状态的机子 可能被选为主机。】

其基本原理是通过zookeeper来选举一个Master,其他的Master处于Standby状态
下面我们就来通过 zookeeper来实现 spark 集群的高可用(HA).

HA方案 用起来非常简单,
1.首先需要搭建一个 zookeeper 集群,
2.然后启动zookeeper集群,
3.最后在不同的节点上启动Master.

具体配置如下:
做配置之前 我们先改一下 上面 spark 集群的配置,spark-env.sh中开始我们是 手动指定master 所在主机为 note1( export SPARK_MASTER_HOST=node1) 现在使用zookeeper 来实现投票选举机制【防止 手动指定的note1 宕机后 没有机器顶上】。
配置为:
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=note1:2181,note2:2181,note3:2181 -Dspark.deploy.zookeeper.dir=/spark"

参数说明:
1.spark.deploy.recoveryMode恢复模式(Master重新启动的模式)
有三种:(1)ZooKeeper (2) FileSystem (3)NONE
2.spark.deploy.zookeeper.url:ZooKeeper的Server地址
3.spark.deploy.zookeeper.dir:保存集群元数据信息的文件、目录。<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值