前提

Centos7 + hadoop2.6.0 + jdk1.8.0_261 + ssh

推荐工具:vmware虚拟机、winscp.exe、putty.exe

我把所有的文件都分享到了百度网盘,需要的朋友可以下载.

主线

jdk1.8

0x01

将jdk文件下载好后,移动至linux下(你想要保存的路径下)

0x02

putty.exe连接centos


0x03

进入centos后,更改环境配置

注意红框的地方,就是0x01中,你将jdk放入的地方

1
2
3
4
5
export JAVA_HOME=/usr/local/src/jdk1.8.0_261

export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar

export PATH=$PATH:${JAVA_HOME}/bin

0x04

验证是否成功

ssh配置

原理:Hadoop运行过程中需要管理远端Hadoop守护进程,在Hadoop启动以后,NameNode是通过SSH(Secure Shell)来启动和停止各个DataNode上的各种守护进程的。这就必须在节点之间执行指令的时候是不需要输入密码的形式,故我们需要配置SSH运用无密码公钥认证的形式,这样NameNode使用SSH无密码登录并启动DataName进程,同样原理,DataNode上也能使用SSH无密码登录到NameNode.

0x01

1
[root@localhost ~]# ssh-keygen

0x02

更改文件的权限(这一步我觉得无所谓,但是,安全起见,还是把.ssh文件夹改为700,authorized_keys文件改为600比较好)

0x03

验证ssh登陆不需要密码

hadoop

0x01

将hadoop文件(确保完整性)复制到centos7中

0x02

配置hadoop环境

vim /etc/profile

1
2
export HADOOP_HOME=/usr/local/src/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

0x03

验证hadoop环境是否配置好

0x04

更改配置文件:core-site.xml、hdfs-site.xml、mapred-site.xml(这个文件如果没有,那就复制mapred-site.xml.template并改名为mapred-site.xml“>、yarn-site.xml、slaves

(路径为/usr/local/src/hadoop/etc/hadoop/)

core-site.xml
1
2
3
4
5
6
7
8
9
10
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/src/hadoop/tmp</value>
</property>
</configuration>

注意

标识1:这个路径是你hadoop的路径,也和你的环境变量路径应该是一样的

标识2:这个文件需要你在hadoop路径下创建(无需考虑权限问题)

hdfs-site.xml
1
2
3
4
5
6
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
mapred-site.xml
1
2
3
4
5
6
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
yarn-site.xml
1
2
3
4
5
6
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
slaves
1
hadoop

配置完成

0x05

hdfs namenode -format格式化HDFS文件系统

0x06

cd /usr/local/src/hadoop/sbin

./start-all.sh运行脚本,即可完成

0x07

jps查看是否存在进程

1
2
3
4
5
6
[root@localhost sbin]# jps
17056 Jps
16657 ResourceManager
16504 SecondaryNameNode
16347 DataNode
16220 NameNode

打开浏览器,验证是否成功访问

配置局域网也可访问

题外话:虚拟机搭建的话,因为IP地址是自动分配的,所以有时候会出现IP地址变更的情况,所以我建议改成静态IP

如果要配置局域网也可访问,就涉及到linux的防火墙功能.

很简单,只需要关闭防火墙就行.

1
systemctl stop firewalld.service && systemctl disable firewalld.service

副本

此副本不考虑后期安全性,只是初学者尽快解决问题的快捷办法,大佬请绕道

注意:建议每次更改配置之前,先进入/usr/local/src/hadoop/sbin中,执行stop-all.sh停止hadoop服务,再进行更改,更改完成后,执行start-all.sh开启hadoop服务.

踩坑一

当我运行hdfs时,出现了这种情况

查看问题可以发现,是hadoop给的权限不够

参考:

解决方案:

cd /usr/local/src/hadoop/bin

chmod 777 *

over

修改后参考:

踩坑二

当我再一次运行hdfs namenode -format时,出现了这个

解决方案:

cd /usr/local/src/jdk1.8.0_261/bin/

chmod 777 *

参考:

修改后参考:

踩坑三

执行start-all.sh

老方法,直接chmod 777 *

踩坑四

执行start-all.sh

这里说的是它的java环境未设置

问题出在/usr/local/src/hadoop/bin/yarn

解决方案:

直接更改为绝对路径

踩坑五

再执行start-all.sh

解决方案:

将$JAVA_HOME、$HADOOP_HOME配置到.bashrc.bash_profile

并更新配置source .bashrcsource .bash_profile

踩坑六

解决方案:

1.查看centos的IP地址:ifconfig

更改/etc/hostname/etc/hosts如下

未完,待续