笔者使用VMware-workstation15+CentOS7+hadoop-3.2.0+jdk1.8.0_11,在本机使用虚拟机搭建了一主两从三个结点。话不多说,上干货。
下载WMwork15,并安装,如需破解,请百度一个注册码即可,至于hadoop,jdk和CentOS7,大家也可以在网上自行下载,这里就不赘述。
打开WMwork15,并新建虚拟机,
下一步:
下一步:
【注】主节点一般命名为namenode.安装位置不要选在C盘,虚拟机很占空间。
下一步:
下一步:
【注】这里点击自定义硬件可以修改虚拟机的设置,笔者在这里把主节点的内存设置为了2048MB
对CentOS7的设置:
对系统模块进行点击设置
【注】在这里选择带界面的安装还是简单安装,笔者将主节点的安装设置带操作界面的模式。
下一步:进行网络设置,点击wmwork的编辑–虚拟网络编辑器。选择NAT模式:
【注】为保证虚拟机和宿主机处于同一网段中(只有这样才能 ping 通),设置网卡地址与 VMne8t 同网段,故虚拟机的 IP 地址应设为 192.168.137.x,这里设置为 192.168.137.130。 点击“NAT 设置”,查看网关 IP,一般为 xxx.xxx.xxx.2,这里设置为 192.168.137.2
再对centos7的网络进行设置:
【注】注意修改主机名,如若忘记,安装完成后也可修改
安装完成后,以 root 用户登录,关闭防火墙,并禁止开机启动防火墙。这样能省很多麻烦。
[root@namenode ~]# systemctl stop firewalld.service
[root@namenode ~]# systemctl disable firewalld.service
测试网络连通性: 在本机使用cmd等ping一下
【注】如果返回结果如图所示就说明网络配置成功。当然,也可以在虚拟机中ping宿主机。
若ping不通,查看虚拟机的防火墙是否关闭,宿主机的防火墙也可在控制面板中关闭。
关闭防火墙等
3.2 第二个从节点既可以通过克隆实现,也可以通过手动再安装一遍,如若害怕出错,笔者推荐手动再安装一次。但是笔者在这里介绍一个克隆的方法。
关闭虚拟机 datanode1,选择菜单栏中的“虚拟机”——>“管理”——>“克隆”。 克隆类型选择“创建完整克隆”
datanode1: HWADDR=00:0C:29:F6:EA:26
datanode2: HWADDR=00:50:56:32:A1:9A
地址与被克隆的虚拟机不重复即可。
以 root 用户登录,更改新建主机的 hostname
[root@datanode1 ~]# vi /etc/hostname
将原有的 datanode1 改为 datanode2。
更改 datanode2 的 IP 配置,其中 eno16777736 是 CentOS 7 默认的网卡名称(7 之 前的版本默认名称为 eth0)。
[root@datanode1~]#vi/etc/sysconfig/network-scripts/ifcfg-eno16777736 IPADDR="192.168.137.132
关闭防火墙。
4.建立三个结点的ssh免密互访,
笔者使用的XShell连接工具,大家也可使用 SecureCRT
双击,并输入普通用户的账号密码进行登录,成功如下图所示
同理,建立其他两个连接即可
以 root 用户登录 namenode,修改/etc/hosts 文件。 将原有的内容注释,并改为以下内容
192.168.137.130 namenode
192.168.137.131 datanode1
192.168.137.132 datanode2
将/etc/hosts 文件拷贝至另两台虚拟机中。
[root@namenode ~]# scp /etc/hosts root@192.168.137.131:/etc/hosts
[root@namenode ~]# scp /etc/hosts root@192.168.137.132:/etc/hosts
分别在 namenode、datanode1、datanode2 虚拟机中,使用 hadoop 用户登录,生成 密钥对。
[trs@namenode ~]$ ssh-keygen -t rsa
中途采用默认值(需按三次“回车”)。
同理,在datanode1和datanode2中执行相同的操作。
此时,在/home/trs(你的用户名)/.ssh/目录下分别生成一个私钥 id_rsa 和一个公钥 id_rsa.pub。
分别以 trs用户(普通用户)登录 datanode1 和 datanode2,复制主节点 namenode 的公钥文件 至从节点 datanode1 和 datanode2。
[trs@datanode1 ~]$ scp /home/trs/.ssh/id_rsa.pub trs@namenode:/home/hadoop/.ssh/id_rsa.pub.datanode1
[trs@datanode2 ~]$ scp /home/trs/.ssh/id_rsa.pub trs@namenode:/home/hadoop/.ssh/id_rsa.pub.datanode2
[trs@namenode ~]$ cd /home/trs/.ssh/
[trs@namenode .ssh]$ cat id_rsa.pub >> authorized_keys
[trs@namenode .ssh]$ cat id_rsa.pub.datanode1 >> authorized_keys
[trs@namenode .ssh]$ cat id_rsa.pub.datanode2 >> authorized_keys
[trs@namenode .ssh]$ chmod 600 ~/.ssh/authorized_keys
这一步就是将三个结点的ssh公钥导入到namenode的authorized_keys 文件中,
【注】一定要对authorized_keys 进行赋权。
再将这个文件拷贝到其他两个文件中
[trs@namenode .ssh]$ scp ~/.ssh/authorized_keys trs@datanode1:/home/trs/.ssh/authorized_keys
[trs@namenode .ssh]$ scp ~/.ssh/authorized_keys trs@datanode2:/home/trs/.ssh/authorized_keys
说明:[hadoop@namenode ~]$ ssh-keygen -t rsa 这个命令将为 namenode 上的用 户 hadoop 生成其密钥对,询问其保存路径时直接回车采用默认路径,当提示要为生成的密钥输入 passphrase 的时候,直接回车,也就是将其设定为空密码。 生成的密钥对 id_rsa, id_rsa.pub,默认存储在/home/hadoop/.ssh 目录下然后将 id_rsa.pub 的内容复制到每个机器(也 包括本机)的/home/dbrg/.ssh/authorized_keys 文件中,如果机器上已经有 authorized_keys 这个 文件了,就在文件末尾加上 id_rsa.pub 中的内容,如果没有 authorized_keys 这个文件,直接 复制过去就行。
测试连通性
[trs@datanode1 ~]$ ssh namenode
[trs@datanode1 ~]$ ssh datanode2
[trs@datanode2 ~]$ exit
对三个结点进行相同测试即可
安装jdk和hadoop
首先在/home/trs(你的用户名)下建立Hadoop目录,使用FlashFXP将jdk与hadoop3.2的安装包导入此目录中,使用如下命令进行解压
tar -zxvf jdk-8u11-linux-x64.tar.gz -C /home/trs/Hadoop
tar -zxvf hadoop-3.2.0.tar.gz -C /home/trs/Hadoop
解压后效果如图:
以下都是配置普通用户的环境变量,使用普通用户登录。配置jdk环境变量,执行命令
vim ~/.bash_profile
编辑该文件,内容如下:
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
export JAVA_HOME=/home/trs/Hadoop/jdk1.8.0_11
export JRE_HOME=/home/trs/Hadoop/jdk1.8.0_11/jre
export CLASSPATH=.:$CLASSPATH:${JAVA_HOME}/lib:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH:$JRE_HOME/bin
编辑完成并保存退出后,刷新上述配置,使配置立即生效:
source ~/.bash_profile
运行java或javac命令
java -version
vi /home/trs/Hadoop/hadoop-3.2.0/etc/hadoop/hadoop-env.sh
添加以下内容
export JAVA_HOME=/home/trs/Hadoop/jdk1.8.0_11
配置环境变量:
vim ~/.bash_profile
在底部添加如下内容
export HADOOP_HOME=/home/trs/Hadoop/hadoop-3.2.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
是配置立即生效
source ~/.bash_profile
hadoop version
export JAVA_HOME=/home/trs/Hadoop/jdk1.8.0_11
修改core-site.xml中的内容
【注】其中的文件夹若不存在,请手动创建
<configuration>
<property>
<name>fs.defaultFSname>
<value>hdfs://node178:9000value>
property>
<property>
<name>hadoop.tmp.dirname>
<value>/home/trs/Hadoop/hadoop-3.2.0/tmpvalue>
property>
configuration>
修改hdfs-site.xml文件
<configuration>
<property>
<name>dfs.namenode.http-addressname>
<value>node178:50070value>
property>
<property>
<name>dfs.namenode.name.dirname>
<value>file:/home/trs/Hadoop/hadoop-3.2.0/dfs/namevalue>
property>
<property>
<name>dfs.datanode.data.dirname>
<value>file:/home/trs/Hadoop/hadoop-3.2.0/dfs/datavalue>
property>
<property>
<name>dfs.replicationname>
<value>3value>
property>
<property>
<name>dfs.webhdfs.enabledname>
<value>truevalue>
property>
<property>
<name>dfs.permissionsname>
<value>falsevalue>
<description>配置为false后,可以允许不要检查权限就生成dfs上的文件,方便倒是方便了,但是你需要防止误删除.description>
property>
configuration>
修改mapred-site.xml文件
<configuration>
<property>
<name>mapreduce.framework.namename>
<value>yarnvalue>
property>
configuration>
修改yarn-site.xml文件
<configuration>
<property>
<name>yarn.resourcemanager.hostnamename> #指定yarn的ResourceManager管理界面的地址,不配的话,Active Node始终为0
<value>node178value>
property>
<property>
<name>yarn.nodemanager.aux-servicesname> #reducer获取数据的方式
<value>mapreduce_shufflevalue>
property>
<property>
<name>yarn.nodemanager.vmem-check-enabledname>
<value>falsevalue>
<description>忽略虚拟内存的检查,如果你是安装在虚拟机上,这个配置很有用,配上去之后后续操作不容易出问题。description>
property>
configuration>
修改workers文件(其他版本的hadoop可能是slaves文件)
namdenode
datanode1
datanode2
将配置好的文件夹拷贝到datanode1、datanode2
scp -r /home/trs/Hadoop trs@datanode1:/home/trs/
scp -r /home/trs/Hadoop trs@datanode2:/home/trs/
【说明】将整个Hadoop目录拷贝到node180的trs用户目录下,包括子目录、文件
hdfs namenode -format
在hadoop-3.2.0/sbin目录下执行
start-all.sh
启动hadoop(stop-all.sh是停止hadoop)
使用jps命令查看正在运行的进程
namenode:
datanode1和datanode2:
出现如上内容,说明配置完成了!
【注】
HDFS管理首页,浏览器访问地址:
http://192.168.137.130:50070/
Yarn管理页,浏览器访问地址:
http://192.168.137.130:8088/cluster
问题总结:
127.0.0.1 localhost
192.168.137.130 NW_PL3S_RZFX
结束语
hadoop分布式环境配置是一件挺麻烦的事,希望大家保持耐心,相信自己能配置成功。
在这里感谢我的同事,上面很多内容是他的总结,他也帮助我解决了不少问题。这里贴出他的邮箱,以示感谢:[email protected]。