阿里云CentOS7安装Hadoop3伪分布式

news2024/9/27 5:57:32

ECS准备

开通阿里云ECS

控制台设置密码

 

连接ECS

远程连接工具连接阿里云ECS实例,这里远程连接工具使用xshell

根据提示接受密钥

根据提示写用户名和密码

        用户名:root

        密码:在控制台设置的密码

修改主机名

将主机名从localhost改为需要的主机名,例如:node1

[root@iZwz9hpiui8zhoe2pkat8nZ ~]# hostnamectl set-hostname node1
[root@iZwz9hpiui8zhoe2pkat8nZ ~]# hostname
node1

发现未重启时,命令行@后面显示的主机名未变

重启
[root@iZwz9hpiui8zhoe2pkat8nZ ~]# reboot
​
​
重新连接
[root@node1 ~]# 

重启后,命令行中的主机名改变了

创建普通用户

因为root用户权限太高,误操作可能造成一些麻烦。一般情况下,我们不会用root用户来安装hadoop,所以我们需要创建普通用户来安装hadoop。

创建新用户方法如下:

创建新用户,例如用户名为:hadoop,并设置新用户密码,重复设置2次,看不到输入的密码,这是linux的安全机制,输入即可。

[root@node1 ~]# adduser hadoop
[root@node1 ~]# passwd hadoop
Changing password for user hadoop.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.

给普通用户添加sudo执行权限

[root@node1 ~]# chmod -v u+w /etc/sudoers
mode of ‘/etc/sudoers’ changed from 0440 (r--r-----) to 0640 (rw-r-----)
​
[root@node1 ~]# vim /etc/sudoers
在%wheel  ALL=(ALL)       ALL一行下面添加如下语句:
hadoop    ALL=(ALL)       ALL
​
[root@node1 ~]# chmod -v u-w /etc/sudoers
mode of ‘/etc/sudoers’ changed from 0640 (rw-r-----) to 0440 (r--r-----)

这种情况下,执行sudo相关命令时,需要输入当前普通用户的密码。

如果不想输入密码,在%wheel ALL=(ALL) ALL一行下面添加的语句更改为如下:

hadoop  ALL=(ALL)    NOPASSWD:ALL

关闭root连接

普通用户登录

使用xshell新建一个连接,

        用户名:hadoop

        密码:创建hadoop用户时设置的密码

映射IP和主机

[hadoop@node1 ~]$ sudo vim /etc/hosts

文件末尾一行,将ECS内网IP与实际的主机名node1映射,修改如下内容:

192.168.0.100 node1

注意:192.168.0.100为ECS内网IP,ECS内网IP可以在阿里云控制台查询,请根据实际情况设置。

配置免密登录

生成密钥对

ssh-keygen -t rsa

执行命令后,连续敲击三次回车键,运行过程如下:

[hadoop@node1 ~]$ ssh-keygen -t rsa
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:F7ztwW9iUTYORd3jGBD46lvznVHbxe0jZcAHeI7kVRk hadoop@node1
The key's randomart image is:
+---[RSA 2048]----+
|          .o+o+E+|
|         o o.=.oo|
|          * *oB..|
|           O Bo+.|
|        S + = .o=|
|         o . +o.=|
|        .  o+.o+o|
|         ...ooo +|
|         ..  . o |
+----[SHA256]-----+
​

拷贝公钥

ssh-copy-id node1

安装jdk

创建安装包目录

创建一个目录,专门存放安装包(可选)

[hadoop@node1 ~]$ mkdir ~/installfile

下载jdk8安装包

官网下载jdk安装包:jdk-8u271-linux-x64.tar.gz,并将安装包上传到Linux的installfile目录。

解压安装包

解压安装包

[hadoop@node1 installfile]$ tar -zxvf jdk-8u271-linux-x64.tar.gz -C ~/soft

切换到soft目录,查看解压后的文件

[hadoop@node1 softinstall]$ cd ~/soft
[hadoop@node1 soft]$ ls
jdk1.8.0_271
​

配置环境变量

[hadoop@node1 soft]$ sudo nano /etc/profile.d/my_env.sh

内容如下

export JAVA_HOME=/home/hadoop/soft/jdk1.8.0_271
export PATH=$PATH:$JAVA_HOME/bin

让配置立即生效

[hadoop@node1 soft]$ source /etc/profile

验证版本号

[hadoop@node1 soft]$ java -version
java version "1.8.0_271"
Java(TM) SE Runtime Environment (build 1.8.0_271-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.271-b09, mixed mode)
​

看到输出java version "1.8.0_271",说明jdk安装成功。

遇到的问题

验证java版本号时,遇到找不到libjli.so的问题

[hadoop@node1 ~]$ java -version
java: error while loading shared libraries: libjli.so: cannot open shared object file: No such file or directory
​

排查问题,发现解压jdk包时出现了错误,造成该问题

jdk1.8.0_271/jre/lib/
jdk1.8.0_271/jre/lib/amd64/
jdk1.8.0_271/jre/lib/amd64/server/
jdk1.8.0_271/jre/lib/amd64/server/Xusage.txt
jdk1.8.0_271/jre/lib/amd64/server/libjvm.so
tar: Skipping to next header
​
gzip: stdin: invalid compressed data--format violated
tar: Child returned status 1
tar: Error is not recoverable: exiting now
​

重新上传jdk安装包,确保文件完整,然后再重新解压,解压正常,版本号验证正常。

安装hadoop伪分布式

下载hadoop

[hadoop@node1 soft]$ cd ~/softinstall/
[hadoop@node1 soft]$ wget https://archive.apache.org/dist/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz
[hadoop@node1 softinstall]$ ls
hadoop-3.3.4.tar.gz  jdk-8u271-linux-x64.tar.gz
​

解压hadoop

[hadoop@node1 softinstall]$ tar -zxvf hadoop-3.3.4.tar.gz -C ~/soft

配置环境变量

[hadoop@node1 softinstall]$ sudo nano /etc/profile.d/my_env.sh

在文件末尾添加如下配置

export HADOOP_HOME=/home/hadoop/soft/hadoop-3.3.4
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

让环境变量生效

[hadoop@node1 softinstall]$ source /etc/profile

验证版本号

执行hadoop version命令,能看到Hadoop 3.3.4版本号,说明环境变量配置成功。

[hadoop@node1 softinstall]$ hadoop version
Hadoop 3.3.4
Source code repository https://github.com/apache/hadoop.git -r a585a73c3e02ac62350c136643a5e7f6095a3dbb
Compiled by stevel on 2022-07-29T12:32Z
Compiled with protoc 3.7.1
From source with checksum fb9dd8918a7b8a5b430d61af858f6ec
This command was run using /home/hadoop/soft/hadoop-3.3.4/share/hadoop/common/hadoop-common-3.3.4.jar

配置hadoop

进入配置目录
[hadoop@node1 softinstall]$ cd $HADOOP_HOME/etc/hadoop
配置core-site.xml
[hadoop@node1 hadoop]$ vim core-site.xml

<configuration></configuration>之间添加如下内容:

    <!-- 指定NameNode的地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://node1:8020</value>
    </property>
    <!-- 指定hadoop数据的存储目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/hadoop/soft/hadoop-3.3.4/data</value>
    </property>
​
    <!-- 配置HDFS网页登录使用的静态用户为hadoop,value里的hadoop代表用户 -->
    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>hadoop</value>
    </property>
​
    <!-- 配置该hadoop(superUser)(第二个hadoop代表用户)允许通过代理访问的主机节点 -->
    <property>
        <name>hadoop.proxyuser.hadoop.hosts</name>
        <value>*</value>
    </property>
    <!-- 配置该hadoop(superUser)(第二个hadoop代表用户)允许通过代理用户所属组 -->
    <property>
        <name>hadoop.proxyuser.hadoop.groups</name>
        <value>*</value>
    </property>
    <!-- 配置该hadoop(superUser)(第二个hadoop代表用户)允许通过代理的用户-->
    <property>
        <name>hadoop.proxyuser.hadoop.users</name>
        <value>*</value>
    </property>

配置hdfs-site.xml
[hadoop@node1 hadoop]$ nano hdfs-site.xml

<configuration></configuration>之间添加如下内容:

    <!-- nn web端访问地址-->
    <property>
        <name>dfs.namenode.http-address</name>
        <value>node1:9870</value>
    </property>
    
    <!-- 2nn web端访问地址-->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>node1:9868</value>
    </property>
    
    <!-- HDFS副本的数量1 -->
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>

注意:node1为ECS的主机名称,注意根据实际情况修改,之后的配置文件node1也需要注意修改。

配置yarn-site.xml
[hadoop@node1 hadoop]$ nano yarn-site.xml

<configuration></configuration>之间添加如下内容:

    <!-- 指定MR走shuffle -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    
    <!-- 指定ResourceManager的地址-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>node1</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_MAPRED_HOME</value>
    </property>
    
    <!--yarn单个容器允许分配的最大最小内存 -->
    <property>
        <name>yarn.scheduler.minimum-allocation-mb</name>
        <value>512</value>
    </property>
    <property>
        <name>yarn.scheduler.maximum-allocation-mb</name>
        <value>4096</value>
    </property>
    
    <!-- yarn容器允许管理的物理内存大小 -->
    <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>4096</value>
    </property>
    
    <!-- 关闭yarn对物理内存和虚拟内存的限制检查 -->
    <property>
        <name>yarn.nodemanager.pmem-check-enabled</name>
        <value>true</value>
    </property>
    <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
    </property>

配置mapred-site.xml
[hadoop@node1 hadoop]$ nano mapred-site.xml

<configuration></configuration>之间添加如下内容:

    <!-- 指定MapReduce程序运行在Yarn上 -->
    <property>
    <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>

配置workers
[hadoop@node1 hadoop]$ nano workers 

删除原有内容,配置workers的主机名称,内容如下

node1

配置历史服务器
[hadoop@node1 hadoop]$ nano mapred-site.xml

添加如下配置

    <!-- 历史服务器端地址 -->
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>node1:10020</value>
    </property>
​
    <!-- 历史服务器web端地址 -->
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>node1:19888</value>
    </property>
​

配置日志聚集

开启日志聚集功能,应用运行完成以后,将程序运行日志信息上传到HDFS系统上。

[hadoop@node1 hadoop]$ nano yarn-site.xml

添加如下功能

    <!-- 开启日志聚集功能 -->
    <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>
​
    <!-- 设置日志聚集服务器地址 -->
    <property>  
        <name>yarn.log.server.url</name>  
        <value>http://node1:19888/jobhistory/logs</value>
    </property>
​
    <!-- 设置日志保留时间为7天 -->
    <property>
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>604800</value>
    </property>

格式化

格式化hdfs文件系统

[hadoop@node1 hadoop]$ hdfs namenode -format

部分输出如下

看到successfully formatted.说明格式化成功。

注意:格式化只能进行一次。

启动集群

[hadoop@node1 hadoop]$ start-dfs.sh 
[hadoop@node1 hadoop]$ start-yarn.sh 

查看进程

[hadoop@node1 hadoop]$ jps
16944 DataNode
18818 Jps
17413 ResourceManager
17144 SecondaryNameNode
17513 NodeManager
16844 NameNode

看到如上进程,说明正常。

如果缺少进程:

1.检查配置是否正确;

2.查看对应$HADOOP_HOME/logs目录对应进程log文件的报错信息来解决。

放开Web UI端口

登录阿里云控制台,在安全组放开9870、8088、9868端口

注意:0.0.0.0/0代表所有ip均能访问,不安全。可以只授权给特定ip,例如自己当前电脑的公网ip地址,一般情况下,当前电脑的公网ip会变化,变化后就需要重新查询当前电脑的公网ip,再重新设置授权对象。

访问Web UI

浏览器访问

公网IP:9870

公网IP:8088

公网IP:9868

如果不想输入公网ip,可以在windows的hosts文件做映射:

公网IP node1 alinode

含义:公网IP映射的主机为node1alinodenode1机器的别名。

使用node1或者alinode代替公网IP,访问相关端口,也能正常访问如下:

完成!enjoy it!

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

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

相关文章

react+vite+antD+reduce+echarts项目完整记录

reactviteantDreduceecharts项目完整记录 之前写前端项目&#xff0c;都是用的vue&#xff0c;从最开始的vue2到后来的vue3&#xff0c;断断续续写了3年&#xff0c;打包工具也从webpack转到了vite&#xff0c;全局数据管理工具从vuex转到了pinia。总体而言&#xff0c;vue3对…

msvcp100.dll是什么东西?电脑msvcp100.dll丢失的六种解决方法

最近&#xff0c;我在电脑上打开一款软件时&#xff0c;遇到了一个问题&#xff1a;找不到msvcp100.dll丢失问题&#xff0c;为了解决这个问题&#xff0c;我进行了深入的学习和研究&#xff0c;并在此分享msvcp100.dll丢失的解决方法。 一&#xff0c;msvcp100.dll是什么&…

机器学习:探索数据中的模式与智能

文章目录 导言介绍&#xff1a;机器学习的定义和重要性发展历程&#xff1a;从概念到现实应用 基础概念机器学习的基本原理监督学习、无监督学习和强化学习的区别与应用1.监督学习2.无监督学习3.强化学习 常见的机器学习任务和应用领域 结语 导言 当代科技领域中最为引人注目的…

HCIP的学习(6)

OSPF—开放式最短路径优先协议 动态路由的评判标准 1、占用资源 2、收敛速度 3、选路动态路由分类&#xff1a; IGP---内部网关协议DV型---距离矢量型---RIPLS型---链路状态型---OSPFEGP---外部网关协议OSPF---无类别的路由协议&#xff08;携带真实掩码&#xff09;组播224.0…

【C++初阶】之类和对象(下)

【C初阶】之类和对象&#xff08;下&#xff09; ✍ 再谈构造函数&#x1f3c4; 初始化列表的引入&#x1f498; 初始化列表的语法&#x1f498; 初始化列表初始化元素的顺序 &#x1f3c4; explicit关键字 ✍ Static成员&#x1f3c4; C语言中的静态变量&#x1f3c4; C中的静…

Python入门练习 - 学生管理系统

Python 实现读书管理系统 """ 实现一个命令行版的读书管理系统 """ import os.path import sys# 使用这个全局变量&#xff0c;来管理所有的学生信息 # 这个列表的每个元素都是一个‘字典’&#xff0c;每 个 字典就分别表示了一个同学students …

STM32硬件I2C通信外设

文章目录 前言I2C硬件介绍10 位地址模式硬件I2C的引脚定义I2C框图主机发送序列图主机接收序列图 硬件I2C读写MPU6050总结 前言 本文主要介绍stm32自带的I2C通信外设&#xff0c;对比与软件模拟I2C&#xff0c;硬件I2C可以自动生成时序&#xff0c;时序的操作更加及时规范&…

【面试经典150 | 动态规划】三角形最小路径和

文章目录 写在前面Tag题目来源解题思路方法一&#xff1a;动态规划 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主&#xff0c;并附带一些对于本题涉及到的数据结构等内容进行…

7、鸿蒙学习-共享包概述

HarmonyOS提供了两种共享包&#xff0c;HAR&#xff08;Harmony Archive&#xff09;静态共享包&#xff0c;和HSP&#xff08;Harmony Shared Package&#xff09;动态共享包。 HAR与HSR都是为了实现代码和资源的共享&#xff0c;都可以包含代码、C库、资源和配置文件&#xf…

UI设计案例,B端后台界面设计教程

B端产品是为“组织”提供服务&#xff0c;以业务为中心&#xff0c;追求时效性&#xff0c;在视觉上&#xff0c;内容为王&#xff0c;视觉为功能让步&#xff0c;追求简洁、清晰、克制、理性的视觉风格。B 端产品业务比较复杂&#xff0c;页面内容也会较多&#xff0c;B端界面…

亲历中国智驾大战,吴新宙加入NVIDIA半年后首秀

‍作者 |张祥威 编辑 |德新 吴新宙近日现身NVIDIA GTC&#xff0c;这是其从小鹏汽车离开加入NVIDIA之后的首次公开亮相。 吴目前担任NVIDIA汽车事业部副总裁&#xff0c;全面负责NVIDIA的车载计算产品线DRIVE平台的产品定义以及工程落地工作。吴新宙最广为人知的经历&#xf…

ES学习日记(三)-------第三方插件选择

前言 在学习和使用Elasticsearch的过程中&#xff0c;必不可少需要通过一些工具查看es的运行状态以及数据。如果都是通过rest请求&#xff0c;未免太过麻烦&#xff0c;而且也不够人性化。 目前我了解的比较主流的插件就三个,head,cerebor和elasticHD 1.head 老牌插件,功能…

聊聊低代码产品的应用场景

随着数字化转型的不断深入&#xff0c;企业对于快速开发和迭代软件应用的需求也越来越迫切。而在这样的背景下&#xff0c;低代码产品应运而生&#xff0c;成为了一种热门的技术解决方案。本文将解读低代码产品的定义并探讨其应用场景。 一、低代码产品的定义 低代码产品是一种…

白帽工具箱:在windows上安装部署渗透测试演练系统DVWA

&#x1f31f;&#x1f30c; 欢迎来到知识与创意的殿堂 — 远见阁小民的世界&#xff01;&#x1f680; &#x1f31f;&#x1f9ed; 在这里&#xff0c;我们一起探索技术的奥秘&#xff0c;一起在知识的海洋中遨游。 &#x1f31f;&#x1f9ed; 在这里&#xff0c;每个错误都…

Element

1、Element 基本使用 1.1、Element介绍 Element&#xff1a;网站快速成型工具。是饿了么公司前端开发团队提供的一套基于Vue的网站组件库。 使用Element前提必须要有Vue。 组件&#xff1a;组成网页的部件&#xff0c;例如超链接、按钮、图片、表格等等~ Element官网&#…

Java的IDEA的工程管理

模块和包的图标&#xff1a; 举个例子&#xff1a; IDEA中创建包&#xff1a; 如图所示&#xff0c;com.LBJ的意思是在com包中创建子包LBJ 参见&#xff1a; IDEA中项目、模块和包的关系_idea中模块和项目-CSDN博客

北斗短报文+4G应急广播系统:实时监控 自动预警 保护校园安全的新力量

安全无小事&#xff0c;生命重如山。学生是祖国的未来&#xff0c;校园安全是全社会安全工作的一个重要的组成部分。它直接关系到青少年学生能否安健康地成长&#xff0c;关系到千千万万个家庭的幸福安宁和社会稳定。 灾害事故和突发事件频频发生&#xff0c;给学生、教职员工…

C语言中常用的文件操作

本文将介绍常用的关于文件操作函数&#xff0c;如fopen,fclose,fread,fwrite,feek,ftell,rewind以及feof和ferror等文件操作操作函数&#xff0c;还介绍一些用于所有输入输出流的函数如fgetc,fputc,fgets,fputs,fprintf,fscanf等函数&#xff0c;还介绍了sscanf,sprintf函数,fe…

解决VMWare Esxi 6.5.0 导出虚拟机时发生网络错误

解决办法&#xff1a;使用vmware ovftool工具导出。 1 先安装该工具到windows下面&#xff0c;有32位的和64位的 2 用管理员进入命令方式&#xff1a; 进入&#xff1a;c:\windows 进入工具命令当前文件夹&#xff08;具体看用户的安装路径&#xff09;&#xff1a; cd \p…

【深度解读】出海社交软件云安全战略:关键技术与实践路径

随着中国社交软件企业扬帆出海&#xff0c;面对全球市场的机遇与挑战&#xff0c;确保云环境下的信息安全与合规成为了企业能否成功立足的关键要素。尤其在社交领域&#xff0c;用户数据隐私保护、严格遵守各国法律法规以及防范高级网络攻击的压力日益增大。以下将从技术架构、…