二 Hadoop 单机伪分布式安装、配置和测试

426 阅读3分钟

一、Hadoop伪分布式安装

关于Hadoop的单机安装,可以参考第一篇文章。本章节演示如何在Linux环境下,进行伪分布式安装,并运行Hadoop自带的WordCount实例检测是否运行正常

Hadoop支持三种模式的安装

image.png

其中伪分布式安装时只在一台机器上模拟一个小集群,单集群中只有一个节点。此时每个Hadoop的守护进程是一个独立的Java进程。

二 修改配置文件

Hadoop的配置文件位于 /usr/local/hadoop/hadoop-3.3.6/etc/hadoop/ 中,伪分布式需要修改2个配置文件 core-site.xml和hdfs-site.xml

cd /usr/local/hadoop/hadoop-3.3.6/etc/hadoop/

  1. 修改core配置
vim core-site.xml 
<configuration>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>file:/usr/local/hadoop/hadoop-3.3.6/tmp</value>
                <description>Abase for other temporary directories.</description>
        </property>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://localhost:9000</value>
        </property>
</configuration>

其中指定HDFS 的地址和端口号,端口号按照官方文档设置为9000即可。

hadoop.tmp.cir是hadoop文件系统依赖的基础配置,很多路径都依赖它。它默认的位置是 在/tmp/($user)下面,但是在/tmp路径下的存储是不安全的,因为Linux一次重启,文件就可能被删除。上面修改了默认配置为:file:/usrllocal/hadoop/hadoop-3.1.2/tmp

image.png

  1. 修改hdfs配置 Hadoop守护进程的配置项目
vim hdfs-site.xml 
<configuration>
        <property>
                <name>dfs.replication</name>
                <value>1</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:/usr/local/hadoop/hadoop-3.3.6/tmp/dfs/name</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:/usr/local/hadoop/hadoop-3.3.6/tmp/dfs/data</value>
        </property>
</configuration>

因为这里采用伪分布式,集群中只有一个节点,因此副本数量replication的值也只能设置为1

image.png

三 配置免密SSH

ssh localhost

image.png

如果无法免密登陆请执行

1.  ssh-keygen -t rsa -P''-f~/.ssh/id_rsa

2.  cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys

3.  chmod 0600 ~/.ssh/authorized_keys

四 执行Execution

执行后续命令以本地运行一个 MapReduce 作业。

  1. 格式化文件系统

    由于Hadoop的很多工作是在自带的HDFS文件系统上完成的,因此需要将文件系统初始化之后才能进一步执行计算任务。 执行初始化的命令如下:

    bin/hdfs namenode -format
    

    初始化成功 image.png

    image.png

  2. 启动 NameNode守护进程和 DataNode 守护进程

    通过如下命令启动所有进程:

    sbin/start-dfs.sh
    

    Hadoop守护进程的日志输出目录是 $HADOOP_LOG_DIR,其默认值是HADOOP_HOME/logs

    image.png 如果输出如下错误信息

     ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
    

    解决办法是在etc/hadoop/hadoop-env.sh 配置文件最后,添加如下信息:

    image.png

    export HDFS_DATANODE_USER=root
    export HDFS_NAMENODE_USER=root
    export HDFS_SECONDARYNAMENODE_USER=root
    export YARN_RESOURCEMANAGER_USER=root
    export YARN_NODEMANAGER_USER=root
    

    再次执行启动命令

    sbin/start-dfs.sh
    

    成功运行之后,输入jps命令可以查看所有的java进程 image.png 说明伪分布式Hadoop已经安装启动成功

  3. 访问web页面

    默认地址为自己公网地址后端口:9870

    image.png

    通过该Web 界面,可以查看当前文件系统中各个节点的分布信息,浏览名称节点(namenode)上的存储、登录日志等等。

  4. 创建运行MapReduce作业必须的HDFS目录

    bin/hdfs dfs -mkdir /user
    
    bin/hdfs dfs -mkdir /user/<username>
    
  5. 复制输入文件到分布式系统中

    bin/hdfs dfs -mkdir input
    
    bin/hdfs dfs -put etc/hadoop/*.xml input
    

    如下是创建好的HDFS 目录,可以通过如下命令进行查询。

       bin/hdfs dfs -ls
       bin/hdfs dfs -ls
    
  6. 运行提供的实例程序

    bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar grep input output 'dfs[a-z.l+'
    
  7. 从分布式文件系统中复制文件到本地文件系统,验证输出的结果:

    bin/hdfs dfs -get output output
    
    cat output/*
    

    或者直接查看分布式文件系统的输出文件:

    bin/hdfs dfs -cat output/*
    

    image.png

  8. 完成以上步骤后,执行一下命令来停止所有的守护进程:

    sbin/stop-dfs.sh
    

    执行命令之前 java进程如下

    image.png

    执行之后会停止相应的java进程 image.png

五 单机运行Yarn

在伪分布式模式中,只需设定很少的参数,你就可以用 Yarn运行一个 MapReduce 作业,并激活 ResourceManager 守护进程和 NodeManager 守护进程。

YARN 主要是为集群提供更好的资源管理与任务调度,然而这在单机上体现不出价值,反而会使程序跑得稍慢些。因此在单机上是否开启 YARN就看实际情况了。

后续指令假定上述指令的第 1~4步已被执行,

  1. 设置如下配置参数

    mapred-site.xml

    vim etc/hadoop/mapred-site.xml
    

    image.png

    <configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
    </configuration>
    
    

    ** yarn-site.xml **

    vim etc/hadoop/yarn-site.xml 
    

    image.png

    <configuration>
    
    <!-- Site specific YARN configuration properties -->
            <property>
                    <name>yarn.nodemanager.aux-services</name>
                    <value>mapreduce_shuffle</value>
            </property>
    </configuration>
    
    
  2. 启动ResourceManager守护进程和NodeManager守护进程:

    sbin/start-yarn.sh
    

    image.png

    成功运行之后,输入jps命令可以查看所有的Java进程 image.png

  3. 浏览ResourceManager网页 默认地址加端口号8088

    image.png

  4. 运行一个MapReduce作业

  5. 完成以上步骤执行一下停止命令,停止所有守护进程

    sbin/stop-yarn.sh
    

    image.png

    备注:

    也可以用下面的启动/停止命令,等同于start/stop-dfs.sh+start/stop-yarn.s

    sbin/start-all.sh
    
    sbin/stop-all.sh