一、Spark概述

    官网:http://spark.apache.org/
Apache Spark™是用于大规模数据处理的统一分析引擎。
为大数据处理而设计的快速通用的计算引擎。 Spark加州大学伯克利分校AMP实验室。不同于mapreduce的是一个Spark任务的中间结果保存到内存中。
空间换时间。
Spark启用的是内存分布式数据集。
用scala语言实现,与spark紧密继承。用scala可以轻松的处理分布式数据集。
Spark并不是为了替代hadoop,而为了补充hadoop。
Spark并没有存储。可以集成HDFS。

二、Spark特点

    1)速度快
与mr对比,磁盘运行的话10倍以上。
内存运行的话,100倍以上。 2)便于使用
支持java/scala/python/R 3)通用
不仅支持批处理(SparkSQL)
而且支持流处理(SparkStreaming) 4)兼容
兼容其它组件
Spark实现了Standalone作为内置的资源管理和调度框架。hdfs/yarn。

三、Spark安装部署

    主节点:Master (192.168.146.150)
从节点:Worker (192.168.146.151、192.168.146.152) 1、准备工作
(1)关闭防火墙
firewall-cmd --state 查看防火墙状态
systemctl stop firewalld.service 关闭防火墙
systemctl disable firewalld.service 禁止开机启动 (2)远程连接(CRT) (3)永久设置主机名
vi /etc/hostname
三台机器hostname分别为spark-01、spark-02、spark-03
注意:要reboot重启生效 (4)配置映射文件
vi /etc/hosts #127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
#::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.146.150 spark-01
192.168.146.151 spark-02
192.168.146.152 spark-03 (5)配置ssh免密码登录
ssh-keygen 生成密钥对
ssh-copy-id spark-01
ssh-copy-id spark-02
ssh-copy-id spark-03 2、安装jdk(scala依赖jvm)
(1)创建spark安装的目录
cd /root
上传tar包到/root目录下 (2)解压tar包
cd /root
mkdir sk
tar -zxvf jdk-8u144-linux-x64.tar.gz -C /root/sk (3)配置环境变量
vi /etc/profile export JAVA_HOME=/root/sk/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin source /etc/profile 加载环境变量 (4)发送到其它机器(其他机器的/root下要先创建sk目录)
cd /root/sk
scp -r jdk1.8.0_144/ root@spark-02:$PWD
scp -r jdk1.8.0_144/ root@spark-03:$PWD scp -r /etc/profile spark-02:/etc
scp -r /etc/profile spark-03:/etc 注意:加载环境变量 source /etc/profile 3、安装Spark集群
(1)上传tar包到/root目录下 (2)解压
cd /root
tar -zxvf spark-2.2.0-bin-hadoop2.7.tgz -C sk/ (3)修改配置文件
cd /root/sk/spark-2.2.0-bin-hadoop2.7/conf
mv spark-env.sh.template spark-env.sh
vi spark-env.sh export JAVA_HOME=/root/sk/jdk1.8.0_144
export SPARK_MASTER_HOST=spark-01
export SPARK_MASTER_PORT=7077 (4)slaves 加入从节点
cd /root/sk/spark-2.2.0-bin-hadoop2.7/conf
mv slaves.template slaves
vi slaves spark-02
spark-03 (5)分发到其他机器
cd /root/sk
scp -r spark-2.2.0-bin-hadoop2.7/ root@spark-02:$PWD
scp -r spark-2.2.0-bin-hadoop2.7/ root@spark-03:$PWD (6)启动集群
cd /root/sk/spark-2.2.0-bin-hadoop2.7
sbin/start-all.sh 浏览器访问http://spark-01:8080/即可看到UI界面 (7)启动命令行模式
cd /root/sk/spark-2.2.0-bin-hadoop2.7/bin
./spark-shell sc.textFile("/root/words.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).sortBy((_,1)).collect

四、启动spark­shell

    cd /root/sk/spark-2.2.0-bin-hadoop2.7/
本地模式:bin/spark-shell 集群启动:bin/spark-shell --master spark://spark-01:7077 --total-executor-cores 2 --executor-memory 512mb 提交运行jar:bin/spark-submit --master spark://spark-01:7077 --class SparkWordCount /root/SparkWC-1.0-SNAPSHOT.jar
hdfs://192.168.146.111:9000/words.txt hdfs://192.168.146.111:9000/sparkwc/out

五、spark集群角色

    Yarn                         Spark           作用
ResourceManager Master 管理子节点
NodeManager Worker 管理当前节点
YarnChild Executor 处理计算任务
Client+ApplicationMaster SparkSubmit 提交计算任务

六、Shell编写WordCount

1、本地模式:bin/spark-shell

scala> sc.textFile("/root/words.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect
res5: Array[(String, Int)] = Array((is,1), (love,2), (capital,1), (Beijing,2), (China,2), (I,2), (of,1), (the,1)) scala>

其中words.txt文件内容如下

I love Beijing
I love China

2、集群启动:bin/spark-shell --master spark://spark-01:7077 --total-executor-cores 2 --executor-memory 512mb

scala> sc.textFile("/root/words.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect
res5: Array[(String, Int)] = Array((is,1), (love,2), (capital,1), (Beijing,2), (China,2), (I,2), (of,1), (the,1)) scala>

注意:如果集群启动使用的是本地文件words.txt,那么需要每个节点对应的路径都有该文件!!!

     如果使用的是HDFS文件则不需要考虑这个。

scala> sc.textFile("hdfs://192.168.146.111:9000/words.txt").flatMap(_.split("\t")).map((_,1)).reduceByKey(_+_).collect
res6: Array[(String, Int)] = Array((haha,1), (heihei,1), (hello,3), (Beijing,1), (world,1), (China,1)) scala>

HDFS中的words.txt文件内容如下:

hello    world
hello China
hello Beijing
haha heihei

3、IDEA开发WordCount

(1)SparkWordCount类

import org.apache.spark.{SparkConf, SparkContext}

//spark-WordCount本地模式测试
object SparkWordCount {
def main(args: Array[String]): Unit = {
//2.设置参数 setAppName设置程序名 setMaster本地测试设置线程数 *多个
val conf: SparkConf = new SparkConf().setAppName("SparkWordCount").setMaster("local[*]")
//1.创建spark执行程序的入口
val sc:SparkContext = new SparkContext(conf) //3.加载数据 并且处理
sc.textFile(args(0)).flatMap(_.split("\t")).map((_,1))
.reduceByKey(_+_)
.sortBy(_._2,false)
//保存文件
.saveAsTextFile(args(1)) //4.关闭资源
sc.stop()
}
}

(2)pom.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<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.0</modelVersion> <groupId>com.demo.spark</groupId>
<artifactId>SparkWC</artifactId>
<version>1.0-SNAPSHOT</version> <properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<scala.version>2.11.8</scala.version>
<spark.version>2.2.0</spark.version>
<hadoop.version>2.8.4</hadoop.version>
<encoding>UTF-8</encoding>
</properties> <dependencies>
<!-- scala的依赖导入 -->
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>${scala.version}</version>
</dependency> <!-- spark的依赖导入 -->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>${spark.version}</version>
</dependency> <!-- hadoop-client API的导入 -->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>${hadoop.version}</version>
</dependency> </dependencies> <build>
<pluginManagement>
<plugins>
<!-- scala的编译插件 -->
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>scala-maven-plugin</artifactId>
<version>3.2.2</version>
</plugin>
<!-- ava的编译插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>scala-maven-plugin</artifactId>
<executions>
<execution>
<id>scala-compile-first</id>
<phase>process-resources</phase>
<goals>
<goal>add-source</goal>
<goal>compile</goal>
</goals>
</execution>
<execution>
<id>scala-test-compile</id>
<phase>process-test-resources</phase>
<goals>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin> <!-- 打jar包插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build> </project>

(3)配置类的运行参数

(4)输入的文件words.txt

hello    world
hello spark
hello China
hello Beijing
hello world

(5)输出文件part-00000

(hello,5)
(world,2)

(6)输出文件part-00001

(Beijing,1)
(spark,1)
(China,1)

4、SparkSubmit提交任务

(1)将上一步的工程打成jar包

(2)把SparkWC-1.0-SNAPSHOT.jar放在spark-01机器的/root下

(3)执行以下命令

    cd /root/sk/spark-2.2.0-bin-hadoop2.7/

    bin/spark-submit --master spark://spark-01:7077 --class SparkWordCount /root/SparkWC-1.0-SNAPSHOT.jar
hdfs://192.168.146.111:9000/words.txt hdfs://192.168.146.111:9000/sparkwc/out

(4)hdfs中words.txt文件内容如下:

hello    world
hello China
hello Beijing
haha heihei

(5)输出结果

[root@bigdata111 ~]# hdfs dfs -ls /sparkwc/out
Found 3 items
-rw-r--r-- 3 root supergroup 0 2019-01-10 21:43 /sparkwc/out/_SUCCESS
-rw-r--r-- 3 root supergroup 10 2019-01-10 21:43 /sparkwc/out/part-00000
-rw-r--r-- 3 root supergroup 52 2019-01-10 21:43 /sparkwc/out/part-00001
[root@bigdata111 ~]# hdfs dfs -cat /sparkwc/out/part-00000
(hello,3)
[root@bigdata111 ~]# hdfs dfs -cat /sparkwc/out/part-00001
(haha,1)
(heihei,1)
(Beijing,1)
(world,1)
(China,1)

Spark集群安装和WordCount编写的更多相关文章

  1. 大数据技术之_19_Spark学习_01_Spark 基础解析 + Spark 概述 + Spark 集群安装 + 执行 Spark 程序

    第1章 Spark 概述1.1 什么是 Spark1.2 Spark 特点1.3 Spark 的用户和用途第2章 Spark 集群安装2.1 集群角色2.2 机器准备2.3 下载 Spark 安装包2 ...

  2. [bigdata] spark集群安装及测试

    在spark安装之前,应该已经安装了hadoop原生版或者cdh,因为spark基本要基于hdfs来进行计算. 1. 下载 spark:  http://mirrors.cnnic.cn/apache ...

  3. spark集群安装配置

    spark集群安装配置 一. Spark简介 Spark是一个通用的并行计算框架,由UCBerkeley的AMP实验室开发.Spark基于map reduce 算法模式实现的分布式计算,拥有Hadoo ...

  4. CentOS6安装各种大数据软件 第十章:Spark集群安装和部署

    相关文章链接 CentOS6安装各种大数据软件 第一章:各个软件版本介绍 CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令 CentOS6安装各种大数据软件 第三章:Linux基础 ...

  5. Spark入门:第2节 Spark集群安装:1 - 3;第3节 Spark HA高可用部署:1 - 2

    三. Spark集群安装 3.1 下载spark安装包 下载地址spark官网:http://spark.apache.org/downloads.html 这里我们使用 spark-2.1.3-bi ...

  6. 3 Spark 集群安装

    第3章 Spark集群安装 3.1 Spark安装地址 1.官网地址 http://spark.apache.org/ 2.文档查看地址 https://spark.apache.org/docs/2 ...

  7. Hadoop2.2集群安装配置-Spark集群安装部署

    配置安装Hadoop2.2.0 部署spark 1.0的流程 一.环境描写叙述 本实验在一台Windows7-64下安装Vmware.在Vmware里安装两虚拟机分别例如以下 主机名spark1(19 ...

  8. spark集群安装并集成到hadoop集群

    前言 最近在搞hadoop+spark+python,所以就搭建了一个本地的hadoop环境,基础环境搭建地址hadoop2.7.7 分布式集群安装与配置 本篇博客主要说明,如果搭建spark集群并集 ...

  9. Spark 个人实战系列(1)--Spark 集群安装

    前言: CDH4不带yarn和spark, 因此需要自己搭建spark集群. 这边简单描述spark集群的安装过程, 并讲述spark的standalone模式, 以及对相关的脚本进行简单的分析. s ...

随机推荐

  1. MindManager篇

    MindManager:新建脑图 MindManager:大纲视图(批阅文档结构) MindManager:导出为其他格式 MindManager:插入基本插入主题.备注,标记等) MindManag ...

  2. 关于C++中using namespace std

    原文链接:http://www.kuqin.com/language/20080107/3532.html <iostream>和<iostream.h>是不一样,前者没有后缀 ...

  3. 记js的一个奇葩问题!!!!!!!!!!!!

    <a id='gc-yl' onclick='Preview('" + imgPath + "')' style='margin-left:5px;' >预览</ ...

  4. js 使用事件委托

    想象一下,如果你有一个无序列表,里面有一堆<li>元素,每一个<li>元素都会在点击的时候触发一个行为.这个时候,你通常会在每一个元素上添加一个事件监听,但是如果当这个元素或者 ...

  5. fstrict-aliasing

    承如“optimization blocks”文中所述,由于相同的指针可能指向相关的内存区,因此编译器将不做过分的优化…… 特意搜了下编译器在不同的优化等级下都有哪些默认优化,因此有了此记录(比较长, ...

  6. Ubuntu 12.04.3 安装 Oracle11gR2

    #step 1:  groupadd  -g 2000 dba useradd   -g 2000 -m -s /bin/bash -u 2000 grid useradd   -g 2000 -m ...

  7. HBase 1.3(NOSQL) 发布,性能大幅提升

        Apache HBase 1.3.0版在2017年1月中旬正式发布了,新版本支持分层数据的压缩和多个方面的性能提升,像预写日志(WAL).一个新的RPC机制,等等.HBase 1.3.0一共修 ...

  8. 原生js获取元素样式

    摘要: 我们在开发过程中经常会遇到通过js获取或者改变DOM元素的样式,方法有很多,比如:通过更改DOM元素的class.现在我们讨论原生js来获取DOM元素的CSS样式,注意是获取不是设置 在开始之 ...

  9. MYSQL系列之(一)

      mysql简介 1.什么是数据库 ? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不 ...

  10. .net 防盗链

    Global.asax 文件中 protected void Application_BeginRequest(object sender, EventArgs e) { //判断当前请求是否是访问 ...