【畅通版】配置spark环境(含前期的虚拟机virtualbox、ubuntu系统、Hadoop布局、Java环境配置等)

暨上一篇环境配置过程曲折,加上突然意识到25G的ubuntu系统不够干大事,自己的500G固态硬盘分了350出去当主系统盘之后,还有115G剩余,刚好可以把虚拟机和ubuntu全丢过去,又不会占用到原Windows系统盘的空间。于是重新装虚拟机和ubuntu系统,再在这基础上布局Hadoop、Java、spark等。
附上一篇帖:【曲折版】配置spark环境(含前期的虚拟机virtualbox、ubuntu系统、Hadoop布局、Java环境配置等)
https://blog.csdn.net/weixin_44216391/article/details/94590455

步骤还是没变。

一、在Windows中使用VirtualBox安装Ubuntu

这个步骤我已经不用看帖子了,不过为了方便读者参考,这里还是附上参考帖子:http://dblab.xmu.edu.cn/blog/337-2/

重新安装的virtual box,选择安装到了固态的另一个分区G盘(115G空间)。

重新安装的ubuntu,也选择安装到了G盘上(ubuntu“存储”),并分配了100G的空间。
最后分区如下:
boot:512M(引导文件系统)
swap:10G(内存交换)
/:25G(装系统和软件)
/home:余下所有空间,72G(用来放用户文件,越大越好)

至于我是为什么分了以上四个区,四个区分配空间大小是如何确定的——推荐搜索“ubuntu16.04 如何磁盘分区”,然后把能刷到的帖子都刷一遍,就心里有数了。
【畅通版】配置spark环境(含前期的虚拟机virtualbox、ubuntu系统、Hadoop布局、Java环境配置等)_第1张图片
后面安装完毕,此处不赘述。
再后面,系统老给我弹出“有新版本 ubuntu 18.04”,至于我更新还是不更新,此处也不赘述。

二、Hadoop安装教程_单机/伪分布式配置 Hadoop2.9.2/Ubuntu16.04
详情请戳 http://dblab.xmu.edu.cn/blog/install-hadoop/ (本教程由厦门大学数据库实验室 / 给力星出品,转载请注明。)

顺利进行中(下图)。
(1)创建hadoop用户
(2)更新apt

【畅通版】配置spark环境(含前期的虚拟机virtualbox、ubuntu系统、Hadoop布局、Java环境配置等)_第2张图片
安装vim(用来更改配置文件)——这一步安装蛮久,几分钟不止,要起身喝杯咖啡,或者看会儿书。
【畅通版】配置spark环境(含前期的虚拟机virtualbox、ubuntu系统、Hadoop布局、Java环境配置等)_第3张图片

(3)安装SSH、配置SSH无密码登陆
成功(如下图)。
【畅通版】配置spark环境(含前期的虚拟机virtualbox、ubuntu系统、Hadoop布局、Java环境配置等)_第4张图片

(4)安装Java环境
卡在了和之前一毛一样的地方。。。
vim ~/.bashrc~/.bashrc:executed by bash(1) for non-login shells.
【畅通版】配置spark环境(含前期的虚拟机virtualbox、ubuntu系统、Hadoop布局、Java环境配置等)_第5张图片
然后百度咯,看了这篇帖子《ubuntu中关于通过编辑.bashrc文件修改提示符的简单过程》https://blog.csdn.net/a351945755/article/details/20297023
突然顿悟,人家那不是报错,人家那是正常打开的bashrc文件内容…尴尬…
那就修改吧~这里有两个点提一下:
①修改bashrc文件,需要按“insert”键进入编辑模式,然后再输入export JAVA_HOME=JDK安装路径。输入完毕后,保存退出需要先按“ESC”键退出编辑模式,再同时按“shift”+“:”进入可操作保存退出的模式,然后在“:”后的光标处输入“wq”,然后按“enter”键保存退出(其中,w是保存,q是退出,wq就是保存退出)。如下图。
【畅通版】配置spark环境(含前期的虚拟机virtualbox、ubuntu系统、Hadoop布局、Java环境配置等)_第6张图片
②修改bashrc文件需要输入“export JAVA_HOME=JDK安装路径”,那“JDK安装路径”是什么呢?这里我们将terminal终端窗口往前拉一下,看看之前装的Java安装路径在哪里,然后就看到了(如下图)。在线装的最新稳定版Java,是Java8,和厦大教程帖中的Java7还是有点差别,幸亏查到了,不然按原帖输入“Java 7”估计环境变量又没生效,又bug。。。
【畅通版】配置spark环境(含前期的虚拟机virtualbox、ubuntu系统、Hadoop布局、Java环境配置等)_第7张图片
接下里按照帖子步骤走,使变量设置生效,检验变量值,查看变量信息。
至此,Java运行环境配置成功(如下图)。
【畅通版】配置spark环境(含前期的虚拟机virtualbox、ubuntu系统、Hadoop布局、Java环境配置等)_第8张图片

(5)安装 Hadoop 2
帖子下载的是Hadoop2.6.0,我下载的时候挑了V2最新的Hadoop2.9.2,下载并解压成功(如下图)。
PS:这时候已经出Hadoop 3 了,不过为了能够愉快地跟着林子雨老师的教学视频学习,还是先不追那么高版本了。。。
【畅通版】配置spark环境(含前期的虚拟机virtualbox、ubuntu系统、Hadoop布局、Java环境配置等)_第9张图片
(6)Hadoop单机配置(非分布式)
按照原帖,可以执行例子来感受下 Hadoop 的运行。Hadoop 附带了丰富的例子(运行 ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar 可以看到所有例子),包括 wordcount、terasort、join、grep 等。
然而,运行的时候,报了个错:jar does not exist or is not a nomal file(如下图)。那就算了不查看例子了,直接下一步。
【畅通版】配置spark环境(含前期的虚拟机virtualbox、ubuntu系统、Hadoop布局、Java环境配置等)_第10张图片
选择运行 grep 例子,我们将 input 文件夹中的所有文件作为输入,筛选当中符合正则表达式 dfs[a-z.]+ 的单词并统计出现的次数,最后输出结果到 output 文件夹中。
然而,又报错了(如下图中红框部分):JAVA_HOME is not set and could not be found.明明配置了环境,为嘛又出这个幺蛾子。。。

TIPS:这里直接按照原帖敲代码可能会出现权限不足的情况,“permission denied”——解决方法是,在语句前加个“sudo”(如下图中黄框部分),即可正常运行。
【畅通版】配置spark环境(含前期的虚拟机virtualbox、ubuntu系统、Hadoop布局、Java环境配置等)_第11张图片

好了,接下来解决 JAVA_HOME is not set and could not be found。

参照帖子 https://yq.aliyun.com/articles/288461(Hadoop启动报Error: JAVA_HOME is not set and could not be found解决办法)

vim /etc/hadoop/hadoop-env.sh    #设置JAVA_HOME

更改如下图:
【畅通版】配置spark环境(含前期的虚拟机virtualbox、ubuntu系统、Hadoop布局、Java环境配置等)_第12张图片
保存退出的时候提示没权限,E212:Can’t open file for writing,如下图:
【畅通版】配置spark环境(含前期的虚拟机virtualbox、ubuntu系统、Hadoop布局、Java环境配置等)_第13张图片
【说明】之前第一次安装ubuntu的时候,也遇到过这个E212权限问题,当时写了个解决方案帖子https://blog.csdn.net/weixin_44216391/article/details/95523017 (解决 Linux-Ubuntu 报错E212: Can’t open file for writing)。

那退出来,重新在原语句上加上sudo,再执行。

sudo vim /etc/hadoop/hadoop-env.sh     #设置JAVA_HOME
sudo vim /usr/local/hadoop/etc/hadoop/hadoop-env.sh   #设置JAVA_HOME

由于刚刚创建过一次文件,所以这次弹出文件重复提示(如下):
【畅通版】配置spark环境(含前期的虚拟机virtualbox、ubuntu系统、Hadoop布局、Java环境配置等)_第14张图片
输入“D”(想着delete),然后进入文件编辑模式。既然出来了编辑,就输入了export JAVA_HOME=/ussr/lib/jvm/java-8-openjdk-amd64,然后ESC后,wp保存退出。结果还是出现了一样的报错 E212:Can’t open file for writing.
之前出现重复编辑文件,想着可能是缓存的影响,于是重启电脑,希望没有这个问题。然而,这个问题还是又重复出现了。。。

回到swap重复文件那一步,Linux Found a swap file by the name filename。先解决这个问题。
参考①https://zhidao.baidu.com/question/2079779706547580708.html(Linux下想编辑/etc/sudoers文件,出现Found a swap file 的问题),②ubuntu删除文件的命令 https://blog.csdn.net/JerryWu145/article/details/53007202。

开始新一轮,步骤。

step1:删除swap文件(意在解决Linux Found a swap file by the name filename),语句为:

sudo rm -r /var/tmp/hadoop-env.sh.swp

step2:修改hadoop-env.sh配置文件(意在解决Error: JAVA_HOME is not set and could not be found),语句为:

sudo vim /usr/local/hadoop/etc/hadoop/hadoop-env.sh中设JAVA_HOME

进入编辑器,输入export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64,然后保存退出,成功退出后界面如下:
【畅通版】配置spark环境(含前期的虚拟机virtualbox、ubuntu系统、Hadoop布局、Java环境配置等)_第15张图片
至此,理论上应该解决了Error: JAVA_HOME is not set and could not be found。

回到厦大参考帖:(6)Hadoop单机配置(非分布式)。

cd /usr/local/hadoop
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar

成功把包(即帖子里说的“例子”)调出来了,感动到内牛满面。如下:
【畅通版】配置spark环境(含前期的虚拟机virtualbox、ubuntu系统、Hadoop布局、Java环境配置等)_第16张图片

继续接下来的步骤。

看着一切顺利,然而,最后一个语句 cat ./output/*(查看运行结果),又折戟沉沙。。。(如下图)
然而,这只是一次测试,我选择跳过,继续下一步。

当然,留出个疑问,等以后厉害了再回来看看,就是,./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep ./input ./output 'dfs[a-z.]+' 这句语句明明生成了output文件,为什么在下一个语句cat ./output/*中会提示文件不存在呢?
【畅通版】配置spark环境(含前期的虚拟机virtualbox、ubuntu系统、Hadoop布局、Java环境配置等)_第17张图片

(7)Hadoop伪分布式配置
一开门修改配置文件 core-site.xml,编辑好内容保存的时候又弹出报错(could not find the file hadoop cor-site.xml)。直接上解决方案:
参考链接 https://bbs.csdn.net/topics/391840578 (写入错误说找不到core-site.xml文件问题)

sudo vim /usr/local/hadoop/etc/hadoop/hadoop-env.sh
source /usr/local/hadoop/etc/hadoop/hadoop-env.sh

【畅通版】配置spark环境(含前期的虚拟机virtualbox、ubuntu系统、Hadoop布局、Java环境配置等)_第18张图片

sudo gedit /usr/local/hadoop/etc/hadoop/core-site.xml

cd /usr/local/hadoop
sudo gedit ./etc/hadoop/core-site.xml

这里又出现了些插曲,内容不细说,就是提醒:gedit 后面跟的/usr/local/hadoop/etc/hadoop/core-site.xml,路径前面不能加小数点“.”,加了就,呵呵了。我刚刚就是加了这个小数点,折腾了起码半小时不止,直到尝试cd ./usr/local/hadoop发现提示不存在此路径,才发现“万恶”的小数点问题。

gedit之后保存,出现warning(如下)
【畅通版】配置spark环境(含前期的虚拟机virtualbox、ubuntu系统、Hadoop布局、Java环境配置等)_第19张图片

查了一下,中文结果大部分说waring没关系,不影响执行结果。一个英文帖子则说是,版本比较旧,16.04已经停止更新,这个warning可以尝试升级到新版本解决。早知道…刚刚系统提示升级到18.04我就先升级了。。。
参考帖子:https://bugs.launchpad.net/ubuntu/+source/gedit/+bug/1622536 (Setting attribute metadata::gedit-position not supported)
帖子里提到:“ if you are then please upgrade to the latest Ubuntu version and re-test.”

随后尝试用vim 来编辑,

 sudo vim /usr/local/hadoop/etc/hadoop/core-site.xml

打开如下图,已经是修改之后的了,说明刚刚gedit成功了。
【畅通版】配置spark环境(含前期的虚拟机virtualbox、ubuntu系统、Hadoop布局、Java环境配置等)_第20张图片
那接下来继续修改另一个配置文件hdfs-site.xml。顺利,不发图了。

sudo gedit /usr/local/hadoop/etc/hadoop/hdfs-site.xml

配置完成后,执行 NameNode 的格式化:

sudo /usr/local/hadoop/bin/hdfs namenode -format

总算看到一个“has been successfull”字样,虽然没有“exit with status 0”.
【畅通版】配置spark环境(含前期的虚拟机virtualbox、ubuntu系统、Hadoop布局、Java环境配置等)_第21张图片

接着开启 NameNode 和 DataNode 守护进程。

sudo /usr/local/hadoop/sbin/start-dfs.sh

神了,密码不对(下图)。明明统一了密码,也试了不输任何内容直接回车。后来查了一下,又试了一次“不输任何内容直接回车”,然后就畅通了。不懂原理,不过既然路通了,就先往前走吧。
【畅通版】配置spark环境(含前期的虚拟机virtualbox、ubuntu系统、Hadoop布局、Java环境配置等)_第22张图片
连接上(如下)。
【畅通版】配置spark环境(含前期的虚拟机virtualbox、ubuntu系统、Hadoop布局、Java环境配置等)_第23张图片

然而,后面作死,改了bashrc后再次执行 ./sbin/start-dfs.sh 启动 Hadoop,就一直密码不对无法授权了。通过命令 jps 来判断是否成功启动,结果也堪忧。。。(如下图)
【畅通版】配置spark环境(含前期的虚拟机virtualbox、ubuntu系统、Hadoop布局、Java环境配置等)_第24张图片

如果是密码原因,那暂时先跳过,继续下一步:运行Hadoop伪分布式实例。

(8)运行Hadoop伪分布式实例

要使用 HDFS,首先需要在 HDFS 中创建用户目录: ./bin/hdfs dfs -mkdir -p /user/hadoop
执行无法连接,估计是刚刚没能顺利获取权限运行Hadoop(即未连接)。那,问题就变成,“寻找密码”,登上Hadoop了。
【畅通版】配置spark环境(含前期的虚拟机virtualbox、ubuntu系统、Hadoop布局、Java环境配置等)_第25张图片
【备注】从本文开篇至此,即,从卸载原ubuntu系统和virtualbox到重新安装到配置Java到配置Hadoop,到现在,时间段是2019.7.13周六9:30~18:20,中间零零散散有处理了一些事情,但用时不多。
为了健康早睡,晚上大块时间适合安安静静看书,而不适合噼里啪啦捣鼓系统和环境。故,今日Hadoop配置到此截止,晚上是看浏览Peter的《机器学习实战》时间。

(未完待续)

你可能感兴趣的:(数据分析工具学习帖)