【大数据折腾不息系列】(二) Hadoop 3.0 安装

编程入门 行业动态 更新时间:2024-10-26 07:28:47

【大数据折腾不息<a href=https://www.elefans.com/category/jswz/34/1770787.html style=系列】(二) Hadoop 3.0 安装"/>

【大数据折腾不息系列】(二) Hadoop 3.0 安装

系列文章目录

(一) VMware虚拟机和CentOS Stream安装

(二) Hadoop 3.0 安装 

(三) MySQL安装 


目录

前言

一、版本选择

二、安装过程

1、将下载的hadoop-3.3.3.tar.gz文件上传到虚拟机上

2、解压文件并修改权限(使用普通用户部署Hadoop)

3、安装JDK

4、配置环境变量

5、部署安装

6、YARN

总结


前言

Hadoop自诞生至今已经成为了事实上的大数据标准,基于最初的Hadoop框架,有很多优秀的大数据组件被开发创造出来了,一步步形成了如今庞大的Hadoop生态。因此,对于想要接触了解大数据的人来说,学习Hadoop是必不可少的。因此,首先还是要从安装Hadoop开始。本文将尽可能以最简单的方式、最少的步骤搭建起一个可以使用的单节点伪分布式Hadoop。


一、版本选择

时代在进步,技术也不断在更新迭代,发展日新月异。所以在这里选择的是截至到2022年6月最新的Hadoop版本:hadoop-3.3.3。Hadoop3比Hadoop2多了很多的新功能和新特性,暂时还没有深入研究,也不是本章的主题,在这里暂不对这方面做详细说明。

二、安装过程

1、将下载的hadoop-3.3.3.tar.gz文件上传到虚拟机上

关于主机和虚拟机相互之间的文件传输,我习惯是利用VMware提供的共享文件夹功能,统一通过这个共享文件夹进行文件传输,使用共享文件夹步骤如下:

a、顶部虚拟机菜单中选择设置

 b、选择选项中的共享文件夹,选择总是启用,添加主机文件夹路径

 c、虚拟机Linux系统中映射的共享文件夹的目录为:/mnt/hgfs/VMShare

说明:

  • 如果在虚拟机中没有这个目录,可以先执行以下命令
vmhgfs-fuse /mnt/hgfs
  •  需要切换为root用户,或者普通用户执行命令前面加上sudo才能访问到该目录

结果如下:

2、解压文件并修改权限(使用普通用户部署Hadoop)

tar -zxvf /mnt/hgfs/VMShare/hadoop-3.3.3.tar.gz -C /opt/ # 解压到/opt目录
chown -R hzy:hzy /opt/hadoop-3.3.3 # 将目录hadoop-3.3.3及其子目录的所属用户和用户组改为hzy
su - hzy # 切换到普通用户

这里 hzy 是我创建的普通用户(备注:一般情况下可以创建一个hadoop用户用于安装部署Hadoop,这样更明确清晰,但不是必要的) 

3、安装JDK

Hadoop的运行需要有java环境,兼容的版本为jdk1.8,运行以下命令安装jre和jdk

yum install -y java-1.8.0-openjdk.x86_64
yum install -y java-1.8.0-openjdk-devel.x86_64

4、配置环境变量

看到网上很多是在/etc/profile这个文件中配置环境变量,虽然也能起到同样的作用,但不太建议,有看到资料说这个用来配置系统本身的环境变量等,系统升级的时候有可能会被覆盖,如果是在这个文件里配置自己的环境变量,升级后可能会丢失。虽然没遇到过这样的问题,但毕竟是用于系统本身配置的文件,能不改动就不改动。我的习惯是用root用户在/etc/profile.d/这个目录下面新建一个shell脚本,然后在这个脚本里面配置自己的环境变量,系统启动时这个目录下面的脚本都会被执行。另外,这里配置的环境变量也同样对所有用户可见。

这里我在/etc/profile.d/目录下新建了一个文件,命名为custom.sh,在该文件中配置环境变量如下:

export JAVA_HOME=/usr/lib/jvm/java
export HADOOP_HOME=/opt/hadoop-3.3.3export PATH=$HADOOP_HOME/bin:$PATH

 需要注意的是,这里并没有将$JAVA_HOME/bin加入到PATH中,因为使用yum安装后,$JAVA_HOME/bin下面的二进制文件已经被链接到/usr/bin下面了,从任何地方都可以执行java命令。

文件编辑好之后退出,执行以下命令导入环境变量:

. /etc/profile.d/custom.sh

在 $HADOOP_HOME/etc/hadoop/hadoop-env.sh 中设置 JAVA_HOME:

# The java implementation to use. By default, this environment
# variable is REQUIRED on ALL platforms except OS X!
export JAVA_HOME=/usr/lib/jvm/java

最后,验证下环境变量是否配置成功:

5、部署安装

 默认情况下,Hadoop被配置为以非分布式模式运行,作为单个Java进程运行,这个时候已经可以使用Hadoop运行程序了。这里我们要做的是将Hadoop配置为伪分布式模式在单个节点上运行,其中每个Hadoop守护程序都在单独的Java进程中运行。

a、修改配置文件

在 $HADOOP_HOME/etc/hadoop/core-site.xml 中添加如下代码:

<configuration><property><name>fs.defaultFS</name><value>hdfs://localhost:9000</value></property>
</configuration>

 在 $HADOOP_HOME/etc/hadoop/hdfs-site.xml 中添加如下代码:

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

b、配置ssh免密登录

  ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsacat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keyschmod 0600 ~/.ssh/authorized_keys

c、格式化文件系统

hdfs namenode -format

 d、启动NameNode和DataNode守护进程

$HADOOP_HOME/sbin/start-dfs.sh

 可以看到Hadoop已经启动成功,可以在虚拟机浏览器中输入 http://localhost:9870/ 查看集群信息

e、执行一个MapReduce作业

# 创建执行MapReduce作业需要的目录,<username>替换为自己的用户名
hdfs dfs -mkdir /user
hdfs dfs -mkdir /user/<username># 复制输入文件到分布式文件系统hdfs
hdfs dfs -mkdir input
hdfs dfs -put etc/hadoop/*.xml input# 在Hadoop目录下运行Hadoop提供的示例
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.3.jar grep input output 'dfs[a-z.]+'# 最后查看输出目录情况
hdfs dfs -cat output/*

6、YARN

yarn是Hadoop上的一个资源调度框架,可以通过配置启动yarn让MapReduce作业运行在yarn上,即通过yarn请求资源运行作业。配置如下:

a、配置文件

在 $HADOOP_HOME/etc/hadoop/mapred-site.xml 中添加如下代码:

<configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property><property>
<!-- 通过测试,发现下面这个属性即使没有配置依然可以启动yarn,但这是官方教程中给出的配置 --><name>mapreduce.application.classpath</name><value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value></property>
</configuration>

在 $HADOOP_HOME/etc/hadoop/yarn-site.xml 中添加如下代码:

<configuration><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><property><name>yarn.nodemanager.env-whitelist</name><value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_HOME,PATH,LANG,TZ,HADOOP_MAPRED_HOME</value></property>
</configuration>

这里对上述的配置文件做个说明。对于属性yarn.nodemanager.env-whitelist,官方解释为Environment variables that containers may override rather than use NodeManager's default,意思为通过该属性可以指定yarn容器可以覆盖的环境变量,而不是使用NodeManager的默认值。该属性的默认值为JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_HOME,PATH,LANG,TZ。注意,默认值跟我们上面的配置相比,少了HADOOP_MAPRED_HOME这一环境变量。对于这一属性,我的理解是这样的:这些环境变量是Hadoop运行需要的环境变量,如果没有在环境变量白名单这一属性中指定这些环境变量,则我们需要在配置环境中显式指定这些环境变量的值(后面我们会看到一个例子);而设置了这个属性,将这些环境变量名加入到白名单之后,当yarn发现没有这些环境的时候,就会用恰当的值设置这些环境变量。所以推断,这个属性是为了让yarn可以设置这些环境变量,对其赋值(whitelist白名单的意思),没有配置该属性则没有这个权限。

接下来我们看下是不是这么回事:

将yarn.nodemanager.env-whitelist这个属性的配置注释掉后再启动yarn,然后执行上面的MapReduce作业,可以看到结果如下

 报错了,让我们检查<HADOOP_HOME>/etc/hadoop/mapred-site.xml中是否包含下面的配置

<property><name>yarn.app.mapreduce.am.env</name><value>HADOOP_MAPRED_HOME=${full path of your hadoop distribution directory}</value>
</property>
<property><name>mapreduce.map.env</name><value>HADOOP_MAPRED_HOME=${full path of your hadoop distribution directory}</value>
</property>
<property><name>mapreduce.reduce.env</name><value>HADOOP_MAPRED_HOME=${full path of your hadoop distribution directory}</value>
</property>

 yarn.nodemanager.env-whitelist的默认值中不包含HADOOP_MAPRED_HOME,按照我们的推断,需要在配置文件中显式指定改环境变量的值,而这里的报错信息也验证了我们的推断。然后在<HADOOP_HOME>/etc/hadoop/mapred-site.xml中添加报错提示中的配置项后,则可以正常运行作业。添加的配置如下:

<property><name>mapreduce.framework.name</name><value>yarn</value>
</property>
<property><name>yarn.app.mapreduce.am.env</name><value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property><name>mapreduce.map.env</name><value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property><name>mapreduce.reduce.env</name><value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>

b、启动yarn

$HADOOP_HOME/sbin/start-yarn.sh

 

 可以看到yarn的两个进程ResourceManager和NodeManager已经启动了

 可以在虚拟机浏览器中输入 http://localhost:8088/ 查看yarn的相关信息

这时如果再提交MapReduce作业,则会提交到yarn上分配资源并执行。

 c、重新运行上面的MapReduce作业,看看有什么不同

 可以看到程序会去连接yarn的ResourceManager,并且可以通过yarn的web ui查看该作业的运行情况。

d、最后,执行脚本停止yarn、hadoop

$HADOOP_HOME/sbin/stop-yarn.sh
$HADOOP_HOME/sbin/stop-dfs.sh

总结

以上就是在单节点上安装伪分布模式的Hadoop的过程,相对还是比较简单,用于对新版本Hadoop的尝鲜或者探索新技术新特性什么的再好不过了。当然这也是自己折腾之后,事后回顾整个过程做的记录,可能会有疏漏的地方,如果遇到什么问题麻烦留言告知,以及有什么错误的地方欢迎指正和探讨。

更多推荐

【大数据折腾不息系列】(二) Hadoop 3.0 安装

本文发布于:2024-02-17 07:53:53,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1693246.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:系列   数据   Hadoop

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!