Spark入门到精通(入门)——第一节:Spark简介和安装(已重写)

版权声明:所有内容原创,如需转载,请声明 https://blog.csdn.net/lovedopa/article/details/82939152

一  本章内容介绍:

本章内容介绍spark的概念及安装

1.1  为什么要用spark

V1.0时代 MapReduce

过去五年里,许多企业已慢慢开始接受Hadoop生态系统,将它用作其大数据分析堆栈的核心组件。尽管Hadoop生态系统的MapReduce组件是一个强大的典范,MapReduce自身并不是连接存储在Hadoop生态系统中的数据的最优秀工具。

V2.0 Hive

Hadoop上的SQL支持一开始是Apache Hive,一种类似于SQL的查询引擎,它将有限的SQL方言编译到MapReduce中。Hive对MapReduce的完全依赖会导致查询的很大延迟,其主要适用场景是批处理模式,而且Hive并不完全支持标准SQL

V3.0

开源社区使用Apache Drill来提供延迟时间更短的交互性查询功能。最新的开源产品是SparkSQL,它支持使用SQL查询Spark中的结构化数据。

当然,还有目前比较强大的工具如麒麟和flink,impala等查询工具等。

1.2  到底什么是spark

spark是一个实现快速通用的集群计算平台。它是由加州大学伯克利分校AMP实验室 开发的通用内存并行计算框架,用来构建大型的、低延迟的数据分析应用程序。它扩展了广泛使用的MapReduce计算

模型。高效的支撑更多计算模式,包括交互式查询和流处理。spark的一个主要特点是能够在内存中进行计算,依赖磁盘进行复杂的运算,Spark依然比MapReduce更加高效。

1.3 spark架构简介

Spark组成(BDAS):全称伯克利数据分析栈,通过大规模集成算法、机器、人之间展现大数据应用的一个平台。也是处理大数据、云计算、通信的技术解决方案。

它的主要组件如图所示:

Spark Core:

包含Spark的基本功能;尤其是定义RDD的API、操作以及这两者上的动作。其他Spark的库都是构建在RDD和Spark Core之上的


Spark SQL:

提供通过Apache Hive的SQL变体Hive查询语言(HiveQL)与Spark进行交互的API。每个数据库表被当做一个RDD,Spark SQL查询被转换为Spark操作。


Spark Streaming:

对实时数据流进行处理和控制。Spark Streaming允许程序能够像普通RDD一样处理实时数据


MLlib:

一个常用机器学习算法库,算法被实现为对RDD的Spark操作。这个库包含可扩展的学习算法,比如分类、回归等需要对大量数据集进行迭代的操作。


GraphX:

控制图、并行图操作和计算的一组算法和工具的集合。GraphX扩展了RDD API,包含控制图、创建子图、访问路径上所有顶点的操作

4  spark的优势

Spark优势
   1  打造全栈多计算凡是的高效数据流水线
        支持MR, SQL查询, 流式计算, 机器学习和图算法, 用户可以在一个工作流无缝搭配这些计算范式
   2  轻量级快速处理
        Scala简化了代码
        利用了第三方组件
        基于内存计算,减少了磁盘IO
  3 易于使用,支持多语言
        支持Scala,Java,Python
        自带80多个算子
   4 ExternalDataSource多数据支持
   5 社区活跃度高

 

二  安装spark 集群

2.1  spark运行模式简介

  • Spark的运行模式多种多样,灵活多变,部署在单机上时,既可以用本地模式运行,也可以用伪分布模式运行,而当以分布式集群的方式部署时,也有众多的运行模式可供选择,这取决于集群的实际情况,底层的资源调度即可以依赖外部资源调度框架,也可以使用Spark内建的Standalone模式。

具体来说:对于外部资源调度框架的支持,目前的实现包括相对稳定的Mesos模式,以及hadoop YARN模式
本地模式:常用于本地开发测试,本地还分别 local 和 local cluster

standalone: 独立集群运行模式

 Mesos:Spark可以运行在Mesos里面(Mesos 类似于yarn的一个资源调度框架)

YARN:Spark可以运行在yarn上面

2.2  安装jdk

2.2.1 卸载原有jdk

(1)查询是否安装java软件:

[root@hadoop101 opt]# rpm -qa|grep java

(2)如果安装的版本低于1.7,卸载该jdk:

[root@hadoop101 opt]# rpm -e 软件包

2.2.2 下载jdk并且安装

(1)下载 
登录Oracle官网http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html,同意协议条款,选择64位Linux版tar包链接,可以直接单击链接下载,推荐通过多线程下载工具(比如迅雷)加速下载。 

2)用SecureCRT工具将jdk、Hadoop-2.7.2.tar.gz导入到opt目录下面的software文件夹下面

3)在linux系统下的opt目录中查看软件包是否导入成功。

[root@hadoop101opt]# cd software/

[root@hadoop101software]# ls

hadoop-2.7.2.tar.gz  jdk-8u144-linux-x64.tar.gz

4)解压jdk到/opt/module目录下

       [root@hadoop101software]# tar -zxvf jdk-8u144-linux-x64.tar.gz -C /opt/module/

5)配置jdk环境变量

       (1)先获取jdk路径:

[root@hadoop101 jdk1.8.0_144]# pwd

/opt/module/jdk1.8.0_144

       (2)打开/etc/profile文件:

[root@hadoop101 jdk1.8.0_144]# vi /etc/profile

              在profie文件末尾添加jdk路径:

 ##JAVA_HOME

export JAVA_HOME=/opt/module/jdk1.8.0_144

export PATH=$PATH:$JAVA_HOME/bin

       (3)保存后退出:

:wq!

       (4)让修改后的文件生效:

[root@hadoop101 jdk1.8.0_144]# source /etc/profile

       (5)重启(如果java -version可以用就不用重启):   

[root@hadoop101 jdk1.8.0_144]# sync

              [root@hadoop101 jdk1.8.0_144]# reboot

6)测试jdk安装成功

[root@hadoop101 jdk1.8.0_144]# java -version

java version "1.8.0_144"

2.3 下载spark安装包

(1)登录Spark官网
http://spark.apache.org/downloads.html
(2)第1个选择spark发行版(选择2.2.0版),第2个选择软件包类型(选择Hadoop 2.7),第3个选择下载类型(直接下载较慢,选择Select Apache Mirror)
这里写图片描述
(3)单击spark-2.2.0-bin-hadoop2.7.tgz链接,选择国内镜像
这里写图片描述 其他方式,也可以

把下载好的文件上传到opt目录下,解压到

(4)然后解压缩/opt目录。我们约定Linux平台下第三方软件包都放到/opt目录下。

[root@master ~]# tar -zxvf spark-2.2.0-bin-hadoop2.7.tgz -C /opt

2.4  安装spark-standalone模式

将slaves.template复制为slaves
将spark-env.sh.template复制为spark-env.sh
配置Spark【Standalone】
Spark的部署模式有Local、Standalone、Yarn、Mesos,我们选择最具代表的standalone模式
修改spark-env.sh文件,添加如下配置:
 export JAVA_HOME=/opt/module/jdk1.8.0_144
export SPARK_MASTER_IP=linux102
export SPARK_MASTER_PORT=7077

重命名并修改slaves.template文件
mv slaves.template slaves
vi slaves
在该文件中添加子节点所在的位置(Worker节点)
linux102
linux103
linux104
保存退出


将配置好的Spark文件分发到其他节点上
Spark集群配置完毕,目前是1个Master,2个Work,master01上启动Spark集群
/opt/module/spark/sbin/start-all.sh
 
启动后执行jps命令,主节点上有Master进程,其他子节点上有Work进行,登录Spark管理界面查看集群状态(主节点):http://master01:8080/

注意:如果遇到 “JAVA_HOME not set” 异常,可以在sbin目录下的spark-config.sh 文件中加入如下配置:
export JAVA_HOME=XXXX

2.4.1 Spark集群配置完毕,目前是1个Master,2个Work,在linux102上启动Spark集群

启动后执行jps命令,主节点上有Master进程,其他子节点上有Work进行,登录Spark管理界面查看集群状态(主节点):http://linux102:8080/

2.5  搭建HA

1 spark HA配置 :


 master=linux101,linux102,  works = linux103,linux104

Spark集群安装完毕,但是有一个很大的问题,那就是Master节点存在单点故障,要解决此问题,就要借助zookeeper,并且启动至少两个Master节点来实现高可靠,配置方式比较简单:

安装配置zk集群,并启动zk集群(之前博客文档有详解,自行查看并配置 ,不解释)

我们将zk集群安装在了 linux102,linux103,linux104 上面

2 修改配置文件

停止spark所有服务,在linux102上修改配置文件spark-env.sh,在该配置文件中删掉SPARK_MASTER_IP并添加如下配置

export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=linux102:2181,linux103:2181,linux104:2181 -Dspark.deploy.zookeeper.dir=/spark"

最终效果大概如图所示

之后使用xsync脚本进行复制,使用xsync脚本请参考

Ssh免密码登陆和集群分发脚本

或者用scp也可以

scp -r conf/ linux102:/usr/app/spark-xxx-hadoopx.x/conf
             
scp -r conf/ linux103:/usr/app/spark-xxx-hadoopx.x/conf
             
scp -r conf/ linux104:/usr/app/spark-xxx-hadoopx.x/conf

3 测试集群情况
             

Spark集群配置完毕,目前是1个Master,3个Work,在linux102上启动Spark集群
/opt/module/spark/sbin/start-all.sh

然后在linux101上执行sbin/start-master.sh启动第二个Master

启动后执行jps命令,主节点上有Master进程,其他子节点上有Work进行,登录Spark管理界面查看集群状态(主节点):http://linux102:8080/ 主master alive(你在那个主机启动star-all.sh命令,那么该主机即为master(alive)

http://linux102:8080/ 辅master standby

整完后自己可以测一下spark ha集群的高可用性,手动kill -9 master(主)进程号, 看看过一会另一台standby master是否会自动转变为 alive master 

如果大家只开了3台虚拟机,那么可以把linux101的主节点替换到linux103,大家理解原理即可。

2.6  spark-yarn模式

spark的提交模式一共有三种,分别是:standalone,yarn-cluster模式还有yarn-client模式

第一种,standalone模式的搭建前面已经介绍过了。

第二种,是基于YARN的yarn-cluster模式。
第三种,是基于YARN的yarn-client模式。
要切换到第二种和第三种模式,很简单,将我们之前用于提交spark应用程序的spark-submit脚本,加上--master参数,设置为yarn-cluster,或yarn-client,即可。如果你没设置,那么,就是standalone模式。

配置方法:

<configuration>
<!-- Site specific YARN configuration properties -->
    <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>master01</value>
    </property>
    <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
    </property>
    <!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是true -->
    <property>
            <name>yarn.nodemanager.pmem-check-enabled</name>
            <value>false</value>
    </property>
    <!--是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true -->
    <property>
            <name>yarn.nodemanager.vmem-check-enabled</name>
            <value>false</value>
    </property>
</configuration>

修改Spark-env.sh 添加:

Spark能够发现Hadoop配置文件

HADOOP_CONF_DIR=/home/bigdata/hadoop/hadoop-2.7.3/etc/hadoop

YARN_CONF_DIR=/home/bigdata/hadoop/hadoop-2.7.3/etc/hadoop

之后启动jobHistoryServer

如果有问题,参考

https://blog.csdn.net/chengyuqiang/article/details/77864246

猜你喜欢

转载自blog.csdn.net/lovedopa/article/details/82939152