Hadoop伪分布模式安装

启动Hadoop支持三种模式操作,分别是单机模式操作、伪分布模式操作和全分布模式操作。

单机模式操作是Hadoop的默认操作模式,当首次解压Hadoop的源码包时,Hadoop无法了解硬件安装环境,会保守地选择最小配置,即单机模式。该模式主要用于开发调试MapReduce程序的应用逻辑,而不会和守护进程交互,避免增加额外的复杂性。

伪分布模式操作是指在“单节点集群”上运行Hadoop,其中所有的守护进程都运行在同一台机器上。该模式在单机模式操作之上多了代码调试功能,可以查阅内存的使用情况、HDFS的输入输出以及守护进程之间的交互。

全分布模式操作是指一种实际意义上的Hadoop集群,其规模可从几个节点的小集群到成百上千个节点的大集群,甚至是成千上万的超大集群。

单机模式操作和伪分布模式操作均用于开发与调试的目的。真实的Hadoop 集群是全分布模式操作。

伪分布模式操作Hadoop集群,具体步骤如下。

 

此安装将在已经安装了单机hadoop的环境基础上进行,即接下来直接部署hadoop、配置hadoop相关文件。

 

建议开始之前,先对hadoop单机环境做一验证,以hadoop用户登录,执行如下命令,能正常显示结果即可。

$cd /apps/hadoop/bin

$./hadoop version

 

开始安装:

1 准备好两个目录:/apps/data

1)创建这两个目录

因为安装单机模式的时候已经建立了/apps目录,这里只需创建目录/data,命令为:

$sudo mkdir /data

 

2)更改这两个目录所属的用户、用户组,均为hadoop

$sudo chown -R hadoop:hadoop /apps

$sudo chown -R hadoop:hadoop /data

 

如下操作可以验证,两个目录的所属用户和用户组均已经改好。

Hadoop伪分布模式安装

 

2修改环境变量文件,添入hadoop的路径

这里仍然选择hadoop用户的~/.bashrc文件,打开在其尾部添加如下几行:

export HADOOP_HOME=/apps/hadoop

export PATH=${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$PATH

让变量生效:

$source ~/.bashrc

如下图所示的操作可以验证hadoop环境变量的配置是否正常。

Hadoop伪分布模式安装

 

3 修改hadoop配置文件

在/apps/hadoop/etc/hadoop目录下提供了hadoop的多个配置文件,如图所示。

Hadoop伪分布模式安装

 

其中,伪分布模式配置需要修改如下的几个文件。

(1)hadoop-env.sh文件

在文件中找到“export JAVA_HOME=${JAVA_HOME}”一行,在行首插入字符“#”将该行注释掉,再在此处插入如下的一行文本,效果如图所示。

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

Hadoop伪分布模式安装

 

(2)core-site.xml文件

打开该文件看到,在<configuration>与</configuration>标签之间没有内容,对其进行编辑,使其达到如图所示的最终效果。这里共做了两项配置,一项是fs.defaultFS——配置hadoop HDFS文件系统的地址,另一项是hadoop.tmp.dir——配置hadoop处理过程中,临时文件的存储位置(特别注意,目录/data/tmp/hadoop/tmp需要提前创建)。

<configuration>

    <property>

        <name>fs.defaultFS</name>

        <value>hdfs://localhost:9000</value>

</property>

<property>

        <name>hadoop.tmp.dir</name>

        <value>/data/tmp/hadoop/tmp</value>

</property>

</configuration>

 

Hadoop伪分布模式安装

 

创建需要的临时目录:

$ cd /data

$ mkdir -p tmp/hadoop/tmp

(3)hdfs-site.xml文件

打开该文件看到,在<configuration>与</configuration>标签之间没有内容,现将如下文本添加到两个标签之间,使其达到如图所示的最终效果。

  <property>

     <name>dfs.namenode.name.dir</name>

     <value>/data/tmp/hadoop/hdfs/name</value>

  </property>

  <property>

     <name>dfs.datanode.data.dir</name>

     <value>/data/tmp/hadoop/hdfs/data</value>

  </property>

  <property>

     <name>dfs.replication</name>

     <value>1</value>

  </property>

  <property>

     <name>dfs.permissions.enabled</name>

     <value>false</value>

  </property>

Hadoop伪分布模式安装

这里共配置了四项:

dfs.namenode.name.dir——配置元数据信息存储位置。

dfs.datanode.data.dir——配置具体数据存储位置。

dfs.replication——配置每个数据块的副本数量,这里只使用1台节点,所以设置为1,如果设置为2的话,运行会报错。

dfs.permissions.enabled——配置hdfs是否启用权限认证。

将/data/tmp/hadoop/hdfs目录创建出来:

$ mkdir /data/tmp/hadoop/hdfs

 

4 格式化文件系统

$ /apps/hadoop/bin/hdfs namenode –format

执行过程会有许多的信息产生,如果成功则会看到“Storage directory /data/tmp/hadoop/hdfs/name has been successfully formatted”。

5 启动NameNode和DataNode的守护进程

  $ /apps/hadoop/sbin/start-dfs.sh

守护进程日志将写入 $HADOOP_LOG_DIR 目录,默认是$HADOOP_HOME/logs。

 

6 HDFS的状态检查

jps执行结果可用来判断前边的安装是否成功。如果显示有NameNode 、DataNode 、SecondaryNameNode3个进程,如图所示,则表示成功,否则不成功。

Hadoop伪分布模式安装

另外,也可以Web方式检查。访问Web界面http://ip:50070 ,如图所示,表明安装成功。从中可以看到NameNodeDataNode的信息,也可以浏览到HDFS文件系统中的文件。

 

Hadoop伪分布模式安装

至此,HDFS安装完毕。

 

 

7 本步骤选做。这是一个本地化运行MapReduce作业的例子,随着后续步骤的完成,到时候就可以在YARN上运行MapReduce 作业了。

(1)在HDFS上创建目录,以便能运行这个作业

$ cd /apps/hadoop

$ bin/hdfs dfs -mkdir /user

$ bin/hdfs dfs -mkdir /user/hadoop

(2)复制本地/apps/hadoop/etc/hadoop目录下的文件到HDFS的input目录

$ bin/hdfs dfs -put etc/hadoop input

注意,复制时虽然提示有异常,但是不影响。最终复制到了HDFS的/user/hadoop/input。

(3)运行作业

$ bin/hadoop jar

share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.11.0.jar grep input output 'dfs[a-z.]+'

Hadoop伪分布模式安装

 

(4)查看统计结果

bin/hdfs dfs -cat output/*

查看结果如图所示。

Hadoop伪分布模式安装

8  YARN启用前的配置

YARN是一个对集群资源进行统一管理和调度的工具,可以大大提高集群的资源利用率。为了能够在YARN上运行MapReduce作业,首先需要配置两个相关文件。

(1)mapred-site.xml文件

步骤如下:

1)将存在的模板文件mapred-site.xml.template改名为mapred-site.xml

$ cd /apps/hadoop/etc/hadoop

$ mv mapred-site.xml.template mapred-site.xml

2)在该文件的<configuration>标签后增加如下文本,如图所示。

    <property>

        <name>mapreduce.framework.name</name>

        <value>yarn</value>

    </property>

Hadoop伪分布模式安装

作用是将mapreduce任务处理所使用的框架配置为yarn。

(2)yarn-site.xml文件

在该文件的<configuration>标签后增加如下文本,如图所示。

    <property>

        <name>yarn.nodemanager.aux-services</name>

        <value>mapreduce_shuffle</value>

    </property>

Hadoop伪分布模式安装

目的是指定所用服务,默认为空。

9 YARN的启动

配置完文件之后,就可以启动YARN了:

$cd /apps/hadoop/sbin/

$ ./start-yarn.sh

这样会启动两个守护进程——ResourceManager、NodeManager。

输入jps,查看当前运行的进程,如图所示。可以看到,比HDFS启动时多了ResourceManager与NodeManager2个进程。

 

Hadoop伪分布模式安装

此时,也可以访问Web界面http://ip:8088 ,如图所示,从中可以了解job的运行情况。

 

Hadoop伪分布模式安装

10 将第7步的例子在YARN方式下再运行一次

由于output是运行中自动生成的目录,现在有可能存在,为了顺利运行,先将其删除。

$ /apps/hadoop/bin/hadoop fs  -rm -r output

然后运行:

 $/apps/hadoop/bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.11.0.jar grep input output 'dfs[a-z.]+'

当看到有如图所示的流程时,表示作业已正常运行,hadoop环境没有问题。

 

Hadoop伪分布模式安装

此时,在8088端口也可以监控到1个作业正在运行,如图所示。

Hadoop伪分布模式安装

 

 

至此,Hadoop的伪分布式已经成功安装。

 

停止:

stop-dfs.sh

stop-yarn.sh