您的位置:首页 > 其它

Spark的StandAlone模式环境搭建

2017-02-14 09:46 267 查看

1.简介

Spark是一个类似于MapReduce的分布式计算框架,其核心是弹性分布式数据集,提供了比MapReduce更丰富的模型,可以在快速在内存中对数据集进行多次迭代,以支持复杂的数据挖掘算法和图形计算算法。 Spark Streaming是一种构建在Spark上的实时计算框架,它扩展了Spark处理大规模流式数据的能力。

初步学习以后,SparkStreaming还是比较容易上手的,使用Spark Streaming的重心在数据流的处理上,接收数据流的工作,Spark Streaming都已经封装好了。Spark Streaming的基本原理是将输入数据流以时间片(秒级)为单位进行拆分,然后以类似批处理的方式处理每个时间片数据,其基本原理如图所示。

首先,SparkStreaming把实时输入数据流以时间片Δt (如1秒)为单位切分成块。Spark Streaming会把每块数据作为一个RDD,并使用RDD操作处理每一小块数据。每个块都会生成一个Spark Job处理,最终结果也返回多块。

Spark Streaming可以接收多种来源的数据,然后将数据存储到多种介质上。

2.简单使用

使用Spark Streaming,可以运行在yarn上,即运行在Sparkon Yarn模式上,也可以运行在原生Hadoop环境上。Spark On Yarn环境通常是使用CDH集成环境,网络上有很多搭建环境的教程,但搭建CDH需要的主机资源较多,在学习阶段,可以运行在原生Hadoop环境上,本教程讲述的是在Spark的StandAlone模式下运行的方法。下面一步步介绍一下环境的搭建过程。

2.1所需物品

两台Centos7服务器

Jdk 安装包

Scala  rpm安装包

Spark  压缩包

2.2配置方法

2.2.1 安装JDK

首先检查系统的jdk信息,centos中默认安装了openjdk:

rpm -qa | grep java

然后根据查询结果将openjdk删除:

卸载OpenJDK,执行以下操作:

[root@localhost ~]# rpm -e --nodepstzdata-java-2014i-1.el7.noarch

[root@localhost ~]# rpm -e --nodepsjava-1.7.0-openjdk-headless-1.7.0.71-2.5.3.1.el7_0.x86_64

[root@localhost ~]# rpm -e --nodepsjava-1.7.0-openjdk-1.7.0.71-2.5.3.1.el7_0.x86_64

删除的文件名根据查询结果进行相应的修改。

执行rpm安装指令安装JDK安装包:

rpm -ivh jdk安装包名.rpm

JDK默认安装在/usr/java中,安装完成后执行java,javac,java–version等指令,显示相应的信息即为安装成功。

 

安装完成以后,配置jdk的环境变量

vim  /etc/profile

exportJAVA_HOME=/usr/java/jdk1.8.0_67-cloudera/                       

exportPATH=.:$JAVA_HOME/bin:/root/nodejs/bin:$PATH

exportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

source /etc/profile

如果需要加代理,也可以在此文件中配置代理:

 

http_proxy=http://用户名:密码@代理地址:端口/

no_proxy=*10.*,*.h3c.*

export http_proxy no_proxy

 

2.2.2 配置SSH(可选)

配置过程中,会在多个服务器之间进行通信,为了减少输入代码的次数,简化操作,可以配置SSH:

# ssh-keygen -t rsa -P '' -f~/.ssh/id_rsa  //首先生成一对私钥和公钥

# ssh-copy-id <ip地址>  //(ip地址是你具体要和谁免key,自己也要和自己设置免key)

 

2.2.3 Scala安装

    Scala直接使用rpm安装指令安装即可:

rpm -ivh rpm  Scala安装包名称

安装完成之后,输入:

scala –version

能够显示scala的版本信息即为安装成功。

 

2.2.4 Hadoop配置

2.2.5 Spark配置

将Spark压缩包放到/opt目录下,执行解压缩指令解压

tar -xzvf 文件名.tar.gz

解压后进入其中的conf目录,复制下面的slaves.template,更名为slaves,然后复制spark-env.sh.template,更名为spark-env.sh:

cp slaves.template slaves

cp spark-env.sh.templatespark-env.sh

如下图:

     slaves是用来配置节点信息的,在此文件中输入节点的地址。我的两台节点主机IP是10.12.197.58和10.12.197.73,将IP地址写入文件:

除了写入IP,也可以写入Hostname,主机的hostname可以通过在任意位置输入hostname指令查看。如果写入的是hostname,还需要在配置host:

vim /etc/hosts

然后在文件中加入hostname和对应的ip地址:

然后在/etc/sysconfig/network修改hostname:
vim  /etc/sysconfig/network

spark-env.sh用来配置spark的相关信息,如Master,Memory等,此处我只配置Master,其他的默认:

SPARK_MASTER_HOST=10.12.197.58

还可以配置一些其他参数,这里给一些简单的例子:

export JAVA_HOME=/usr/java/jdk1.7.0_67-cloudera/   

export SPARK_MASTER_IP=127.0.0.1   (指定主节点)

exportSPARK_WORKER_CORES=6      (配置worker节点的cpu核数)

exportSPARK_WORKER_INSTANCES=2    (启动多少个worker,一台从节点机器可以有多个WORKER,一个worker启动一个JVM)

exportSPARK_WORKER_MEMORY=10g    (每个worker占多少内存)

export SPARK_MASTER_PORT=7076 (spark URL端口,如spark://crxy172:7076)

exportSPARK_JAVA_OPTS="-verbose:gc -XX:-PrintGCDetails-XX:+PrintGCTimeStamps” 
(用来设置GC参数)

注意:SPARK_WORKER_CORES *SPARK_WORKER_INSTANCES=
每台机器总cores

 

到此,基本配置就完成了,写完程序打包后,执行以下指令提交任务给spark:

    ./bin/spark-submit –class 类名  xxx.jar 参数(多个参数空格隔开)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: