如何在CentOS/RHEL 8上安装和配置Hadoop
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.sh和 stop-yarn.sh脚本 随时停止Hadoop Namenode和Yarn服务。
要停止Hadoop Namenode服务,请以Hadoop用户身份运行以下命令:
$ stop-dfs.sh
要停止Hadoop资源管理器服务,请运行以下命令:
$ stop-yarn.sh
总结
我们学习了如何在CentOS 8上设置Hadoop单节点集群。