一、安装Hadoop3 和 JDK1.8
这是大数据虚拟机必备的基础环境,也是spark运行的基础环境,没有安装的请先自行到我这三篇文章查看,不管是伪分布式、分布式集群、windows单机、CentOs、Ubuntu的配置,我全都讲得非常详细,全网找不到第二篇:
- 大数据之——(伪分布式的) VWare、Ubuntu、CentOs、Hadoop安装配置_vware虚拟机-CSDN博客文章浏览阅读1.3k次,点赞10次,收藏23次。简单看一下,学习大数据将要了解、涉及到的各个模块、各个技术栈相信各位学过Linux的、或者对大学考试作弊深有研究的掉毛们,对虚拟机肯定不陌生,那么既然我们要学习大数据分布式处理,那就需要模拟多个服务器来实现,那一个计算机能配置成一个服务器,那我们总不能把自己的本机电脑配成服务器吧?而且我们一台电脑也没办法整多个服务器出来,那就需要虚拟机来配置构建服务器,来模拟代替一个真正的计算机。(虚拟机就是虚拟的一台计算机)_vware虚拟机
https://blog.csdn.net/m0_73991249/article/details/142715395
- 大数据之——(分布式集群式) VWare、Ubuntu、CentOs、Hadoop安装配置-CSDN博客文章浏览阅读227次。简单看一下,学习大数据将要了解、涉及到的各个模块、各个技术栈相信各位学过Linux的、或者对大学考试作弊深有研究的掉毛们,对虚拟机肯定不陌生,那么既然我们要学习大数据分布式处理,那就需要模拟多个服务器来实现,那一个计算机能配置成一个服务器,那我们总不能把自己的本机电脑配成服务器吧?而且我们一台电脑也没办法整多个服务器出来,那就需要虚拟机来配置构建服务器,来模拟代替一个真正的计算机。(虚拟机就是虚拟的一台计算机)
https://blog.csdn.net/m0_73991249/article/details/143432438?spm=1001.2014.3001.5501
- 大数据之——Window电脑本地配置hadoop系统(100%包避坑!!方便日常测试,不用再去虚拟机那么麻烦)_windows配置hadoop-CSDN博客文章浏览阅读3.3k次,点赞30次,收藏42次。之前我们的hadoop不管是伪分布式还是分布式,都是配置在虚拟机上,我们有的时候想要运行一些mapreduce、hdfs的操作,又要把文件移到虚拟机,又要上传hdfs,麻烦得要死,那么有的时候我们写的一些java、python的hadoop代码,我们只想在本地运行一下看看有没有问题、会是一个什么结果怎么办?;那就需要在window配置hadoop系统环境,然后以后只需要在本地写代码运行就行了。_windows配置hadoop
https://blog.csdn.net/m0_73991249/article/details/143471593
如果并不清楚自己要看那个版本,对伪分布式、分布式不是很清楚的,优先推荐看第2篇!!因为“分布式集群” 是以后要一直用到的大数据形式,而且涉及的知识点很多很广泛,而且会教如何使用Finalshell连接多台虚拟机控制台,不需要来回切换虚拟机来执行终端命令!推荐第2篇:大数据之——(分布式集群式) VWare、Ubuntu、CentOs、Hadoop安装配置-CSDN博客
如果实在很懒的,自行看黑马的视频,根据他视频下面的指示找他的安装包,他已经把所有安装包都准备好了,甚至虚拟机都打包了。。。但是这就是他的指定版本的了:Spark基础入门-第二章-2.3-在Linux上服务器上安装Anaconda_哔哩哔哩_bilibili
二、安装Anaconda (或Python3)
要执行Spark我们通常都是使用python语言来操作Spark,那么自然要安装python环境,但是anaconda这个工具就自带了python3,而且能轻松管理python环境,因此安装python不如直接安装anaconda,安装anaconda ==> 等于安装了python3 (当然你要非要单独安装python也行,记住是3.x版本就行 )
而且Anaconda是一个管理【Python环境】的工具库,里面有很多我们后面学习需要的工具包。就像nvm可以管理多个node版本,并使用npm下载大量依赖包、你的java后端maven里可以下载大量依赖包,Anaconda就是这么个玩意。
这里注意一点,在分布式集群的配置下,我们的这些环境文件统一放在【/export/server】下,如果前面已经配置过了hadoop的就肯定有这么一层目录了,如果没有的话就【mkdir /export/server】创建一下
1、离线下载步骤:(在原机手动下载,再移到虚拟机)
最新版下载官方地址(默认下载最新版本):Anaconda | The Operating System for AI
离线安装就是我们先在原机下载好ANACONDA的Linux安装包,然后再上传到虚拟机并解压安装
2、在线wget安装:(在虚拟机里命令行下载,但简单)
清华大学下载镜像源:Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
首先到其中一个虚拟机 (因为反正是单机模式,哪个节点都一样),执行以下命令【yum install wget】,这样才能下载wget这个工具
有了wget,才能使用 “
wget
命令” 来下载各种安装包(这里图片例子我用的是Finalshell远程连接工具连接三个虚拟机,执行命令操作)
然后去刚刚给的 “清华镜像源” 这个网站,找到你要的Anaconda的版本,复制他的名字,然后到虚拟机命令终端,使用下面这种命令来执行下载安装(注意要安装到/export/server路径下):
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/[你的anaconda的版本名] -P /export/server/
比如这里我选的是 [Anaconda3-5.3.1-Linux-x86_64.sh],那就可以这样写:
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-5.3.1-Linux-x86_64.sh -P /export/server/
提示:
1、选择的是Anaconda的3的版本
2、一般人的电脑都是64位的,直接选 “Linux-x86_64” 版本的
3、点击就是跟第一个离线安装方式一样,复制名字拼接上“”才是wget在线下载方式
3、 安装Anaconda
1)如果你是用刚刚第一种离线下载方式下载了anaconda安装包的话
安装包需要我们手动上传到虚拟机
;
这里我用的例子是Finalshell直接上传文件,当然你们也可以直接在虚拟机通过【共享文件夹】、【VMTools复制粘贴】各种办法来把文件上传到虚拟机,都是一样的我就不一 一演示了
;
注意一点,用Finalshell上传文件的话要先执行命令:【cd /export/server】,因为你在哪个位置他就自动给你上传到哪(直接虚拟机上操作的话就无所谓了,反正你最后直接复制粘贴到/export/server路径下就行)
2)如果你是用第二种wget的方法直接把anaconda下载到【/export/server】下
那就不需要上传了,它已经在我们的虚拟机里,并且在指定位置了
那就直接到这层目录检查有没有就行了
输入【ll】查看有没有这个文件
然后输入命令【sh [你的Anaconda文件名]】来启动Anaconda安装文件
出现下面内容之后摁【回车】
然后下面是大量的阅读协议文档,你可以一直按【回车】,也可以直接按【q】键直接跳过阅读
直到出现下面界面,输入【yes】同意协议
然后就是输入你要【安装的位置】,像我一样安装到【/export/server/anaconda3】就行了
注意这里如果你写错了,它是不支持你删除重写的,你必须必须要摁【Ctrl + C】退出安装,然后再次重新进入安装步骤
最后再输入一次yes,就结束安装了
注意安装完之后,执行命令:【init 6】重启虚拟机,这样才算完整安装成功
再次连接的时候,就会发现左边有一个 “(base)” 的符号,就说明安装成功了
输入:【python】也能显示我们的python版本
输入【python】也就是进入了python的解释器控制台,就可以输入一些python代码了
直到我们输入【exit()】就是退出解释器,回到正常的Linux终端界面
然后我们最后再执行一下【vim ~/.condarc】这个命令,意思是在【~】创建一个文件,用来配置anaconda以后下载工具包的下载源,因为它是外网的,下载东西很慢,清华大学和阿里巴巴提供了很多国内的镜像源能加快下载速度:
请一字不漏的完完整整的复制粘贴过去!!!!
channels: - defaults show_channel_urls: true default_channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2 custom_channels: conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
最后最好多执行一个命令:【conda clean -i】
这是为了清除 conda 缓存,是一个好习惯
三、安装Spark
1、安装整个Spark的运行环境
1)下载
Spark下载官网(超级掰慢!!不推荐!!):Downloads | Apache Spark
清华镜像下载源:Index of /apache/spark
华为镜像下载源:Index of apache-local/spark
官网下载指引
这是点击下载安装包之后跳转的具体下载页面
清华源镜像指引
华为镜像下载指引
2)安装Spark
有了压缩包之后,安装很简单,就是把它上传到虚拟机
然后,解压压缩包就是安装好了,就这么简单
还是一样的,要先上传到【/export/server】下,就先执行【cd /export/server】,然后再点击上传Saprk压缩包
输入【ll】检查一下
然后接着解压安装,就解压在上传的路径下就行,怕出错就用 “全局路径”
tar -zxvf /export/server/[你的spark压缩包名字] -C /export/server
然后给安装目录换个名字(名字太长了不好找):2种方式任选
1、直接整个文件夹换名字:
mv [你的spark目录路径全名] [spark]
2、或者采用软连接,也就是源文件名不变,添加一个“快捷方式”:
ln -s [你的spark目录路径全名] [spark]
然后启动,启动方式:(也是2种方式,任你选择)
1、直接到【/export/server/spark/bin/spark-shell】下执行这个spark启动文件,直接输入命令【/export/server/spark/bin/spark-shell】就行
2、将【/export/server/spark/bin】、【/export/server/spark/sbin】都配置到Path环境变量,这样在全局范围内任意路径下,只需要输入【spark-shell】就能启动了!
配置环境变量也有2种方式,任你选择:
(1)直接将下面命令行一条一条粘贴到终端控制台执行(除了#注释)
echo 'export SPARK_HOME=/export/server/spark' >> /etc/profile echo 'export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin' >> /etc/profile #执行完之后 source /etc/profile
;
;
(2)用vim编辑/etc/profile文件,来配置
先执行【vim /etc/profile】,然后将下面内容复制到最底部,“:wq” 保存退出
export SPARK_HOME=/export/server/spark export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
2、使用python编写spark的语言:pyspark
1)pyspark是什么
当我们全局启动spark时,可以发现有个红色的 “scale”
这意味着spark自带默认使用【scale】语言来编写spark
摁【:quit】可以退出,回到正常的终端控制台
但是我们并不是要用scale来写,我们是要用python来写!!!
那么PySpark就是Python专门用来写spark的一个库,可以理解为一个语言吧,类似numpy、pytorch、pandas......
2)创建pyspark的环境或者导入库
对于单个全局的python环境下,也就是你只安装了在指定的一个版本的python,那么你这个虚拟机整个python环境就固定了,那么你只需要用python的下载包的命令:“pip 工具库”,把pyspark这个工具库下载下来就能用了
对于安装了anaconda的,那么你只需要营造一个适合写pyspark的“虚拟环境”就行,只用 【conda create -n “自定义虚拟环境名” python=“任意一个指定的版本”】,anaconda就会根据 “python=‘任意一个指定的版本’ ” 来创造一个这个版本的python运行环境下的、叫 “自定义虚拟环境名” 的一个 “虚拟环境”,不管你整个虚拟机的python环境是多少,并不影响这个虚拟环境
打个比方:
- 有两个项目,A项目需要3.8的python环境,B项目需要2.0版本的python环境,如果你只下载了python,而且版本是1.0版本的,那么你就需要卸载了,然后写A项目时安装3.8的,写B项目时再卸载再安装2.0版本的python;
- 但是如果你安装了anaconda,那么可能anaconda自带的python环境的4.0,但是不影响。你只需要写A项目时【conda create -n A python=3.8】,写B项目时【conda create -n B python=2.0】,就创建了适配这两个项目的两个版本的python虚拟环境,完美。
提示1:如果你不是安装 anaconda,是直接安装python的,请确保你有 pyspark 这个库,可能只安装python的话是没有这个库的,还需要另外手动执行pip下载命令,下载好pyspark先:
pip install pyspark # 使用国内代理镜像网站更快(清华大学源) pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyspark
提醒2:如果是用anaconda安装的,请确保我们做了这一步————>为【pyspark】创建一个属于它自己的运行虚拟环境(这里推荐使用3.8版本的,因为是最稳定兼容的版本环境)
conda create -n pyspark python=3.8
;
如果你执行完【conda create -n pyspark python=3.8】之后出现了这样的界面
就是成功创建了pyspark的虚拟环境
;
最后只需要输入命令:【conda activate pyspark】
就可以成功激活这个虚拟环境了!!
3)十大未解之谜,诡异灵异事件
但是成功的道路永远不可能一帆风顺,我本人执行【conda create -n pyspark python=3.8】的时候就遇到了问题,我足足花了两天下午加晚上的时间,中途只拉了2次尿,才搞定
但是如果出现这样!恭喜你,你也完了
那么先别慌,这个错误信息大致是:切换镜像源之后 “无法连接网络”、“无法解析域名”
两种可能:
- 1、你前面的【vim ~/.condarc】那一步配置有错误,可能是漏了什么标点符号或者敲错了啥,导致解析不了你配置的镜像网站
- 2、你的网络连接不通,DNS无法解析哪怕只是简单、正确的一些网址
针对第一个问题,请重新回到【第二大点、第3点最后】,好好检查你的镜像配置文件【~/.condarc】里的内容跟我的一不一样,实在不行,复制粘贴去问ai,还是不行的话我这里推荐别的几篇文章,可以试一下他们的配置内容:
【Python】conda镜像配置,.condarc文件详解,channel镜像-CSDN博客
https://wenku.csdn.net/answer/a6goczrrwn
针对第二个问题,你如果不确定是不是这个问题导致的话,就先去输入这几个命令测试一下能不能像下图一样ping 成功
ping 8.8.8.8
ping baidu.com
正确情况:(出现这样的情况就可以摁【Ctrl + C】退出循环联通了)
错误情况:
ok,如果是第二种情况,DNS解析出问题没跑了,老老实实按下面步骤操作:
第一步,执行这个命令:【vim /etc/sysconfig/network-scripts/ifcfg-ens33】
然后将下面内容添加到最底部(如果你这个文件已经有了DNS1或者DNS2.....你就把我的内容改成接着DNS3、DNS4...接下去就行)
DNS1="180.76.76.76" DNS2="8.8.8.8" DNS3="8.8.4.4" DNS4="223.5.5.5"
然后执行【vim /etc/resolv.conf】,这是检查 DNS 配置,确保里面有有效的一些公用的 DNS 服务器地址。复制下面内容进去:
nameserver 8.8.8.8 nameserver 8.8.4.4
通常有上面两个就够了,但是我看到有的博主还添加了多几个DNS解析地址,我也问了AI,加进去不会有事,不放心的可以复制这个进去
nameserver 8.8.8.8 nameserver 8.8.4.4 nameserver 180.76.76.76 nameserver 223.5.5.5
然后运行下两个命令:
【service network restart】:重启网络配置,使刚刚的配置生效
【conda clean -i】:这是为了清除conda缓存,是一个好习惯
然后再次测试
成功了的话,就可以试一下:【conda create -n pyspark python=3.8】了
不出意外应该是正常了,反正我是这样成功了
;
附上我的参考博客:
https://zhuanlan.zhihu.com/p/643482964?utm_id=0
还有别的问题的话,可以参考我的这个CSDN问答,这里特别感谢博主:道友老李,他给予了很详细的问题解析,下面是我的问答界面和他的个人主页:
问答解答页面:centOs的node1的用conda创建pyspark虚拟环境遇到的灵异事件_服务器-CSDN问答
;
道友老李个人主页:道友老李-CSDN博客
4)最后配置一下环境变量
配置Spark由如下5个环境变量需要设置:
- SPARK_HOME:表示Spark安装路径在哪里
- PYSPARK_PYTHON:表示Spark想运行Python程序,那么去哪里找python执行器
- JAVA_HOME:告知Spark,Java在哪里
- HADOOP_CONF_DIR:告知Spark,Hadoop的配置文件在哪
- HADOOP_HOME:告知Spark,Hadoop安装在哪里
那么在做完了hadoop分布式集群配置和spark安装配置的兄弟们应该已经配置好了【JAVA_HOME】【HADOOP_HOME】【SPARK_HOME】了,现在还差【PYSPARK_PYTHON】和【HADOOP_CONF_DIR】
都没有配置的也没关系,只需要最后你的【/etc/profile】文件底部跟我最后的图片那里一样就行
【PYSPARK_PYTHON】配置
输入【pwd】可以获取当前你所在位置的全部完整路径
你可以复制这个路径自己去配置【PYSPARK_PYTHON】变量,或者你懒一点可以直接复制粘贴我下面这个内容进去
(别忘了输入【vim /etc/profile】先)
export PYSPARK_PYTHON=/export/server/anaconda3/envs/pyspark/bin export PATH=$PATH:$PYSPARK_PYTHON/python3.8
【HADOOP_CONF_DIR】
(别忘了输入【vim /etc/profile】先)
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop export PATH=$PATH:$HADOOP_CONF_DIR
如果你前面【JAVA_HOME】【HADOOP_HOME】【SPARK_HOME】都没配置的话,那就直接复制粘贴下面这一大段内容进去吧(前提你的jdk、hadoop、spark路径跟我的一样,照着黑马程序员的视频的话就基本是一样的)
export JAVA_HOME=/export/server/jdk export PATH=$PATH:$JAVA_HOME/bin export HADOOP_HOME=/export/server/hadoop export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin export SPARK_HOME=/export/server/spark export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin export PYSPARK_PYTHON=/export/server/anaconda3/envs/pyspark/bin export PATH=$PATH:$PYSPARK_PYTHON/python3.8 export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop export PATH=$PATH:$HADOOP_CONF_DIR
5)最后最后,【~/.bashrc】配置文件的配置
还没完....还有一个【~/.bashrc】配置文件需要配置我们的【JAVA_HOME】和 【PYSPARK_PYTHON】
执行:【vim ~/.bashrc】,然后将下面内容复制进去:
export JAVA_HOME=/export/server/jdk export PYSPARK_PYTHON=/export/server/anaconda3/envs/pyspark/bin/python3.8
6)再次解释spark和pyspark、pip下载pyspark、conda创建spark环境...的关系
这里给几个ai的解释吧
四、解释spark、pyspark交互式编程等原理
所谓Local模式下的spark,就是在一个单节点上,仅用一个进程去运行spark的程序
1、那么我们一共有3种形式开启spark
1、执行命令:【/export/server/spark/bin/spark-shell】,或全局范围内执行命令:【spark-shell】
此时可以看到,没有任何python相关的信息,命令行那也只有一个 “scala”,说明这启动的是我们Spark安装包原生自带的 spark程序
使用的是原生自带的scala语言,退出用的是:【:quit】
2、当我们在anaconda默认的环境下,也就是 (base) 环境下,我们执行命令:【pyspark】
此时就是在我们Anaconda自带的全局的Python环境中,自带的适配这个环境的 pyspark,可以看到下面的 “python” 版本信息很明显不是我们设定的 “3.8的虚拟环境”,而是Anaconda自带的python版本
使用的是的python语言,退出用的是:【exit()】
3、当我们激活pyspark虚拟环境,也就是在 (pyspark) 环境下,我们执行命令:【pyspark】
很明显可看到下面的 “python” 版本信息就是我们设定的 “3.8的虚拟环境”了,此时就是运行了我们虚拟环境下的 pyspark
使用的是的python语言,退出用的是:【exit()】
2、何为 “交互式” ?
就是 “一问一答”,我们输入一个代码,摁下回车就会有反馈回应,比如输出语句马上就能执行,写一行执行一行,但是代码不会保存
3、Spark的4040端口是什么?
在我们打开spark程序之后,会看到一个端口信息:
这跟开启了hadoop之后可以用 :http://node1:9870.com 一样,spark也提供了驱动器来通过浏览器展示spark进程的一个GUI界面,能够更直观的看到当前spark进程的很多信息细节
输入这个节点信息就可以进入,比如:node1:4040
而这个节点不是固定的,他会灵活检测当前4040这个端口是否被占用,假设占用了,就会迭代下一个端口来开启新的spark进程
比如我现在开两个终端窗口,一个打开base环境下的默认的pyspark,一个打开pyspark虚拟环境下的pyspark,然后可以发现两个进程分别都在不同的端口运行了