1.虚拟机的安装
此处我选择的是VMware,激活码可以百度搜索,安装过程比较缓慢,需要耐心等待
---------------------------------------------------------------------------------------------------------------------------------
2.创建新的虚拟机
点击创建虚拟机,如果已经创建,导入即可
---------------------------------------------------------------------------------------------------------------------------------
3.下载镜像
多种镜像可以选择,我选择下载的是CentOS7。相比于ubantu,CentOS7下载速度更快,相对应的虚拟机克隆的速度也更快。但是图形化界面不如ubantu,对新手不友好。
---------------------------------------------------------------------------------------------------------------------------------
4.导入镜像
注意:一定要先选稍后安装,如果在这里直接安装,将会出现用户注册无效的问题,你将无法登录进入虚拟机
创立成功后,再在CD/DVD设置中,导入镜像文件。重启虚拟机,使其生效
---------------------------------------------------------------------------------------------------------------------------------
5.登入
一共有两种模式,一种是注册时注册的自定义用户,该用户权限很小,特征是命令前缀为$,另一种是root用户,该用户权限很大,特征是命令前缀为#。如果在登录界面输入的用户名是“root”(不加引号)那么将登入root用户。输入exit可以切换为自定义用户。此外,自定义用户可以输入su指令,切换到root用户
---------------------------------------------------------------------------------------------------------------------------------
6.网络设置
Hadoop需要至少三台机器互联互通,因此网络的设置至关重要,可以先采用ping www.baidu.com的方法,检验网络设置(点击ctrl+c中止该过程,不然会一直进行通信)
如果能显示,证明可以联通互联网,反之则需要调试网络。
打开虚拟网络编辑器,选择VMnet8模式,关闭使用本地DHCP分配IP地址选项(静态ip地址,不需要分配),同时点击NAT设置,查找本机子网IP,子网掩码以及网卡,记住他们。
以我的设置为例:
接下里,打开本机的网络配置器,选择VMnet8
修改IPV4协议,除了IP地址以外,其他地址按在虚拟网络适配器中查到的值抄写。IP地址头三组按查到的值抄写,最后一位写0-255之间的任意数。注意合理分配最后一位数,待会还会用到
输入ip addr查找虚拟机配置文件号
输入vi /etc/sysconfig/network-scripts/ifcfg-ens33(ens33是刚刚用ip addr查到的号码),按i进入编辑模式,给机器分配ip地址,要与在ipv4中设置的ip地址不同,我这里写的是200.编辑完成后按esc退出,按下:wq保存修改
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.198.200
NETMASK=255.255.255.0
GATEWAY=192.168.198.2
DNS=8.8.8.8
输入service network restart重启网络,使修改生效。最后再ping www.baidu.com检验。一台机子完成设置后,克隆两台(完整克隆,不要链接克隆!),再按同样的流程,修改为不同的ip地址(202,204)
我们采用主从结构搭建,三台机器为:
192.168.198.200 hadoop01
192.168.198.202 hadoop02
192.168.198.204 hadoop03
使用vi /home/hosts打开hosts文件,把上面那段代码加进去,完成后重启网络,使修改生效
使用相互ping的方法检验是否设置成功
注意:在这一步就可以关闭防火墙了,使用systemctl stop firewalld和systemctl disable firewalld.service指令。
---------------------------------------------------------------------------------------------------------------------------------
7.配置ssh免密登录
在主节点机器(hadoop01)使用ssh-keygen -t rsa生成ssh密钥
ssh-copy-id hadoop01
ssh-copy-id hadoop02
ssh-copy-id hadoop03
把密钥拷贝到三台机器上,这样就实现免密登陆了。这一步成功的基础在于,必须关闭防火墙
使用
ssh hadoop01
ssh hadoop02
ssh hadoop03
进行检验,看是否分发成功。输入exit即可断开连接
---------------------------------------------------------------------------------------------------------------------------------
8.远程连接工具的下载
putty和xshell均可以。xshell无需购买,家庭版足矣,此外xshell图形化界面更友好。下载之后采用ip地址连接的方式与虚拟机连接即可。值得注意的是,连接虚拟机时,虚拟机必须开机,不能关机!
---------------------------------------------------------------------------------------------------------------------------------
9.jdk下载传输
利用xshell或者putty和虚拟机建立连接。输入rz,如果没有任何反应那么意味着没有下载rz包,使用yum install语句,下载rz命令的资源包。同时,考虑到后续要设置java变量,区分命令和变量的颜色十分重要,我们同样使用yum install语句,下载vim语句的资源包(vim 语句区分不同变量的颜色十分醒目,便于我们修改、配置java变量)。使用家庭版xshell第一次上传时,可能会出现乱码,不要慌张,退出连接后,重新再上传一次基本上就不会有乱码了。输入ls检查下载的目录下是否有jdk压缩包。没有问题的话,将该压缩包解压(利用语句在虚拟机上解压,不要理解为在本机解压!)输入
tar zxvf 资源包名字
再次输入ls查看目录下是否有解压文件和安装包。这一步的时候,也可以上传hadoop 3.3.4的压缩包,上传过程同理
输入以下语句配置jdk变量
vim .bash_profile
输入:
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export JAVA_HOME=/jdk地址/jdk1.8.0_212
export PATH=$JAVA_HOME/bin:$PATH
(可以输入pwd查看jdk下载地址)
再输入,使配置的修改生效:
source .bash_profile
输入java -version检查虚拟机的jdk是否配置成功
如果出现不能识别java的报错,那就意味着要么jdk未正确解压,要么java变量未配置成功
---------------------------------------------------------------------------------------------------------------------------------
10.hadoop的解压与配置
输入如下命令,解压hadoop
tar zxvf hadoop-3.3.4.tar.gz
可以把压缩包移到想要的地址,合理分配内存资源,利用mv语句,比如这个地址:
/home/hadoop/hadoop-3.3.4
输入cd /home/hadoop语句,切换到该文件夹,输入ls查看是否成功的把压缩包移动到该文件夹下,如果用mv语句一直没有反应,那可以直接先切换到该文件下,然后使用rz语句,就在该文件夹下解压hadoop
接下来配置hadoop服务器上的各个文件:
/home/hadoop/hadoop-3.3.4/etc/hadoop/
切换到该目录下
输入
vim hadoop-env.sh
将# export JAVA_HOME=那一行的注释符删除,同时将地址配置为jdk安装的地址
接下来配置,core-site.xml
vim core-site.xml
在两个configuraiton标签之间插入:
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.198.200:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/hadoop/tmp</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131702</value>
</property>
然后配置hdfs-site.xml
vim hdfs-site.xml
同样的,插入:
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hadoop/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.http.address</name>
<value>192.168.198.200:50070</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>192.168.198.200:9001</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
还需要配置mapred-site.xml
vim mapred-site.xml
插入:
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>192.168.198.200:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>192.168.198.200:19888</value>
</property>
此外还有yarn-site.xml
vim yarn-site.xml
插入:
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>192.168.198.200:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>192.168.198.200:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>192.168.198.200:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>192.168.198.200:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>192.168.198.200:8088</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>1024</value>
</property>
注意:在hadoop3.3.4中,不再需要配置yarn-env.sh文件!
最后,配置环境变量
vim /etc/profile
输入:
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
export HADOOP_PID_DIR=/home/hadoop
export HADOOP_HOME=/home/hadoop/hadoop-3.3.4/
PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$JAVA_HOME/bin:$HOME/bin
export PATH
输入命令,使得配置生效:
source /etc/profile
---------------------------------------------------------------------------------------------------------------------------------
11.配置worker,为下一步分发hadoop以及后续守护线程的启动做准备
cd /home/hadoop/hadoop-3.3.4/etc/hadoop
vim workers
删除localhost,输入三台机器的ip地址
输入指令重启,使修改生效
---------------------------------------------------------------------------------------------------------------------------------
12.分发jdk,hadoop,file到两台从机
scp -r /home/jdk1.8.0_212 hadoop02:/home/
scp -r /home/jdk1.8.0_212 hadoop03:/home/
scp -r /etc/profile hadoop02:/etc/
scp -r /etc/profile hadoop03:/etc/
scp -r /home/hadoop hadoop02:/home/
scp -r /home/hadoop hadoop03:/home/
注意上传成功后要在两台从机分别重启配置文件,不然配置无效
---------------------------------------------------------------------------------------------------------------------------------
13.hadoop服务器启动
只需要在主虚拟机上启动服务器,第一次启动时要注意要进行格式化。不要轻易进行格式化,多次格式化会产生严重报错。如果这一次启动失败了,那么需要执行以下命令清除上一次格式化产生的错误数据
rm -rf tmp/ ----/home/hadoop目录下
mkdir tmp ----/home/hadoop目录下
rm -rf logs/ ----/home/hadoop/hadoop-3.3.4目录下
mkdir logs ----/home/hadoop/hadoop-3.3.4目录下
第一次启动,建议分别启动dfs和yarn,不要直接启动两个服务器,第一次启动直接用sbin/start-all.sh几乎百分之百会报错。采用sbin/start-dfs.sh、sbin/start-yarn.sh分别启动。没有报错的话,输入jps检查守护线程
或者输入hadoop fs命令
那么hadoop3.3.4就配置成功了!