【Hadoop专场】Docker + Hadoop的安装过程以及在Windows下安装Hadoop,在eclipse上debug

告别HADOOP_HOME报错:在Windows/Mac上为Spring Boot项目配置Hadoop运行环境的完整指南 本文提供了在Windows和Mac上为Spring Boot项目配置Hadoop运行环境的完整指南,解决常见的HADOOP_HOME报错问题。从下载Hadoop二进制包、设置环境变量到IDE配置,详细步骤帮助开发者快速搭建本地开发环境,确保HBase或Hadoop功能正常运行。 阅读详情

        最近正在上Hadoop的课程,需要做一个project验收。老师的要求是搭建一个Hadoop集群,1个namenode和2个datanode,老师交代只用自己的笔记本跑就可以,搭三个虚拟机运行下就好,然鹅,我的笔记本是lowlow的i3,内存也只有4GB(扎心),平时跑一个虚拟机都算勉强,再跑一个都够呛,此时,我灵光一闪,用docker试试吧,然后上网了解了下用docker跑Hadoop的可能性,结果受到了万分打击,网友们纷纷建议hadoop最好不要在docker上跑,以及4G内存没资格跑hadoop等等。但是我要完成我的project,只能硬着头皮装docker+hadoop,当然,我选择在服务器上装,实在是4G真心不经跑。

      系统搭建:docker + hadoop2.7.3+jdk1.8.1。服务器:centos6.5(版本很老,但是boss不让升级)      基本过程是按照博客:https://blog.youkuaiyun.com/liuyunshengsir/article/details/79128948和https://blog.youkuaiyun.com/xu470438000/article/details/50512442综合而成。其实两篇博文描述的过程都一样,但是博文二在三个节点通信的时候采用的是pipework来桥接。但是我试了很久,总是失败的。所以我采用了博文一。

1.安装docker

yum search docker
yum install docker-io  

2.检测docker是否可以运行

# 启动docker指令
service docker start 
# 停止docker指令
servicce docker stop

 如果出现以下的提示就说明docker安装成功了 

 如果出现了错误,使用 docker -d 等待一段时间再重新启动。

 3.构建镜像文件

(1)第一个镜像:cento-ssh-root镜像

mkdir centos-ssh-root # 创建一个目录
cd centos-ssh-root 
vi Dockerfile

然后把以下的内容copy到Dockerfile中,注意:该镜像的root用户密码为root,可以自己修改下面的文件重新设置密码。

用到的包:which ,wget  到http://mirror.centos.org/centos-7/7/os/x86_64/Packages/处下载。

# 选择一个已有的os镜像作为基础  
FROM centos 
   
# 镜像的作者  
MAINTAINER ge 
   
# 安装openssh-server和sudo软件包,并且将sshd的UsePAM参数设置成no  
RUN yum install -y openssh-server sudo  
RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config  
#安装openssh-clients
RUN yum  install -y openssh-clients
   
# 添加测试用户root,密码root,并且将此用户添加到sudoers里  
RUN echo "root:root" | chpasswd  
RUN echo "root   ALL=(ALL)       ALL" >> /etc/sudoers  
# 下面这两句比较特殊,在centos6上必须要有,否则创建出来的容器sshd不能登录  
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key  
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key  
   
# 启动sshd服务并且暴露22端口 
RUN mkdir /var/run/sshd  
# 预装一些命令后面需要使用,也可以不安装,到后面再安装
ADD which-2.20-7.el7.x86-64.rpm /usr/local/
RUN rpm -i /usr/local/which-2.20-7.el7.x86-64.rpm
RUN rom -qa
EXPOSE 22  
CMD ["/usr/sbin/sshd", "-D"]

  构建以下命令构建镜像(注意最后有个句点表示当前目录)

docker build -t="ge/centos-ssh-root" .

 

(2)第二个镜像 :centos-ssh-root-jdk

mkdir centos-ssh-root-jdk # 创建一个目录
cd centos-ssh-root-jdk 
vi Dockerfile
cp jdk包的地址 .   # 把jdk1.8拷贝到当前目录下

   然后把以下的内容copy到Dockerfile中

   用到的包:jdk1.8,网上可以找到资源。

FROM ge/centos-ssh-root # 依赖的上一个镜像名称
ADD jdk-8u162-linux-x64.tar.gz /usr/local/
RUN mv /usr/local/jdk1.8.0_162 /usr/local/jdk1.8
ENV JAVA_HOME /usr/local/jdk1.8
ENV PATH $JAVA_HOME/bin:$PATH

  构建以下命令构建镜像(注意最后有个句点表示当前目录)

docker build -t="ge/centos-ssh-root-jdk" .

(3)第三个镜像

mkdir centos-ssh-root-jdk-hadoop
cd centos-ssh-root-jdk-hadoop
cp hadoop安装包的地址 . # 把hadoop拷贝到当前目录下
Vi Dockerfile   

    然后把以下的内容copy到Dockerfile中

    用到的包:hadoop-2.7.3,网上可以找到资源。

FROM ge/centos-ssh-root-jdk
ADD hadoop-2.7.3.tar.gz /usr/local/
RUN mv /usr/local/hadoop-2.7.3 /usr/local/hadoop
ENV HADOOP_HOME /usr/local/hadoop
ENV PATH $HADOOP_HOME/bin:$PATH

  构建以下命令构建镜像(注意最后有个句点表示当前目录)

docker build -t="ge/centos-ssh-root-jdk-hadoop" .

4.搭建hadoop集群 

(1)启动三个容器,分别是hadoop0(主),hadoop1,hadoop2(从)

         执行以下命令,注意directory1和directory2是自己设置的,可以看下面的解释

docker run --name hadoop0 -v directory1:directory2 --hostname hadoop0 -d -P -p 50070:50070 -p 8088:8088 ge/centos-ssh-root-jdk-hadoop

docker run --name hadoop1 -v directory1:directory2 --hostname hadoop1 -d -P ge/centos-ssh-root-jdk-hadoop

docker run --name hadoop2 -v directory1:directory2 --hostname hadoop2 -d -P ge/centos-ssh-root-jdk-hadoop

这样就启动了三个容器,用下述命令可以查看容器运行状态

docker ps

(2) 使用下面的指令查看三个节点的IP。然后在每个节点的/etc/hosts中配置起来。

 docker inspect -f='{{.Name}} {{.NetworkSettings.IPAddress}} {{.HostConfig.PortBindings}}' $(docker ps -aq)

(3)接下来就是正常的hadoop的配置操作,这里就不再赘述,有时间回来再补上

【注】由于docker是为容器分配临时IP,当docker重新启动时,每个容器的IP就改变了,所以/etc/hosts要重新配置。如果想避免这一麻烦,可以使用pipework来固定IP。

因为是在docker上运行,之前不常用docker,所以docker的指令很陌生,在这里记录一些些。 

# 创建并运行一个容器
docker run -it  -v directory1:directory2 containername /bin/bash
# 解释:imagename:容器名称。
#如果不需要与主机进行文件共享的话,可以不加-v directory1:directory2。但是由于我是在服务器上搭建的,如果不共享目录,着实难受(但是之前的两篇博文没有这个,所以我没有创建共享目录,之后采用很麻烦的方法来进行文件传输)。
#解释下directory1是表示主机上的文件地址的绝对路径,而directory2则是容器的文件地址的绝对路径。
#这样directory1和directory2便连在一起啦(也就是文件挂载)

# 查看容器的运行状态
docker ps -a
# 可以看看每个容器status,就知道每个容器的运行状态。

#开启容器
docker start containername

#关闭容器
docker stop containername

#进入容器
docker exec -it containername /bin/bash

#退出容器但是不关闭容器
ctrl+P+Q

#主机和docker容器间的文件传输
主机->docker容器
docker cp file_path containername:container_file_path
docker容器->主机
docker cp containername:container_file_path file_path

5.eclipse上debug hadoop程序

参考如下博文:https://blog.youkuaiyun.com/wudichengyaojin/article/details/64440655

 

Spark本地开发环境搭建:隔离、验证与可扩展的三步闭环法 Apache Spark 是一个分布式计算引擎,其本地开发环境并非简单的软件安装任务,而是一个涉及JDK版本兼容性、Hadoop二进制绑定、Python-JVM通信协议(Py4J)、类路径隔离与配置驱动扩展的系统性工程。理解 Spark 运行时原理——如 Catalyst 优化器触发条件、local[*] 模式下的 Driver 网络绑定机制、以及 spark-sql 模块的依赖树完整性——是规避 ClassNotFoundException、NoSuchMethodError 和 Py4J 通信失败的关键 阅读详情

相关推荐

JDK26模块化实战:jlink精简镜像与jpackage云原生打包

Java模块化是自JDK9引入的核心架构演进,其本质是通过显式依赖声明和强封装机制重构JVM类加载逻辑,提升启动性能、内存效率与部署安全性。随着JDK26将JLink设为默认构建环节、JPackage强制输出app-image格式,模块化已从可选特性升级为云原生Java应用的交付基础设施。技术价值体现在三方面:启动耗时降低70%+、运行时内存峰值压缩至1/4、Docker镜像体积减少60%以上;典型应用场景包括边缘计算(如蓝牙控灯软件)、微服务容器化部署及多版本共存的企业级开发环境(如Hadoop+实时计算

weixin_33800463的博客 437

docker- compose 部署 RabbitMQ_docker-compose rabbitmq

查看15672端口是否开放(如果没有连带5673一起开启)比如 http://127.0.0.1:15672。如果上面没有配置密码默认 账号密码都为guest。确认容器是否运行,如果没有换一个镜像。docker ps 检查容器是否启动。进入容器内 xxx容器名称/id。启动管理插件 在容器内运行!参看ip地址是否正确。

2401_84159966的博客 1457

从传感器到可视化:手把手搭建实时温度监控系统

物联网监控系统通过传感器采集物理世界数据,经由网络传输至服务器进行处理与存储,最终实现可视化展示与智能告警。其核心价值在于实现对设备或环境状态的持续、自动化感知与预警,从而保障系统稳定运行、预防故障发生。在工业控制、服务器运维、智能家居及农业大棚等场景中,温度监控是基础且关键的应用。本文以树莓派、DS18B20传感器、MQTT协议、InfluxDB和Grafana为核心组件,详细阐述了构建一套完整实时温度监控系统的架构设计、硬件选型与软件实现,为相关领域的开发者和爱好者提供了从零到一的实践指南。

weixin_30333885的博客 486

Windows 环境下 Docker 安装伪分布式 Hadoop

将时区文件链接到本地时间文件上,以便系统能够正确地显示当前时间,防止系统重启后时区改变。输入下面命令可以看到时间和咱们时间不一样,需要同步一下不然以后可能会遇到一些问题。设置 ssh 开机自启,找到并打开文件/root/.bashrc。配置容器内的 root 用户密码,该密码可用于远程登录。我这里选用阿里源,按 esc 键再 :wq 保存退出。退出当前容器,然后我们可以保存镜像,以备以后的使用。删除其中全部内容,复制下面的所有内容粘贴上去。到这里咱们前期准备工作差不多完成了,

皮埃尔的博客 1852

docker搭建hadoop集群(为分布式、完全分布式)

第1章 写在前面必读 1.1 Hadoop生态简单说明 说明:hadoop只是一个存储数据的平台,mapreduce是一个计算框架,需要编程人员去编写处理数据的程序。然后hadoop是一个生态,就是说在其上还运行着hbase数据库,sqoop,shark等等工具,这样才能将hadoop存储的数据加以利用。Hbase是一种时序数据库,可用来往hadoop写数据,并通过hadoop读取数据,搭建这些的时候还要用到zookeeper软件去管理消息。总之hadoop生态涉及的东西太多,学习起来复杂,但是并不难,就是

weixin_40548182的博客 1万+

【信息科学与工程学】【数据中心】第三十五篇 云计算数据中心的学科知识04

编号学科(课程)核心知识点在云计算/云存储/云网络/云安全/云MaaS中的作用代表教材/资料/论文 + 数学方程式列表工业界应用D1421​云原生数据库:TiDB​HTAP(混合事务/分析处理)、分布式SQL、水平扩展、强一致(Raft)、自动故障恢复、与MySQL兼容、TiFlash列式引擎提供弹性扩展的分布式数据库;支撑高并发在线交易与实时分析教材:《TiDB in Action》PingCAP(2020) 论文:《TiDB: A Raft-based HTAP Database》(2017)

weixin_49199313的博客 406

windows平台使用Docker搭建分布式hadoop集群

先修篇 下载Docker可参考该博客的Docker安装 安装Docker可能遇到的一些问题可参考该博客的Docker安装问题 操作环境 windows : 10 Docker : 4.7.0 将要拉取的镜像 : centos 7.6.1810 1. 安装centos 7.6镜像 1.1 搜索centos 7.6镜像 docker search centos7 1.2 拉取镜像 docker pull centos:7.6.1810 1.3 验证镜像安装成功 docker images .

m0_48275578的博客 1万+

实战演练:用wvp-GB28181-pro + ZLMediaKit搭建一个可用的国标视频监控测试环境(附设备模拟器对接)

本文详细介绍了如何使用wvp-GB28181-pro和ZLMediaKit在Ubuntu系统上搭建GB28181视频监控测试环境。从环境准备、组件解析到核心服务部署与设备模拟器对接,提供完整的实战指南,帮助开发者快速构建可验证的监控系统。

weixin_42692935的博客 580

win10环境安装docker及使用docker搭建hadoop、hive环境

win10环境安装docker及使用docker搭建hadoop、hive环境

m0_74298808的博客 3353

ADS2016子电路封装避坑指南:手把手教你制作可复用的自定义Symbol

本文详细介绍了在ADS2016中制作可复用的自定义Symbol的全流程,重点解析了子电路封装的常见问题与解决方案。从电路模块的标准化处理、Hierarchy创建技巧到Symbol视觉优化和库管理策略,帮助工程师提升射频与微波电路设计效率。特别针对Symbol比例适配和引脚优化等核心问题,提供了实用的避坑指南和工程验证方法。

weixin_30275415的博客 214

Akamai-3.0补环境逆向-DHL快递查询

那么我们的请求过程就是:1.请求首页的html文件,通过re或xpath,提取到这个url,拼接官网地址,得到这个js文件的地址。返回的_abck为0,表示环境正确,请求搜索接口返回200,说明返回的_abck正确,如果过程错误或环境补的有问题会返回403或428这两个状态码。那么,就是这个包返回的,而且这个包需要请求两次,第一次get请求,返回的这个-1的cookie,第二次请求,带上一个sensor_data的参数,进行post请求,最终返回这个0的cookie,代表你过了akamai这个盾。

2302_76420666的博客 2858

Java开发实战:从环境配置到生产部署全指南

Java作为长期占据TIOBE榜单前三的编程语言,其跨平台特性和强大生态系统支撑着企业级应用开发。JVM实现的一次编写到处运行(WORA)机制,配合Spring、Hadoop等成熟框架,使其成为金融、电商等高并发场景的首选。本文以Windows环境为例,详解JDK发行版选型技巧,推荐使用Temurin或Corretto等OpenJDK实现,并给出IntelliJ IDEA性能调优参数配置。针对Spring Boot项目初始化、数据库连接等常见痛点,提供容器化部署方案和JVM内存分析技巧,帮助开发者避开典型陷

weixin_33859231的博客 430

告别混乱!AutoSar BswM模式管理实战:手把手教你配置Rule与ActionList(附避坑指南)

本文详细解析了AutoSar BswM模式管理的实战配置,重点介绍了Rule与ActionList的高效组合方法,帮助开发者避免常见陷阱。通过具体案例演示了从基础到复杂的配置步骤,包括模式仲裁、逻辑表达式构建及ActionList优化策略,提升汽车电子系统的协调性与可靠性。

weixin_27066963的博客 259

建筑转行Java开发:从零搭建云原生待办事项API实战指南

面向对象编程是现代软件开发的基石,它通过封装、继承和多态等机制,将现实世界的实体抽象为代码中的类与对象,从而构建出结构清晰、易于维护的复杂系统。其核心原理在于通过模块化设计降低耦合度,提升代码的复用性和可扩展性。掌握面向对象思想对于构建健壮的企业级应用至关重要,尤其是在Java生态中,它是理解和运用Spring等主流框架的前提。这种工程化思维与建筑行业的系统性设计有异曲同工之妙,都能有效管理复杂性。在云原生时代,结合Docker等容器化技术,开发者可以进一步实现应用环境的标准化与快速部署,这大大提升了开发运

weixin_30681121的博客 312

别再为PCB和散热器文件发愁了!手把手教你用ADS导出DWG文件给工厂(附单位转换避坑指南)

本文详细解析了从ADS设计到PCB/散热器加工的DWG文件导出全流程,重点介绍了单位转换、分层导出策略及散热器文件处理等关键步骤,帮助射频工程师避免加工误差和返工。特别提供了mil与mm单位转换的精确处理方法,确保设计文件与工厂加工需求无缝对接。

weixin_30814329的博客 616

复旦微FMSH_Procise安装全流程详解:从环境配置到实战避坑指南

通过本文的全流程解析+实战技巧,开发者可快速掌握Procise在复旦微芯片开发中的核心应用。未来随着AKConv轻量级架构(参考往期文章)等创新技术的融入,国产芯片开发生态将更加完善。立即关注本专栏,获取最新多镜像切换指南与Linux SDK实战教程!扩展阅读复旦微在线升级BOOT.BIN全解析H7-TOOL实现复旦微脱机烧录(注:本文实验环境为Windows 10 x64 + FMQL45T-CORE开发板,部分操作可能因版本更新调整)立即行动下载本文配套配置文件:[GitHub链接]加入技术交流群。

QQ_778132974的博客 3240

工业自动化系统架构实战:从数据采集到智能决策的全栈技术路径

工业自动化系统的核心在于构建一个从物理设备到云端决策的稳定数据流。其基本原理是通过OPC UA、MQTT等工业通信协议,将PLC、传感器等设备层的数据实时采集并上传。这一技术架构的价值在于打通信息孤岛,实现生产过程的透明化与可追溯性,为数据驱动的决策奠定基础。在应用场景上,它广泛服务于离散制造与流程工业的监控、排产与质量控制。本文以构建一个可扩展的自动化工厂软件系统为例,深入探讨了基于Spring Boot微服务、Docker容器化以及InfluxDB时序数据库的工程实践方案,并重点分析了MQTT协议在实现

weixin_30888413的博客 362

Mybatis面试题(基础篇)

(1)mybatis是支持定制化SQL、存储过程以及高级映射的优秀的持久层框架。(2)mybatis避免了几乎所有的JDBC代码(说明了mybatis底层用的就是JDBC,只不过是封装了)和手动设置参数以及获取结果集。(3)mybatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的pojo映射成数据库中的记录。

qq_38196449的博客 1687

RTX Spark深度解析:将轻薄本变为个人超算的GPU加速Spark实战指南

GPU加速计算已成为现代数据处理与人工智能应用的核心技术,其原理在于利用图形处理器的并行架构,将大规模计算任务分解为数千个并发线程同时执行,从而实现对CPU计算的显著加速。这项技术的核心价值在于,它能够将传统上只能在数据中心服务器集群上运行的高性能计算工作负载,迁移到个人计算设备上,极大地提升了开发效率与实验迭代速度。在数据科学、机器学习和大数据处理等应用场景中,GPU加速能够为Apache Spark这类框架的关键操作(如连接、聚合和排序)带来数量级的性能提升。本文聚焦于英伟达推出的RTX Spark技术

weixin_30387423的博客 299

Pandas滚动窗口的妙用:动态计算列数据的最大值

Pandas的滚动窗口(rolling window)功能是数据分析中处理时间序列数据的重要工具。本文通过实例演示了如何使用rolling(window=4).max()计算DataFrame列A的滚动最大值,并将结果存入新列Max_Range。该方法会在4个元素的滑动窗口内计算最大值,前3行因数据不足显示为NaN。这种技术广泛应用于金融分析(如股价波动)、数据平滑和趋势识别等场景,能有效帮助分析数据的动态变化特征。示例展示了从数据准备到结果输出的完整流程,体现了Pandas在处理滑动窗口计算时的高效性和便

m0_74337424的博客 53

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Spring Boot校园二手交易平台:半天搭建后端与多技术栈对比

在Web应用开发领域,Spring Boot凭借其约定大于配置的理念和强大的自动装配能力,已成为构建企业级RESTful API的主流框架。其核心原理在于通过Starter依赖简化了传统Spring应用的繁琐配置,使开发者能快速搭建可独立运行的微服务。这一技术价值体现在大幅提升了开发效率,降低了项目启动门槛,尤其适用于电商、社交、管理等各类平台型应用的快速原型开发。以校园二手物品交易平台为例,这类典型的C2C电商应用场景,其核心模块如用户、商品、订单系统,正是Spring Boot结合MyBatis-Plu

dianxi0949的博客 317

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

AI赋能MES:从智能排程到质量预测的实战架构与开发指南

制造执行系统(MES)作为连接企业计划层与车间控制层的核心信息系统,其核心价值在于对生产流程的实时管理与监控。传统MES基于预设规则运行,但在应对动态排程、质量波动和设备异常等复杂非线性问题时,往往依赖人工经验,响应滞后。人工智能(AI)技术,特别是机器学习和深度学习,通过从海量历史数据中学习模式,为MES注入了预测与优化能力,实现了从“记录执行”到“感知分析、预测优化”的智能升级。这种AI与MES的融合,在工程实践中体现为对生产排程、质量控制和设备维护等关键场景的深度优化,例如利用强化学习进行动态排程以提

weixin_30530939的博客 370

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

windows10下docker的hadoop集群安装与配置

docker ps -a docker images docker system prune docker ps -a docker run hello-world

qq_37797234的博客 1373

使用 Docker 搭建 Hadoop 分布式环境_windows系统docker怎么搭建hadoop框架

下载这个升级包,并安装之后点击 Docker desktop 安装报错提示框中的Restart,就能顺利安装完成并启动了。

2401_84182318的博客 810

如何在家庭版Windows下安装docker并且配置独立模式的Hadoop(Linux系统也可参考)

在家庭Windows下安装docker 1.下载Docker 在学习Hadoop时,要用到docker,但是docker只能在在专业版或者企业版的电脑运行,所以这里找了一种方法,可以在家庭版上安装docker。这里以win10系统为例: 首先安装docker toolbox。 网址:http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/ Docker的有CE和EE版,CE为免费版 2.改变安装docker 下载下来docker to

nyh670276894的博客 1662

Win11 在Docker中部署Hadoop、Spark

在/usr/local/hadoop/etc/hadoop/目录下修改(直接在docker中找到相应文件夹改即可)注:一般情况很快就更新好了,如果更新超级慢(注意看一下是否修改了docker的镜像。修改hadoop-env.sh文件,加入Hadoop home参数。修改hadoop-env.sh文件,加入Hadoop home参数。查看 HDFS 中的 /output 文件夹的内容。全部修改为(删掉localhost)全部修改为(删掉localhost)直接在此界面修改(把原来的全删了)

weixin_52785140的博客 1083
上一篇: 当非root用户删除libc.so.6之后。。。
下一篇: Python笔记整理
ever_idea
博客等级 码龄11年 12粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值