说明:前提安装好hadoop集群,可参考 http://blog.csdn.net/zhang123456456/article/details/77621487

一、 scala 安装

1、下载 scala 安装包 :https://d3kbcqa49mib13.cloudfront.net/spark-2.2.0-bin-hadoop2.7.tgz

2、上传 scala 安装包
[root@hadp-master local]# pwd
/usr/local
[root@hadp-master local]# ll scala-2.11.7.tgz
-rw-r--r--. 1 root root 28460530 Feb 25 03:53 scala-2.11.7.tgz

3、 解压并删除安装包
[root@hadp-master local]# tar -zxvf scala-2.11.7.tgz
[root@hadp-master local]# rm -rf scala-2.11.7.tgz

4、 配置环境变量
vi /etc/profile 添加如下

export SCALA_HOME=/usr/local/scala-2.11.7
export PATH=$PATH:$SCALA_HOME/bin

5、 生效,查看scala版本
[root@hadp-master local]# scala -version
Scala code runner version 2.11.7 -- Copyright 2002-2013, LAMP/EPFL

6、 其他主机配置scala环境

[root@hadp-master local]# scp -r /usr/local/scala-2.11.7/ hadp-node1:/usr/local/
[root@hadp-master local]# scp -r /usr/local/scala-2.11.7/ hadp-node2:/usr/local/
[root@hadp-master local]# scp -r /etc/profile hadp-node1:/etc/profile
profile 100% 2414 2.4KB/s 00:00
[root@hadp-master local]# scp -r /etc/profile hadp-node2:/etc/profile
profile 100% 2414 2.4KB/s 00:00

二、 spark 安装

1、 下载 spark 安装包,上传
[root@hadp-master local]# pwd
/usr/local
[root@hadp-master local]# ll spark-2.2.0-bin-hadoop2.7.tgz
-rw-r--r--. 1 root root 203728858 Feb 25 04:20 spark-2.2.0-bin-hadoop2.7.tgz

2、 解压
[root@hadp-master local]# tar -zxvf spark-2.2.0-bin-hadoop2.7.tgz

3、 配置环境变量
vi /etc/profile 添加如下内容
export SPARK_HOME=/usr/local/spark-2.2.0-bin-hadoop2.7
export PATH=$PATH:$SPARK_HOME/bin

4、配置Spark环境
[root@hadp-master local]# cd spark-2.2.0-bin-hadoop2.7/conf/
[root@hadp-master conf]# ll
total 32
-rw-r--r--. 1 500 500 996 Jul 1 2017 docker.properties.template
-rw-r--r--. 1 500 500 1105 Jul 1 2017 fairscheduler.xml.template
-rw-r--r--. 1 500 500 2025 Jul 1 2017 log4j.properties.template
-rw-r--r--. 1 500 500 7313 Jul 1 2017 metrics.properties.template
-rw-r--r--. 1 500 500 865 Jul 1 2017 slaves.template
-rw-r--r--. 1 500 500 1292 Jul 1 2017 spark-defaults.conf.template
-rwxr-xr-x. 1 500 500 3699 Jul 1 2017 spark-env.sh.template

4.1
[root@hadp-master conf]# cp spark-env.sh.template spark-env.sh
[root@hadp-master conf]# vi spark-env.sh 末尾添加如下:

export JAVA_HOME=/usr/local/jdk1.8.0_131

export SCALA_HOME=/usr/local/scala-2.11.7

export HADOOP_HOME=/usr/local/hadoop/hadoop-2.7.4/

export HADOOP_CONF_DIR=/usr/local/hadoop/hadoop-2.7.4/etc/hadoop

export SPARK_MASTER_IP=hadp-master

export SPARK_WORKER_MEMORY=1g

export SPARK_WORKER_CORES=2

export SPARK_WORKER_INSTANCES=1

变量说明
- JAVA_HOME:Java安装目录
- SCALA_HOME:Scala安装目录
- HADOOP_HOME:hadoop安装目录
- HADOOP_CONF_DIR:hadoop集群的配置文件的目录
- SPARK_MASTER_IP:spark集群的Master节点的ip地址
- SPARK_WORKER_MEMORY:每个worker节点能够最大分配给exectors的内存大小
- SPARK_WORKER_CORES:每个worker节点所占有的CPU核数目
- SPARK_WORKER_INSTANCES:每台机器上开启的worker节点的数目

4.2
[root@hadp-master conf]# cp slaves.template slaves
[root@hadp-master conf]# vi slaves 添加如下
# A Spark Worker will be started on each of the machines listed below.
hadp-node1
hadp-node2

4.3
[root@hadp-master local]# scp -r spark-2.2.0-bin-hadoop2.7/ hadp-node1:/usr/local
[root@hadp-master local]# scp -r spark-2.2.0-bin-hadoop2.7/ hadp-node2:/usr/local
[root@hadp-master local]# scp /etc/profile hadp-node1:/etc/
profile 100% 2492 2.4KB/s 00:00
[root@hadp-master local]# scp /etc/profile hadp-node2:/etc/
profile 100% 2492 2.4KB/s 00:00

5、启动Spark集群
5.1
因为我们只需要使用hadoop的HDFS文件系统,所以我们并不用把hadoop全部功能都启动。
[root@hadp-master sbin]# pwd
/usr/local/hadoop/hadoop-2.7.4/sbin
[root@hadp-master sbin]# ./start-dfs.sh
Starting namenodes on [hadp-master]
hadp-master: starting namenode, logging to /usr/local/hadoop/hadoop-2.7.4/logs/hadoop-root-namenode-hadp-master.out
hadp-node2: starting datanode, logging to /usr/local/hadoop/hadoop-2.7.4/logs/hadoop-root-datanode-hadp-node2.out
hadp-node1: starting datanode, logging to /usr/local/hadoop/hadoop-2.7.4/logs/hadoop-root-datanode-hadp-node1.out
Starting secondary namenodes [0.0.0.0]
0.0.0.0: starting secondarynamenode, logging to /usr/local/hadoop/hadoop-2.7.4/logs/hadoop-root-secondarynamenode-hadp-master.out
[root@hadp-master sbin]# jps
4914 NameNode
5235 Jps
5082 SecondaryNameNode

5.2
[root@hadp-master sbin]# pwd
/usr/local/spark-2.2.0-bin-hadoop2.7/sbin
[root@hadp-master sbin]# ./start-all.sh
starting org.apache.spark.deploy.master.Master, logging to /usr/local/spark-2.2.0-bin-hadoop2.7/logs/spark-root-org.apache.spark.deploy.master.Master-1-hadp-master.out
hadp-node1: starting org.apache.spark.deploy.worker.Worker, logging to /usr/local/spark-2.2.0-bin-hadoop2.7/logs/spark-root-org.apache.spark.deploy.worker.Worker-1-hadp-node1.out
hadp-node2: starting org.apache.spark.deploy.worker.Worker, logging to /usr/local/spark-2.2.0-bin-hadoop2.7/logs/spark-root-org.apache.spark.deploy.worker.Worker-1-hadp-node2.out
[root@hadp-master sbin]# jps
4914 NameNode
5301 Master
5369 Jps
5082 SecondaryNameNode

[root@hadp-node1 scala-2.11.7]# jps
4305 DataNode
4451 Worker
4500 Jps

[root@hadp-node2 ~]# jps
4444 Worker
4301 DataNode
4494 Jps

-- 进入Spark的WebUI界面
http://10.100.25.30:8080/

-- 进入 Spark-shell
[root@hadp-master sbin]# spark-shell
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/___/ .__/\_,_/_/ /_/\_\ version 2.2.0
/_/

Using Scala version 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_131)
Type in expressions to have them evaluated.
Type :help for more information.

scala>

文本文件中随意输入一些单词,用空格隔开,我们会编写Spark程序对该文件进行单词词频统计。
[root@hadp-master ~]# cat workCount.txt
andy leaf
andy taozi
andy leaf
andy hello

[root@hadp-master ~]# hadoop fs -put workCount.txt /tmp
[root@hadp-master ~]# hadoop fs -ls /tmp
Found 3 items
drwx------ - root supergroup 0 2018-02-01 05:48 /tmp/hadoop-yarn
drwx-wx-wx - root supergroup 0 2018-02-25 05:08 /tmp/hive
-rw-r--r-- 1 root supergroup 42 2018-02-25 06:05 /tmp/workCount.txt
[root@hadp-master ~]# hadoop fs -cat /tmp/workCount.txt
andy leaf
andy taozi
andy leaf
andy hello

词频统计

scala> val textFile = sc.textFile("hdfs://hadp-master:9000/tmp/workCount.txt")
scala> val wordCount = textFile.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey((a, b) => a + b)
scala> wordCount.collect()
res0: Array[(String, Int)] = Array((leaf,2), (andy,4), (hello,1), (taozi,1))

上面只给出了代码,省略了执行过程中返回的结果信息,因为返回信息很多。
下面简单解释一下上面的语句。
textFile包含了多行文本内容,textFile.flatMap(line => line.split(” “))会遍历textFile中的每行文本内容,当遍历到其中一行文本内容时,会把文本内容赋值给变量line,并执行Lamda表达式line => line.split(” “)。line => line.split(” “)是一个Lamda表达式,左边表示输入参数,右边表示函数里面执行的处理逻辑,这里执行line.split(” “),也就是针对line中的一行文本内容,采用空格作为分隔符进行单词切分,从一行文本切分得到很多个单词构成的单词集合。这样,对于textFile中的每行文本,都会使用Lamda表达式得到一个单词集合,最终,多行文本,就得到多个单词集合。textFile.flatMap()操作就把这多个单词集合“拍扁”得到一个大的单词集合。

然后,针对这个大的单词集合,执行map()操作,也就是map(word => (word, 1)),这个map操作会遍历这个集合中的每个单词,当遍历到其中一个单词时,就把当前这个单词赋值给变量word,并执行Lamda表达式word => (word, 1),这个Lamda表达式的含义是,word作为函数的输入参数,然后,执行函数处理逻辑,这里会执行(word, 1),也就是针对输入的word,构建得到一个tuple,形式为(word,1),key是word,value是1(表示该单词出现1次)。
程序执行到这里,已经得到一个RDD,这个RDD的每个元素是(key,value)形式的tuple。最后,针对这个RDD,执行reduceByKey((a, b) => a + b)操作,这个操作会把所有RDD元素按照key进行分组,然后使用给定的函数(这里就是Lamda表达式:(a, b) => a + b),对具有相同的key的多个value进行reduce操作,返回reduce后的(key,value),比如(“hadoop”,1)和(“hadoop”,1),具有相同的key,进行reduce以后就得到(“hadoop”,2),这样就计算得到了这个单词的词频。

spark之 spark 2.2.0 Standalone安装、wordCount演示的更多相关文章

  1. CentOS 7.0下面安装并配置Spark

    安装环境: 虚拟机:VMware® Workstation 8.0.1(网络桥接) OS:CentOS 7 JDK版本:jdk-7u79-linux-x64.tar Scala版本:scala-2.1 ...

  2. Spark standalone安装(最小化集群部署)

    Spark standalone安装-最小化集群部署(Spark官方建议使用Standalone模式)        集群规划:    主机        IP                    ...

  3. Spark-1.0.0 standalone分布式安装教程

    Spark目前支持多种分布式部署方式:一.Standalone Deploy Mode:二Amazon EC2.:三.Apache Mesos:四.Hadoop YARN.第一种方式是单独部署,不需要 ...

  4. 大数据技术之_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 ...

  5. 大规模数据分析统一引擎Spark最新版本3.3.0入门实战

    @ 目录 概述 定义 Hadoop与Spark的关系与区别 特点与关键特性 组件 集群概述 集群术语 部署 概述 环境准备 Local模式 Standalone部署 Standalone模式 配置历史 ...

  6. Apache Spark源码走读之7 -- Standalone部署方式分析

    欢迎转载,转载请注明出处,徽沪一郎. 楔子 在Spark源码走读系列之2中曾经提到Spark能以Standalone的方式来运行cluster,但没有对Application的提交与具体运行流程做详细 ...

  7. Spark简介及其在ubuntu下的安装使用

    转:http://blog.csdn.net/pelick/article/details/9888311 Spark概述 Spark是一种与 Hadoop 相似的开源集群计算环境,在性能和迭代计算上 ...

  8. spark学习7(spark2.0集群搭建)

    第一步:安装spark 将官网下载好的spark-2.0.0-bin-hadoop2.6.tgz上传到/usr/spark目录下.这里需注意的是spark和hadoop有对应版本关系 [root@sp ...

  9. 理解Spark运行模式(三)(STANDALONE和Local)

    前两篇介绍了Spark的yarn client和yarn cluster模式,本篇继续介绍Spark的STANDALONE模式和Local模式. 下面具体还是用计算PI的程序来说明,examples中 ...

随机推荐

  1. hibernate中删除表遇到主键被外键引用违反完整约束条件不能删除的问题

    MySQL在InnoDB中设置了foreign key关联,造成无法更新或删除数据.可以通过设置FOREIGN_KEY_CHECKS变量来避免这种情况.  SET FOREIGN_KEY_CHECKS ...

  2. 56. Merge Intervals 57. Insert Interval *HARD*

    1. Merge Given a collection of intervals, merge all overlapping intervals. For example,Given [1,3],[ ...

  3. iOS-UI篇—简单的浏览器查看程序和Tomcat简单实现

    #import "ViewController.h" @interface ViewController () @property (retain, nonatomic) NSAr ...

  4. web安全问题分析及处理

    前言 这是我观看了<前端漏洞分析及处理-蔡慧芨>公开课之后的一个总结及简单实践体会.在可能的情况下我会把他们都实际操作一遍,更加深刻地体会前端安全的重要性. web安全问题有哪些 XSS- ...

  5. laravel更新时区:

    config/app.php 'timezon'='UTC'  或 'timezone'='Asia/Shanghai'

  6. jsp el函数库

    EL函数库介绍 由于在JSP页面中显示数据时,经常需要对显示的字符串进行处理,所以SUN公司针对一些常见的处理定义了一套EL函数库供开发者使用. 这些EL函数在JSTL开发包中进行描述,因此在JSP页 ...

  7. 基于高通 qca4531 mp3 demo板 双系统引导设计

    为了系统和稳定性,flash上有两套系统.在uboot引导阶段会根据当前的bootslot变量,决择运行哪套系统.进入系统之后,会自动挂载数据区,然后启动开关的应用程序. 如上图所示系统有两块存储芯片 ...

  8. React教程-组件

    在React中创建一个组件非常简单(React组件有2种,一个非状态组件,一个有状态组件) 首先我们来看看ES6里面如何写构造函数 class App{ constructor(){ } event( ...

  9. 一、WCF学习之旅-创建第一个服务

    WCF基本介绍:http://baike.baidu.com/link?url=TGjLYt3HS4dt4-hIiGRknLy6udRsZ52QxJz9cmRKlR4NXbP9rCZDsKn2fDfG ...

  10. MyEclipse WebSphere开发教程:安装和更新WebSphere 6.1, JAX-WS, EJB 3.0(六)

    [周年庆]MyEclipse个人授权 折扣低至冰点!立即开抢>> [MyEclipse最新版下载] MyEclipse支持Java EE技术(如JAX-WS和EJB 3.0),它们以功能包 ...