Spark on Yarn——spark1.5.1集群配置
写在前面:
spark只是一种计算框架,如果要搭建集群要依托与一定的组织模式。
目前来说,Spark集群的组织形式有三种:
1. Standalone:使用akka作为网络IO组件,master和worker之间采用actor模型进行组织。简单说就是spark自己实现了集群中的各个节点上的服务。
2. Yarn:直接使用Yarn框架完成资源分配和分布式管理功能,spark只是简单地把任务提交给yarn框架。
3. Mesos:不太清楚。(好像比较古老了)
因此,要搭建一个spark集群,首先要选择一种组织形式,对于我来说以前用过一点Hadoop+MapReduce,因此选择比较熟悉的基于Hadoop的yarn框架,现在网上也有一些教程可供参考。
环境及软件版本型号列表:
Ubuntu 14.04 64位
JDK:jdk-7u80-linux-x64 (网址http://www.oracle.com/technetwork/java/javase/archive-139210.html)
scala:scala-2.10.4 (网址http://www.scala-lang.org/download/2.10.4.html)
Hadoop:hadoop-2.6.2(网址https://hadoop.apache.org/#Download+Hadoop)
spark: sark-1.5.1(要求hadoop2.6+)(网址http://spark.apache.org/downloads.html)(最好是下载pre-built版本的,这样就不用自己额外编译了)
配置集群的大体步骤:
修改hosts文件,使节点时间互相ping通 --》建立ssh连接 --》 为每台机器装JDK与SCALA --》 主机装Hadoop并配置好 --》 通过主机将Hadoop发送至各个从节点 --》 主机配置spark --》 通过主机将配置好的spark发送至各个从节点 --》 完成
通过以上的步骤可以看出,由于我们是把Hadoop及spark一起发送至子节点,因此要求我们的每台机器都有相同的文件路径结构(我的是在所有节点上新建了一个路径放置所有的jdk, scala, hadoop, spark文件,如:~/Downloads/spark_sdk),及相同的用户名(这里指Ubuntu系统admin@master, @前面的admin表示该机器的用户名,@后面的master表示该机器的名称)。
--------------------------------------------------------------配置步骤正式开始---------------------------------------------------------------------------------------
1. 修改每个节点的hosts文件:
sudo /etc/hosts (每台主机操作)
114.212.80.243 master
114.212.81.244 slave1
114.212.82.117 slave2
(在不同机器上互相ping,看是否能够ping通)
ping master
ping slave1
ping slave2
2. ssh免密码登陆。
(1) 为确保ssh可以互连,不会出问题,最好先把防火墙关闭或卸载(每台机器)。
sudo apt-get remove iptables
(2) 每台机器安装ssh server.
sudo apt-get install openssh-server
(3) 每台机器生产公钥和私钥。
ssh-keygen -t rsa (一路回车)
(4) 每个从节点上的id_rsa.pub发给master节点。
scp /home/master/.ssh/id_rsa.pub master@master:/home/master/.ssh/id_rsa.pub.slave1 scp /home/master/.ssh/id_rsa.pub master@master:/home/master/.ssh/id_rsa.pub.slave2
(5) 在master上,将所有公钥加到用于认证的公钥文件authorized_keys中.
cat ./.ssh/id_rsa.pub* >> ./.ssh/authorized_keys (可以按照上面的路径写成绝对路径的形式)
(6) 将公钥文件authorized_keys分发给每台slave.
scp /home/master/.ssh/authorized_keys master@slave1:/home/master/.ssh/
(7) 在每台机子上验证SSH无密码通信.(第一次通信时需要密码,以后则不需要)
ssh master
ssh slave1
ssh slave2
(8) 如果登陆测试不成功,则可能需要修改文件authorized_keys的权限。
chmod 600 /home/master/.ssh/authorized_keys
(现在,完成机器间的护筒之后,下面所有的jdk,scala等得安装可以通过Master用ssh来操控了。)
2. 安装JDK
我的是将JDK解压在 ~/Downloads/spark_sdk/文件夹下。
tar zxvf jdk-7u80-linux-x64.tar.gz ~/Downloads/spark_sdk/
然后配置bashrc文件。(bashrc与profile的区别:bashrc是指当前用户的环境变量的设置,profile是整个机器的环境变量的设置。对于单用户来说,我们设置bashrc即可。显然,bashrc优先级大于profile)。
vim ~/.bashrc
加入如下JDK的配置:
export JAVA_HOME=~/Downloads/spark_sdk/jdk1.7.0_80
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
使bashrc生效:
source ~/.bashrc
测试JDK是否安装成功:
java -version
(所有机器一样,Slave机器可以通过Master操纵)
3. 安装scala
将scala解压在~/Downloads/spark_sdk/文件夹下。
tar zxvf scala-2.10.4.tgz ~/Downloads/spark_sdk/
然后配置bashrc文件。
vim ~/.bashrc
加入如下scala的配置:
export SCALA_HOME=~/Downloads/spark_sdk/scala-2.10.4
export PATH=$PATH:$SCALA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
使bashrc生效:
source ~/.bashrc
测试scala是否安装成功:
scala -version
(所有机器一样,Slave机器可以通过Master机器操控,更简单的是,把文件用scp传送到相应位置后,直接把bashrc传送过去,避免所有机器配置)
4. 配置Hadoop集群。
在主节点上配置好了,直接发送至从节点即可。
详细的配置过程见Jerk's blog http://wuchong.me/blog/2015/04/04/spark-on-yarn-cluster-deploy/
5. 配置spark。
如果Hadoop集群成功构建,则spark在Master上配置好后,发送给Slave节点即可。
写在后面:
配置环境永远是令程序员们最头疼的一件事,可是往往通过配置环境,我们才可以更加了解我们正在使用的这个工具,我们的机器,我们的架构的更底层工作方式。而不是只会使用,不知为何这样做的。
在过程中也会遇到各种各样的问题,往往一个错误就会跳出一整个屏幕的提示信息,错误等,令人眼花缭乱。所以我的感想就是:
- 要仔细阅读info提示信息;
- 慢就是快;
- 最好知道每个配置文件的信息代表的什么意思。
Spark on Yarn——spark1.5.1集群配置的更多相关文章
- 【原创】大叔经验分享(14)spark on yarn提交任务到集群后spark-submit进程一直等待
spark on yarn通过--deploy-mode cluster提交任务之后,应用已经在yarn上执行了,但是spark-submit提交进程还在,直到应用执行结束,提交进程才会退出,有时这会 ...
- Hadoop入门学习笔记-第三天(Yarn高可用集群配置及计算案例)
什么是mapreduce 首先让我们来重温一下 hadoop 的四大组件:HDFS:分布式存储系统MapReduce:分布式计算系统YARN: hadoop 的资源调度系统Common: 以上三大组件 ...
- 搭建Hadoop2.6.0+Spark1.1.0集群环境
前几篇文章主要介绍了单机模式的hadoop和spark的安装和配置,方便开发和调试.本文主要介绍,真正集群环境下hadoop和spark的安装和使用. 1. 环境准备 集群有三台机器: master: ...
- Ubuntu 12.04下spark1.0.0 集群搭建(原创)
spark1.0.0新版本的于2014-05-30正式发布啦,新的spark版本带来了很多新的特性,提供了更好的API支持,spark1.0.0增加了Spark SQL组件,增强了标准库(ML.str ...
- Yarn篇--搭建yran集群
一.前述 有了上次hadoop集群的搭建,搭建yarn就简单多了.废话不多说,直接来 二.规划 三.配置如下 yarn-site.xml配置 <property> <n ...
- Scala进阶之路-Spark独立模式(Standalone)集群部署
Scala进阶之路-Spark独立模式(Standalone)集群部署 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们知道Hadoop解决了大数据的存储和计算,存储使用HDFS ...
- hadoop集群配置方法---mapreduce应用:xml解析+wordcount详解---yarn配置项解析
注:以下链接均为近期hadoop集群搭建及mapreduce应用开发查找到的资料.使用hadoop2.6.0,其中hadoop集群配置过程下面的文章都有部分参考. hadoop集群配置方法: ---- ...
- Hadoop YARN学习之监控集群监控Nagios(4)
doop YARN学习之监控集群监控Nagios(4) 1. Nagios是一个流行的开源监控工具,可以用来监控Hadoop集群. 2. 监控基本的Hadoop服务 调试好脚本后命名为chek_res ...
- CentOS6安装各种大数据软件 第四章:Hadoop分布式集群配置
相关文章链接 CentOS6安装各种大数据软件 第一章:各个软件版本介绍 CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令 CentOS6安装各种大数据软件 第三章:Linux基础 ...
随机推荐
- Shell简介:1分钟理解什么是Shell 脚本语言 解释器 以及编译器和编译语言
Shell简介:1分钟理解什么是Shell 脚本语言 解释器 以及编译器和编译语言 现在我们使用的操作系统(Windows.Mac OS.Android.iOS 等)都是带图形界面的,简单直观,容易上 ...
- base64位 解码图片
jar包是commons-codec.jar. pnuts //base64解码成图片 function gldBase64ToImage(imgStr,imgFilePath) { // 对字节数组 ...
- Webpack4 学习笔记四 暴露全局变量、externals
前言 此内容是个人学习笔记,以便日后翻阅.非教程,如有错误还请指出 webpack 暴露全局变量 通过 expose-loader 内联配置 在 webpack中配置 每个模块通过注入的方式 通过CD ...
- motto - Express 4.x Request对象获得参数方法
本文搜索关键字:motto express node js nodejs javascript request body request.body 1. req.param() 该方法获得参数最为方便 ...
- django+xadmin在线教育平台(十四)
7-1 django templates模板继承1 机构可以筛选类别 机构可以根据所在地区进行分类 右侧我要学习功能: form表单提交 右下:授课机构排名 页面头部与底部为全局头和全局底部. Dja ...
- 根据html页面模板动态生成html页面(c#类)
本文转载自:http://www.cnblogs.com/yuanbao/archive/2008/01/06/1027985.html点击打开链接 一直以为动态生成静态页面不好做,昨天在网上找了下, ...
- swoole学习(一)----linux安装swoole
1.下载swoole 登录swoole官网 https://www.swoole.com/ 点击下载,找到github或者其他链接下载下来 放到虚拟机上. 也可以使用虚拟机下载 2.登录虚拟机 推荐使 ...
- PLC状态机编程第六篇-优化PLC程序生成
还记得第一篇博客中,我们在状态机中手写上升沿来处理有别于传统的一键启停程序,那个手写的上升沿就是优化手段.stateflow状态机是带事件的,事件本身支持上升沿和下降沿等事件,在这里,如果我们选择用事 ...
- 数据分析处理库Pandas——数据透视表
数据 按指定的行列值显示 求和 按行求和 按列求和 数据 求平均 备注:按性别计算每个等级船票的平均价格. 备注:每个等级船舱中每种性别获救的平均值,也就是获救的比例. 备注:每种性别未成年人获救的平 ...
- exec族函数
作用 在进程的创建上Unix采用了一个独特的方法,它将进程创建与加载一个新进程映象分离.这样的好处是有更多的余地对两种操作进行管理. 当我们创建了一个进程之后,通常将子进程替换成新的进程映象,这可以用 ...