Hadoop 安装与伪分布的搭建

news2024/12/26 21:37:43

目录

1 SSH免密登录

1.1 修改主机名称

1.2 修改hosts文件

1.3 创建hadoop用户

1.4 生成密钥对免密登录

2 搭建hadoop环境与jdk环境

2.1 将下载好的压缩包进行解压

2.2 编写hadoop环境变量脚本文件

2.3 修改hadoop配置文件,指定jdk路径

2.4 查看环境是否搭建完成

3 hadoop的启动

3.1 Hadoop 启动需要修改的配置文件

3.2 配置文件的修改

1、core-site.xml

2、hdfs-site.xml

3、mapred-site.xml

4、yarn-site.xml

3.3 启动hadoop与权限修改

3.4 再次启动hadoop


Rocky Linux 9.4 (CentOS同样适用)

hadoop版本 3.3.6

java : jdk1.8

1 SSH免密登录

1.1 修改主机名称

[root@localhost ~]# hostnamectl set-hostname hadoop

退出重新登录

[root@localhost ~]# exit

1.2 修改hosts文件

[root@hadoop ~]# vim /etc/hosts

1.3 创建hadoop用户

[root@hadoop ~] useradd -m hadoop -s /bin/bash
[root@hadoop ~] ls /home/
hadoop  rocky
# 设置用户密码
[root@hadoop ~] passwd hadoop
更改用户 hadoop 的密码 。
新的密码: 
重新输入新的密码: 
passwd:所有的身份验证令牌已经成功更新。
[root@hadoop ~] ssh hadoop@hadoop
hadoop@hadoop's password: 
Last failed login: Sat Jun 29 15:08:33 CST 2024 from 192.168.239.131 on ssh:notty
There were 2 failed login attempts since the last successful login.
[hadoop@hadoop ~]$ exit
注销

1.4 生成密钥对免密登录

使用su - hadoop 登录hadoop 账户

[root@hadoop /]# su - hadoop

# 创建秘钥对,为免密登录做准备
[hadoop@hadoop ~]$ ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hadoop/.ssh/id_rsa): 
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:NVZ+2Ur09zHUadG9KMNkwOnh1wodT3SUpR9ae6xM+wo hadoop@hadoop1
The key's randomart image is:
+---[RSA 4096]----+
|        ..o o.o=X|
|         + * ooO+|
|        o X * B==|
|         * B *o=B|
|        S o +.o.=|
|           . o o.|
|            E +  |
|             . . |
|              ...|
+----[SHA256]-----+

[hadoop@hadoop ~]$ ssh-copy-id root@hadoop
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/hadoop/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@hadoop1's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@hadoop1'"
and check to make sure that only the key(s) you wanted were added.

# 给本机免密登录
[hadoop@hadoop1 ~]$ ssh-copy-id hadoop
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/hadoop/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
hadoop@hadoop1's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'hadoop1'"
and check to make sure that only the key(s) you wanted were added.

# 测试免密登录是否成功
[hadoop@hadoop1 ~]$ ssh hadoop1
Last login: Sat Jun 29 15:32:19 2024 from fe80::20c:29ff:fe33:d160%ens160
[hadoop@hadoop1 ~]$ exit
注销

 命令行输入 ssh hadoop 不需要密码即成功

2 搭建hadoop环境与jdk环境

2.1 将下载好的压缩包进行解压

解压路径为

hadoop  :  /opt/hadoop

jdk        :  /opt/jdk 

[root@hadoop ~] ls
hadoop-3.3.6.tar.gz  jdk-8u162-linux-x64.tar.gz 公共  模板  视频  图片  文档  下载  音乐  桌面  anaconda-ks.cfg  test

[root@hadoop ~] mkdir -p /opt/jdk
[root@hadoop ~] mkdir -p /opt/hadoop
[root@hadoop ~] tar -xzf jdk-8u162-linux-x64.tar.gz -C /opt/jdk
[root@hadoop ~] tar -xzf hadoop-3.3.6.tar.gz -C /opt/hadoop
[root@hadoop ~] cd /opt
[root@hadoop opt] ls
hadoop  jdk  rh  soft

2.2 编写hadoop环境变量脚本文件

添加路径到path环境变量中

[hadoop@hadoop ~]$ exit

[root@hadoop ~] # vim /etc/profile.d/hadoop-eco.sh

创建脚本文件,加入以下环境变量路径

JAVA_HOME=/opt/jdk
PATH=$JAVA_HOME/bin:$PATH

HADOOP_HOME=/opt/hadoop
PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

# HADOOP_USER
export HDFS_NAMENODE_USER=hadoop
export HDFS_DATANODE_USER=hadoop
export HDFS_SECONDARYNAMENODE_USER=hadoop
export YARN_RESOURCEMANAGER_USER=hadoop
export YARN_NODEMANAGER_USER=hadoop
export HDFS_JOURNALNODE_USER=hadoop
export HDFS_ZKFC_USER=hadoop

  • HDFS_NAMENODE_USER=hadoop:指定HDFS NameNode服务的运行用户。NameNode负责管理文件系统的命名空间,包括文件和目录的元数据。

  • HDFS_DATANODE_USER=hadoop:指定HDFS DataNode服务的运行用户。DataNodes存储实际的数据块,是HDFS数据存储的主要组成部分。

  • HDFS_SECONDARYNAMENODE_USER=hadoop:指定HDFS Secondary NameNode服务的运行用户。Secondary NameNode并不存储集群的实时状态,但它定期合并NameNode的fsimage和editlogs文件,减少NameNode的启动时间。

  • YARN_RESOURCEMANAGER_USER=hadoop:指定YARN ResourceManager服务的运行用户。ResourceManager是YARN中的主控服务,负责集群资源的分配和管理工作。

  • YARN_NODEMANAGER_USER=hadoop:指定YARN NodeManager服务的运行用户。NodeManagers运行在每个集群节点上,负责容器的生命周期管理。

  • HDFS_JOURNALNODE_USER=hadoop:指定HDFS JournalNode服务的运行用户。JournalNodes用于在HA(High Availability)配置中存储NameNode状态的编辑日志,以保证数据的一致性。

  • HDFS_ZKFC_USER=hadoop:指定ZooKeeper Failover Controller(ZKFC)的运行用户。ZKFC用于监控NameNode的状态,并在检测到故障时触发failover,切换到备用NameNode。

通过设置这些环境变量,你确保了Hadoop的各个服务将以hadoop用户的身份运行,而不是以root或其他用户运行。这不仅增强了系统的安全性,还便于管理和审计。在Hadoop的启动脚本中,这些变量会被读取并应用到相应的服务启动过程中

2.3 修改hadoop配置文件,指定jdk路径

[root@hadoop ~]# vim /opt/hadoop/etc/hadoop/hadoop-env.sh 

这个变量指定了 Java 的安装位置。Hadoop 依赖于 Java 运行,因此必须正确设置此变量,指向你的 Java 安装目录。

增加以下行,注意此路径为java环境变量的路径

运行修改后的脚本

[root@hadoop ~] source /opt/hadoop/etc/hadoop/hadoop-env.sh

2.4 查看环境是否搭建完成

输入hadoop version 和 java -version 查询版本号,检查环境是否配好

[root@hadoop ~] hadoop version
Hadoop 3.3.6
Source code repository https://github.com/apache/hadoop.git -r 1be78238728da9266a4f88195058f08fd012bf9c
Compiled by ubuntu on 2023-06-18T08:22Z
Compiled on platform linux-x86_64
Compiled with protoc 3.7.1
From source with checksum 5652179ad55f76cb287d9c633bb53bbd
This command was run using /opt/hadoop/share/hadoop/common/hadoop-common-3.3.6.jar
[root@hadoop ~] java -version
java version "1.8.0_162"
Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)

3 hadoop的启动

3.1 Hadoop 启动需要修改的配置文件

1、core-site.xml

        fs.defaultFS

        hadoop.tmp.dir

2、hdfs-site.xml

        dfs.replication => 1

        dfs.namenode.name.dir

        dfs.datanode.data.dir

3、mapred-site.xml

        mapreduce.framework.name =>yarn

4、yarn-site.xml

        yarn.resourcemanager.hostname => localhost

        yarn.nodemanager.aux-services => mapreduce_shuffle

3.2 配置文件的修改

1、core-site.xml

[root@hadoop hadoop] vim /opt/hadoop/etc/hadoop/core-site.xml

在configuration块中添加以下信息

<property>
       <name>fs.defaultFS</name>
       <value>hdfs://localhost:9000</value>
</property>
<property>
       <name>hadoop.tmp.dir</name>
       <value>file:///opt/hadoop-record/tep</value>
</property>

<configuration>

这是Hadoop配置文件的根标签,用于包含所有的配置属性。

<property>

这个标签用于定义一个具体的配置项,包括名称(<name>)和值(<value>)两部分。

<name>fs.defaultFS</name>

这个配置项指定了Hadoop的默认文件系统。在你的例子中,hdfs://localhost:9000表示Hadoop将使用运行在本地主机上的Hadoop分布式文件系统(HDFS),端口号为9000。

<name>hadoop.tmp.dir</name>

这个配置项定义了Hadoop存放临时文件的目录。这里设置为file:///opt/hadoop-record/tep,意味着所有Hadoop产生的临时文件将存储在本地文件系统的/opt/hadoop-record/tep目录下。

这些配置通常被写入到Hadoop的核心配置文件core-site.xml中,该文件位于Hadoop的配置目录$HADOOP_HOME/etc/hadoop/内。通过修改这些配置,可以指定Hadoop如何存储数据以及临时文件的存放位置,这对于优化性能和管理数据至关重要。

2、hdfs-site.xml

[root@hadoop hadoop] vim /opt/hadoop/etc/hadoop/hdfs-site.xml

在configuration块中添加以下配置

        <property>
                <name>dfs.replication</name>
                <value>1</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:///opt/hadoop-record/name</value>
        </property>
                <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:///opt/hadoop-record/data</value>
        </property>

<property>

每一个<property>标签都定义了一个具体的配置项,包括配置项的名称和对应的值。

<name>dfs.replication</name>

  • 功能描述:此配置项决定了HDFS中数据块的默认复制因子。复制因子是指一个数据块在HDFS集群中存储的副本数量。

  • 你的设置:你将其设置为1,这意味着数据块只在一个节点上保存一份副本,不进行冗余备份。在生产环境中,这通常是不推荐的做法,因为如果存储数据的节点出现故障,数据可能会丢失。但在测试或开发环境中,为了节省资源,有时会采用这种方式。

<name>dfs.namenode.name.dir</name>

  • 功能描述:此配置项指定了NameNode存储元数据信息的本地文件系统目录。

  • 你的设置:将其设置为file:///opt/hadoop-record/name,这意味着NameNode的元数据将存储在本地文件系统的/opt/hadoop-record/name目录下。

<name>dfs.datanode.data.dir</name>

  • 功能描述:此配置项指定了DataNode存储实际数据块的本地文件系统目录。

  • 你的设置:你将其设置为file:///opt/hadoop-record/data,这意味着DataNode的数据块将存储在本地文件系统的/opt/hadoop-record/data目录下。

3、mapred-site.xml

[root@hadoop hadoop] vim /opt/hadoop/etc/hadoop/mapred-site.xml

在configuration块中添加以下配置

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

<configuration>

这是Hadoop配置文件中的根元素,用于封装所有的配置项。

<property>

此标签定义了一个具体的配置属性,包含了属性的名称和值。

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

  • 功能描述:此配置项指定了MapReduce作业执行时所依赖的资源管理和调度框架。在Hadoop生态系统中,YARN(Yet Another Resource Negotiator)是一个通用的资源管理系统,它不仅可以管理MapReduce作业,还可以支持其他类型的计算框架。

  • 设置:将其设置为yarn,这意味着MapReduce作业将通过YARN来进行资源管理和调度。这是Hadoop 2.x版本及以后版本的默认设置,YARN提供了一个更加灵活和强大的平台,允许多种计算框架共存于同一集群中。

4、yarn-site.xml

[root@hadoop hadoop] vim /opt/hadoop/etc/hadoop/yarn-site.xml 

在configuration块中添加以下配置

        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>localhost</value>
        </property>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>

3.3 启动hadoop与权限修改

格式化namenode

[root@hadoop ~]# hdfs namenode -format 

[root@hadoop ~]# start-all.sh

接下来启动hadoop会有可能发现以下问题,这是由于hadoop用户权限不足

修改权限

[root@hadoop ~]# chown -R hadoop:hadoop /opt/hadoop

3.4 再次启动hadoop

[root@hadoop opt]# start-all.sh

jsp 命令输出显示了当前运行在你的 hadoop 节点上的 Java 进程及其进程ID(PID)

[root@hadoop opt]# jps
9824 NameNode
10738 NodeManager
13539 Jps
10020 DataNode
10582 ResourceManager
10329 SecondaryNameNode

关闭防火墙

[root@hadoop opt]# systemctl stop firewalld

浏览器打开虚拟机的ip+端口号

http://192.168.239.132:9870/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1876622.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

文华财经通达信同花顺期货通盘立方博易大师主图指标公式源码

买线:EMA(C,2); 卖线:EMA(SLOPE(C,21)*20C,42); BU:CROSS(买线,卖线); SEL:CROSS(卖线,买线); STICKLINE1(买线>卖线,LOW,MIN(O,C),0.1,1),COLORRED; STICKLINE1(买线>卖线,MAX(O,C),HIGH,0.1,1),COLORRED; STICKLINE(买线>卖线,CLOSE,OPEN,8,1),COLORRED; STI…

解锁iCloud的全能潜力:从新手到专家的终极指南!

在今天这个数字化日益发达的时代&#xff0c;云服务已经成为我们生活中不可或缺的一部分。苹果公司的iCloud服务&#xff0c;作为一个集成的云服务平台&#xff0c;为用户提供了数据存储、备份、同步等多样化的功能。通过本文&#xff0c;我们将深入探讨如何高效利用iCloud&…

itext生成pdf文件demo示例

需求 在PDF文件中植入一些信息&#xff08;pdf模版&#xff09; 制作模版 可以看到下面红色箭头标注位置&#xff0c;这都是我们需要动态写入数据的表单域&#xff0c;可以使用wps等工具来制作 点击编辑表单&#xff0c;可以给对应空间添加表单域&#xff0c;表单域名称是ke…

【React】代码简化与拓展安装

安装如下拓展&#xff1a; 只需敲击rcc即可搭建框架

SPFA的拓展应用

spfa的拓展应用——负环 理论 01分数规划负环&#xff1a;一个环边权之和小于零 求负环的基本方法,基于SPFA&#xff1a; 都是基于抽屉原理&#xff0c;如果超过n条边&#xff0c;那一定有两个点相同&#xff0c;那就一定存在一个环 (1) 统计每个点入队次数&#xff0c;如…

linux 下neo4j的安装

一、neo4j简介 Neo4j 是一个高性能的 NoSQL 图形数据库,它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j 也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。 neo4j与jdk版本对应 neo4j的版本需要与jdk版本相适配,否则容易出现安装失…

个人搭建cppreference网站

近日,由于购买的腾讯云服务器要过期了,之前在服务器搭建的cppreference也要重新搭建,故写下此文章 cppreference的访问速度也慢,故自己WSL子系统简单搭键一下是个不错的选择 环境准备 首先,自己先安装Nginx,在网上找安装教程即可下载cppreference网站资源包:https://pan.baidu…

Redis基础教程(一):redis数据类型

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; &#x1f49d;&#x1f49…

【sqlmap命令学习及测试dvwa_SQL_Injection】

文章目录 1.sqlmap命令及 不同级别探索 能否注入命令option1.1 low等级1.2 Medium等级1. 3 High等级 2. 注入流程2.1 数据库2.2 指定数据库表名2.3 指定表的 字段名2.4 内容2.5 当前用户信息2.6 用户密码2.7 其他 1.sqlmap命令及 不同级别探索 能否注入 命令option sqlmap -u…

无刷直流电机(BLDCM)位置识别SVPWM控制

无刷直流电机&#xff0c;即BLDCM&#xff0c;在各个行业应用非常广泛。我们最熟悉的是在四轴飞行器中的应用&#xff0c;其中的电机基本都是BLDCM。除此之外&#xff0c;汽车电子、家用电器、航空航天、办公自动化、机器人等领域都有重要应用。 梯形波/方波无刷直流电机被称为…

【爆肝34万字】从零开始学Python第2天: 判断语句【入门到放弃】

目录 前言判断语句True、False简单使用作用 比较运算符引入比较运算符的分类比较运算符的结果示例代码总结 逻辑运算符引入逻辑运算符的简单使用逻辑运算符与比较运算符一起使用特殊情况下的逻辑运算符 if 判断语句引入基本使用案例演示案例补充随堂练习 else 判断子句引入else…

2024年度总结:不可错过的隧道IP网站评估推荐

随着网络技术的飞速发展&#xff0c;隧道IP服务成为了许多企业和个人在进行网络活动时的得力助手。作为专业的测评团队&#xff0c;我们经过一整年的深入研究和测试&#xff0c;为大家带来了三款备受瞩目的隧道IP网站推荐——品易HTTP、极光HTTP和一G代理。接下来&#xff0c;我…

AI产品经理面试

把优秀当习惯把优秀当习惯肯定不是口头说说&#xff0c;那有什么判断标准吗&#xff1f; 当我做完一件事儿的时候&#xff0c;我会看它有没有突破我的舒适圈、能不能惊艳到我自己。这就是我的判断标准。 在自我介绍和经历介绍时&#xff0c;面试者应该注重以下几个方面&#xf…

字节码编程ASM之插桩调用其他类的静态方法

写在前面 源码 。 本文看下通过ASM如何实现插桩调用其他类的静态方法。 1&#xff1a;编码 假定有如下的类&#xff1a; public class PayController {public void pay(int userId, int payAmount) {System.out.println("用户&#xff1a;" userId ", 调用…

GPIO和PIN

文章目录 1 GPIO和Pin1.1 GPIO和Pin基础概念1.2 GPIO输入模式1.3 GPIO输出模式1.4 GPIO的HAL库1.4.1 一些HAL库表示1.4.2 HAL库常用GPIO函数1.4.3 GPIO点亮led灯程序例子 1 GPIO和Pin 1.1 GPIO和Pin基础概念 ​ 单片机有很多的引脚&#xff0c;为了操控每一个引脚&#xff0c…

ChatGPT之母:AI自动化将取代人类,创意性工作或将消失

目录 01 AI取代创意性工作的担忧 1.1 CTO说了啥 02 AI已开始大范围取代人类 01 AI取代创意性工作的担忧 几天前的采访中&#xff0c;OpenAI的CTO直言&#xff0c;AI可能会扼杀一些本来不应该存在的创意性工作。 近来一篇报道更是印证了这一观点。国外科技媒体的老板Miller用…

EC-R3588SPC 资料介绍

EC-R3588SPC 资料介绍 1 介绍1.1 简介1.2 资料链接1.3 硬件资源1.4 资源下载 2 升级固件2.1 启动模式说明2.1.1 前言2.1.2 如何获取固件2.1.3 升级方法2.1.4 启动媒体2.1.5 引导模式2.1.5.1 正常模式2.1.5.2 装载机模式2.1.5.3 MaskRom模式 2.2 通过USB线升级固件2.2.1 介绍2.2…

树 | 第6章 | Java版大话数据结构 | 1.7w字长文 | 二叉树 | 哈夫曼树 | 二叉树遍历 | 构造二叉树 | LeetCode练习

&#x1f4cc;本篇分享的大话数据结构中&#x1f384;树&#x1f384;这一章的知识点&#xff0c;在此基础上&#xff0c;增加了练习题帮助大家理解一些重要的概念✅&#xff1b;同时&#xff0c;由于原文使用的C语言代码&#xff0c;不利于学习Java语言的同学实践&#xff0c;…

endswith()方法——是否以指定子字符串结尾

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 语法参考 endswith()方法用于检索字符串是否以指定子字符串结尾。如果是则返回True&#xff0c;否则返回False。endswith()方法的语法格式如下&…

GenAI 用于客户支持 — 第 1 部分:构建我们的概念验证

作者&#xff1a;来自 Elastic Chris Blaisure 欢迎来到 Inside Elastic 博客系列&#xff0c;我们将展示 Elastic 的内部运营如何解决实际业务挑战。本系列将揭示我们将生成式 AI&#xff08;gererative AI - GenAI&#xff09;集成到客户成功和支持运营中的历程&#xff0c;让…