- VMware
- Centos 7
- SwitchHosts!(可以不用)
- SecureCRT
- hadoop-3.1.3.tar
- jdk-8u212-linux-x64.tar
我们以搭建虚拟机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:WindowsSystem32driversetc,选中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/*



