相关文章链接

CentOS6安装各种大数据软件 第一章:各个软件版本介绍

CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令

CentOS6安装各种大数据软件 第三章:Linux基础软件的安装

CentOS6安装各种大数据软件 第四章:Hadoop分布式集群配置

CentOS6安装各种大数据软件 第五章:Kafka集群的配置

CentOS6安装各种大数据软件 第六章:HBase分布式集群的配置

CentOS6安装各种大数据软件 第七章:Flume安装与配置

CentOS6安装各种大数据软件 第八章:Hive安装和配置

CentOS6安装各种大数据软件 第九章:Hue大数据可视化工具安装和配置

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

1. Spark安装包的下载

下载Spark安装包地址:http://spark.apache.org/downloads.html

:本次学习过程中我们选用比较新的spark版本spark2.2.0

上述方式获取Spark安装包的方式是使用官方编译好的安装包来进行安装的.官方一般只提供有限的几个匹配hadoop版本的编译包.所以,如果将来你需要特意匹配你自己的hadoop版本,这个时候就需要你自己去编译spark源码。一般情况下不建议自己编译源码,使用官方提供的即可。

2. Spark集群安装和部署

2.1. 上传安装包并进行解压

#解压安装包
tar -zxvf spark-2.2.0-bin-hadoop2.7.tgz -C /export/servers/
#对解压后的文件夹进行重命名
mv spark-2.2.0-bin-hadoop2.7/ spark-2.2.0

2.2. 修改spark-env.sh

在/export/servers/spark-2.2.0/conf配置文件目录下进行配置文件的修改

# 步骤一:将spark-env.sh.template这个文件重新命名为spark-env.sh
mv spark-env.sh.template spark-env.sh # 步骤二:修改spark-env.sh这个配置文件,新增如下配置内容即可:
#设置JAVA_HOME目录
export JAVA_HOME=/export/servers/jdk1.8.0_144
#设置SCALA_HOME目录
export SCALA_HOME=/export/servers/scala-2.11.8
#设置SPARK主机的地址
export SPARK_MASTER_HOST=node01.ouyang.com
#设置SPARK主机的端口地址
export SPARK_MASTER_PORT=7077
#设置worker节点的内存大小
export SPARK_WORKER_MEMORY=1g
#设置HDFS文件系统的配置文件的位置
export HADOOP_CONF_DIR=/export/servers/hadoop-2.7.4/etc/hadoop

2.3. 修改slaves配置文件

# 步骤一:将slaves.template这个文件重新命名为slaves:
mv slaves.template slaves # 步骤二:修改slaves配置文件中的内容,在里面添加worker节点的地址
# 配置从节点的地址
spark-node02.ouyang.com
spark-node03.ouyang.com

2.4. 配置Spark环境变量

打开/etc/profile,在该文件中添加如下内容:

#配置Spark环境变量
export SPARK_HOME=/opt/modules/spark-2.2.0
export PATH=$SPARK_HOME/bin:$PATH
export SPARK_HOME PATH

2.5. 将spark安装目录发送到其他服务器

使用scp命令,将spark的安装目录拷贝只远程其他节点

#拷贝spark安装目录道node02机器上
scp -r spark-2.2.0/ spark-node02.ouyang.com:$PWD
#拷贝spark安装目录到node03机器上
scp -r spark-2.2.0/ spark-node03. ouyang.com:$PWD
#拷贝/etc/profile至node02机器上
scp /etc/profile spark-node02. ouyang.com:/etc/
#拷贝/etc/profile至node03机器上
scp /etc/profile spark-node03. ouyang.com:/etc/

:在每一台机器上使用source /etc/profile 让配置生效

2.6. Spark启动和停止

启动spark命令:在spark的跟目录下,执行如下命令

./sbin/start-all.sh

停止spark命令:

./sbin/stop-all.sh

2.7. 验证Spark集群是否启动成功

2.7.1. 使用jps命令查看进程

在各个节点使用jps命令进行查看,如果在节点1有master进程,在节点2和节点3上有worker进程,说明Spark集群启动成功。

2.7.2. 访问Spark集群的WEB UI界面,查看各个节点状态

访问地址:http://node01.ouyang.com:8080/#/login

界面如下:

2.7.3. 使用spark-shell测试spark集群是否启动成功

在任意一个节点上的Spark安装目录执行如下命令: ./bin/spark-shell

启动成功之后,界面如下:

2.8. Spark的注意事项

如果spark-env.sh配置文件中配置了SPARK_HADOOP_CONF这个配置选项,在使用spark-shell进行验证spark集群是否启动成功的时候,需要提前开启HDFS文件系统

3. Spark的高可用部署

3.1. Spark架构原理图

3.2. 高可用部署方案说明

Spark Standalone集群是Mater-Slaves架构的集群模式,和大部分的Master-Slaves 结构集群一样,存在着 Master 单点故障的问题。如何解决这个单点故障的问题,Spark 提供了两种方案:

第一种:基于文件系统的单点恢复;

第二种:基于zookeeper的Standby Master(Standby Masters with Zookeeper)

我们一般使用第二种方案,Spark HA高可用集群部署使用起来很简单,首先需要搭建一个Zookeeper集群,然后启动Zookeeper集群,最后在不同的节点上启动Master即可。

3.3. 修改spark-env.sh配置文件

在spark-env.sh配置文件中,注释掉单点主机Master地址,然后添加Spark HA高可用部署的地址

#设置SPARK主机的地址 注释掉此项
#export SPARK_MASTER_HOST=spark-node01.ouyang.com
#添加Spark高可用HA部署
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=spark-node01.ouyang.com:2181,spark-node02.ouyang.com:2181,spark-node03.ouyang.com:2181 -Dspark.deploy.zookeeper.dir=/spark"

参数说明:

  • spark.deploy.recoveryMode:恢复模式(Master重新启动的模式),主要有三种:1) zookeeper 2) FileSystem 3) NONE
  • spark.deploy.zookeeper.url:zookeeper的Server地址
  • spark.deploy.zookeeper.dir:保存Spark集群元数据的文件,目录.包括Worker,Driver和Application

3.4. 将配置文件发送至远程节点

在节点的spark安装目录下的conf目录执行如下命令

#将spark-env.sh拷贝至节点02机器上
scp spark-env.sh spark-node02.ouyang.com:$PWD
#将spark-env.sh拷贝至节点03机器上
scp spark-env.sh spark-node03.ouyang.com:$PWD

3.5. 验证Spark HA高可用

在普通模式下启动spark集群,只需要在主机上面执行start-all.sh就可以了.在高可用模式下启动Spark集群,首先需要在任意一台节点上启动start-all.sh命令.然后在另外一台节点上单独启动master.命令start-master.sh在节点一执行命令如下:

./sbin/start-all.sh

在节点二执行命令如下:

./sbin/start-master.sh

访问节点一和节点二的WEB UI界面:http://node01.ouyang.com:8080

会发现节点一的master是alive状态,节点二是standby状态。

此时手动杀死节点一的master,过1~2分钟,会发现节点二的master会变成aliver状态,节点一会显示不能连接。

4. Spark高可用一键启动脚本

# 启动脚本
ssh node01.ouyang.com "source /etc/profile;nohup sh ${SPARK_HOME}/sbin/start-all.sh >/dev/null 2>&1 &"
sleep 3
ssh node02.ouyang.com "source /etc/profile;nohup sh ${SPARK_HOME}/sbin/start-master.sh >/dev/null 2>&1 &"
# 停止脚本
ssh node01.ouyang.com "source /etc/profile;nohup sh ${SPARK_HOME}/sbin/stop-all.sh >/dev/null 2>&1 &"
ssh node02.ouyang.com "source /etc/profile;nohup sh ${SPARK_HOME}/sbin/stop-master.sh >/dev/null 2>&1 &"

5. Spark集群的运行模式

5.1. spark几种运行模式介绍

  • local(在开发环境中,进行快速测试的)
  • Standalone(在生成环境中,如果没有使用yarn,就用这个)
  • Yarn(生产环境中经常使用)
  • Mesos(很少用)

5.2. Spark Standalone运行模式配置及测试

5.2.1. Spark Standalone运行模式的依赖应用

- 修改log4j.properties

- 安装Hadoop

- 安装Spark Standalone

5.2.2. 配置spark-env.sh文件中关于Standalone选项

5.2.3. Standalone模式启动

sbin/start-all.sh

5.3. spark集群运行

客户端运行:

./bin/spark-submit --class org.apache.spark.examples.SparkPi --deploy-mode client --master spark://spark-node04.ouyang.com:7077 --executor-memory 1G --total-executor-cores 2 examples/jars/spark-examples_2.11-2.2.0.jar 10

集群运行:

./bin/spark-submit --class org.apache.spark.examples.SparkPi --deploy-mode cluster --master spark://spark-node11.ouyang.com:7077 --executor-memory 1G --total-executor-cores 2 examples/jars/spark-examples_2.11-2.2.0.jar 10

在Yarn上运行:

./bin/spark-submit --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode cluster --executor-memory 6G --num-executors 4 examples/jars/spark-examples_2.11-2.2.0.jar 10

6. Spark SQL与hive集成(spark-shell)

6.1. 需要配置的项目

6.1.1. 拷贝hive的配置文件hive-site.xml到spark的conf目录,记得检查hive-site.xml中metastore的url的配置:  

#再spark的conf目录下的hive-site.xml文件中添加如下内容
<property>
  <name>hive.metastore.uris</name>
  <value>thrift://node01.ouyang.com:9083</value>
</property>
# 再将spark的conf目录下的该文件发送到其他的spark节点。
scp hive-site.xml node02.ouyang.com:$PWD

6.1.2. 拷贝hive中MySQL的jar包到spark的jars目录下:  

cp /export/servers/hive/lib/mysql-connector-java-5.1.37.jar /export/servers/spark-2.2.0/jars/
# 并将该jar包发送到其他的节点上:
scp mysql-connector-java-5.1.37.jar node02.ouyang.com:$PWD

6.1.3. 检查spark-env.sh文件中hadoop的配置项:

在spark的conf目录下的spark-evn.sh文件中是否有下述配置:

即要spark能访问hdfs集群。

6.2. 需要启动的服务

#启动mysql服务(hive依赖于hdfs和mysql,表的元数据存储在mysql中,具体数据存储在hdfs中)
service mysqld restart
#在hive的bin目录下启动hive的metastore服务(在spark的hive-site.xml添加的服务)
bin/hive --service metastore

6.3. 可以在hive中创建一张测试表

create table if not exists test(userid string,username string) row format delimited fields terminated by ' ' stored as textfile ;
--加载数据
load data local inpath '/opt/datas/student.txt' into table test;

6.4. 使用spark-shell操作hive中的表

#启动spar-shell服务(在spark的bin目录下,执行如下命令)
./spark-shell
#执行spark sql语句,对hive中的表进行查询
spark.sql("select * from student").show()

6.5. 将hive中的表通过spark sql导入的MySQL中

// 在spark-shell中,查询到hive表的数据,并将数据写入到一个DataFarme中
val df = spark.sql("select * from student")

// 将这个DateFarme的数据写入的MySQL中
df.write.format("jdbc").option("url", "jdbc:mysql://node01.ouyang.com:3306/test").option("dbtable", "test1").option("user", "root").option("password", "root").save()

将数据写入的MySQL的test数据库,并重新创建一个test1表来存储。

没有报错表示执行成功。

7. Spark SQL与Hive集成(spark sql)

7.1. spark-sql cli简介

7.2. 启动spark-sql

在spark的bin目录下,执行如下命令:
./spark-sql

7.3. 操作spark-sql

此时,可以跟操作MySQL数据库一样来操作hive中的表
#显示所有的表
show tables;
#显示所有的库
show databases;
#查询test
select * from test;

8. Spark SQL之ThriftServer和beeline使用

8.1. 概述

当对Spark SQL和Hive进行集成后,在spark的bin目录下启动spark sql服务,此时进行操作,虽然是直接使用sql语句,就可以通过spark sql操作hive中的数据,但会有很多的日志,此时可以启动一个服务,可以对数据进行友好显示。

参照官网:http://spark.apache.org/docs/2.2.0/sql-programming-guide.html#running-the-thrift-jdbcodbc-server

8.2. 启动thriftserver

在spark的sbin目录下执行如下命令:

./start-thriftserver.sh

启动之后可以通过访问4040端口查看到启动的spark job,如下图所示:

8.3. 连接beeline

在spark的bin目录下执行如下命令:

./beeline

连接上beeline后执行如下命令:

!connect jdbc:hive2://node01.ouyang.com:10000

输入hive的用户名和密码即可连接

9. Saprk SQL与HBase集成

#上传如下jar包到spark的jars目录下(所有spark的节点的该目录下都要上传):

此时,即可以在spark-sql中查询到hive中的数据存储在hbase中的表了。

CentOS6安装各种大数据软件 第十章:Spark集群安装和部署的更多相关文章

  1. CentOS6安装各种大数据软件 第七章:Flume安装与配置

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

  2. CentOS6安装各种大数据软件 第四章:Hadoop分布式集群配置

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

  3. CentOS6安装各种大数据软件 第九章:Hue大数据可视化工具安装和配置

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

  4. CentOS6安装各种大数据软件 第八章:Hive安装和配置

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

  5. CentOS6安装各种大数据软件 第六章:HBase分布式集群的配置

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

  6. CentOS6安装各种大数据软件 第五章:Kafka集群的配置

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

  7. CentOS6安装各种大数据软件 第一章:各个软件版本介绍

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

  8. CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令

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

  9. CentOS6安装各种大数据软件 第三章:Linux基础软件的安装

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

随机推荐

  1. C++多线程编程(教程+Demo)

    下载地址:C++多线程编程(教程+Demo) Win32 SDK函数支持进行多线程的程序设计,并提供了操作系统原理中的各种同步.互斥和临界区等操作.Visual C++ 6.0中,使用MFC类库也实现 ...

  2. seacms 6.45 命令执行漏洞分析

    前言 这是一个比较老的漏洞了,不过漏洞原理还是挺有意思的. 正文 漏洞位于 search.php 文件中. 首先包含了 common.php, 这个文件里面做了一些初始化工作,其中最重要的是对提交参数 ...

  3. JS 日期与时间戳相互转化

    1.日期格式转时间戳 function getTimestamp(time) { return Date.parse(new Date(time)); } 2.时间戳转日期格式 function tr ...

  4. 【转】OmniGraffle (一)从工具栏开始

    原文链接:http://www.jianshu.com/p/52f3ecbe8f2d OmniGraffle的软件布局和大多数图形类软件类似,中间是编辑区,左边是页面和对象组织的管理,右边是参数设置和 ...

  5. 记作为前端开发人员跑去面试C#.NET

    先谈结果,"秦总",与我面试讨论一个半小时,十分感动,然后拒绝了我. 本月17日16时许,收到邀请,于18日9时到司面试,虽如今仅深入前端领域,皆因曾有1年ASP.NET(C#)的 ...

  6. Python套接字

    1.客户端/服务器架构 什么是客户端/服务器架构?对于不同的人来说,它意味着不同的东西,这取决于你问谁以及描述的是软件还是硬件系统.在这两种情况中的任何一种下,前提都很简单:服务器就是一系列硬件或软件 ...

  7. springIOC学习笔记

    目录 目的 引用 xml方式 配置 配置实例 使用 底层简单模拟 全注解方式 基础 包扫描方式 配置 使用 config方式 配置 使用 spring整合junit 引用 示例 目的 让spring统 ...

  8. 适用于 Windows 的虚拟机扩展和功能

    Azure 虚拟机扩展是小型应用程序,可在Azure 虚拟机上提供部署后配置和自动化任务. 例如,如果虚拟机要求安装软件.防病毒保护或进行 Docker 配置,便可以使用 VM 扩展来完成这些任务. ...

  9. Layer的shadow属性

    Layer的shadow属性 Layer中的阴影都是可以做动画处理的. - (void)viewDidLoad { [super viewDidLoad]; CALayer *layer = [CAL ...

  10. [Swift] 使用Playground

    使用Playground 1. 新建Playground 2. 写最简单的代码