前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >hadoop-1:部署并初探hadoop3.3.1的单节点集群

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

作者头像
千里行走
发布2021-08-12 11:49:48
2.1K0
发布2021-08-12 11:49:48
举报
文章被收录于专栏:千里行走

目录

(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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-07-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 千里行走 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
大数据
全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档