主要参考:https://blog.csdn.net/xiaoxiangzi222/article/details/52757168/
下面大部分转自原文章,并且做了适当改动。
我这次使用了三台机器。
IP分别是77,78,79。 且77是master。
在这之前,我配置过单台的hadoop伪分布模式,所以这次配置分布式还是比较熟悉。
192.168.8.77 master77
192.168.8.78 slave78
192.168.8.79 slave79
安装步骤:
1、安装输入法、ssh、vim等必备包(忽略)
2.修改各个服务器的hostname和host
3.创建用户组和用户
4、配置各服务器之间以及和host主机之间可以通过相互ping通。
5.安装jdk和配置环境变量,检查是否配置成功(我不是用的openjdk)
6、配置ssh,实现节点间的无密码登录
7、master77配置hadoop,并将hadoop文件传输到slave节点
第1步忽略。
2.修改服务器的hostname和hosts文件
以master77服务器为例,打开终端,执行如下的操作,把hostname修改成master77,hosts修改成如下所示的样子:
#修改hostname的指令:
sudo gedit /etc/hostname
#修改hosts指令:
sudo gedit /etc/hosts
#将以下内容添加到hosts中
192.168.8.77 master77
192.168.8.78 slave78
192.168.8.79 slave79
同样地,在78和79机器上做相似的操作,分别更改主机名为slave78和slave79,然后把hosts文件更改和master一样。
3.创建用户和用户组(三台机器上都要操作)
1. 创建hadoop用户组
sudo addgroup hadoop
2. 创建hadoop用户
sudo adduser -ingroup hadoop hadoop
3. 给hadoop用户添加权限,打开/etc/sudoers文件
sudo gedit /etc/sudoers
按回车键后就会打开/etc/sudoers文件了,给hadoop用户赋予root用户同样的权限
在root ALL=(ALL:ALL) ALL下添加hadoop ALL=(ALL:ALL) ALL
4.检验各个主机之间能否连通
分别以刚刚创建的hadoop用户重新登录系统,以后的操作都以hadoop用户登录。
ping +主机名
5.安装jdk和配置环境变量
分别在每台主机上安装jdk,并配置环境变量。
1)下载jdk安装包,并将安装包拖入当中
自己在创建 /usr/下创建 java 文件夹
2)通过cd命令进入到安装包的当前目录,利用如下命令进行解压缩。
tar -zxvf jdk-8u161-linux-x64.tar.gz
把解压出来的放到 /usr/java下面
那我的 JAVA_HOME就是
/usr/java/jdk1.8.0_161
4)配置环境变量
sudo gedit /etc/profile
在末尾加上四行:
[plain] view plain copy
- #java
- export JAVA_HOME=/usr/java/jdk1.8.0_161
- export JRE_HOME=/usr/java/jdk1.8.0_161/jre
- export CLASSPATH=$JAVA_HOME/lib
- export HADOOP_HOME=/usr/local/hadoop
- export PATH=:$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
输入如下命令使配置生效:source /etc/profile
hadoop@slave79:/usr/java/jdk1.8.0_161$ java -version
java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)
6.配置SSH,实现节点间的无密码登录
本人在这一步经常出错,莫名其妙的错误,网上也找不到资料。需要自己多实验几次。
下面的 1.2.3在所有主机上都要做
1..安装ssh
[plain] view plain copy
- sudo apt-get install openssh-server
已有ssh或者安装成功了的输入命令
[plain] view plain copy
- ps -e | grep ssh
验证SSH是否成功安装输入
[plain] view plain copy
- ssh localhost
3.生成密钥Pair
ssh-keygen -t rsa
输入之后一直选择enter即可。生成的秘钥位于 ~/.ssh文件夹下。可用cd 命令进入查看。
4.在master77上,导入authorized_keys
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
5.远程无密码登录(把master上的authorized_keys拷贝到其他主机的相应目录下,如果某个slave下没有.ssh文件夹,先执行 ssh localhost)
注意,如果没有.ssh 不要自己mkdir,那样子没用。
#进入master的.ssh目录,执行复制操作
scp authorized_keys hadoop@192.168.8.78:~/.ssh/
scp authorized_keys hadoop@192.168.8.79:~/.ssh/
修改各台主机上authorized_keys文件的权限:
所有机器上,均执行命令:
chmod 600 .ssh/authorized_keys
完成之后,在master上执行下面操作,检查免密码登录是否成功。
ssh slave78(slave79)
7.master配置hadoop,然后将master的hadoop文件传送给node节点
我这次依然使用的hadoop2.7.5
hadoop@slave79:~$ hadoop version
Hadoop 2.7.5
Subversion Unknown -r Unknown
Compiled by root on 2018-02-15T01:44Z
Compiled with protoc 2.5.0
From source with checksum 9f118f95f47043332d51891e37f736e9
This command was run using /usr/local/hadoop/share/hadoop/common/hadoop-common-2.7.5.jar
1)解包移动
[plain] view plain copy
- #解压hadoop包
- tar -zxvf hadoop...
- #将安装包移到/usr/local/目录下
- mv hadoop... /usr/local/hadoop
2)新建文件夹
[plain] view plain copy
- #在/usr/local/hadoop目录下执行
- mkdir dfs
- mkdir dfs/name
- mkdir dfs/data
- mkdir tmp
3)配置文件:hadoop-env.sh(文件都在/usr/local/hadoop/etc/hadoop中)
修改JAVA_HOME值(export JAVA_HOME=/usr/java/jdk1.8.0_161) 最好这样写,不要写 {$JAVA_HOME}那样子
4)配置文件:yarn-env.sh
修改JAVA_HOME值(export JAVA_HOME=/usr/java/jdk1.8.0_161)
5)配置文件:slaves
将内容修改为:
slave78
slave79