背景:
win10 + vmware14 + centos7 + jdk1.8 + hadoop2.7.3
前期的配置过程不说了,网上有很多对应的教程,建议别下载太新的jdk和hadoop,以后跑实例的时候可能会不方便,因此这里采用jdk1.8和hadoop2.7.3,版本在配置环境的时候应该都大同小异
这篇日志的过程很详细,我基本是按照这里配的:
https://blog.csdn.net/wl0909/article/details/53354999
本人三个节点配置分别为:
master 192.168.1.128
slaver1 192.168.1.129
slaver2 192.168.1.130
接下来介绍自己踩到的坑,若有朋友遇到相似的,或许可以实践一下:
坑1
我先安装了master节点,然后通过克隆得到slaver1和slaver2两个子节点,但是在设置ip地址时,网上都是对ifcfg-eth0文件进行修改,但我发现没有这个文件,只有ifcfg-ens33,而自己新建ifcfg-eth0文件后,当进行
service network restart
会报错,无法重置
其实直接在ifcfg-ens33上进行修改即可,反正我现在都OK,没有问题(注意要把dhcp改成static,静态ip)。
每个子节点都要进行上述操作。
坑2
设置SSH免密码登录时,发现sshd_config中没有RSAAuthentication 这一注释,手动编辑
倒是在ssh_config中有这一注释,但要注意,ssh_config是针对客户端的配置文件,而sshd_config是针对服务端的
坑3
按照教程配完ssh免密码登录,可是输入
ssh root@slaver1
依旧需要登录密码,后来发现进入管理员模式即可直接免密码登录
(我不知道这个免密码登录除了上述博客中用secure CRT连接虚拟机外,还有什么时候是必须要做的,但我并没有用上述软件传输文件)
坑4
关于本地PC与虚拟机直接的文件传输
上述教程用了secure CRT这一软件,但我下载登录之后(已确定可以免密登录),一直连接不上
后来发现安装了virtual tools之后可以直接从本地PC复制粘贴文件过去(注意如果直接用鼠标拖拉,会导致文件不全,tar -xzvf解压的时候会报错)
这里我先把文件粘贴到home的目录下(这个目录的操作不需要管理员权限),然后在终端的su用户通过mv指令将该文件移动到usr/java文件夹内
(我的所有文件都放在usr下的文件夹内,如usr/java何usr/hadoop)
坑5
hadoop文件下载我就不说了,官网目前有2.7.6的,这里下载的时候千万别下错了,我一开始下成了source源文件,一直没找到etc目录,后来发现自己傻了。当然如果是2.7.3或者其他的,一般都是OK的
坑6
在安装hadoop时,配置文件的编辑需要注意自己的路径和教程中路径的不同,如core-site.xml中:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://master.hadoop:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/tmp</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131702</value>
</property>
</configuration>
上述代码中master.hadoop 和 /home/hadoop/tmp 都要替换成自己的,比如我是master 和 /usr/hadoop/tmp
包括后面的hdfs-site.xml 、yarn-site.xml和 mapred-site.xml都一样
上述修改完成后,可以通过
scp -r /usr/hadoop 192.168.1.129:/usr/
scp -r /usr/hadoop 192.168.1.130:/usr/
直接复制到另外两个节点上,直接复制即可,不需要把其中的master修改成slaver
坑7
之前配置了java环境,相信输入
java -version
javac -version
都有了对应版本的输出,为了方便,可以把hadoop也加入到PATH中。hadoop指令位于hadoop-2.7.3/bin目录下。编辑profile:
vim /etc/profile
增加hadoop的环境变量:
export HADOOP_HOME=XXX(上述安装路径,如我是/usr/hadoop/hadoop-2.7.3
export PATH=.:$HADOOP_HOME/bin:$JAVA_HOME/bin:$PATH
这样以后也可以直接用hadoop来操作
坑8
环境配置完毕,浏览器输入master:50070也有了对应的页面,输入jps也有了输出,但想运行实例wordcount却老是出错,一会儿说:
/input file exists
而想要
hadoop fs -mkdir /input
又说
mkdir: no such file or directory
仔细检查了下路径没错,后来发现需要使用-p,并且添加完整的路径才行,如:
hadoop fs -mkdir -p /usr/hadoop/hadoop-2.7.3/input
以及
hadoop fs -put /usr/hadoop/file/file1.txt /usr/hadoop/hadoop-2.7.3/input
hadoop fs -put /usr/hadoop/file/file2.txt /usr/hadoop/hadoop-2.7.3/input
我不知道是哪里出了问题还是怎么样,网上的教程都是可以直接进行mkdir和put操作,我却需要输入完整路径
最终,还是成功运行了wordcount示例
加起来也差不多配了一天,主要一开始在ifcfg-eth0上花了很多时间,钻牛角尖一定要用这个网卡。
最后注意一点:
修改完ifcfg-ens33后,要运行如下指令使其生效
service network restart
修改了profile后,也要运行下面的指令:
source /etc/profile
以上是我配置hadoop时踩到的坑以及解决方法,若有什么更好的方法欢迎大家留言,或者遇到什么别的问题也可以评论,多多交流啦~~
That’s all, thank you!