hadoop-1:部署并初探hadoop3.3.1的单节点集群

2021-08-12 11:49:48 浏览数 (1)

目录

(1).hadoop3.3.1的安装前准备

(2).hadoop3.3.1的3种部署模式

(3).Local (Standalone) Mode(本地独立模式)部署

(4).Pseudo-Distributed Mode(伪分布式模式)部署

(5).hadoop3.3.1单节点集群的yarn部署

(6).参考资料

(1).安装前准备

下载页面:

http://www.apache.org/dyn/closer.cgi/hadoop/common/

https://apache.claz.org/hadoop/common/

https://apache.claz.org/hadoop/common/hadoop-3.3.1/

下载:

wget https://apache.claz.org/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz

安装必须的软件:

yum install -y ssh

yum install -y pdsh

在etc/hadoop/hadoop-env.sh中配置环境变量,必须在这里配置,在/etc/profile中配置无效:

export JAVA_HOME=你的java home

我解押后放在了目录:

/app/3rd/hadoop3.3.1

执行如下命令将显示 hadoop 脚本的使用文档:

bin/hadoop

(2).hadoop的3种部署模式

hadoop有3中部署模式:

Local (Standalone) Mode:(本地独立模式)

默认情况下,Hadoop 配置为在非分布式模式下作为单个 Java 进程运行。这对于调试很有用。用完即销毁进程。

Pseudo-Distributed Mode:(伪分布式模式)

Hadoop 也可以以伪分布式模式在单节点上运行,其中每个 Hadoop 守护进程在单独的 Java 进程中运行。

Fully-Distributed Mode:(全分布式模式)

生产级的集群分布式模式。

(3).Local (Standalone) Mode(本地独立模式)部署

其实这个模式也不叫部署,开一个进程执行完后就会杀掉,不会长存。

cd /app/3rd/hadoop3.3.1

使用官方的一个例子:

复制解压后的 conf 目录以用作输入,然后查找并显示给定正则表达式的每个匹配项。输出写入给定的输出目录。

mkdir input

cp etc/hadoop/*.xml input

bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar grep input output 'dfs[az.] '

cat output/ *

执行完成后查看,可以看到进程都已经消失:

(4).Pseudo-Distributed Mode(伪分布式模式)部署

修改如下配置:

etc/hadoop/core-site.xml:

<configuration>

<property>

<name>fs.defaultFS</name>

<value>hdfs://172.26.237.196:9000</value>

</property>

</configuration>

etc/hadoop/hdfs-site.xml:

dfs.replication:

指定文件副本数,默认值是3。因为是单节点集群,所以只有一个datanode,只能有1个副本,故修改为1。

<configuration>

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

</configuration>

设置无密码ssh,否则无法ssh到本机:

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

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

chmod 0600 ~/.ssh/authorized_keys

再次执行ssh成功。

1.格式化文件系统

bin/hdfs namenode -format

2.启动 NameNode 守护进程和 DataNode 守护进程

sbin/start-dfs.sh

我又执行了一次,相当于重新初始化,可以看到这个操作很危险:

会把老的元数据全部删除。

另外,我们需要指定存储目录到我们新磁盘的挂载点,防止/tmp所在挂载点的空间不够用。

暂时先保持原状。

但是执行依然报错:

在/hadoop/sbin路径下:

将start-dfs.sh,stop-dfs.sh两个文件顶部添加以下参数

#!/usr/bin/env bash

HDFS_DATANODE_USER=root

HADOOP_SECURE_DN_USER=hdfs

HDFS_NAMENODE_USER=root

HDFS_SECONDARYNAMENODE_USER=root

并且新建linux用户:useradd hdfs

再次执行成功:

jps查看,成功:可以看到一个namenode,一个datanode,一个SecondaryNameNode。

3.浏览 NameNode 的 Web 界面;默认情况下,它在以下位置可用:

http://namenode-ip:9870/

4.创建执行 MapReduce 作业所需的 HDFS 目录:

bin/hdfs dfs -mkdir /test

访问namenode的web界面可以查到刚才创建的目录:

http://namenode-ip:9870/

5.将输入文件复制到分布式文件系统中:

bin/hdfs dfs -put etc/hadoop/*.xml /test

访问namenode的web界面可以查到刚才传到hdfs的文件:

http://namenode-ip:9870/

6.运行提供的一些示例

查找并显示给定正则表达式的每个匹配项。输出写入给定的输出目录。

需要给这个例子建立hdfs目录,因为这个官方例子使用到了这些目录和文件:

bin/hdfs dfs -mkdir /user

bin/hdfs dfs -mkdir /user/root root是你要执行程序时所使用的用户

bin/hdfs dfs -mkdir input 这个input会在/user/root下创建,root是你当前的用户

bin/hdfs dfs -put etc/hadoop/*.xml input 同样会把文件上传到/user/root/input

执行官方例子:

bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar grep input output 'dfs[az.] '

可以看到程序创建了output目录,并将结果以文件的形式放在这个目录下:

7.检查输出文件:将输出文件从分布式文件系统复制到本地文件系统并检查它们

bin/hdfs dfs -get output output

cat output/*

或者直接在hdfs上查看:

bin/hdfs dfs -cat output/*

8.完成后,停止守护进程:

stop前先看下目前的进程:

执行stop命令:

sbin/stop-dfs.sh

jps查看可以看到已经全部停止:

9.进程&端口总结

9.1.NameNode进程

端口9870:NameNode 的 Web 界面

端口9000:是fileSystem默认的端口号。前边的部分有提到:

9.2.DataNode进程:

端口9864:DataNode 的 Web 界面

9.3.SecondaryNameNode进程

端口9868:SecondaryNameNode的web界面。

(5).hadoop3.3.1单节点集群的yarn部署

1.修改配置文件etc/hadoop/mapred-site.xml,加入如下内容:

mapreduce.framework.name:

mapreduce/flink等 基于yarn来实现计算的,基础开关。

mapreduce.application.classpath:

指定要运行程序的classpath路径。

<configuration>

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

<property>

<name>mapreduce.application.classpath</name> <value>

</property>

</configuration>

2.修改配置文件etc/hadoop/yarn-site.xml:

yarn.nodemanager.aux-services:

配置shuffle机制。map 阶段处理的数据如何传递给 reduce 阶段,是 MapReduce 框架中最关键的一个流 程,这个流程就叫 shuffle。shuffle是洗牌、发牌 ——(核心机制:数据分区,排序,分组,规约,合并等过程)。

yarn.nodemanager.env-whitelist:

容器可能会覆盖的环境变量,而不是使用NodeManager的默认值。

yarn.nodemanager.env-whitelist

容器可能会覆盖的环境变量,而不是使用NodeManager的默认值。

<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>

3.启动 ResourceManager 守护进程和 NodeManager 守护进程

sbin/start-yarn.sh

但是报错:

要在sbin/start-yarn.sh和sbin/stop-yarn.sh

YARN_RESOURCEMANAGER_USER=root

HADOOP_SECURE_DN_USER=yarn

YARN_NODEMANAGER_USER=root

同时要创建linux用户:

useradd yarn

再次执行,成功:

jps查看:可以看到yarn的两个组件,一个NodeManager,一个ResourceManager。

4.浏览 ResourceManager 的 Web 界面;默认情况下,它在以下位置可用:

资源管理器 - http://localhost:8088/

5.运行 MapReduce 作业

执行官方例子:

bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar grep input output 'dfs[az.] '

6.完成后,停止守护进程:

sbin/stop-yarn.sh

7.进程&端口总结

7.1.NodeManager进程

端口8042:nodemanager的web界面

7.2.ResourceManager进程

端口8088:resourcemanager的web界面

(6).参考资料

1.Hadoop: Setting up a Single Node Cluster.

https://hadoop.apache.org/docs/r3.3.1/hadoop-project-dist/hadoop-common/SingleCluster.html

2.Prometheus 监控 Hadoop3

https://blog.csdn.net/weixin_43973883/article/details/106527494

3.hadoop端口使用配置总结(非常好的总结)

https://blog.csdn.net/longshenlmj/article/details/45147827

0 人点赞