Skip to content

Hadoop单机伪分布式

一、前提条件

Hadoop的运行依赖 JDK,需要预先安装,安装步骤见:

Linux下jdk的安装

二、Hadoop(HDFS和YARN)环境搭建

3.1 下载并解压

下载 Hadoop 安装包,这里是hadoop-2.7.7.tar.gz

bash
$ tar -zxvf hadoop-2.7.7.tar.gz -C /opt/data/
$ mv /data/hadoop-2.7.7 /data/hadoop

3.2 配置环境变量

bash
$ vi /etc/profile

在原来jdk基础上更新配置环境变量:

bash
export JAVA_HOME=/data/jdk
export JRE_HOME=${JAVA_HOME}/jre
export HADOOP_HOME=/data/hadoop
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$PATH

执行 source 命令,使得配置的环境变量立即生效:

bash
$ source /etc/profile

3.3 修改Hadoop配置

进入 ${HADOOP_HOME}/etc/hadoop/ 目录下,修改以下配置:

bash
$ cd ${HADOOP_HOME}/etc/hadoop

1. hadoop-env.sh

bash
#25行 export JAVA_HOME
export JAVA_HOME=/data/jdk
#33行 export HADOOP_CONF_DIR
export HADOOP_CONF_DIR=/data/hadoop/etc/hadoop

2. core-site.xml

xml
<configuration>
        <!--默认文件系统的名称 -->
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://hadoop:9000</value>
        </property>
        <!--指定HDFS执行时的临时目录 -->
        <property>
                <name>hadoop.tmp.dir</name>
                <value>/data/hadoop/tmp</value>
        </property>
</configuration>

3. hdfs-site.xml

指定副本系数、namenode、datanode文件存放位置和hdfs操作权限:

xml
<configuration>
        <property>
                <!--指定hdfs保存数据副本的数量,包括自己,默认为3-->
                <!--伪分布式模式,此值必须为1-->
                <name>dfs.replication</name>
                <value>1</value>
        </property>
        <property>
                <!--namenode文件存放位置,可以指定多个目录实现容错,用逗号分隔-->
                <name>dfs.name.dir</name>
                <value>file:///data/hadoop/dfs/namenode_data</value>
        </property>
        <property>
                <!--datanode文件存放位置-->
                <name>dfs.datanode.data.dir</name>
                <value>file:///data/hadoop/dfs/datanode_data</value>
        </property>
        <property>
                <!--设置hdfs操作权限,false表示任何用户都可以在hdfs上操作文件-->
                <name>dfs.permissions</name>
                <value>false</value>
        </property>
</configuration>

4. mapred-site.xml

说明:在${HADOOP_HOME}/etc/hadoop的目录下,只有一个mapred-site.xml.template文件,复制一个进行更改。

bash
$ cp mapred-site.xml.template mapred-site.xml
xml
<configuration>
        <property>
            <!--指定mapreduce运行在yarn上-->
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
</configuration>

5. yarn-site.xml

xml
<configuration>
        <property>
                <!--指定yarn的老大resourcemanager的地址-->
                <name>yarn.resourcemanager.hostname</name>
                <value>hadoop</value>
        </property>
        <property>
                <!--NodeManager获取数据的方式-->
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
</configuration>

6. slaves

配置所有从属节点的主机名或 IP 地址,由于是单机版本,所以指定本机即可:

bash
hadoop

3.4 关闭防火墙

不关闭防火墙可能导致无法访问 Hadoop 的 Web UI 界面:

bash
# 查看防火墙状态
$ firewall-cmd --state
# 关闭防火墙:
$ systemctl stop firewalld.service

3.5 初始化

第一次启动 Hadoop 时需要进行初始化,进入 ${HADOOP_HOME}/bin/ 目录下,执行以下命令:

bash
$ cd ${HADOOP_HOME}/bin
$ hdfs namenode -format

$ hadoop namenode -format

3.6 启动HDFS和YARN

进入 ${HADOOP_HOME}/sbin/ 目录下,启动 HDFS和YARN:

bash
$ cd ${HADOOP_HOME}/sbin
$ start-dfs.sh
$ start-yarn.sh

或者逐个服务启动

3.7 验证是否启动成功

方式一:执行 jps 查看 NameNodeDataNodeSecondaryNameNodeResourceManagerNodeManager 服务是否已经启动:

bash
$ jps
11637 ResourceManager
11734 NodeManager
11241 DataNode
11146 NameNode
12075 Jps
11436 SecondaryNameNode

方式二:查看HDFS Web UI 界面,端口为 50070http://服务器IP:50070

查看YARN Web UI 界面,端口号为 8088http://服务器IP:8088

或者也可以使用hadoop-daemon.sh start/stop NN/DN/SNNyarn-daemon.sh start/stop RM/NM

启动NameNode服务和DataNode服务

bash
$ hadoop-daemon.sh start namenode
$ hadoop-daemon.sh start datanode

查看NameNode和DataNode Web UI 界面,端口为50070http://服务器IP:50070

启动SecondaryNameNode服务

bash
$ hadoop-daemon.sh start secondarynamenode

查看SecondaryNameNode Web UI 界面,端口为50090http://服务器IP:50090

启动ResourceManager服务

bash
$ yarn-daemon.sh start resourcemanager

查看ResourceManager Web UI 界面,端口为8088http://服务器IP:8088

启动NodeManager服务

bash
$ yarn-daemon.sh start nodemanager

查看NodeManager Web UI 界面,端口为8042http://服务器IP:8042

三、配置任务的历史服务器

将以下内容加入到mapred-site.xml文件中

xml
<property>
    <!--配置任务历史服务器地址-->
    <name>mapreduce.jobhistory.address</name>
    <value>hadoop:10020</value>
</property>
<property>
    <!--配置任务历史服务器web-UI地址-->
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>hadoop:19888</value>
</property>

启动任务历史服务器:

bash
$ mr-jobhistory-daemon.sh start historyserver

查看任务历史服务器 Web UI 界面,端口为19888http://服务器IP:19888

四、开启日志聚集功能

将以下内容追加到yarn-site.xml文件中

xml
<property>
    <!--开启日志聚集功能-->
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
</property>
<property>
    <!--配置日志保留7天-->
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>604800</value>
</property>

需要重启Yarn和任务历史服务器生效

bash
$ stop-yarn.sh
$ mr-jobhistory-daemon.sh stop historyserver

$ start-yarn.sh
$ mr-jobhistory-daemon.sh start historyserver