如何在CentOS/RHEL 8上安装和配置Hadoop

时间:2019-05-29 14:47:42  来源:igfitidea点击:

Hadoop是一个免费的、开源的、基于Java的软件框架,用于在计算机集群上存储和处理大型数据集。它使用HDFS存储数据,并使用MapReduce处理这些数据。它是一个大数据工具的生态系统,主要用于数据挖掘和机器学习。它有四个主要组件,如Hadoop Common、HDFS、YARN和MapReduce。

在本指南中,我们将解释如何在RHEL/CentOS 8上安装ApacheHadoop。

步骤1–禁用SELinux

在开始之前,最好禁用系统中的SELinux。

要禁用SELinux,请打开/etc/SELinux/config文件:

$ nano /etc/selinux/config

将下面这行改成:

SELINUX=disabled

完成后保存文件。接下来,重新启动系统以应用SELinux更改。

步骤2–安装Java

Hadoop是用Java编写的,只支持Java版本8。可以使用DNF命令安装OpenJDK 8和ant,如下所示:

$ dnf install java-1.8.0-openjdk ant -y

安装后,使用以下命令验证已安装的Java版本:

$ java -version

openjdk version "1.8.0_232"
OpenJDK Runtime Environment (build 1.8.0_232-b09)
OpenJDK 64-Bit Server VM (build 25.232-b09, mixed mode)

步骤3–创建Hadoop用户

出于安全原因,最好创建一个单独的用户来运行Hadoop。

运行以下命令以创建名为hadoop的新用户:

$ useradd hadoop

接下来,使用以下命令设置此用户的密码:

$ passwd hadoop

步骤4–配置基于SSH密钥的身份验证

接下来,需要为本地系统配置无密码SSH身份验证。

首先,使用以下命令将用户更改为hadoop:

$ su - hadoop

接下来,运行以下命令以生成公钥和私钥对:

$ ssh-keygen -t rsa

将要求我们输入文件名。只需按回车键即可完成该过程:

Generating public/private rsa key pair.
Enter file in which to save the key (/home/hadoop/.ssh/id_rsa): 
Created directory '/home/hadoop/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/hadoop/.ssh/id_rsa.
Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:a/og+N3cNBssyE1ulKK95gys0POOC0dvj+Yh1dfZpf8 Hyman@theitroad
The key's randomart image is:
+---[RSA 2048]----+
|                 |
|                 |
|              .  |
|     .   o o o   |
|  . . o S o o    |
| o = + O o   .   |
|o * O = B =   .  |
| + O.O.O + +   . |
|  +=*oB.+ o     E|
+----[SHA256]-----+

接下来,将id_rsa.pub中生成的公钥添加到 authorized_keys 并设置适当的权限:

$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 640 ~/.ssh/authorized_keys

使用以下命令验证无密码SSH身份验证:

$ ssh localhost

提示向已知主机添加RSA密钥来对主机进行身份验证。键入yes并按Enter来验证本地主机:

The authenticity of host 'localhost (::1)' can't be established.
ECDSA key fingerprint is SHA256:0YR1kDGu44AKg43PHn2gEnUzSvRjBBPjAT3Bwrdr3mw.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
Activate the web console with: systemctl enable --now cockpit.socket

Last login: Sat Feb  1 02:48:55 2020
[Hyman@theitroad ~]$

步骤5–安装Hadoop

首先,使用以下命令将用户更改为hadoop:

$ su - hadoop

使用wget命令下载最新版本的Hadoop:

$ wget http://apachemirror.wuchna.com/hadoop/common/hadoop-3.2.1/hadoop-3.2.1.tar.gz

解压下载的文件:

$ tar -xvzf hadoop-3.2.1.tar.gz

将提取的目录重命名为hadoop:

$ mv hadoop-3.2.1 hadoop

接下来,需要在系统上配置Hadoop和Java环境变量。
编辑 ~/.bashrc文件:

$ nano ~/.bashrc

添加下面内容:

export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.232.b09-2.el8_1.x86_64/
export HADOOP_HOME=/home/hadoop/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_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/native"

保存并关闭文件。然后,使用以下命令激活环境变量:

$ source ~/.bashrc

接下来,打开Hadoop环境变量文件:

$ nano $HADOOP_HOME/etc/hadoop/hadoop-env.sh

根据JAVA安装路径更新JAVA_HOME变量:

$ export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.232.b09-2.el8_1.x86_64/

步骤6–配置Hadoop

首先,需要在Hadoop主目录中创建namenode和datanode目录:

运行以下命令创建这两个目录:

$ mkdir -p ~/hadoopdata/hdfs/namenode
$ mkdir -p ~/hadoopdata/hdfs/datanode

接下来,编辑core-site.xml文件:

$ nano $HADOOP_HOME/etc/hadoop/core-site.xml

修改系统主机名:

<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://hadoop.tecadmin.com:9000</value>
        </property>
</configuration>

编辑 hdfs-site.xml文件:

$ nano $HADOOP_HOME/etc/hadoop/hdfs-site.xml

更改NameNode和DataNode目录路径:

<configuration>

        <property>
                <name>dfs.replication</name>
                <value>1</value>
        </property>

        <property>
                <name>dfs.name.dir</name>
                <value>file:///home/hadoop/hadoopdata/hdfs/namenode</value>
        </property>

        <property>
                <name>dfs.data.dir</name>
                <value>file:///home/hadoop/hadoopdata/hdfs/datanode</value>
        </property>
</configuration>

编辑mapred-site.xml文件:

$ nano $HADOOP_HOME/etc/hadoop/mapred-site.xml

进行以下更改:

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

编辑 yarn-site.xml文件:

$ nano $HADOOP_HOME/etc/hadoop/yarn-site.xml

进行以下更改:

<configuration>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
</configuration>

完成后保存并关闭文件。

步骤7–启动Hadoop集群

在启动Hadoop集群之前。我们需要将Namenode格式化为hadoop用户。

运行以下命令格式化hadoop Namenode:

$ hdfs namenode -format

2020-02-05 03:10:40,380 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
2020-02-05 03:10:40,389 INFO namenode.FSImage: FSImageSaver clean checkpoint: txid=0 when meet shutdown.
2020-02-05 03:10:40,389 INFO namenode.NameNode: SHUTDOWN_MSG: 
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at hadoop.theitroad.com/45.58.38.202
************************************************************/

运行以下命令启动hadoop集群:

$ start-dfs.sh

启动YARN服务:

$ start-yarn.sh

Starting resourcemanager
Starting nodemanagers

现在可以使用jps命令检查所有Hadoop服务的状态:

$ jps

7987 DataNode
9606 Jps
8183 SecondaryNameNode
8570 NodeManager
8445 ResourceManager
7870 NameNode

步骤8–配置防火墙

Hadoop现在已启动,并正在监听端口9870和8088。接下来,我们需要允许这些端口通过防火墙。

运行以下命令以允许Hadoop连接通过防火墙:

$ firewall-cmd --permanent --add-port=9870/tcp
$ firewall-cmd --permanent --add-port=8088/tcp

重新加载firewalld服务使更改生效:

$ firewall-cmd --reload

步骤9–访问Hadoop Namenode和资源管理器

要访问Namenode,在web浏览器打开 http://服务器ip:9870

要访问“资源管理”,在web浏览器打开http://服务器ip:8088

步骤10–验证Hadoop集群

Hadoop集群已经安装并配置完毕。接下来,我们将在HDFS文件系统中创建一些目录来测试Hadoop。

在HDFS文件系统中创建一些目录:

$ hdfs dfs -mkdir /test1
$ hdfs dfs -mkdir /test2

运行以下命令列出上述目录:

$ hdfs dfs -ls /

Found 2 items
drwxr-xr-x   - hadoop supergroup          0 2020-02-05 03:25 /test1
drwxr-xr-x   - hadoop supergroup          0 2020-02-05 03:35 /test2

我们还可以在Hadoop Namenode web界面中验证上述目录。

转到Namenode web界面,单击Utilities=>浏览文件系统。我们应该在下面的屏幕中看到我们先前创建的目录。

步骤11–停止Hadoop集群

我们还可以通过stop-dfs.shstop-yarn.sh脚本 随时停止Hadoop Namenode和Yarn服务。

要停止Hadoop Namenode服务,请以Hadoop用户身份运行以下命令:

$ stop-dfs.sh

要停止Hadoop资源管理器服务,请运行以下命令:

$ stop-yarn.sh

总结

我们学习了如何在CentOS 8上设置Hadoop单节点集群。