前言

本文介绍的主要是Hadoop的伪分布式的搭建以及遇到的相关问题的解决,做一下记录,jdk的安装这里就不做太多的介绍了,相信大家根据网上的安装介绍很快就能安装成功。

hadoop集群分为3种模型

  1. 单机模型:测试使用
  2. 伪分布式模型:运行于单机
  3. 完全分布式模型:适用于多台机器

以下是使用的环境

操作环境 主机名 IP地址 jdk hadoop版本
centos6.8 hadoop101 192.168.128.171 jdk1.8.0_191 hadoop-2.7.2

本文中使用的各种包,后续我会进行上传,以方便读者的使用

安装hadoop

hadoop上传与解压

​ 当我们配置好自己的虚拟机后,可以自行在网上下载xftp和xshell,来对于自己的虚拟机进行远程上传文件和远程操作,这两款软件对于学生而言都是免费的,大家可以自行在网站上下载,速度可能会有点慢。

​ 当我们下载好这两款软件后,就可以将hadoop的解压包上传至自己的虚拟机上去,我们将解压包上传至/opt/software中,开始解压hadoop,将hadoop解压至/opt/module/中,同时建议将java也解压至/opt/module/中,方便后面的管理。

配置环境变量

vi /etc/profile

具体配置

在/etc/profile的最后面加上,关于vi编辑器的用法可以自行百度一下,简单用法应该几分钟就能学会

export JAVA_HOME=/opt/module/jdk1.8.0_191
export PATH=$PATH:$JAVA_HOME/bin

export HADOOP_HOME=/opt/module/hadoop-2.7.2
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

在配置环境变量完成后,记得要进行让它生效

输入

source /etc/profile

即可生效

可以输入

hadoop version

如果成功则显示

Hadoop 2.7.2
Subversion Unknown -r Unknown
Compiled by root on 2017-05-22T10:49Z
Compiled with protoc 2.5.0
From source with checksum d0fda26633fa762bff87ec759ebe689c
This command was run using /opt/module/hadoop-2.7.2/share/hadoop/common/hadoop-common-2.7.2.jar

到这里hadoop就算是安装好了

配置hadoop

在伪分布式里我们只需要改三个配置文件core-site.xml和hdfs-site.xml还有hadoop-env.sh

这三个文件在hadoop目录下的etc/hadoop文件夹下

core-site.xml文件包含了NameNode主机地址,监听端口等信息,对于这个伪分布式模型来说,我的主机地址为hadoo101,NameNode默认使用的端口为8020。

修改core-site.xml

<configuration>
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop101:8020</value>
</property>
<!-- 指定hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>
</configuration>

hdfs-site.xml用于配置/HDFS的相关属性,例如数据块的副本参数,数据块的副本对于伪分布式来说应该为1

修改hdfs-site.xml

<configuration>
<!-- 指定HDFS副本的数量 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>

hadoop-env.sh 由于Hadoop是java进程,所以需要添加jdk

修改hadoop-env.sh

export JAVA_HOME=/opt/module/jdk1.8.0_191

对于伪分布式来说,改这三个配置文件够了。

在配置文件完成后,我们需要对hadoop进行初始化

在hadoop-2.7.2的目录下输入

bin/hdfs namenode -format

如果初始化成功的话,一个和下图相似

mark

到这里hadoop的配置就已经完成了

启动集群

在hadoop-2.7.2目录下输入

sbin/start-dfs.sh

启动dfs

输入

sbin/start-yarn.sh

启动yarn节点

启动成功应该和下图相似

mark

到这里我们的集群就算是启动成功了

我们可以在web端查看HDFS文件系统

http://192.168.128.171:50070

192.168.128.171是我的ip地址,如果配置的不同,改一下即可

web端的hdfs文件系统如下图所示

mark

测试集群

在HDFS文件系统上创建一个input文件夹

输入

hadoop fs -mkdir /input

在web端应该可以看到

mark

我们上传一个文件看看

hadoop fs -put LICENSE.txt /input

LICENSE.txt是hadoop自带的一个TXT文件

如果上传成功在web端应该可以看到

mark

这样就是上传成功了

我们在HDFS上跑一下MapReduce程序

输入

hadoop jar /opt/module/hadoop-2.7.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /input/LICENSE.txt /output

这里说明一下MapReduce要在启动yarn下运行

查看运行结果

在web端:

mark

part-r-00000这个就是运行出来的结果

我们可以使用命令行查看结果也可以把这个文件下载到本地,这里我们使用命令行查看

输入

bin/hdfs dfs -cat /output/part-r-00000

返回如下结果

mark

到这里基本可以了,我们的hadoop已经安装配置好了,可以进行下一步的学习了

关于MapReduce的WordCount程序详解可以看这个

https://blog.csdn.net/gulu_gulu_jp/article/details/51298164/

本次伪分布的配置就到这里了,如果还有问题可以向我反馈,谢谢阅读,下次的文章应该是完全分布式的hadoop的安装教程了