广彐水厂 发表于 2020-5-13 16:23

Hadoop单机伪分布式环境搭建教程

本帖最后由 广彐水厂 于 2020-5-13 16:45 编辑

## 一、前提条件

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

+ (https://mp.weixin.qq.com/s/sTcyhn5hCYD6ThqZOR6g1Q)
+ (https://mp.weixin.qq.com/s/WNS9Ho-UWesQifwk4FjxQQ)

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

### 3.1 下载并解压

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

```shell
$ sudo tar -zxvf hadoop-2.7.7.tar.gz -C /opt/software/
```

### 3.2 配置环境变量

```shell
$ sudo vim /etc/profile
```

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

```bash
export JAVA_HOME=/opt/moudle/jdk1.8.0_191
export JRE_HOME=${JAVA_HOME}/jre
export HADOOP_HOME=/opt/software/hadoop-2.7.7
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$PATH
```

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

```shell
$ source /etc/profile
```

### 3.3 修改Hadoop配置

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

```bash
$ cd ${HADOOP_HOME}/etc/hadoop
```

#### 1. hadoop-env.sh

```shell
#25行 export JAVA_HOME
export JAVA_HOME=/opt/moudle/jdk1.8.0_191
#33行 export HADOOP_CONF_DIR
export HADOOP_CONF_DIR=/opt/software/hadoop-2.7.7/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>/opt/software/hadoop-2.7.7/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:///opt/software/hadoop-2.7.7/dfs/namenode_data</value>
      </property>
      <property>
                <!--datanode节点数据(元数据)的存放位置-->
                <name>dfs.data.dir</name>
                <value>file:///opt/software/hadoop-2.7.7/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
$ sudo 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 地址,由于是单机版本,所以指定本机即可:

```shell
hadoop

```

### 3.4 关闭防火墙

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

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

```

### 3.5 初始化

第一次启动 Hadoop 时需要进行初始化执行以下命令:

```shell
$ hdfs namenode -format

$ hadoop namenode -format

```

### 3.6 启动HDFS和YARN

```shell
$ start-dfs.sh
$ start-yarn.sh

```


### 3.7 验证是否启动成功

方式一:执行 `jps` 查看 `NameNode` 、 `DataNode`、`SecondaryNameNode`、`ResourceManager`、`NodeManager` 服务是否已经启动:

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

```

方式二:查看HDFS Web UI 界面,端口为 `50070`:

图片请看下方

查看YARN Web UI 界面,端口号为 `8088`:

图片请看下方


### 3.8 单机伪分布式官方wordcount案例测试

准备一个需要统计词频的小文件`wordcount.txt`

```properties
微信公众号:小康新鲜事儿 xiaokang xiaokangxxs
xiaokang
xiaokangxxs xiaokang1 xiaokang2
xiaokang2 xiaokangxxs
xiaokang6 xiaokang3 xiaokang2
小康新鲜事儿

```

将此文件上传至HDFS文件系统内(这里直接传到了根路径下。也可以自行创建目录)

```shell
$ hadoop fs -put ./wordcount.txt /

```

执行作业,测试wordcount

```shell
$ hadoop jar /opt/software/hadoop-2.7.7/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount /wordcount.txt /wc_result

```

查看结果

```shell
$ hadoop fs -cat /wc_result/part-r-00000
xiaokang      2
xiaokang1      1
xiaokang2      3
xiaokang3      1
xiaokang6      1
xiaokangxxs      3
小康新鲜事儿      1
微信公众号:小康新鲜事儿      1

```

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

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

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

```

启动任务历史服务器

```shell
$ mr-jobhistory-daemon.sh start historyserver

```

查看任务历史服务器 Web UI 界面,端口为`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和任务历史服务器生效

```shell
$ stop-yarn.sh
$ mr-jobhistory-daemon.sh stop historyserver

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

```

大家搭建过程中有任何问题可以进行**留言**

chinaqin 发表于 2020-5-13 16:30

大哥 你这个排版。。。。。看着晕

houzhiyong 发表于 2020-5-13 16:32

老哥 太乱了吧,最好弄成word吧

广彐水厂 发表于 2020-5-13 16:34

houzhiyong 发表于 2020-5-13 16:32
老哥 太乱了吧,最好弄成word吧

本来写时候格式都挺对的,一发表就全乱了{:1_923:},一会儿我重新搞下

elliot1990 发表于 2020-5-13 16:34

这个排版要是好些的话,容易弄明白的https://cdn.jsdelivr.net/gh/hishis/forum-master/public/images/patch.gif

zjf123456 发表于 2020-5-13 16:41

感谢分享,试试看

houzhiyong 发表于 2020-5-13 17:08

广彐水厂 发表于 2020-5-13 16:34
本来写时候格式都挺对的,一发表就全乱了,一会儿我重新搞下

我就是建议一下,不过谢谢你的好意https://cdn.jsdelivr.net/gh/hishis/forum-master/public/images/patch.gif

爱你分享 发表于 2020-5-13 17:35

楼主求一个linux系统镜像,网上太多了,不知道找哪个,给你评分了

广彐水厂 发表于 2020-5-13 17:45

爱你分享 发表于 2020-5-13 17:35
楼主求一个linux系统镜像,网上太多了,不知道找哪个,给你评分了

链接:https://pan.baidu.com/s/1mQ6eTORynQhusen7g8V-Gg
提取码:5436
这是我自用的CentOS7的镜像

小马过河007 发表于 2020-8-6 19:28

不错,正好要centos系统
页: [1]
查看完整版本: Hadoop单机伪分布式环境搭建教程