必备环境
- VMware
- Centos 7
- SwitchHosts!(可以不用)
- SecureCRT
- hadoop-3.1.3.tar
- jdk-8u212-linux-x64.tar
hadoop环境搭建
我们以搭建虚拟机hadoop101为例,介绍hadoop环境搭建。
配置静态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@hadoop101 ~]$ systemctl stop NetworkManager
[hadoop@hadoop101 ~]$ systemctl disable NetworkManager
[hadoop@hadoop103 ~]$ systemctl restart network
再次执行ifconfig命令,能看到我们设置的ip地址,问题就解决啦。
修改主机名
[hadoop@localhost /]$ sudo vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=hadoop101 //这里输入自己的主机名
//刷新主机名
[hadoop@localhost /]$ hostnamectl set-hostname hadoop101
//查看主机名
[hadoop@localhost /]$ hostname
远程工具连接
在虚拟机中先ping一下百度,检查网络是否正常。
[hadoop@hadoop101 ~]$ ping www.baidu.com
如果出现这样的效果,就说明我们ping成功了。(ctrl+Z 停止)
我们可以使用同样的命令ping一下我们的主机。在主机的cmd中输入以下命令可以查看主机的ip地址。注意,要找以太网适配器 VMware Network Adapter VMnet8 中的IPv4地址。
ipconfig /all
同样的,在主机的cmd中,我们也可以ping一下虚拟机,ip地址为我们刚刚设置的地址。
老是输入ip地址太麻烦,我们可以在SwitchHosts!中配置ip地址与域名映射,这样之后我们就可以用域名连接虚拟机了。(这一步可以跳过,之后每次连接输入ip地址即可)
如果打开SwitchHosts!后提示没有权限,需要以管理员身份运行,我们可以打开C:\Windows\System32\drivers\etc,选中hosts,右键-属性-安全-编辑,赋予Users完全控制的权限即可。
我们还可以采用SecureCRT进行远程连接。打开SecureCRT,连接我们的虚拟机。其中,主机名可以写ip地址,也可以直接写虚拟机的主机名。
另外,为了解决中文字符乱码的问题,我们需要打开会话选项-外观,将字符编码改成utf-8。
配置ip地址与主机名映射
[hadoop@hadoop101 ~]$ sudo vim /etc/hosts
将SwitchHosts!步骤中的内容添加到这个文件即可。
关闭防火墙
//查看防火墙的状态
[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了。我们需要用到远程连接工具SecureCRT。连接到hadoop101后,Alt+P到上传界面,进入我们存放压缩包的文件夹。
sftp> cd /opt/software/
把两个压缩包拖入界面即可。我们可以进入software文件夹,用命令ll查看是否上传成功。
上传成功后,我们开始配置环境变量。
//解压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环境搭建就完成啦。
hadoop单机模式
官方案例Grep
//创建文件夹input
[hadoop@hadoop101 hadoop-3.1.3]$ mkdir input
//把etc/hadoop/*.xml文件复制到input/文件夹中
[hadoop@hadoop101 hadoop-3.1.3]$ cp etc/hadoop/*.xml input/
//正则
[hadoop@hadoop101 hadoop-3.1.3]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar grep input/ output/ 'dfs[a-z.]+'
//查看
[hadoop@hadoop101 hadoop-3.1.3]$ cat output/*
wordcount
wordcount可以统计文件中每个单词出现的次数。我们可以创建一个简单的txt文档,统计每个人物出现的次数。
//创建文件夹wcinput/
[hadoop@hadoop101 hadoop-3.1.3]$ mkdir wcinput
//创建文件wc.txt并写入统计的每个人物
[hadoop@hadoop101 hadoop-3.1.3]$ cd wcinput/
[hadoop@hadoop101 wcinput]$ vim wc.txt
//统计分析
[hadoop@hadoop101 hadoop-3.1.3]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount wcinput/ wcoutput/
//查看
[hadoop@hadoop101 hadoop-3.1.3]$ cat wcoutput/*