在ubuntu14下安装部署伪分布式的spark环境

在ubuntu14下安装部署伪分布式的spark环境

准备工作
  1. scala-2.11.8

下载地址:https://www.scala-lang.org/files/archive/

  1. spark-2.2.3-bin-hadoop2.6

下载地址:http://mirror.bit.edu.cn/apache/spark/spark-2.2.3/

操作步骤
  1. 安装scala-2.11.8,将压缩包解压,放在/usr/local目录下
  2. 配置环境变量,在桌面打开终端,输入指令:gedit ~/.bashrc,输入下面配置
export SCALA_HOME=/usr/local/scala
export PATH=$PATH:$SCALA_HOME/bin

然后输入:source ~/.bashrc使配置立即生效

注意,SCALA_HOME写你自己的解压路径

  1. 在终端,输入指令:scala -version,显示版本信息则为安装成功
    在这里插入图片描述
  2. 安装spark,将压缩包解压,放在/usr/local目录下
  3. 配置环境变量,在桌面打开终端,输入指令:gedit ~/.bashrc,输入下面配置
export SPARK_HOME=/usr/local/spark
export PATH=$PATH:$SPARK_HOME/bin

然后输入:source ~/.bashrc使配置立即生效

注意,SPARK_HOME写你自己的解压路径

  1. 还没结束,进入spark的conf目录,打开终端,输入指令:cp spark-env.sh.template spark-env.sh,然后编辑spark-env.sh,在最下面加入以下配置
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_151
export SCALA_HOME=/usr/local/scala
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop
export SPARK_MASTER_HOST=hduser
export SPARK_MASTER_PORT=7077
export SPARK_WORKER_CORES=4
export SPARK_WORKER_MEMORY=3g

解释一下,前三个HOME不需要解释,HADOOP_CONF_DIR是配置spark去HDFS上读取数据而不是本地文件,SPARK_MASTER_HOST这个是主机名,在完全分布式环境中会有一个主机,咱们是伪分布式,只有一台机器,自己就是主机,写什么都可以,SPARK_MASTER_PORT是提交Application的端口,默认就是7077,要改的话也可以,SPARK_WORKER_CORES这个是每一个Worker最多可以使用的cpu core的个数,我的虚拟机只分配4CPU,就是4了,当然可以改成别的,SPARK_WORKER_MEMORY同理,是每一个Worker最多可以使用的内存,这里不能乱写,必须得是整数,不能是小数,而且单位也不能乱写,这个我后面在问题总结再解释,我的虚拟机内存是3.5g,我就写的3g

配这些差不多了

  1. 还在spark的conf目录,打开终端,输入指令:cp slaves.template slaves,然后编辑slaves,应该是在最下面有一个localhost,把他改成你刚刚配置的 SPARK_MASTER_HOST的值,不改也可以,但是在完全分布式的情况下必须要改,难的解释了,如果改了的话,后面的操作可能会有一个小问题,看我在问题总结中说

  2. 配置完成,启动spark,这里要注意,因为我们之前装了hadoop(没装hadoop的忽略),hadoop的一步启动命令是start-all.sh,关闭是stop-all.sh,刚好spark的启动和关闭命令也是这俩,而我们又都配置了全局环境变量,所以如果直接输入start-all.sh会出错,如果直接输入stop-all.sh,可能会关闭不是你想关闭的东西,所以这里给出两个解决办法

第一个办法就是改名字,这个不需要说了,重命名,stop-all.sh和start-all.sh都要改

第二个办法就是到文件夹下启动,启动hadoop的时候在hadoop的sbin目录下,打开终端,输入:./start-all.sh,关闭hadoop的时候在hadoop的sbin目录下,打开终端,输入:./stop-all.sh,启动spark的时候在spark的sbin目录下,打开终端,输入:./start-all.sh,关闭spark的时候在spark的sbin目录下,打开终端,输入:./stop-all.sh

虽然第二种麻烦,但是我使用的是第二种,避免改名字之后不必要的麻烦

在spark的sbin目录下,打开终端,输入:./start-all.sh,开启spark

  1. 随便在哪打开终端,输入:jps,查看是否比之前多了两个,如图
    在这里插入图片描述

蓝色的是hadoop的,红色的是spark的,到这里,spark就弄好了,具体的spark shell和pyspark自己玩吧

问题总结
  • 第一个问题就是启动spark的时候,出现了一个ssh:connect to host localhost port 22: Connection refused的错误,这个就是上面第七步可能会出现的问题,原因就是我配置了ssh免密登录,然后上面第六步配置的主机名又是随便写的,所以就出错了,解决方法很简单,两种方式,打开终端,输入:sudo gedit /etc/hosts,在你第一次打开的时候,你可能会看到(我的是这样)
    在这里插入图片描述
    重点是上面那两个(你的可能和我的不一样,不要在意),你会发现你随便写的主机名并没有,所以两种办法,一是在上面第六步的操作,把你的主机名改成这里有的名字,比如localhost或者hadoop,二是把你的主机名在这里写上,比如我写的hduser这里没有,我就加上,如图
    在这里插入图片描述
    这样子之后就不会再出现上面的报错了(127.0.0.1也可以)

  • 第二个问题就是启动的时候,Worker启动失败,查看日志后,发现报错信息是:

Exception in thread "main" java.lang.NumberFormatException: Size must be specified as bytes (b), kibibytes (k), mebibytes (m), gibibytes (g), tebibytes (t), or pebibytes(p). E.g. 50b, 100k, or 250m.
Fractional values are not supported. Input was: 3.5
	at org.apache.spark.network.util.JavaUtils.byteStringAs(JavaUtils.java:291)
	at org.apache.spark.network.util.JavaUtils.byteStringAsBytes(JavaUtils.java:302)
	at org.apache.spark.util.Utils$.memoryStringToMb(Utils.scala:1126)
	at org.apache.spark.deploy.worker.WorkerArguments.<init>(WorkerArguments.scala:48)
	at org.apache.spark.deploy.worker.Worker$.main(Worker.scala:742)
	at org.apache.spark.deploy.worker.Worker.main(Worker.scala)

这个就是我上面说的SPARK_WORKER_MEMORY不能乱写,我第一次以为虚拟机3.5g内存,就直接写了3.5g,然后报错信息很容易看懂,就是说:单位必须是b,k,m,g,t,p里面的一种,而且值必须是整数,所以我的3.5g就是错的,所以我改成了3g

  • 还有个问题,以为spark是Scala语言开发的,所以我就认为安装spark就必须要先安装Scala,就和安装hadoop必须要先安装jdk一样,但是spark好像是个例外,我在网上看到好多说并不需要安装Scala,所以我还特意百度了一下,发现确实是不必须,所以我为了保险,还是装上了
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值