Hadoop(三)Hadoop的伪分布式操作

本文已同步至个人博客liaosi's blog-Hadoop(三)Hadoop的伪分布式操作

本文示例使用的VMWare虚拟机,Linux系统版本是CentOS 7_64位,Hadoop的版本是Hadoop 2.8.2,JDK版本是1.8,使用的账号是创建的hadoop账号(参考Hadoop(一)Hadoop的介绍和安装前准备)。
安装Hadoop之前要保证系统已经安装了Java JDK,并配置好了Java环境变量。

在前面文章中讲的Hadoop的单机模式,并没有启动HDFS和YARN的进程,通过jps命令发现只是启动了一个叫RunJar的进程。Hadoop通常是一个大的集群,具体来说是HDFS集群和YARN集群,如果这两个集群都只有一台机器,即是本文所讲的伪分布式。如果这两个集群都是有多台机器,那就是完全分布式了,也是实际应用中的情形。

那么Hadoop的伪分布式如何操作呢?

一.准备工作

准备工作和Hadoop的单机模式操作一样(可参考Hadoop(二)Hadoop的HelloWorld(单机模式下的安装和使用)),主要包括包括两步:

  1. 在Hadoop的运行环境配置文件中配置Java的安装目录
    编辑 ${HADOOP_HOME}/etc/hadoop/hadoop-env.sh文件,将JAVA_HOME设置为Java安装根路径。

      cd $HADOOP_HOME/etc/hadoop
      vim hadoop-env.sh
    

  2. 配置Hadoop的环境变量
    /etc/profile文件中增加:

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

    比如我的/etc/profile设置成如下图:

二.编辑配置文件

进入到 $HADOOP_HOME/etc/hadoop 目录下,开始Hadoop单节点集群配置。
关于Hadoop的主要配置文件的说明,可以参考官网文档:http://hadoop.apache.org/docs... ,在左下角有Configuration的说明介绍。

图片描述

1.编辑 core-site.xml

<configuration>
    <!-- 1.配置文件系统的默认文件系统,这里配置的是hdfs文件系统。hdfs只是文件系统的一种,通过一个URI来配置,具体格式是 
    {协议名}://{namenode主机地址或主机名}:{namenode的端口} 
    namenode的端口也即是客户端访问hdfs文件系统的端口
    -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>

    <!-- 2.配置hadoop的临时数据存放目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/hadoop/app/hadoop-2.8.2/tmp</value>
    </property>
</configuration>

2.编辑 hdfs-site.xml

<configuration>
        <!-- 1.namenode存放name table(fsimage)在本地的哪个位置
             可以不配,默认值是 file://${hadoop.tmp.dir}/dfs/name -->
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>/home/hadoop/hadoopdata/dfs/name</value>
        </property>

        <!-- 1.datanode存放blocks在本地的哪个位置
             可以不配,默认值是 file://${hadoop.tmp.dir}/dfs/data -->
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>/home/hadoop/hadoopdata/dfs/data</value>
        </property>

        <!-- 3.文件在hdfs文件系统中副本的数量,默认值为3 -->
        <property>
                <name>dfs.replication</name>
                <value>1</value>
        </property>

        <!-- 4.配置secondary namenode的主机地址和端口号,
             可不配,默认是0.0.0.0:9868 -->
        <property>
                <name>dfs.secondary.http.address</name>
                <value>0.0.0.0:50090</value>
        </property>
</configuration>

3.编辑 mapred-site.xml

目录下只有 mapred-site.xml.template 这个文件,使用 cp mapred-site.xml.template mapred-site.xml 命令复制一份配置文件,Hadoop会先去找mapred-site.xml这个配置文件。

<configuration>
    <!-- MapReduce 程序运行的平台名称,使用yarn -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

4.编辑 yarn-site.xml

<configuration>
    <!-- reduce 获取数据的方式 -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>

三.格式化一个文件系统

执行命令:

hdfs namenode -format

输出信息类似如下:

[hadoop@server04 hadoop]$ hdfs namenode -format
18/05/05 16:33:37 INFO namenode.NameNode: STARTUP_MSG: 
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG:   user = hadoop
STARTUP_MSG:   host = server04/192.168.128.4
STARTUP_MSG:   args = [-format]
STARTUP_MSG:   version = 2.8.2
……
……
18/05/05 16:33:39 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
18/05/05 16:33:39 INFO util.ExitUtil: Exiting with status 0
18/05/05 16:33:39 INFO namenode.NameNode: SHUTDOWN_MSG: 
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at server04/192.168.128.4
************************************************************/

四.开启Hadoop集群

cd $HADOOP_HOME/sbin/

1.执行 start-dfs.sh 脚本


./start-dfs.sh

中间会提示输入当前登录的hadoop账号的密码,最好是能配置免密登录就不用每次都输密码,具体怎么设置可参考Linux服务器的SSH连接使用一文。
最后输出信息如下:

[hadoop@server04 sbin]$ ./start-dfs.sh 
Starting namenodes on [localhost]
The authenticity of host 'localhost (127.0.0.1)' can't be established.
ECDSA key fingerprint is 44:92:44:48:ec:dc:71:9b:90:a0:6e:92:20:8b:cf:16.
Are you sure you want to continue connecting (yes/no)? yes
localhost: Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
hadoop@localhost's password: 
localhost: starting namenode, logging to /home/hadoop/app/hadoop-2.8.2/logs/hadoop-hadoop-namenode-server04.out
hadoop@localhost's password: 
localhost: starting datanode, logging to /home/hadoop/app/hadoop-2.8.2/logs/hadoop-hadoop-datanode-server04.out
Starting secondary namenodes [localhost]
hadoop@localhost's password: 
localhost: starting secondarynamenode, logging to /home/hadoop/app/hadoop-2.8.2/logs/hadoop-hadoop-secondarynamenode-server04.out

2.执行 start-yarn.sh 脚本

./start-yarn.sh

输出信息如下:

[hadoop@server04 sbin]$ ./start-yarn.sh 
starting yarn daemons
starting resourcemanager, logging to /home/hadoop/app/hadoop-2.8.2/logs/yarn-hadoop-resourcemanager-server04.out
hadoop@localhost's password: 
localhost: starting nodemanager, logging to /home/hadoop/app/hadoop-2.8.2/logs/yarn-hadoop-nodemanager-server04.out

五.在浏览器中查看Hadoop服务

1.Hadoop NameNode 的默认端口是使用 50070, 可以再浏览器中访问 http://http://192.168.128.4:50070/ ,可以查看HDFS文件系统的使用情况,这里的192.168.128.4是我的虚拟机的ip地址。

图片描述

2.在 8088 端口获取Hadoop集群和应用的信息:http://192.168.128.4:8088/ 。

图片描述

3.在 50090 端口可以查看 secondary namenode 的信息:http://192.168.128.4:50090/ 。

图片描述

4.在 50075 端口可以查看 DataNode 的信息: http://192.168.128.4:50075/ 。

图片描述

六.测试Hadoop单节点的HDFS文件系统

1.执行如下命令创建一个 HDFS 文件目录

hadoop fs -mkdir /user
hadoop fs -mkdir /user/hadoop

2.把本地文件(test.log)复制到Hadoop的分布式文件系统

hadoop fs -put /home/hadoop/test.log /user/hadoop/log

查看是否复制成功:

[hadoop@server04 ~]$ hadoop fs -ls /user/hadoop
Found 1 items
-rw-r--r--   1 hadoop supergroup      44486 2018-05-05 17:59 /user/hadoop/log

在浏览器中也可以查看:
图片描述

图片描述

阅读 1.6k

推荐阅读
技术文档整理
用户专栏

后端开发

21 人关注
31 篇文章
专栏主页