Hadoop 3.2.2 安装指南 (基于 Ubuntu)

简介

0.准备工作

由于 Hadoop 是基于 Java 进行开发的,因此我们需要安装与其 version 相匹配的 JRE 和 JDK。目前, Apache Hadoop 3.x 的版本已经完全支持 Java 8。由于 Ubuntu 的 OpenJDK 8 同时包含了 JRE 和 JDK,因此我们只需要下面的命令就可以将它们同时安装:

# 升级 apt
sudo apt update
# 安装与 Hadoop 3.2.2 相匹配的 openjdk-8
sudo apt install openjdk-8-jdk -y

安装完毕后,使用如下命令确认安装是否成功:

# 确认 java 版本是否正确
java -version; javac -version

由于Hadoop集群是通过ssh进行通讯的,为保证其顺利运行,我们需要安装 OpenSSH 的客户端和服务端。

# 安装 Openssh

sudo apt install openssh-server openssh-client -y

1.创建Non-root用户Hadoop

【注意:必须正确配置hadoop用户的ssh】

我们需要创建一个新的系统用户 hadoop ,并使用该用户安装并配置 hadoop。这样做的原因是将 hadoop 相关组件和进程与 root 用户隔离,从而保证系统运行更加安全,维护更加高效。

使用 adduser 创建新系统用户:

# 创建 hadoop 用户
sudo adduser hadoop

切换至 hadoop 用户,并设置密码:

# 切换至 hadoop 用户并设置密码
su - hadoop

【注意:下述操作都将切换至 hadoop 身份进行】 

为保证 Hadoop 的顺利运行,我们需要为 hadoop 用户建立无需密码的 ssh 连接。

首先,我们需要通过 ssh-keygen 生成公钥和密钥 (密钥创建的过程全部输入回车即可):

# 我们将在 ~/.ssh/ 目录下存放创建好的密钥
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

其次,我们使用 cat 命令将刚刚生成的无密码密钥的公钥写入 authorized_key 文件中:

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

最后,更改 authorized_key 以确保安全性:

chmod 0600 ~/.ssh/authorized_keys

至此,hadoop 用户的 ssh 就配置完毕了。我们可以使用如下命令来验证 ssh 的配置是否成功:

ssh localhost

现在,hadoop 用户可以不需要任何密码即通过 ssh 连接到 localhost 了。

2.下载Hadoop安装包并安装 (国内需使用清华大学镜像站)

【注意:由于国内装机速度非常缓慢,因此需要使用国内的镜像源下载安装包】

我们可以通过 Apache 官网或者清华大学镜像站下载到 Hadoop 的安装包。由于我们在国内,因此从清华大学镜像站下载将是最优选择。

在 hadoop 家目录使用 wget 命令下载 hadoop 安装包:

wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.2.2/hadoop-3.2.2.tar.gz

当压缩文件下载完毕后,使用如下命令解压:

tar xzf hadoop-3.2.2.tar.gz

至此,hadoop 的全部相关文件就被成功解压至 hadoop-3.2.2/ 目录下。

3.配置单节点(伪分布式)Hadoop 集群

3.1 单节点伪分布式集群的配置

【注意:各个配置文件需配置正确,且单节点的配置和真正分布式的配置差异极大,如果考虑使用真分布式,则需要配合Zookeeper另行配置】

【注意:当配置文件较为复杂时,需要使用Zookeeper进行各个节点上配置文件的管理工作】

在这一部分我们来配置单节点的 Hadoop 集群。这种部署方式又被称为 “伪分布式” Hadoop 部署方式,主要用于熟悉 Hadoop 的基本命令和特性,或进行数据处理的实验。在正式的生产环境中不推荐使用这种方式进行部署。

在部署 Hadoop 集群时,如下几个文件是非常重要的,我们之后会对其一一进行配置:

  • .bashrc
  • hadoop-env.sh
  • core-site.xml
  • hdfs-site.xml
  • mapred-site-xml
  • yarn-site.xml

配置环境变量:

使用 vim 打开位于家目录的 .bashrc 文件:

sudo vim .~/bashrc

将光标移动至文件最末端,键入 i 键加入如下内容至文件,并输入 Esc + wq 保存并退出。

# Hadoop Related Options

export HADOOP_HOME=/home/hdoop/hadoop-3.2.1

export HADOOP_INSTALL=$HADOOP_HOME

export HADOOP_MAPRED_HOME=$HADOOP_HOME

export HADOOP_COMMON_HOME=$HADOOP_HOME

export HADOOP_HDFS_HOME=$HADOOP_HOME

export YARN_HOME=$HADOOP_HOME

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/nativ"

在将上述内容写入 ~/.bashrc 后,使用如下命令更新操作系统的运行环境:

source ~/.bashrc

配置 hadoop-env.sh 

hadoop-env.sh 是一个至关重要的文件,它用于配置 YARN,HDFS,MapReduce,以及和 Hadoop 相关的各种设置。

在单节点的模式下,我们只需要配置与 Hadoop 相匹配的 Java 版本即可。由于我们使用的是 Hadoop 3.2.2 ,因此我们需要 JAVA8 与之相匹配。

使用如下命令打开 hadoop-env.sh

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

将我们机器上的 OpenJDK 的完整路径写入 相应位置:

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

Tips: 如果安装其他版本的 Hadoop 或者需要定位 Java 路径的正确位置,可以使用如下命令:

# 定位 Java 的位置,可以从输出看到 Java 编译器的位置
which javac

# 使用下面的命令定位 OpenJDK 的目录位置。
# 路径内容至 /bin/javac 之前的部分应该被配置到 $JAVA_HOME 变量中
readlink -f /usr/bin/javac

配置 core-site.xml

core-site.xml 定义了 HDFS 和 Hadoop 的核心特性。

为了设置单节点的 Hadoop 集群,我们需要指定 NameNode 的 URL,以及指定用于存放 MapReduce 临时信息的缓存路径。

使用如下命令打开 core-site.xml:

sudo vim $HADOOP_HOME/etc/hadoop/core-site.xml

将下面的内容添加至文件中。关于其他配置项的各种信息,可以查看 Apache Hadoop 文档进行更精细的配置。注意,fs.default.name 中我们的设置项为 0.0.0.0 ,这代表位于互联网上的任何机器都可以访问我们的 Hadoop 集群。如果进行更安全的配置需要指定哪些主机有权利访问。

<configuration>
    <property>
            <name>hadoop.tmp.dir</name>
            <value>/home/hadoop/tmpdata</value>
    </property>
    <property>
            <name>fs.default.name</name>
            <value>hdfs://0.0.0.0:9000</value>
    </property>
    <property>
            <name>hadoop.proxyuser.hadoop.groups</name>
            <value>*</value>
    </property>
    <property>
            <name>hadoop.proxyuser.hadoop.hosts</name>
            <value>*</value>
    </property>
    <property>
            <name>hadoop.proxyuser.server.hosts</name>
            <value>*</value>
    </property>
    <property>
            <name>hadoop.proxyuser.server.groups</name>
            <value>*</value>
    </property>
</configuration>

配置 hdfs-site.xml

hdfs-site.xml 的配置项用于管理每个节点元数据的存储位置,fsimage 文件以及集群日志。在单节点的模式下,我们可以将冗余存储的数量由 3 改为 1 ,以节省存储空间。

使用如下命令打开 hdfs-site.xml:

sudo vim $HADOOP_HOME/etc/hadoop/hdfs-site.xml

将如下配置粘贴至文件中。如有需要,可以自行调整 NameNode 和 DataNode 的目录位置。

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
-->

<!-- Put site-specific property overrides in this file. -->

<configuration>
        <property>
                <name>dfs.data.dir</name>
                <value>/home/hadoop/dfsdata/namenode</value>
        </property>
        <property>
                <name>dfs.data.dir</name>
                <value>/home/hadoop/dfsdata/datanode</value>
        </property>
        <property>
                <name>dfs.replication</name>
                <value>1</value>
        </property>

</configuration>

配置 mapred-site.xml

该文件主要与 MapReduce 的相关工作有关。

sudo vim $HADOOP_HOME/etc/hadoop/mapred-site.xml

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
-->

<!-- Put site-specific property overrides in this file. -->

<configuration>

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

</configuration>

配置 yarn-site.xml

该文件主要用于定义与 YARN 有关的配置项。 它包括了定义 NodeManager, Resource Manager, Containers, 以及 Application Master。

sudo vim $HADOOP_HOME/etc/hadoop/yarn-site.xml

<?xml version="1.0"?>
<!--
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
-->

<!-- Site specific YARN configuration properties -->
<configuration>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
        <property>
                <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
                <value>org.apache.hadoop.mapred.ShuffleHandler</value>
        </property>
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>127.0.0.1</value>
        </property>
        <property>
                <name>yarn.acl.enable</name>
                <value>0</value>
        </property>
        <property>
                <name>yarn.nodemanager.env-whitelist</name>
                <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PERPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
        </property>
</configuration>

4.格式化 Hdfs NameNode

在首次运行 Hadoop 服务之前,需要通过如下命令格式化 NodeNode 节点:

hdfs namenode -format

输入命令后,看到如下输出表示 NameNode 的格式化工作成功。

5.启动 Hadoop 集群

进入 hadoop-3.2.2/sbin 目录并执行如下命令启动 NameNode 和 DataNode:

cd /home/hadoop/hadoop-3.2.2/sbin
./start-dfs.sh

在上述服务成功运行后,启动 yarn 的相关组件:

./start-yarn.sh

当全部服务启动后,使用 jps 命令查看各个服务的运行状态。如果全部服务都正常运行(如下图所示),则证明单节点 Hadoop 的启动成功。

jps

6.验证集群是否启动成功 (通过浏览器+代码确认)

现在,我们可以通过浏览器访问相应服务的端口来查看服务的启动情况了:

从浏览器访问如下 url 即可查看各个服务的运行情况。

Hadoop Namenode UI:

http://localhost:9870

DataNode 运行情况:

http://localhost:9864

Yarn 资源管理服务:

http://localhost:8088

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值