1、Docker中拉取jdk8镜像

拉取镜像

docker pull openjdk:8-jdk 

查看jdk

docker run -it openjdk:8-jdk bash
which java

2、安装ubuntu源

拉取镜像

docker pull ubuntu:22.04

保存 

docker save -o ubuntu-22.04.tar.gz ubuntu:22.04

移动到自己想要的目录

mv /root/ubuntu-22.04.tar.gz /www/wwwroot/hadoop/docker-files/

3、准备Hadoop所需配置

hadoop3.4.1的下载链接:

https://downloads.apache.org/hadoop/common/hadoop-3.4.1/hadoop-3.4.1.tar.gz

目录结构简图:

/www/wwwroot/hadoop
│
├── conf
│   ├── core-site.xml
│   ├── hdfs-site.xml
│   ├── mapred-site.xml
│   └── yarn-site.xml
│
├── docker-files
│   ├── hadoop-3.4.1.tar.gz
│   └── ubuntu-22.04.tar.gz
│
└── Dockerfile

Dockerfile:

注意开放这几个端口:9870 8088 9000,并且注意刚刚jdk的路径

# 使用 OpenJDK 8(基于 Debian)
FROM openjdk:8-jdk# 设置 JAVA_HOME,改为实际路径
ENV JAVA_HOME=/usr/local/openjdk-8
ENV PATH=$JAVA_HOME/bin:$PATH# 设置 Hadoop 版本和环境变量
ENV HADOOP_VERSION=3.4.1
ENV HADOOP_HOME=/usr/local/hadoop
ENV PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin# 更换为阿里云 Debian 镜像源并安装必要工具
RUN echo 'deb http://mirrors.aliyun.com/debian/ bullseye main contrib non-free' > /etc/apt/sources.list && \echo 'deb http://mirrors.aliyun.com/debian/ bullseye-updates main contrib non-free' >> /etc/apt/sources.list && \echo 'deb http://mirrors.aliyun.com/debian/ bullseye-backports main contrib non-free' >> /etc/apt/sources.list && \echo 'deb http://mirrors.aliyun.com/debian-security/ bullseye-security main contrib non-free' >> /etc/apt/sources.list && \apt-get update && \apt-get install -y wget ssh rsync vim && \apt-get clean && \rm -rf /var/lib/apt/lists/*# 创建工作目录
RUN mkdir -p /data/hadoop# 复制本地 Hadoop 压缩包到容器内
COPY docker-files/hadoop-${HADOOP_VERSION}.tar.gz /tmp/# 解压 Hadoop 到指定目录
RUN tar -xzf /tmp/hadoop-${HADOOP_VERSION}.tar.gz -C /usr/local/ && \mv /usr/local/hadoop-${HADOOP_VERSION} ${HADOOP_HOME} && \rm /tmp/hadoop-${HADOOP_VERSION}.tar.gz# 配置 SSH(用于启动 Hadoop)
RUN ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa && \cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys && \chmod 600 ~/.ssh/authorized_keys# 拷贝配置文件
COPY conf/core-site.xml ${HADOOP_HOME}/etc/hadoop/core-site.xml
COPY conf/hdfs-site.xml ${HADOOP_HOME}/etc/hadoop/hdfs-site.xml
COPY conf/yarn-site.xml ${HADOOP_HOME}/etc/hadoop/yarn-site.xml
COPY conf/mapred-site.xml ${HADOOP_HOME}/etc/hadoop/mapred-site.xml# 暴露 Hadoop 服务端口
EXPOSE 9870 8088 9000# 启动 SSH 服务并保持容器运行
CMD ["bash", "-c", "service ssh start && bash"]

core-site.xml:

<configuration><property><name>fs.defaultFS</name><value>hdfs://localhost:9000</value></property>
</configuration>

hdfs-site.xml:

<configuration><property><name>dfs.replication</name><value>1</value></property>
</configuration>

mapred-site.xml:

<configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property><property><name>yarn.app.mapreduce.am.env</name><value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value></property><property><name>mapreduce.map.env</name><value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value></property><property><name>mapreduce.reduce.env</name><value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value></property>
</configuration>

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><property><name>yarn.resourcemanager.webapp.address</name><value>0.0.0.0:8088</value></property>
</configuration>

4、构建 Docker 镜像

先进入对应的目录:

cd /www/wwwroot/hadoop

构建:

docker build -t hadoop-single-node .

几个端口的作用:

端口号服务/用途说明
9870HDFS NameNode Web UINameNode 的 Web 界面,显示 HDFS 文件系统状态、存储信息等,默认端口是 9870。访问地址示例:http://localhost:9870
8088YARN ResourceManager Web UIResourceManager 的 Web 界面,展示集群资源、作业状态、队列等,默认端口是 8088。访问地址示例:http://localhost:8088
9000HDFS NameNode RPC 端口NameNode 的 RPC 服务端口,用于客户端和 DataNode 连接 NameNode(实际存储和访问通信端口),配置文件 core-site.xmlfs.defaultFS 常使用此端口,如 hdfs://localhost:9000

5、启动docker

docker run -it --name hadoop -p 9870:9870 -p 8088:8088 -p 9000:9000 hadoop-single-node

6、格式化 HDFS:

hdfs namenode -format

7、退出容器重新构建镜像

exit

 如果容器正在进行就stop,没的话就直接rm

docker stop hadoop
docker rm hadoop

cd /www/wwwroot/hadoop
docker build -t hadoop-single-node .
docker run -it --name hadoop -p 9870:9870 -p 8088:8088 -p 9000:9000 hadoop-single-node

8、容器里面创建新的用户

adduser hadoop

这里为了方便密码我就设置为:

qwer1234

不然使用后续使用start-dfs.sh会报错:

切换用户 :

su - hadoop

9、配置环境变量

依次执行下面的命令

echo 'export JAVA_HOME=/usr/local/openjdk-8' >> ~/.bashrc
echo 'export HADOOP_HOME=/usr/local/hadoop' >> ~/.bashrc
echo 'export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin' >> ~/.bashrc

刷新环境变量:

source ~/.bashrc

10、给Hadoop用户生成 SSH 密钥对

生成 SSH 密钥对(如果还没有的话):

ssh-keygen -t rsa -P ''

然后回车就好 

将生成的公钥添加到授权密钥文件中

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

设置正确的权限

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

测试 SSH 无密码登录

ssh localhost

AI纯享[狗头]:

11、在容器中追加环境变量

先切换root用户给对应文件赋予权限

chown hadoop:hadoop /usr/local/hadoop/etc/hadoop/hadoop-env.sh

切换回 hadoop 用户:

su - hadoop

依次执行

echo 'export JAVA_HOME=/usr/local/openjdk-8' >> $HADOOP_HOME/etc/hadoop/hadoop-env.sh
echo 'export HADOOP_HOME=/usr/local/hadoop' >> $HADOOP_HOME/etc/hadoop/hadoop-env.sh
echo 'export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin' >> $HADOOP_HOME/etc/hadoop/hadoop-env.sh

刷新环境变量:

source ~/.bashrc

 

给hadoop用户配置读取/usr/local/hadoop/logs的权限问题,继续切换回root用户:

mkdir -p /usr/local/hadoop/logs
chown -R hadoop:hadoop /usr/local/hadoop/logs
chmod -R 755 /usr/local/hadoop/logs

12、重新启动yarn

start-yarn.sh

会发现无法使用jps,给hadoop用户jps权限:

切换会root用户:

查看jps目前只有哪个用户可以使用:

ls -l /usr/local/openjdk-8/bin/jps

修改权限:

chmod +x /usr/local/openjdk-8/bin/jps
chown hadoop:hadoop /usr/local/openjdk-8/bin/jps

再次查看:

可能你还会发现jps执行不了,可以去检查一下这个文件:

vi ~/.bashrc

在最后添加或者检查最后是不是这个:

export JAVA_HOME=/usr/local/openjdk-8
export HADOOP_HOME=/usr/local/hadoop
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

然后esc,输出:w保存然后:q退出

刷新配置:

source ~/.bashrc

继续jps:

会发现没有namenode,重新格式化一下再启动:

hdfs namenode -format

然后重新启动:

start-dfs.sh

13、启动成功

检查(具体localhost替换成你的服务器IP):

localhost:9870 发现

localhost:9870 发现

测试创建一个文件夹:

hdfs dfs -mkdir /test
hdfs dfs -ls /

14、关于博主遇到的bug和 停止和启动hadoop 指令

关于怎么去停止和启动hadoop:

docker exec -it hadoop /bin/bash
su - hadoop
cd /usr/local/hadoop

sbin/stop-all.sh
sbin/start-all.sh

或者:

$HADOOP_HOME/sbin/stop-yarn.sh 
$HADOOP_HOME/sbin/start-yarn.sh

为啥会需要这些呢,因为我之前以为前面的配置问题导致一些xml文件配置有些问题,无法展示8088和9000的界面,不过9000是rpc的通信界面,用localhost也行,毕竟这个也是docker本地腾讯,后期通过手动修改配置文件在容器里面vim他们,然后就需要进行重新启动。

修改的过程大概是这样子:

15、参考

超详细!关于在Docker里安装Hadoop的详细操作(部署单点集群)_docker安装hadoop-CSDN博客文章浏览阅读2.6k次,点赞21次,收藏22次。同时,未定义 HDFS_NAMENODE_USER、HDFS_DATANODE_USER 和 HDFS_SECONDARYNAMENODE_USER 环境变量。这个问题的核心原因是 Hadoop 的分布式模式需要 SSH 无密码访问,而当前用户 hadoop 无法通过 SSH 无密码访问自身或 localhost。这一步很有可能会报错,报错:找不到你的JAVA_HOME,原因是你的JDK镜像容器文件的地址可能跟你配置的Dockerfile文件中的地址不同。这个时候你需要运行JDK8镜像容器,然后查找路径。_docker安装hadoop https://blog.csdn.net/ffhhsxvhh/article/details/144215118

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

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

相关文章

uniapp项目之小兔鲜儿小程序商城(二) 首页的实现:自定义导航栏,轮拨图,前台分类,热门推荐,猜你喜欢,下拉刷新,骨架屏

文章目录 零.首页最终效果一.自定义导航栏1.新建pages/index/components/CustomNavbar.vue首页子组件2.在首页pages/index/index.vue中引入3.隐藏默认导航栏修改标题颜色4.适配不同机型使用到了uniapp的一个api:获取屏幕边界到安全区域的距离在子组件中使用 二.轮拨图1.新建 sr…

RustDesk自建远程服务器

目录 服务端 环境linux 安装 开放端口 客户端配置 下载客户端 安装后配置网络 参考&#xff1a;RustDesk自建远程服务器_rustdesk自建服务器-CSDN博客 服务端 环境 linux 安装 下载 wget https://github.com/rustdesk/rustdesk-server/releases/download/1.1.8-2/r…

【Axure高保真原型】图片伸缩展示列表

今天和大家分享图片伸缩展示列表的3个原型案例&#xff0c;模版都是用中继器制作的&#xff0c;所以使用也很方便&#xff0c;在中继器表格里导入对应的图片&#xff0c;即可自动生成交互效果&#xff0c;具体效果可以点击下方视频观看或打开下方预览地址查看哦 【原型效果】 …

keil新建工程文件结构和每个文件的作用解析(标准库版本)

通过网盘分享的文件:STM32工程模板 链接:https://pan.baidu.com/s/1YPFgXu1kwuwsCVxrXFSjZg?pwd=1111 提取码: 1111 --来自百度网盘超级会员v5的分享 这个工程模版是来源于B站江科大的模版,每个人搭建工程文件结构不一样,仅供参考。 工程文件目录结构如图所示 1、DebugC…

【AI论文】Saffron-1:LLM安全保证的推理缩放范例

摘要&#xff1a;现有的安全保证研究主要集中在培训阶段的协调&#xff0c;以向LLM灌输安全行为。 然而&#xff0c;最近的研究表明这些方法容易受到各种越狱攻击。 同时&#xff0c;推理扩展显著提高了LLM推理能力&#xff0c;但在安全保证方面仍未得到探索。 为了解决这一差距…

LLM 支持的基于意图的分类 网络钓鱼电子邮件

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 抽象 网络钓鱼攻击仍然是现代网络安全的重大威胁&#xff0c;因为它们成功地欺骗了人类和旨在保护他们的防御机制。传统的检测系统主要关注用户在收件箱中看不到的电子邮件元数据。此外&#xff0c;这些…

C++新特性技术发展路径和时间

C 的新特性发展路径和时间线是一个持续演进的过程。以下是一个概览&#xff0c;涵盖了主要的 C 标准及其关键特性&#xff0c;以及它们发布的时间&#xff1a; C 标准版本及发布时间线: C98 (ISO/IEC 14882:1998): 第一个正式的 C 标准。 发布时间: 1998年关键特性: 标准模板库…

OpenAI 如何在激烈的AI人才争夺战中抢占先机?

在这个快速发展的人工智能时代&#xff0c;OpenAI 正处于一个至关重要的发展阶段。随着技术的不断进步&#xff0c;人工智能行业的竞争日益激烈。如何在这场巨大的竞争中立于不败之地&#xff0c;成为了每一个AI公司的核心挑战。就在近日&#xff0c;OpenAI 的新招聘主管华金・…

【Java学习笔记】Java绘图基础

Java绘图基础 一、Java 坐标体系 1. 像素的概念 计算机在屏幕上显示的内容都是由屏幕上的每一个像素组成的 例如&#xff0c;计算机显示器的分辨率是 800600&#xff0c;表示计算机屏幕上的每一行由 800 个点组成&#xff0c;共有 600 行&#xff0c;整个计算机屏幕共有 480…

资深Java工程师的面试题目(一)基础到高级概述

以下是几道面向资深Java工程师的面试题目&#xff0c;涵盖了从基础知识到高级概念及参考答案&#xff1a; 1. Java内存模型和垃圾回收 问题: 请解释一下Java的内存模型&#xff0c;并描述不同类型的内存区域。如何选择适合特定应用需求的垃圾收集器&#xff1f;请比较几种常…

Spring Retry:优雅地实现方法重试机制

前言 在实际的软件开发中&#xff0c;尤其是在涉及网络请求、数据库操作或外部服务调用的场景下&#xff0c;我们常常会遇到一些临时性故障&#xff08;Transient Failures&#xff09;&#xff0c;例如网络波动、数据库连接超时、第三方 API 暂时不可用等。面对这些问题&…

Mysql报错

1.权限问题 MySQL 认证协议不兼容问题解决方案 这个错误表明您的 MySQL 客户端与服务器要求的认证协议不兼容&#xff0c;通常发生在 MySQL 8.0 服务器与旧版客户端之间。 nested exception is org.apache.ibatis.exceptions.PersistenceException: Error querying database. …

小米汽车5月交付量超过28000台,与上月持平

6月1日&#xff0c;小米汽车公布5月交付数据&#xff0c;2025年5月&#xff0c;小米汽车交付量超过28000台&#xff0c;4月官方披露的交付数据也为28000台。 此外&#xff0c;小米汽车5月新增29家门店&#xff0c;全国82城已有298家门店&#xff1b;6月计划新增37家门店&#x…

严格一致性模型

SC 的第二点约束 :store 必须被 所有(包括自身)执行流 同时看到 ,但是不要求写操作“立即”对其他处理器可见&#xff1b;允许写操作延迟一会儿被其他核观察到。 而 严格一致性模型,包括1. store 必须被 所有(包括自身)执行流 同时看到2. 看到的时间 必须是 某个处理器完成写操…

结合 STM32CubeMX 使用 FreeRTOS 实时操作系统

前言 在STM32CubeMX软件出现以后&#xff0c;创建嵌入式项目变得简洁了许多&#xff0c;开发者无需重复编写MCU的外设初始化配置&#xff0c;只需在STM32CubeMX软件中动动鼠标配置完毕&#xff0c;就可以自动生成基于HAL/LL库的Keil项目文件&#xff0c;提高了开发效率。 最近想…

一致性框架:供应链分布式事务问题解决方案

来源&#xff1a;得物技术 一、前言 二、一致性理论基础 1. 一致性模型概述 2. 最终一致性的必要性 三、供应链一致性框架总体架构 1. 一致性框架的核心功能 2. 一致性框架整体框架 3. 一致性框架整体流程 四、一致性框架实现原理 1. 核心组件设计 2. 异步执行实现原…

民国大模型:智能重构下的乱世觉醒与文明转型

引言&#xff1a;当外滩钟声遇见生成式AI 在历史博物馆的数字化展厅中&#xff0c;一幅动态的《民国百景图》正通过全息投影技术演绎十里洋场的繁华与沧桑。这个虚实交融的场景&#xff0c;恰似民国大模型技术的隐喻——以人工智能为纽带&#xff0c;连接起北洋军阀混战与民族…

ROS2 笔记汇总(2) 通信接口

在 ROS 系统中&#xff0c;通信接口&#xff08;Interface&#xff09; 是节点之间传递信息的标准“语言协议”&#xff0c;确保了不同功能节点之间可以正确理解和使用彼此传送的数据内容。我们可以将其理解为“数据结构格式定义”&#xff0c;贯穿于话题&#xff08;Topic&…

微信小程序:将搜索框和表格封装成组件,页面调用组件

一、实现效果 实现搜索框,表格和翻页效果 二、组件实现 1、创建表格组件页面 (1)创建文件 在文件根目录(与pages同级)直接创建components文件夹,并创建表格的页面common-table/index (2)视图层 a、写入表头 循环由主页面传递的columns,数据为字段名label,宽度为设置…

基于贝叶斯学习方法的块稀疏信号压缩感知算法

基于贝叶斯学习方法的块稀疏信号压缩感知算法 BSBL-FM-master/BSBL_BO.m , 15593 BSBL-FM-master/BSBL_FM.m , 12854 BSBL-FM-master/Phi.mat , 131256 BSBL-FM-master/README.md , 3954 BSBL-FM-master/demo.mat , 1610 BSBL-FM-master/demo_fecg.m , 1481 BSBL-FM-master/de…