博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Scala进阶之路-Spark本地模式搭建
阅读量:5825 次
发布时间:2019-06-18

本文共 3457 字,大约阅读时间需要 11 分钟。

          Scala进阶之路-Spark本地模式搭建

                             作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

 

 

 

 

一.Spark简介

1>.Spark的产生背景

  传统式的Hadoop缺点主要有以下两点:  

    第一.迭代式计算效率低(一个MapReduce依赖上一个MapReduce的结果);

    第二.交互式数据挖掘效率低(运行一个HIVE语句效率是极低的,第一天输入的SQL可能等到第二天才能拿到结果)

  Spark优化了Hadoop的两个缺点,可以将多个job合并成一个job来执行,也可以将于磁盘的交互迁移到内存进行交互,从而提升了工作效率。

 

 

2>.Spark是什么

1、软件栈中所有的程序库和高级组件 都可以从下层的改进中获益。2、运行整个软件栈的代价变小了。不需要运行5到10套独立的软件系统了,一个机构只需要运行一套软件系统即可。系统的部署、维护、测试、支持等大大缩减。3、能够构建出无缝整合不同处理模型的应用。

Spark Core:   实现了 Spark 的基本功能,包含任务调度、内存管理、错误恢复、与存储系统 交互等模块。Spark Core 中还包含了对弹性分布式数据集(resilient distributed dataset,简称RDD)的 API 定义。 Spark SQL:   是 Spark 用来操作结构化数据的程序包。通过 Spark SQL,我们可以使用 SQL 或者 Apache Hive 版本的 SQL 方言(HQL)来查询数据。Spark SQL 支持多种数据源,比 如 Hive 表、Parquet 以及 JSON 等。 Spark Streaming:   是 Spark 提供的对实时数据进行流式计算的组件。提供了用来操作数据流的 API,并且与 Spark Core 中的 RDD API 高度对应。 Spark MLlib:   提供常见的机器学习(ML)功能的程序库。包括分类、回归、聚类、协同过滤等,还提供了模型评估、数据 导入等额外的支持功能。 集群管理器:   Spark 设计为可以高效地在一个计算节点到数千个计算节点之间伸缩计 算。为了实现这样的要求,同时获得最大灵活性,Spark 支持在各种集群管理器(cluster manager)上运行,包括 Hadoop YARN、Apache Mesos,以及 Spark 自带的一个简易调度 器,叫作独立调度器。     Spark得到了众多大数据公司的支持,这些公司包括Hortonworks、IBM、Intel、Cloudera、MapR、Pivotal、百度、阿里、腾讯、京东、携程、优酷土豆。当前百度的Spark已应用于凤巢、大搜索、直达号、百度大数据等业务;阿里利用GraphX构建了大规模的图计算和图挖掘系统,实现了很多生产系统的推荐算法;腾讯Spark集群达到8000台的规模,是当前已知的世界上最大的Spark集群。

3>.Spark的安装模式

安装模式可分为以下几种:Local、Local-Cluster、Standalone、Yarn、MesosMaster节点主要运行集群管理器的中心化部分,所承载的作用是分配Application到Worker节点,维护Worker节点,Driver,Application的状态。Worker节点负责具体的业务运行。

 

 

二.部署Spark本地模式

1>.下载Spark软件

  官网下载地址:http://spark.apache.org/downloads.html

  当然点上面的网页只是对该版本的支持,允许我调戏你一下,哈哈,实际上下载位置应该在这里:https://archive.apache.org/dist/spark/ 。

2>.解压下载的Spark并创建软连接

[yinzhengjie@s101 download]$ wget https://archive.apache.org/dist/spark/spark-2.1.0/spark-2.1.0-bin-hadoop2.7.tgz[yinzhengjie@s101 download]$ lltotal 191052-rw-r--r-- 1 yinzhengjie yinzhengjie 195636829 Jan 18  2017 spark-2.1.0-bin-hadoop2.7.tgz[yinzhengjie@s101 download]$ [yinzhengjie@s101 download]$ tar -zxf spark-2.1.0-bin-hadoop2.7.tgz -C /soft/[yinzhengjie@s101 download]$ [yinzhengjie@s101 download]$ ln -s /soft/spark-2.1.0-bin-hadoop2.7/ /soft/spark[yinzhengjie@s101 download]$ [yinzhengjie@s101 download]$ ll /soft/ | grep sparklrwxrwxrwx   1 yinzhengjie yinzhengjie   32 Jul 26 20:44 spark -> /soft/spark-2.1.0-bin-hadoop2.7/drwxr-xr-x  12 yinzhengjie yinzhengjie 4096 Dec 15  2016 spark-2.1.0-bin-hadoop2.7[yinzhengjie@s101 download]$

3>.配置环境变量并使环境变量生效

[yinzhengjie@s101 download]$ tail -3 /etc/profile#ADD spark Pathexport SPARK_HOME=/soft/sparkPATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin[yinzhengjie@s101 download]$ [yinzhengjie@s101 download]$ source /etc/profile[yinzhengjie@s101 download]$

4>.启动Spark

5>.查看进程是否启动

6>.查看WebUI界面

三.Spark初体验-使用Spark实现单词统计

1>.创建测试文件

[yinzhengjie@s101 download]$ cat /home/yinzhengjie/1.txt hello worldyinzhengjie hello wordhello scalahello javahello pythonhello shellhello yinzhengjiehello golang[yinzhengjie@s101 download]$

2>.实现单词统计

体验Spark----------------------    1.登录spark       spark-shell    2.编写scala代码        //1.加载文本        val rdd1 = sc.textFile("/home/yinzhengjie/1.txt")        //2.压扁        val rdd2 = rdd1.flatMap(line=>{line.split(" ")})        //3.变换,标1成对        val rdd3 = rdd2.map(word=>{(word , 1)})        //4.按照key进行化简        val rdd4 = rdd3.reduceByKey((a,b)=> a + b).sortBy(t=> -t._2 )        //5.输出结果        rdd4.collect()    3.一行完成         sc.textFile("/home/yinzhengjie/1.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).sortBy(t=> -t._2 ).collect()

 

 

你可能感兴趣的文章
第四章 mybatis批量insert
查看>>
Java并发框架——什么是AQS框架
查看>>
【数据库】
查看>>
Win配置Apache+mod_wsgi+django环境+域名
查看>>
linux清除文件内容
查看>>
WindowManager.LayoutParams 详解
查看>>
find的命令的使用和文件名的后缀
查看>>
Android的Aidl安装方法
查看>>
Linux中rc的含义
查看>>
曾鸣:区块链的春天还没有到来| 阿里内部干货
查看>>
如何通过Dataworks禁止MaxCompute 子账号跨Project访问
查看>>
js之无缝滚动
查看>>
Django 多表联合查询
查看>>
logging模块学习:basicConfig配置文件
查看>>
Golang 使用 Beego 与 Mgo 开发的示例程序
查看>>
+++++++子域授权与编译安装(一)
查看>>
asp.net怎样在URL中使用中文、空格、特殊字符
查看>>
路由器发布服务器
查看>>
实现跨交换机VLAN间的通信
查看>>
jquery中的data-icon和data-role
查看>>