走进Spark生态圈:环境的安装与配置
什么是Spark?
Apache Spark 是一种大规模数据处理的快速通用引擎,使用基于内存的处理方式,较与MapReduce而言,解决了其shuffle多次IO操作带来的效率低问题,从而达到快速的大数据计算与分析
Spark的优缺点
优点
快:基于内存的处理方式
易用性:可以使用多种编程语言进行开发,例如:Scala,Java,Python
通用性:适用于不同的处理场景
1.交互式查询 => Spark SQL
2.流式计算 => Spark Streaming
3.图计算 => Spark GraphX
4.机器学习 => Spark MLlib
兼容性:可以运行在 Hadoop, Mesos, standalone,还可以访问各种数据源,包括HDFS,Cassandra, HBase, and S3
缺点
基于内存的方式,容易导致出现OOM(out of memory)异常(可以通过优化Spark或者使用Flink替代解决方案)
体系结构
Spark集群中包含三个重要的概念:Master,Worker,Executer
Master:掌管着整个集群的资源,负责资源的调度,和Hadoop Yarn很像,并接受客户端的请求,未其分配资源。
Worker:管理着节点的资源,具体的执行任务都是在Worker上面执行的,在默认情况下Worker会最大化的使用节点的资源,这样是导致OOM的根本原因。
Executer:运行在Worker上面,可以按照线程来理解。
环境准备
oracle linux 6 下载地址:http://pan.baidu.com/s/1i5EeRMP
vmware fusion 8 下载地址:http://pan.baidu.com/s/1gfaTma3
JDK 下载地址:http://pan.baidu.com/s/1bpi2W6j
Spark 下载地址:http://pan.baidu.com/s/1slulCTZ
运行在StandAlone下的伪分布集群
我们先创建一台名为“Spark81”的虚拟机
1.解压JDK
tar -xvf jdk-8u151-linux-x64.tar -C training/
2.添加环境变量 JAVA_HOME
vim ~/.bash_profile
在文件的末尾添加
JAVA_HOME=/root/training/jdk1.8.0_151
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH
然后执行如下命令,使配置生效
source ~/.bash_profile
配置成功后,运行java -version出现下图则代表配置Java环境变量成功

3.解压Spark安转包
tar -xvf spark-2.2.0-bin-hadoop2.7.tar -C training/
4.添加环境变量SPARK_HOME
vim ~/.bash_profile
在文件的末尾添加
SPARK_HOME=/root/training/spark-2.2.0-bin-hadoop2.7
export SPARK_HOME
PATH=$SPARK_HOME/bin:$SPARK_HOME/sbin:$PATH
export PATH
然后执行如下命令,使配置生效
source ~/.bash_profile
配置成功后,运行spark-shell出现下图则代表配置Spark环境变量成功并进入了Spark Shell模式

5.添加HOSTS
执行vim /etc/hosts在文件的末尾添加 192.168.0.81 spark81
--虚拟机设置的桥接模式,本机为0段IP
简单了解需要用到的spark的文件结构

bin:存放spark常用的命令,其中包含spark-shell(spark-shell命令模式),spark-submit(提交程序到spark上运行),pyspark(python写的程序需要用到的命令)等。
sbin:存放集群相关操作的命令,start-all.sh(启动集群),start-master.sh(启动master节点)等
examples:官方提供的示例
jars:spark依赖的jar包
logs:集群中产生的日志,很重要,出现莫名其妙的现象可以通过日志看到具体的信息
conf:主要存放配置文件
6.修改配置文件 conf/spark-env.sh,配置spark的运行环境
执行cp spark-env.sh.template spark-env.sh
编辑spark-env.sh,因为我们要在StandAlone模式上运行Spark,添加如下内容到文件末尾

如图蓝色字体部分已经说明需要配置的内容,其中必要参数为:
SPARK_MASTER_HOST 设置Master节点的地址
SPARK_MASTER_PORT 设置Master节点的端口号,一般为7077
其余配置均为可选内容,编辑文件的时候自然会看到,如图的可选的配置为限制Worker所要占用的资源
7.修改配置文件 conf/slaves.sh 配置spark的worker节点
执行cp slaves.sh.template slave.sh
编辑slave.sh,修改文本“localhost”为文本“spark81”
8.执行start-all.sh 如下图

从图中可以看到,启动日志已经被写到logs文件夹,执行jps

至此我们已经在spark81上运行了spark的伪分布式集群
9.可视化spark
在浏览器的地址栏输入:spark81:8080

运行在StandAlone下的全分布式集群
我们需要准备spark82,spark83,spark84,其中spark82作为Master节点,spark83和spark84为Worker节点
1.在hosts文件中添加
192.168.0.82 spakr82
192.168.0.83 spark83
192.168.0.84 spark84
2.拷贝training目录下JDK和Spark解压后的文件夹拷贝到spark82,spark83,spark84上,并配置如spark81的环境变量
scp -r jdk-8u151-linux-x64/ root@spark82:training
scp -r jdk-8u151-linux-x64/ root@spark83:training
scp -r jdk-8u151-linux-x64/ root@spark84:training
scp -r spark-2.2.0-bin-hadoop2.7/ root@spark82:training
scp -r spark-2.2.0-bin-hadoop2.7/ root@spark83:training
scp -r spark-2.2.0-bin-hadoop2.7/ root@spark84:training
这里也顺带将spark的配置拷贝了过来
3.设置spark82,spark83,spark84如spark81的hosts
4.修改spark83 和 spark84 的 conf/spark-env.sh,将SPARK_MASTER_HOST 修改为 spark82
5.修改spark82,spark83,spark84 的conf/slaves.sh,将文本“spark81”修改为“spark83”,换行添加文本“spark84”
6.在spark82上运行start-all.sh如图

可视化如图

免密码登录
我们在使用类似于scp这种命令的时候,往往需要输入密码,几台机器无所谓,但是集群中存在上百台机器,手动输入密码显然不可取,所以衍生出了免密码登录的配置,主要采用不对称加密的方式来实现免密码登录
1.创建ssh密钥对,spark82,spark83,spark84执行相同的操作
执行ssh-keygen -t rsa然后一直按enter即可,生成的密钥对存在于.ssh/

其中id_rsa存储私钥,id_rsa.pub存储公钥
2.发送spark82的公钥到spark83,saprk84,spark83和spark84也需要发送公钥到另外两台服务器
ssh-copy-id -i .ssh/id_rsa.pub root@spark83
ssh-copy-id -i .ssh/id_rsa.pub root@spark84
...
3.查看.ssh/authorized.keys,存放的授权密钥

遇到的问题
Worker节点无法和Master节点通信
1.查看Worker节点的logs文件夹下的日志,可以查看到具体的错误信息
2.值得注意的一点是(本人吃过亏,查了好久才发现是是防火墙的问题):应该检查防火墙是否关闭或者对应的端口号是否开放
查看防火墙状态service iptables status
关闭防火墙service iptables stop
走进Spark生态圈:环境的安装与配置的更多相关文章
- 【C#】VS2015开发环境的安装和配置(二)2016-08-03更新
分类:C#.VS2015.WPF.ASP.NET MVC.Android.iOS.Unity3D: 更新日期:2016-08-03 按下面介绍的步骤安装即可. 一.安装JDK和Android SDK ...
- 【C#】VS2015开发环境的安装和配置(一)2016-08-03更新
分类:C#.VS2015.WPF.ASP.NET MVC.Android.iOS.Unity3D: 更新日期:2016-08-03 一.简介 为了避免网上乱七八糟的过时介绍,避免误导初学者,这次把至2 ...
- Java环境的安装与配置
Java环境的安装与配置 环境:Java8,win10 推荐oracle官网oracle官网https://www.oracle.com/index.html下载JDK进行安装 选择自己需要的版本下载 ...
- Twitter Storm:单机环境的安装与配置
Twitter Storm:单机环境的安装与配置 好久没写博客了,这一段时间一直被导师push着做毕业设计.由于目前的方向偏向于图像识别检索,毕设打算做一个基于分布式计算平台的图像检索系统,查阅相关资 ...
- Appium环境的安装与配置,Python测试脚本测试
Appium自动化测试系列1 - Appium环境的安装与配置 发表于4个月前(2015-01-27 14:34) 阅读(803) | 评论(0) 0人收藏此文章, 我要收藏 赞0 寻找 会’偷懒 ...
- go 语言开发环境的安装与配置
go 语言开发环境的安装与配置 编辑器选择 一直以来都是用sublime,但是听说sublime对于golang的插件支持并不是特别完善,并且VS Code只要在自身所带的扩展商店里安装go插件就可以 ...
- linux环境jdk安装及配置
linux环境jdk安装及配置 linux环境jdk安装及配置 1.下载jkd( http://www.oracle.com/technetwork/java/javase/downloads/ind ...
- Ubuntu16.04下LAMP环境的安装与配置
Ubuntu16.04下LAMP环境的安装与配置 最近做个实验需要用到Ubuntu环境的靶场,所以这里介绍下Ubuntu环境下LAMP的安装与配置,话不多说,我们gkd! 1.Apache2的安装 首 ...
- spark 1.6.0 安装与配置(spark1.6.0、Ubuntu14.04、hadoop2.6.0、scala2.10.6、jdk1.7)
前几天刚着实研究spark,spark安装与配置是入门的关键,本人也是根据网上各位大神的教程,尝试配置,发现版本对应最为关键.现将自己的安装与配置过程介绍如下,如有兴趣的同学可以尝试安装.所谓工欲善其 ...
- 在Linux环境下安装和配置phpmyadmin
phpmyadmin是一种MySQL的图形化管理工具,该工具允许你在web界面上管理你的mysql数据库,不可谓不方便快捷. 此次安装与配置是在centos 6.4系统下,该系统已部署lnmp环境.关 ...
随机推荐
- Java总结篇:Java多线程
Java总结篇系列:Java多线程 多线程作为Java中很重要的一个知识点,在此还是有必要总结一下的. 一.线程的生命周期及五种基本状态 关于Java中线程的生命周期,首先看一下下面这张较为经典的图: ...
- 兼容低版本JS的Array.map方法
前几天去别的公司面试遇到个这样的问题,兼容IE7下的Array.map方法,一脸蒙蔽.后面回来查了下资料发现.Array.map方法是ECMA-262 标准中新添加的方法,在低版本的JS中是木有的. ...
- 多个activity跳转保留内存使用intent传递数据问题_新手
/////本来是做的activity跳转,普通那种,但是会在调回来会销毁原来的,重新调用onCreate方法, 后来参考[http://blog.csdn.net/qq_26918031/articl ...
- Cmder 软件中修改λ符号方法
以前的版本 网上都有,我就不介绍了, 只介绍现在的 1. 打开Cmder软件安装位置 2. 打开vendor文件夹 profile.ps1文件 3. 找到第77行 Write-Host " ...
- 在前端页面对easyui中的datagrid与jqgrid加载后的数据进行操作
因为项目的需求,需要在grid中加载数据后再在前端页面执行操作,所以在easyui中的grid与jqgrid都进行了测试和操作: eayui中grid数据的操作: //构造集合对象 var list ...
- 深圳--博雅互动 Android面试打酱油归来
公司在TCL工业园E4,坐地到西丽站,那边在修路,不好走.B796公交站台在A出口的反方向,还要顺着施工的屏障打个弯,在西丽法院1上车.公司那边比较偏了,附近只有两趟公交.办公地点在10楼,出电梯就可 ...
- 第八章 关于SQL查询出错的一些问题
问题一:在使用MySQL使用传参查询并返回结果集时,没错,小伙伴们都知道少不了Statement接口和PreparedStatement对象.问题来了,有时竟然查询不了,Debug进去,发现执行的SQ ...
- #云栖大会# 移动安全专场——APP渠道推广作弊攻防那些事儿(演讲速记)
导语: 如今,移动互联网浪潮进入白热化竞争态势,APP渠道传播成为很多企业常用的推广方式,APP推广费用也在水涨船高,从PC时代的一个装机0.5元到1元不等,到移动互联网时代的5元,甚至几十元,但为什 ...
- 【特效】几种实用的按钮hover效果
效果预览:http://www.gbtags.com/gb/rtreplayerpreview-standalone/3095.htm html: <ul class="btn&quo ...
- 【原创】修复ios输入框获取焦点时不支持fixed的bug
前些日子,做了一个手机站的项目,有一个页面是这样的, 有一个固定(position:fixed)的头部和底部导航,中间是一些表单内容,没啥特别的.但是到了ios中,正常滚动页面没有问题,一旦触发了文本 ...