β

如何搭建一个 3 个节点的 Hadoop Cluster

凌云的博客 50 阅读

如何搭建一个 3 个节点的 Hadoop Cluster

分类:hadoop| 发布时间:2018-05-20 18:30:00


概述

本文主要讲述了如何使用 3 台机器来创建一个最简单的 Hadoop Cluster。

假设有 3 台机器:

创建 hadoop 用户

切换到 hadoop 用户,以下操作均在 hadoop 用户进行操作

安装 Hadoop

参考: Hadoop 编译以及安装 一文安装 Hadoop。

修改 hosts 文件

修改 /etc/hosts 文件,添加以下 3 行(需要分别在 3 个节点进行配置):

.168.1.10 node-master
.168.1.11 node1
.168.1.12 node2

配置 SSH key

修改 Hadoop 的配置文件

以下配置文件若无特别说明均位于 $HADOOP_INSTALL_DIR/etc/hadoop 目录下。

设置 Hadoop 环境变量

在 $HADOOP_INSTALL_DIR/etc/hadoop/hadoop-env.sh 这个文件添加以下内容:

export JAVA_HOME=/usr/lib/jvm/java-8-oracle/jre/bin
export HADOOP_LOG_DIR=/var/log/hadoop

创建日志目录,并且将其所有者修改为 hadoop 用户

% sudo mkdir -p /var/log/hadoop
% sudo chown hadoop:hadoop /var/log/hadoop

设置 NameNode 的地址

修改 $HADOOP_INSTALL_DIR/etc/hadoop/core-site.xml 为如下内容:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="http://cs-cjl.com/configuration.xsl"?>
<configuration>
  <property>
    <name>fs.default.name</name>
    <value>hdfs://node-master:9000</value>
  </property>
</configuration>

设置 HDFS 相关目录

修改 $HADOOP_INSTALL_DIR/etc/hadoop/hdfs-site.xml 为如下内容:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="http://cs-cjl.com/configuration.xsl"?>
<configuration>
  <property>
    <name>dfs.namenode.name.dir</name>
    <value>/home/hadoop/hdfs/namenode</value>
  </property>
  <property>
    <name>dfs.datanode.data.dir</name>
    <value>/home/ubuntu/hdfs/dataNode</value>
  </property>
  <property>
    <name>dfs.namenode.checkpoint.dir</name>
    <value>/home/ubuntu/hdfs/namesecondary</value>
  </property>
  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>
</configuration>

其中 dfs.replication 为 HDFS 中的数据保存多少份,由于我们这里只有两个 datanode 因此将其设置为 1。 当然也可以将其设置为 2,这样每个 datanode 都有相同的数据,这里的值不能大于 datanode 的个数。

配置 YARN

配置 workers

需要在 workers 文件添加所有的数据节点

node1
node2

配置内存分配

对于内存不足 8G 的主机来说,内存分配比较麻烦。

如果你的 node1 和 node2 的内存大于等于 8G,则可以跳过这部分内容。 这部分内容会介绍 MapReduce 作业的内存如何分配,以及假设我们只有 2G 内存将如何进行配置使得集群可以正常运行。

内存分配属性

一个 YARN 作业是由以下两种资源构成的:

所有这些都运行在 workers 节点。每个 worker 节点会有一个用于创建 container 的 NodeManager 守护进程。 ResouceManager 用于调度整个 cluster 中的 container 到各个 workers 节点。

我们需要配置以下 4 中资源分配属性:

这些属性的关系为:

一个 2G 内存的配置例子

对于一个只有 2G 内存的节点可以配置如下:

属性
yarn.nodemanager.resource.memory-mb 1536
yarn.scheduler.maximum-allocation-mb 1536
yarn.scheduler.minimum-allocation-mb 128
yarn.app.mapreduce.am.resource.mb 512
mapreduce.map.memory.mb 256
mapreduce.reduce.memory.mb 256

复制配置文件到每个节点

假设上面的配置已经在 node-master 进行配置,现在需要将其复制到 node1 和 node2。 假设 hadoop 都安装在 /home/hadoop/hadoop-3.1.0 目录下,使用如下命令:

% cd /home/hadoop/hadoop-3.1.0/etc/hadoop
% scp -r * node1:~/hadoop-3.1.0/etc/hadoop
% scp -r * node2:~/hadoop-3.1.0/etc/hadoop

格式化 HDFS

在使用 HDFS 之前需要先将其格式化,在 node-master 节点使用如下命令进行格式化:

% hdfs namenode -format

运行与使用 HDFS

格式化后需要先运行 namenode 和 datanode 的守护进程才能操作 HDFS。

启动后就可以使用 hdfs dfs 命令来操作 HDFS 了。

运行 YARN

可以通过以下命令查看正在运行的 YARN 节点

% yarn node -list

通过以下命令查看正在运行的 application

% yarn application -list

提交 MapReduce 作业到 YARN

我们以 Hadoop Book Example Code 的 MaxTemperature 为例,测试下搭建的cluster 能否正常运行 mapreduce 作业

参考

作者:凌云的博客
成功=工作+游戏+少说空话
原文地址:如何搭建一个 3 个节点的 Hadoop Cluster, 感谢原作者分享。

发表评论