准备软件:
VMWare 15.5.1 + CentOS 7 + JDK1.8.0_241 + Hadoop3.2.1 + TectiaSSHClient + lrzsz
软件下载:
VMware 15下载
VMware 15安装流程
VMware 虚拟机激活密钥
CentOS 7 下载
JDK1.8 for Linux
Hadoop
Tectia SSH Client 6.4.15.49
Tectia SSH Client的破解crack网站
lrzsz(Linux服务器和window互传文件工具)
安装流程主要参考
针对hadoop3.2.1安装的其他参考
因机器、系统各不相同,配置不能照搬,需要理解每个参数作用是什么,默认值是什么,为什么需要手动设置。所以要有查阅官方配置文档的习惯,文档在官网最底下。
总结:
本次安装总的来说比较顺利,但是到最后启动hadoop时,出现了很多意想不到的问题,比如:
1.start-all.sh主节点启动hadoop服务的时候,出现了ERROR:Attempting to operate on hdfs namenode as root,解决方案在这里和这里。解决完了之前的问题,又发现其他从节点使用jps发现没有DataNode和NodeManager进程,我找到剩下两个从节点的hadoop文件夹下,就是找不到tmp这个临时数据文件夹和logs日志文件夹,期间郁闷了好久,又重头仔细梳理了一边安装过程,从xml文件配置到ssh通信的部分检查,找不到错误,后来灵机一动,想会不会是hadoop版本的问题啊,然后搜了下我安装的这个3.2.1版本的hadoop搭建过程,果然发现了有一些因为版本问题带来的不可抗力…
2.在配置hdfs-site.xml和mapred-site.xml文件的时候,hadoop3.x系列后的版本还要多填几个property,比如前者配置文件中,dfs.namenode.http-address参数,用以监听namenode的web地址,我一开始没有填,后来在浏览器就看不到hdfs的namenode信息;再比如后面这个配置文件中,mapreduce.application.classpath参数,解决方案的博主说明3.2以上版本需要增加配置的,不配置运行mapreduce任务可能会有问题,我配置完后果然可以正常启动hadoop了。这些在针对hadoop3.2.1安装的其他参考里都有详细的说明。
3.在一开始并没有在意的文件夹slaves和workers的区别,hadoop3.x系列里只有workers,没有slaves,我照着上面主要参考的安装流程还新建了一个slaves文件,填写了DataNode节点的信息,后来在master节点都没有启动成功hadoop。后来看了更新的、3.x系列的安装参考,在workers文件(其中原有localhost条目)添加集群的名称信息,果然能够正常启动。之前就听说因为一些political factors,很多的科技届的名词都被迫改变了。。 对此不作评价,但也在另一方面告诉我们,我们记忆中的东西会因为很多主观客观的因素变得不再熟悉,所以即便遇到一个很熟悉的事物、领域时,也不要太过想当然,要抱有一丝质疑的态度,实事求是。
还有其他一些更细节的小问题,比如集群搭建格式化时出现的解析错误,排查后发现时mapred-site.xml中的一个property写在了configuration外。。但是很快就能排查解决了。
还有,要运行示例程序,按照上面主要参考的过程就可以,另外要看到wordcount执行之后的结果,需要使用hdfs dfs -text
命令,将执行后的结果显示在终端上。
更加详细的内容,在这个博客中:HDFS常用文件操作命令