栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

使用IDEA开发WordCount程序(scala语言)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用IDEA开发WordCount程序(scala语言)

能力目标

  1. 能够在Linux下运行Spark程序
  2. 能够使用Spark shell命令
  3. 能够在IDEA配置Spark运行环境
  4. 能够使用IDEA开发WordCount程序

文章目录
  • 前言
  • 一、认识Spark架构和原理
    • 1.基本概念
    • 2.集群运行架构
  • 二、启动Spark-Shell
    • 1.说明
    • 2.运行Spark-Shell读取HDFS文件
  • 三、IDEA开发WordCount程序
    • 1.创建Maven项目
    • 2.添加Spark相关依赖,打包插件
    • 3.编写代码,查看结果


前言

点赞+关注+评论=养成好习惯

提示:以下是本篇文章正文内容,下面案例可供参考

一、认识Spark架构和原理 1.基本概念
名称含义
ApplicationSpark上运行的应用。Application中包含一个驱动器进程和集群上的多个执行器进程。
Driver Program运行main()方法并创建SparkContext的进程
Cluster Manager用于在集群上申请资源的外部服务(如:独立部署的集群管理器、Mesos或者Yarn)
Worker Node集群上运行应用程序代码的任意一个节点
Executor在集群工作节点上为某个应用启动的工作进程,该进程负责运行计算任务,并为应用程序存储数据
Task运行main()方法并创建SparkContext的进程
Job一个并行计算作业,由一组任务组成,并由Spark的行动算子(如:save、collect)触发启动
Stage每个Job可划分为更小的Task集合,每组任务被称为Stage
2.集群运行架构
名称作用
SparkContext掌控了所有Spark的生命活动,统筹全局,除了具体的任务在executor中执行,其他的任务调度、提交、监控、RDD管理
Cluster Manager负责整个集群的统一资源管理
WorkerWorker节点中的Executor是应用执行的主要进程,内部含有多个Task线程以及内存空间

步骤1:当一个Spark应用被提交时,根据提交参数创建Driver进程,Driver进程初始化SparkContext对象,由SparkContext负责和Cluster Manager的通信以及资源的申请、任务的分配和监控等。

步骤2:Driver进程向Cluster Manager申请资源,Cluster Manager接收到Application的注册请求后,会使用自己的资源调度算法,在Spark集群的Worker节点上,通知Worker为应用启动多个Executor。

步骤3:Executor创建后,会向Cluster Manager进行资源及状态的反馈,便于Cluster Manager对Executor进行状态监控,如果监控到Executor失败,则会立刻重新创建。

步骤4:Executor会向SparkContext反向注册申请Task。

步骤5:Task Scheduler将Task发送给Worker进程中的Executor运行并提供应用程序代码。

步骤6:当程序执行完毕后写入数据,Driver向Cluster Manager注销申请的资源。

Spark应用在集群上作为独立的进程组来运行,具体运行流程如下所示。

二、启动Spark-Shell 1.说明 在spark/bin目录中,执行下列命令进入Spark-Shell交互环境 bin/spark-shell --master

–master”表示指定当前连接的Master节点
用于指定Spark的运行模式
可取的详细值如下所示:

参数相关说明
local使用一个Worker线程本地化运行Spark
local[*]本地运行Spark,工作线程数量与本机CPU逻辑核心数量相同
local[N]使用N个Worker线程本地化运行Spark
spark://host:portStandalone模式下,连接到指定的Spark集群,默认端口7077
yarn-client以客户端模式连接Yarn集群,集群位置可在HADOOP_CONF_DIR环境变量中配置
yarn-cluster以集群模式连接Yarn集群,集群位置可在HADOOP_CONF_DIR 环境变量中配置
mesos://host:port连接到指定的Mesos集群。默认接口是5050
直接在本地启动交互式spark命令行
[root@hadoop spark]# bin/spark-shell

使用一个Worker线程本地化运行Spark
[root@hadoop spark]# bin/spark-shell  --master  local

Standalone模式下,连接到指定的Spark集群,默认端口7077
[root@hadoop spark]# bin/spark-shell  --master  spark://hadoop:7077
2.运行Spark-Shell读取HDFS文件
(1)整合spark与HDFS
确定spark-env.sh添加了下面参数
export HADOOP_CONF_DIR=/opt/hadoop-2.7.1/etc/hadoop

(2)启动Hadoop、Spark服务

(3)启动Spark-Shell编写程序
[root@hadoop spark]# bin/spark-shell  --master  local
运行读取hdfs文件并统计单词个数的命令。
Spark-Shell本身就是一个Driver,它会初始化一个SparkContext对象为sc

(4)退出Spark-Shell客户端
scala> :quit

三、IDEA开发WordCount程序

本地模式执行Spark程序

1.创建Maven项目

创建一个名为“spark_chapter02”的Maven项目,然后在main和test目录下分别创建一个名称为scala的文件夹。

2.添加Spark相关依赖,打包插件

设置依赖的版本号
添加了Scala、Hadoop和Spark相关的依赖,pom.xml如下:



    4.0.0

    org.example
    Maven
    1.0-SNAPSHOT
    
        2.11.8
        2.7.1
        2.2.0
    
    
    
        
            org.scala-lang
            scala-library
            ${scala.version}
        
        
        
            org.apache.spark
            spark-core_2.11
            ${spark.version}
        
        
        
            org.apache.hadoop
            hadoop-client
            ${hadoop.version}
        
    

3.编写代码,查看结果

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/827678.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号