Spark集群搭建

搭建spark环境记录:

系统:ubuntu14.0464

JDK:jdk1.8.0_12164

scalascala2.12.1

sparkspark2.1.0

hadoop:2.7

(本来时考虑到电脑内存过小,装三个虚拟机会比较卡,所以先在该电脑商装了双系统,即增加了一个ubuntu系统,在配置好一个样本机之后发现要想建立集群必须在其他实体机上做相同的配置,考虑到只是做试验阶段,果断放弃。。。浪费好长时间。。。。重新踏上在虚拟机上搭建环境的不归路上。。。)

第一天:

VMware上的ubuntu虚拟机上搭建集群样板机:

设置虚拟机ip地址:(以root用户权限修改文件interfaces

gedit/etc/network/interfaces

添加内容:autoeth0

iface eth0 inet static(设置为静态)

address 192.168.1.201(宿主机为1.200,设置在同意网段下)

netmask 255.255.255.0

gateway 192.168.1.1

设置slave节点ip时只需将address改为192.168.1.202192.168.1.203,其余不变

这里注意要将虚拟机的网络模式修改为桥接模式,不然ping不通。

(这里当时修改了ip后一直ping不同,思考了好久发现未关闭防火墙,关闭之后依然不行,在网上查找发现要将虚拟机的网络模式改为桥接模式才可以)

修改host映射文件:(该文件保存了机器名与其对应的IP地址建立一个关联的数据库)》sudo gedit /etc/hosts

内容:192.168.1.201 master

192.168.1.202 slave1

192.168.1.203 slave2

改好之后注意将master节点的机器名改为master:》gedit/etc/hostname,

其余两个节点也要对应的修改为slave1slave2.

这时可以尝试ping一下其他ip,如果ping不通,查看是否关闭防火墙,关闭防火墙方法》ufwdisable

Centos中还要关闭SELinux,不过ubuntu中默认未安装,所以不用管。

第二天:

昨天配好了ip地址和主机名以及映射文件,并使得与其他主机能够ping通,说明配置没有问题,接着搞。。。

建立/app文件夹,拥有者为etanqil,用来放置程序。app下有:soft存放基础软件,compile存放编译源代码和结果(没用到),spark存放sparkhadoop。三台虚拟机上都有这些文件,且拥有者都要为同一个用户,防止该用户使用ssh命令往其他及其分发文件时出现权限不足的情况。

(小插曲:因为电脑不能来联网,所以远程介入到99.239上获取了需要的压缩包,但是只能放在主机上,于是只能学习怎样实现主机与虚拟机实现共享,查阅资料(手机百度)发现需要安装VMwareTools,但是虚拟机的安装VMwareTools是灰色的(惊吓!),最后发现要先启动虚拟器才可以点击按钮安装(智障了!),装好VMwareTools之后选择共享文件夹就OK!.

安装JDKtar-zxf解压文件;mv移动文件到/app/soft中。在bashrc文件中配置环境(也可以再/etc/profile中配置)》gedit~/.bashrc

添加内容:exportJAVA_HOME=/app/soft/jdk1.8.0_121

export JRE_HOME=$JAVA_HOME/jre

export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib

exportPATH=$JAVA_HOME/bin:$PATH

重启后生效sudoreboot

java-version检验

安装scalatar-zxf解压文件mv移动文件到/app/soft中。在bashrc文件中配置环境(与Centos不同,CentOS/etc/profile中配置)》gedit ~/.bashrc

添加内容:exportSCALA_HOME=/app/soft/scala-2.12.1

exportPATH=$PATH:${SCALA_HOME}/bin

重启后生效(》sudoreboot

scala-version检验

到此一个样板机差不多解决好了,利用VMware自带的克隆功能可自动实现复制样板机(好强大!)

安装上面方法进行另外两个虚拟机的ip和机器名修改。下班!

第三天:

(小插曲:为服务器重装了一次linux系统)

按照昨天的结果试了一下三个虚拟机之间能否ping通,可以,good

然后尝试ssh方法连接到其他主机上,发现可以实现连接到同一局域网下的1.160上,但是该三个主机之间互相不能连接,很慌。。。

考虑是因为复制的虚拟机,是否会因为MAC地址冲突导致呢?,查看MAC地址,并不一样。。(pass

考虑可能因为ssh服务未开启(两个连接的电脑,被连接的一方开启服务就可以,所以为什么能连接1.160,而这三个之间无法连接),然后》servicessh status,发现没有ssh服务,果断装上,三个都装。成功解决问题。

然后进行配置SSH无密码登陆。(下班,明天来补充!)

因为上面安装好了ssh服务,所以这里很容易的设置:

1.生成私钥和公钥:使用etanqil用户登录》$ssh-keygen-t rsa

命令执行完毕会在/home/etanqil/.ssh目录中看到两个文件:id-rsa,id_rsa.pub,以pub结尾的时公钥,把公钥名称改为》mvid_rsa.pub authorized_keys_master.pub.另外两个节点进行相同操作。

2.合并公钥信息:把两个从节点的公钥使用scp命令传送到master节点的/home/etanqil/.ssh

scp authorized_keys_slave1.pub etanqil@master:/home/etanqil/.ssh

scp authorized_keys_slave2.pub etanqil@master:/home/etanqil/.ssh

使用cat命令把3个节点的公钥信息保存到authorized_keys

cat authorized_keys_master.pub>> authorized_keys

cat authorized_keys_slave1.pub>> authorized_keys

cat authorized_keys_slave2.pub>> authorized_keys

使用scp命令把密码文件分发到slave1slave2节点

scp authorized_keys etanqil@slave1:/home/etanqil/.ssh

scp authorized_keys etanqil@slave2:/home/etanqil/.ssh

传输完毕之后需要在3个节点设置authorized_keys读取权限

chmod 400 authorized_keys

3.验证免密码登陆

ssh mastersuccess

编译源码跳过。。。

搭建spark运行集群

直接用官网下载的spark2.1.0版本二进制安装包放到/home/etanqil/work解压之后移动到/app/spark中。

配置spark环境依然是在~/.bashrcgedit ~/.bashrc

export SPARK_HOME=/app/spark/...

export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin

配置conf/slaves文件该文件在$SPARK_HOME/conf刚开始该文件下只有slaves.template临时文件需要复制一份该文件命名为slaves在其中添加WOrker节点信息否则启动spark时会出错。)

cp slaves.template slaves

gedit slaves

添加内容:master slave1 slave2

配置conf/spark-env.sh,设置spark运行环境(与上面配制方法相同,先复制spark-env.sh.template,然后修改)

内容:

export SPARK_MASTER_IP=master

export SPARK_MASTER_PORT=7077

export SPARK_EXECUTOR_INSTANCES=1

export SPARK_WORKER_INSTANCES=1

export SPARK_WORKER_CORES=1

export SPARK_WORKER_MEMORY=1024M

export SPARK_MASTER_WEBUI_PORT=8080

export SPARK_CONF_DIR=/app/spark/spark-2.1.0/conf

配置完毕后进入/app/spark目录scp命令把spark目录复制到slave1slave2节点中

scp-r spark-2.1.0 etanqil@slave1:/app/spark/

scp-r spark-2.1.0 etanqil@slave2:/app/spark/

启动spark

cd/app/spark/spark-2.1.0/sbin

./start-all.sh

启动后这会报错说JAVA_HOMEis not set

我们需要将~/.bashrc中的jdk配置复制一份到conf/spark-env.sh中。

至此集群搭建完毕可以在http//master8080查看






    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值