好久没有写文章了,主要还是技术学习少了,没有什么集中的干货分享给大家。最近我们在毕业实习,学习的是大数据,使用VMware,CentOS7,通过虚拟机配置Hadoop,配置完成后,在windows端,配置scala,使用IDEA运行scala项目。
最近遇到的问题非常多,感觉我就是个踩坑小子,别人一遍过两遍过,我三遍四遍才能弄好,遇到的问题不少人就没遇到,老师也不是很清楚,为了查了大量资料,劳神费力。所以把遇到的系列问题及解决办法分享出来,希望能帮助后来者少走弯路。
VMware-workstation-full-16.1.0下载:直接点击下载exe
CentOS-7-x86_64-DVD-镜像链接:CentOS镜像下载链接
提取码:gjal
这里需要说明的是,CentOS是用于虚拟机安装的,VM是运行虚拟机的,这个概念一定要清楚。还有就是, 由于不同的CentOS版本差异,安装过程稍微有些不同,有些版本在刚开始安装就让你输入用户名和密码,有些版本在完全安装好之后,进入界面会让你创建用户,再输入用户名和密码,所以在按照别人的安装步骤时,发现有不一样不要担心。还有就是有些版本安装过程或结束后会让你选择 时间,语言,最小安装选项,但是有些版本整个安装过程没有这些选项设置,你也不用担心,没有出现就不用管。下面这篇是安装虚拟机讲的比较好的,可以参考一下。
特别提醒:虚拟机账号默认root,密码推荐111,如果它提示太简单,你再次点击确定就好了,一方面设置太复杂不容易记,另外一方面,需要你输入密码的地方非常多,频率也非常高,密码复杂,你会很累。
虚拟机安装讲解
他的安装过程有些部分,比如语言选择,你可能遇不到,没关系,这种情况,你只用设置一下语言,如下图,你们创建好一个虚拟机后,进去会看到这个页面,没设置以前,你们看到的全是英文,可以根据位置进行设置
在区域与语言中设置就好了。
然后进入终端,我的背景就是终端界面,进去后就干一件事,输入 ifconfig,获取你当前虚拟机的IP
只有上图那个后面的才是你的虚拟机当前IP。
获取ip干嘛,当然是要进行连接,通常使用的远程连接软件一个是 XShell,一个是FinalShell,很多人可能接触的XShell比较多,我之前也是XShell用户,但是它的问题真的太多了,不稳定还收费,用一段时间后,就无法使用了,甚至重新安装后,还是会遇到同样的问题。因此转到了FinalShell,这个远程连接真的非常好用,稳定免费可视化,所以我强烈推荐大家用这个软件。
FinalShell下载链接:下载链接
提取码:dwh2
这是它的界面,按照如图就可以建立一个与虚拟机的连接
只用输入这些信息,点击确认,然后在首页点击连接就可以了。
好了,上面是给对安装软件有恐惧的朋友看的,下面讲我遇到的坑及解决办法。
问题1,在使用FinalShell连接虚拟机时,会遇到 连接超时,或者被拒绝,如图,java.net.ConnectException: Connection timed out: connect
遇到这两种情况,是因为这个会话连接的那台虚拟机ip地址变了,所以你去对应虚拟机下 重新获取ip地址,然后重新连接就好了。
问题2:ssh:Could not resolve hostname slave1:Name or service not know 在分发互信文件或者远程登录其他虚拟机时,出现这样的提示。
遇到这样的问题,就是防火墙的原因,输入 systemctl status firewalld 查看防火墙状态,
能看到它是活跃状态,再次输入 systemctl stop firewalld关闭防火墙,就好了。
提醒:尽量不要使用 systemctl disable firewalld 使防火墙永久开机不启动命令,这个命令没必要,而且容易导致其他问题,这是我踩的坑,不建议大家再去踩。
问题3:在获取hadoop版本,使用hadoop version命令时,出现 /opt/hadoop-2.8.5/bin/hadoop:行166:/usr/7lib/ jyvm/java-1.8.0-openjdak-1.8.0.131-11.b12.e17.x86 64/oin/java:没有那个文件或目录,出现这个问题的原因就是你虚拟机端的jdk出了问题。
解决办法,删除虚拟机自带的jdk,使用这个命令进行删除
yum remove *jdk*
,再使用这个命令搜索jdk重新安装
yum list |grep jdk*
,再进行安装
yum install -y java-1.8.0-openjdk-devel.x86_64
记得把 -y 后面的那一串,换成你选的jdk,但是无论选哪个版本,后缀必须是 devel.x86_64 。
问题4:在配置hadoop后,开启hdfs时,提示 yarn-site.xml: java:没有那个文件或目录,或者hdfs-site.xml: java:没有那个文件或目录,那说明就是hadoop压缩包有问题。
解决办法就是,把hadoop安装包删除后,重新下载一个,一定要确保完整的下载Hadoop,比如原压缩包为235.1MB,你下载解压缩后为235MB,虽然只差了0.1MB,但是就会出现上述问题,导致你无法启动hdfs和yarn 。
Hadoop压缩包下载链接:下载链接
提取码:dpsk
我这个Hadoop压缩包大小为235.1MB,你解压缩后应该也显示235.1MB,否则就删除重下。
Hadoop配置教学
在CentOS和Hadoop集群配置,我遇到的问题能说的清的就这些,剩下的不能说问题,只能说是无尽的深坑,现在进行总结,希望你们看了能避坑。
避坑事项:
1,只要你这个项目还需要使用虚拟机,就不要关机,虚拟机开关机一方面会导致ip改变,另外一方面可能会出现其他不可预料的问题,平时挂起就好了。
2,不要单方面关闭或者挂起虚拟机端,很容易导致finalshell无法连接到虚拟机,要么就是可以连接虚拟机,但是无法从finalshell端访问文件,就是打不开虚拟机端的文件,这就等于远程登陆已经失效了。出现这个问题,基本上解决不了,因为要解决这个问题,得先解决它后面的无数问题,最终只会无功而返。 最好也是唯一的解决办法就是,移除所有虚拟机,删除存放虚拟机目录下的所有文件,重新安装配置。
3,关于IP地址不断变化的问题,每个主机使用一个IP都有一个租期,租期到了自然会更换IP。所以每当IP改变无法连接时,重新获取,然后去 /etc/hosts 目录下,修改ip与主机名称的对应关系就好了。修改好主机之后,使用命令 for i in {1..3};do scp /etc/hosts@hslave${i}:/etc/hosts;done 分发到其他三台克隆机,红色字体那里修改为你的克隆机名称。
4,每新建一台虚拟机,第一件事就是删除原有jdk,使用yum 重新下载。因为新建的虚拟机中会自带一个jdk,那个jdk是不完整的,你后期使用一定会出问题,所以一开始就把它干掉。
5,每当重启了虚拟机,就使用一下这两个命令,,确保防火墙被关闭,避免它影响后续的一些命令。
systemctl status firewalld
systemctl stop firewalld
6,上面说了,IP不断改变也正常,但是千万不要试着把它修改为静态IP,虽然可以修改,保证后续IP固定,但是你把动态路由改为静态路由,会引出其他很多问题,比如你要使用yum,它会提示镜像依赖而无法下载,因此,千万不要入这个坑。
7,一定要注意命令中的中英文符号使用,比如中划线,中英文的中划线 - 有一些区别,用错了就会出麻烦,尤其是格式化NameNode的时候。
8,每次修改了/etc/profile 文件后,都要执行一下命令
source /ect/profile
source作用就是让文件中新放置的命令生效。
9,在进行远程登录时,推荐使用自己的手机热点,保持网络的稳定性,并且在连接时 只接受本次密钥连接,减少IP变化的次数。如果不使用finalshell时,将其会话全部关闭,避免再次连接时,出现单方面连接失败的错误,这个错误处理起来也比较麻烦。
下面进入到scala环节的问题及处理
放在里面什么也不用管,然后去配置环境变量,一个是在系统变量中 新增如图变量名和变量值,变量值就是你放scala文件夹的路径
还有就是 在 Path变量中,新增这么一行 ,放这么一行的时候一定要记得,开头和结尾都不能加空格,
%SCALA_HOME%\bin
环境变量配置好之后,在cmd中 输入 scala -version 查看scala版本,然后输入scala,你会惊奇的发现,它报了一大段错,就一个意思,空指针异常,你可以根据下面这篇博客去进行解决
scala配置好之后,这个时候重点就是使用IDEA创建IDEA项目,先说明一下,我的IDEA是2021社区版的。 创建的是maven项目,创建之前,先安装一个插件 Scala
安装插件之后,直接创建maven项目,什么也不勾选,除了改项目名字和位置,直接next创建maven项目,创建maven项目之后,你要解决的问题,就是如何创建scala文件。
首先你要在pom.xml中引入依赖
org.scala-lang
scala-library
2.11.8
点击右上角弹出的刷新。当你这时候去main目录下的java目录创建Scala文件时,发现它依然是没有这个选项,这个时候 如果你点击新建Scala项目或者Java项目,会发现它下面会提示library is not specified ,也就是说你没指定库 ,但其实你的IDEA中,目前没有库,所以你要引入库,解决办法是,
idea创建项目时提示 library is not specified的解决办法
在序号1这个长方形范围内,鼠标右键,它就会弹出如图所示的列表,点击 序号2那个选项,让它为你添加库,添加完成后,再次点击新建,就能看到 新建scala选项了。如图所示
至此,hadoop和scala,你都能够成功的跑起来了!
如果你有遇到新的问题和解决办法,欢迎评论区留言。