阿里云CentOS7安装Hadoop3伪分布式

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.mzph.cn/news/777678.shtml

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

相关文章

HarmonyOS 应用开发之Want的定义与用途

Want 是一种对象&#xff0c;用于在应用组件之间传递信息。 其中&#xff0c;一种常见的使用场景是作为 startAbility() 方法的参数。例如&#xff0c;当UIAbilityA需要启动UIAbilityB并向UIAbilityB传递一些数据时&#xff0c;可以使用Want作为一个载体&#xff0c;将数据传递…

如何在Flutter中进行网络请求?

Hello&#xff01;大家好&#xff0c;我是咕噜铁蛋&#xff0c;你们的好朋友&#xff01;今天&#xff0c;我想和大家分享一下在Flutter中如何进行网络请求。Flutter作为一个跨平台的开发框架&#xff0c;网络请求是其实现数据交互的重要一环。下面&#xff0c;我将详细介绍几种…

构建一个基础的大型语言模型(LLM)应用程序

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

docker部署-RabbitMq

1. 参考 RabbitMq官网 docker官网 2. 拉取镜像 这里改为自己需要的版本即可&#xff0c;下面容器也需要同理修改 docker pull rabbitmq:3.12-management3. 运行容器 docker run \ --namemy-rabbitmq-01 \ -p 5672:5672 \ -p 15672:15672 \ -d \ --restart always \ -…

java算法day37 | 贪心算法 part06 ● 738.单调递增的数字 ● 968.监控二叉树

738.单调递增的数字 思路&#xff1a; 从后向前遍历&#xff0c;如果前一个数比后一个数大&#xff0c;则前一个数-1&#xff0c;后面的数都变成9. 思路不难&#xff0c;但实现的代码还是有一点繁琐的。 以下是用List实现的代码。 class Solution {public int monotoneIncrea…

【群晖】部署UptimeKuma监控服务

【群晖】部署UptimeKuma监控服务 点击标题查看原文 本文讲解在群晖系统中使用docker方式部署UptimeKuma服务并通过外网地址正确访问 配置及版本 DSM&#xff1a;7.2&#xff08;7.x以上均可&#xff09; UptimeKuma&#xff1a;louislam/uptime-kuma:latest 安装 docker中下…

Switch 和 PS1 模拟器:3000+ 游戏随心玩 | 开源日报 No.174

Ryujinx/Ryujinx Stars: 26.1k License: MIT Ryujinx 是用 C# 编写的实验性任天堂 Switch 模拟器。 该项目旨在提供出色的准确性和性能、用户友好的界面以及稳定的构建。它已经通过了大约 4050 个测试&#xff0c;其中超过 4000 个可以启动并进入游戏&#xff0c;其中大约 340…

SpringBoot+ElasticSearch实现文档内容抽取、高亮分词、全文检索

需求 产品希望我们这边能够实现用户上传PDF、WORD、TXT之内得文本内容&#xff0c;然后用户可以根据附件名称或文件内容模糊查询文件信息&#xff0c;并可以在线查看文件内容。 一、环境 项目开发环境&#xff1a; 后台管理系统springbootmybatis_plusmysqles 搜索引擎&#…

springdata框架对es集成

什么是spring data框架 Spring Data是一个用于简化数据库、非关系型数据库、索引库访问&#xff0c;并支持云服务的开源框架。其主要目标是使得对数据的访问变得方便快捷&#xff0c;并支持 map-reduce框架和云计算数据服务。Spring Data可以极大的简化JPA(Elasticsearch…)的…

ssh 公私钥(github)

一、生成ssh公私钥 生成自定义名称的SSH公钥和私钥对&#xff0c;需要使用ssh-keygen命令&#xff0c;这是大多数Linux和Unix系统自带的标准工具。下面&#xff0c;简单展示如何使用ssh-keygen命令来生成具有自定义名称的SSH密钥对。 步骤 1: 打开终端 首先&#xff0c;打开我…

对话 Mines of Dalarnia: Web3 游戏创新,社区驱动与公链共建

作者&#xff1a;stellafootprint.network 嘉宾&#xff1a;Manfred Pack&#xff0c;Mines of Dalarnia 游戏开发总监 采访者&#xff1a;Alex Cooper&#xff0c;Footprint Analytics 北美社区与 BD 负责人 在区块链游戏领域&#xff0c;去中心化和玩家经济正在颠覆传统游戏…

泛型,数据结构,集合

文章目录 泛型介绍解决问题好处使用通配符泛型的下限泛型的上限 数据结构定义常见的数据结构栈(先进后出)队列(先进先出)数组结构链表结构哈希表结构 集合List集合特点特有方法子类及其底层数据结构LinkedList集合 Set集合特点没有特有方法子类及其底层数据结构LinkedHashSet集…

vscode使用sftp上传

1.用vscode打开项目 2.安装一下这个sftp 3.使用快捷键 ctrlshiftP 打开指令窗口&#xff0c;输入 sftp:config&#xff0c;选中回车&#xff0c;在当前目录中会自动生成 .vscode 文件夹及 sftp.json 4.修改sftp.json文件配置&#xff0c;改成以下&#xff08;默认的参数可能上传…

AJAX-项目优化(目录、基地址、token、请求拦截器)

目录管理 基地址存储 在utils/request.js配置axios请求基地址 作用&#xff1a;提取公共前缀地址&#xff0c;配置后axios请求时都会baseURLurl 填写API的公共前缀后&#xff0c;将js文件导入到html文件中 <script src"../../utils/request.js"></script&…

AI新工具 又一个开源大模型DBRX击败GPT3.5;根据音频和图像输入生成会说话、唱歌的动态视频

✨ 1: AniPortrait 腾讯开源&#xff1a;根据音频和图像输入生成会说话、唱歌的动态视频 AniPortrait 是个先进的框架&#xff0c;专门用来生成高质量的、由音频和参考肖像图片驱动的动画。如果你有视频&#xff0c;也可以用来实现面部的再现&#xff08;Face reenactment&am…

【氮化镓】位错对氮化镓(GaN)电子能量损失谱(EEL)的影响

本文献《Influence of dislocations on electron energy-loss spectra in gallium nitride》由C. J. Fall等人撰写&#xff0c;发表于2002年。研究团队通过第一性原理计算&#xff0c;探讨了位错对氮化镓&#xff08;GaN&#xff09;电子能量损失谱&#xff08;EEL&#xff09;…

内网穿透_ICMP_icmpsh

目录 一、ICMP协议详解 二、ICMP隧道 (一) 为什么会使用ICMP (二) 实验环境 (三) 操作流程 1. 下载icmpsh 2. 下载并安装依赖 3. 关闭本地icmp响应 4. 攻击机启动服务端开始监听 5. 靶机启动工具客户端 6. 攻击机接受到靶机传来的数据 三、郑重声明 一、ICMP协议详…

C# 反射的使用及场景

1&#xff0c;使用反映将一个对象的同名属性赋值给另一个对象 2, DataTable 转换成一个实体 3&#xff0c;使用反射动态执行方法 4,根据属性信息来执行对应的方法 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using…

Spring用到了哪些设计模式?

目录 Spring 框架中⽤到了哪些设计模式&#xff1f;工厂模式单例模式1.饿汉式&#xff0c;线程安全2.懒汉式&#xff0c;线程不安全3.懒汉式&#xff0c;线程安全4.双重检查锁&#xff08;DCL&#xff0c; 即 double-checked locking&#xff09;5.静态内部类6.枚举单例 代理模…

【论文阅读】UniLog: Automatic Logging via LLM and In-Context Learning

注 由于其公司的保密政策&#xff0c;本文没有公开源代码&#xff0c;数据是公开的。 文章目录 摘要一、介绍二、背景和动机2.1、日志语句生成2.2、大语言模型2.3、上下文学习&#xff08;In-Context Learning&#xff0c;ICL) 三、UNILOG3.1、模型骨干3.2、提示策略3.2.1、提…