配置静态IP
[hadoop@localhost /]$ sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33
按i键开始编辑。编辑结束后,按Esc退出,并输入:wq保存
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO=static //修改为静态
DEFROUTE=yes //修改
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="e70e461d-2e7d-43c2-ad4a-40fd60e7eeb4"
DEVICE="ens33"
//以下根据自己电脑的虚拟机-编辑-虚拟网络编辑器-VMnet8-NAT设置来配置
ONBOOT=yes
IPADDR=192.168.120.101 //这个是虚拟机hadoop101的ip地址
GATEWAY=192.168.120.2 //网关ip
DNS1=192.168.120.2 //和网关一样
NETMASK=255.255.255.0 //子网掩码
//重新启动刷新ip
[hadoop@localhost /]$ service network restart
//查看ip
[hadoop@localhost /]$ ifconfig
如上图所示则代表配置成功。如果使用虚拟机过程中发现网络有问题,ifconfig命令后只出现下半部分(lo:后面的部分),可以通过下列命令重新启动ip。
修改主机名
[hadoop@localhost /]$ sudo vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=hadoop101 //这里输入自己的主机名
//刷新主机名
[hadoop@localhost /]$ hostnamectl set-hostname hadoop101
//查看主机名
[hadoop@localhost /]$ hostname
关闭防火墙
//查看防火墙的状态
[hadoop@hadoop101 ~]$ systemctl status firewalld.service
//关闭防火墙
[hadoop@hadoop101 ~]$ systemctl stop firewalld.service
//永久关闭防火墙
[hadoop@hadoop101 ~]$ systemctl disable firewalld.service
jdk和hadoop并配置环境变量
- 首先,我们需要卸载虚拟机自带的jdk。
//查看jdk
[hadoop@hadoop101 ~]$ rpm -qa | grep -i java
//切换到root用户
[hadoop@hadoop101 ~]$ su root
//卸载jdk
[root@hadoop101 hadoop]# rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps
//再次查看jdk,可以看到什么也没有了
- 我们可以创建两个文件夹,software用来存放上传的压缩包,module用来存放解压的文件
//进入opt文件夹
[hadoop@hadoop101 ~]$ cd /opt/
//创建两个文件夹
[hadoop@hadoop101 opt]$ sudo mkdir module
[hadoop@hadoop101 opt]$ sudo mkdir software
//查看opt文件夹中的内容
[hadoop@hadoop101 opt]$ ll
//修改所在组和拥有者
[hadoop@hadoop101 opt]$ sudo chown hadoop:hadoop -R module/ software/
上传成功后,我们开始配置环境变量。
//解压jdk和hadoop到module文件夹
[hadoop@hadoop101 software]$ tar -zxvf jdk-8u212-linux-x64.tar.gz -C ../module/
[hadoop@hadoop101 software]$ tar -zxvf hadoop-3.1.3.tar.gz -C ../module/
//进入module文件夹
[hadoop@hadoop101 software]$ cd ..
[hadoop@hadoop101 opt]$ cd module
//配置环境变量
[hadoop@hadoop101 module]$ sudo vim /etc/profile.d/my_env.sh
##JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin
##HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export Path=$path:$HADOOP_HOME/sbin
//刷新
[hadoop@hadoop101 module]$ source /etc/profile
//测试
[hadoop@hadoop101 module]$ java -version
[hadoop@hadoop101 module]$ hadoop version
至此,我们的hadoop环境搭建就完成啦。
测试MapReduce案例
到这里便可以执行一些例子来感受下 Hadoop 的运行;Hadoop 附带了丰富的例子,包括 wordcount,terasort,join,grep,pi 等
- 测试grep案例
在此选择运行 grep 例子 创建 input 文件夹,将 etc/hadoop 目录下的 .xml 文件全部拷贝到 input 文件夹下
[hadoop@hadoop101]$ mkdir input
[hadoop@hadoop101]$ cp etc/hadoop/*xml input
使用 hadoop-mapreduce-examples-2.10.1.jar 来运行 grep:
[hadoop@hadoop101]$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.10.1.jar grep input output 'dfs[a-z.]+'
ls -l 查看输出的结果:可以看到生成了 output 文件夹,文件夹中包含两个文件,一个标志状态的文件 _SUCCESS,内无任何内容,success表示成功;另一个是输出结果文件 part-r-00000;进入到 output 文件夹中查看 part-r-00000 中的运行结果:
[hadoop@hadoop101 output]$ cat part-r-00000
1 dfsadmin
- 测试WordCount案例
切换路径到 /home/hadoop-3.1.3/share/hadoop/mapreduce目录下:
[hadoop@hadoop101 ~]$ cd /home/hadoop-3.1.3/share/hadoop/mapreduce
在 mapreduce 下创建一个测试文件 data.txt:
good better best
never let it rest
till good is better
and better best
good good study
day day up
today is a good day
使用 hadoop jar 命令来运行一个jar包,在jar包中可能存在多个可执行的类,目前需要运行的是其中的 wordcount;运行时需要两个参数:
输入路径:数据源文件或目录
输出路径:一个还不存在的目录,会自动创建
输入路径就是刚刚创建的data.txt,而输出路径必须是一个不存在路径,每次执行完成后会自动创建该目录,并生成一些结果文件:
[hadoop@hadoop101 mapreduce]$ hadoop jar hadoop-mapreduce-examples-2.10.1.jar wordcount data.txt output