Docker部署常见应用之大数据基础框架Hadoop

文章目录

    • Hadoop简介
      • 主要特点
      • 核心组件
      • 生态系统
    • Docker Compose 部署集群
    • 参考文章

在这里插入图片描述

Hadoop简介

Hadoop是一个开源框架,由Apache软件基金会开发,用于在普通硬件构建的集群中存储和处理大量数据。它最初由Doug Cutting和Mike Cafarella创建,并受Google的MapReduce和Google File System (GFS) 论文的启发。Hadoop已成为大数据处理的事实上的标准,并被许多企业和组织广泛采用。

主要特点

  1. 可扩展性:Hadoop可以处理从GB到PB级别的数据,通过增加更多的节点来扩展集群。

  2. 可靠性:通过Hadoop的分布式存储和处理能力,即使在硬件故障的情况下,也能保持数据的完整性和可用性。

  3. 简单性:Hadoop的设计哲学是“写起来简单,用起来简单”,使得它易于使用和维护。

  4. 成本效益:它允许使用普通的硬件来构建集群,而不是依赖昂贵的专有系统。

  5. 支持多种数据类型:Hadoop可以处理结构化、半结构化和非结构化数据。

  6. 批处理和实时处理:初始版本的Hadoop主要用于批处理,但随着技术的发展,它也支持实时数据流处理。

核心组件

  1. HDFS (Hadoop Distributed File System)

    • 一个分布式文件系统,设计用于在集群中存储大量数据。
  2. MapReduce

    • 一个编程模型和软件框架,用于在Hadoop集群上进行并行处理。
  3. YARN (Yet Another Resource Negotiator)

    • 一个资源管理器,用于协调计算资源并调度作业。
  4. Hadoop Common

    • 包含Hadoop生态系统中所有项目共有的一些实用工具和库。

生态系统

Hadoop不仅仅是一个单一的框架,它还包括了一系列扩展项目,形成了一个庞大的生态系统,包括但不限于:

  • Apache Hive:数据仓库软件,用于对存储在HDFS中的大数据进行查询和管理。
  • Apache Pig:一种高级平台,用于创建MapReduce程序。
  • Apache HBase:一个分布式的列存储系统,可以进行随机实时读/写访问。
  • Apache Spark:一个快速的内存数据处理引擎,支持批处理和流处理。
  • Apache Storm:一个分布式实时计算系统。
  • Apache Kafka:一个分布式流处理平台。

Hadoop适用于需要处理和分析大规模数据集的场合,如日志分析、数据挖掘、机器学习等。随着技术的发展,Hadoop也在不断地演进,以支持更广泛的应用场景和更高效的数据处理方式。

Docker Compose 部署集群

使用Docker部署Hadoop集群可以通过编写docker-compose.yml文件来实现。以下是一个使用Apache Hadoop官方镜像部署Hadoop伪分布式模式的示例:

  1. 获取官方镜像

    docker pull apache/hadoop:3.3.6
    
  2. 创建hadoop目录

    • 创建目录/opt/hadoop, 下面的docker-compose.ymlconfig 文件均在该目录下创建。
      sudo mkidr /opt/hadoop
      
  3. 创建docker-compose.yml文件
    创建一个包含以下内容的docker-compose.yml文件:

    version: "3"
    services:namenode:image: apache/hadoop:3.3.6hostname: namenodecommand: ["hdfs", "namenode"]ports:- 9870:9870env_file:- ./configenvironment:ENSURE_NAMENODE_DIR: "/tmp/hadoop-root/dfs/name"datanode:image: apache/hadoop:3.3.6command: ["hdfs", "datanode"]env_file:- ./config      resourcemanager:image: apache/hadoop:3.3.6hostname: resourcemanagercommand: ["yarn", "resourcemanager"]ports:- 8088:8088env_file:- ./configvolumes:- ./test.sh:/opt/test.shnodemanager:image: apache/hadoop:3.3.6command: ["yarn", "nodemanager"]env_file:- ./config
    

    使用Docker Compose在多个容器中启动一个Hadoop集群,包括HDFSNameNodeDataNode,以及YARNResourceManagerNodeManager。通过env_file加载的环境变量文件./config包含了Hadoop配置信息。

  4. 创建配置文件
    创建config文件,包含Hadoop启动需要的配置信息:

    CORE-SITE.XML_fs.default.name=hdfs://namenode
    CORE-SITE.XML_fs.defaultFS=hdfs://namenode
    HDFS-SITE.XML_dfs.namenode.rpc-address=namenode:8020
    HDFS-SITE.XML_dfs.replication=1
    MAPRED-SITE.XML_mapreduce.framework.name=yarn
    MAPRED-SITE.XML_yarn.app.mapreduce.am.env=HADOOP_MAPRED_HOME=$HADOOP_HOME
    MAPRED-SITE.XML_mapreduce.map.env=HADOOP_MAPRED_HOME=$HADOOP_HOME
    MAPRED-SITE.XML_mapreduce.reduce.env=HADOOP_MAPRED_HOME=$HADOOP_HOME
    YARN-SITE.XML_yarn.resourcemanager.hostname=resourcemanager
    YARN-SITE.XML_yarn.nodemanager.pmem-check-enabled=false
    YARN-SITE.XML_yarn.nodemanager.delete.debug-delay-sec=600
    YARN-SITE.XML_yarn.nodemanager.vmem-check-enabled=false
    YARN-SITE.XML_yarn.nodemanager.aux-services=mapreduce_shuffle
    CAPACITY-SCHEDULER.XML_yarn.scheduler.capacity.maximum-applications=10000
    CAPACITY-SCHEDULER.XML_yarn.scheduler.capacity.maximum-am-resource-percent=0.1
    CAPACITY-SCHEDULER.XML_yarn.scheduler.capacity.resource-calculator=org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator
    CAPACITY-SCHEDULER.XML_yarn.scheduler.capacity.root.queues=default
    CAPACITY-SCHEDULER.XML_yarn.scheduler.capacity.root.default.capacity=100
    CAPACITY-SCHEDULER.XML_yarn.scheduler.capacity.root.default.user-limit-factor=1
    CAPACITY-SCHEDULER.XML_yarn.scheduler.capacity.root.default.maximum-capacity=100
    CAPACITY-SCHEDULER.XML_yarn.scheduler.capacity.root.default.state=RUNNING
    CAPACITY-SCHEDULER.XML_yarn.scheduler.capacity.root.default.acl_submit_applications=*
    CAPACITY-SCHEDULER.XML_yarn.scheduler.capacity.root.default.acl_administer_queue=*
    CAPACITY-SCHEDULER.XML_yarn.scheduler.capacity.node-locality-delay=40
    CAPACITY-SCHEDULER.XML_yarn.scheduler.capacity.queue-mappings=
    CAPACITY-SCHEDULER.XML_yarn.scheduler.capacity.queue-mappings-override.enable=false
    
    • CORE-SITE.XML:

      • fs.default.name: 指定Hadoop文件系统的默认名称,这里设置为hdfs://namenode,意味着客户端将通过namenode主机上的HDFS服务进行文件操作。
      • fs.defaultFS: 也是设置默认文件系统的URI,这里同样设置为hdfs://namenode,通常两个属性可以任选其一,但这里为了明确指定,两个属性都被设置了。
    • HDFS-SITE.XML:

      • dfs.namenode.rpc-address: 设置NameNode的RPC通信地址和端口,这里设置为namenode:8020
      • dfs.replication: 设置HDFS的副本因子,这里设置为1,意味着每个文件将只有一个副本。
    • MAPRED-SITE.XML:

      • mapreduce.framework.name: 设置MapReduce的计算框架为YARN。
      • mapreduce.am.env, mapreduce.map.env, mapreduce.reduce.env: 设置MapReduce应用程序的执行环境变量,这里将HADOOP_MAPRED_HOME设置为$HADOOP_HOME,后者通常是Hadoop安装的根目录。
    • YARN-SITE.XML:

      • yarn.resourcemanager.hostname: 设置ResourceManager的主机名,这里设置为resourcemanager
      • yarn.nodemanager.pmem-check-enabled: 设置是否开启物理内存检查,这里设置为false,即不开启。
      • yarn.nodemanager.delete.debug-delay-sec: 设置NodeManager删除工作目录的延迟时间,这里设置为600秒。
      • yarn.nodemanager.vmem-check-enabled: 设置是否开启虚拟内存检查,这里设置为false,即不开启。
      • yarn.nodemanager.aux-services: 设置NodeManager的辅助服务,这里设置为mapreduce_shuffle,即MapReduce的混洗服务。
      • yarn.scheduler.capacity.maximum-applications: 设置容量调度器可以处理的最大应用程序数量。
      • yarn.scheduler.capacity.maximum-am-resource-percent: 设置应用程序Master的最大资源使用百分比。
      • yarn.scheduler.capacity.resource-calculator: 设置资源计算器的类。
      • yarn.scheduler.capacity.root.queues: 设置根队列的名称。
      • yarn.scheduler.capacity.root.default.capacity: 设置默认队列的容量比例。
      • yarn.scheduler.capacity.root.default.user-limit-factor: 设置用户限制因子。
      • yarn.scheduler.capacity.root.default.maximum-capacity: 设置默认队列的最大容量。
      • yarn.scheduler.capacity.root.default.state: 设置默认队列的状态。
      • yarn.scheduler.capacity.root.default.acl_submit_applications: 设置允许提交应用程序的访问控制列表。
      • yarn.scheduler.capacity.root.default.acl_administer_queue: 设置允许管理队列的访问控制列表。
      • yarn.scheduler.capacity.node-locality-delay: 设置节点本地延迟。
      • yarn.scheduler.capacity.queue-mappings: 设置队列映射。
      • yarn.scheduler.capacity.queue-mappings-override.enable: 设置是否启用队列映射覆盖。

    这些配置项通常在Hadoop集群启动前设置,以确保Hadoop服务按照预期的方式运行。

  5. 启动Hadoop服务
    在包含docker-compose.yml的目录下,运行以下命令来启动服务:

    docker-compose up -d
    
  6. 验证服务状态
    使用以下命令检查服务是否正常启动:

    docker-compose ps
    
  7. 测试服务:

    # 进入容器
    docker exec -it hadoop_namenode_1 /bin/bash 
    # 运行Mapreduce任务
    yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar pi 10 15
    
  8. 访问Hadoop Web界面

    • NameNode UI: `http://:9870/
      在这里插入图片描述
    • ResourceManager UI: http://<your-ip>:8088/
      在这里插入图片描述
  9. 停止和删除服务
    当您完成测试后,可以停止并删除所有服务:

docker-compose down

参考文章

Docker Hub Apache Hadoop
docker部署hadoop

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

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

相关文章

H5小程序视频编辑解决方案,广泛适用,灵活部署

如何在微信小程序、网页、HTML5等WEB场景中实现轻量化视频制作&#xff0c;满足多样化的运营需求&#xff0c;一直是企业面临的挑战。美摄科技凭借其在视频编辑领域的深厚积累和创新技术&#xff0c;为企业量身打造了一套H5/小程序视频编辑解决方案&#xff0c;助力企业轻松应对…

C++笔记:模板

模板 为什么要学习模板编程 在学习模板之前&#xff0c;一定要有算法及数据结构的基础&#xff0c;以及重载&#xff0c;封装&#xff0c;多态&#xff0c;继承的基础知识&#xff0c;不然会出现看不懂&#xff0c;或者学会了没办法使用。 为什么C会有模板&#xff0c;来看下面…

JVM性能优化案例:减少对象频繁创建

JVM性能优化案例&#xff1a;减少对象频繁创建 案例背景 某金融应用系统在处理大量并发交易时&#xff0c;响应时间过长&#xff0c;并且有时出现内存溢出&#xff08;OutOfMemoryError&#xff09;的问题。经过分析&#xff0c;发现问题主要出在频繁的对象创建和较差的内存管…

git的ssh安装,windows通过rsa生成密钥认证问题解决

1 windows下载 官网下载可能出现下载太慢的情况&#xff0c;Git官网下载地址为&#xff1a;官网&#xff0c;推荐官网下载&#xff0c;如无法下载&#xff0c;可移步至CSDN&#xff0c;csdn下载地址&#xff1a;https://download.csdn.net/download/m0_46309087/12428308 2 Gi…

Perl 语言学习进阶

一、如何深入 要深入学习Perl语言的库和框架&#xff0c;可以按照以下步骤进行&#xff1a; 了解Perl的核心模块&#xff1a;Perl有许多核心模块&#xff0c;它们提供了许多常用的功能。了解这些模块的功能和用法是深入学习Perl的第一步。一些常用的核心模块包括&#xff1a;S…

如何在 Windows 10/11 上编辑 PDF [4 种简单方法]

PDF 在大多数设备上都易于查看&#xff0c;但由于其设计用于查看&#xff0c;因此编辑起来可能比较棘手。编辑 PDF 可能比编辑 Microsoft Office 文档更具挑战性。 不用担心&#xff0c;我们已经为你做好了准备。无论你是想添加、删除还是插入文本或图片&#xff0c;你都可以使…

Coze+Discord:打造你的免费AI助手(教您如何免费使用GPT-4o/Gemini等最新最强的大模型/Discord如何正确连接Coze)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 文章内容 📒📝 准备Discord📝 准备Coze🔌 连接💡 测试效果⚓️ 相关链接 ⚓️📖 介绍 📖 你是否想免费使用GPT-4o/Gemini等最新最强的大模型,但又不想花费高昂的费用?本文将教你如何通过Coze搭建Bot,并将其转发…

【AI绘画】Stable Diffusion 3开源

Open Release of Stable Diffusion 3 Medium 主要内容 Stable Diffusion 3是Stability AI目前为止最先进的文本转图像开放源代码算法。 这款模型的小巧设计使其完美适合用于消费级PC和笔记本电脑&#xff0c;以及企业级图形处理单元上运行。它已经满足了标准化的文字转图像模…

AI办公自动化:批量合并多个Excel表格的数据并汇总

工作任务&#xff1a; 有多个表格 把里面的月流量数据都合并到一张表中&#xff1a; 在chatgpt中输入提示词&#xff1a; 你是一个Python编程专家&#xff0c;要完成一个Python脚本编写任务&#xff0c;具体步骤如下&#xff1a; 打开文件夹&#xff1a;F:\AI自媒体内容\AI行…

计算机视觉全系列实战教程:(九)图像滤波操作

1.图像滤波的概述 (1)Why (为什么要进行图像滤波) 去噪&#xff1a;去除图像在获取、传输等过程中的各种噪音干扰提取特征&#xff1a;使用特定的图像滤波器提取图像特定特征 (2)What (什么是图像滤波) 使用滤波核对图像进行卷积运算或非线性运算&#xff0c;以达到去噪或提…

11.2 Go 常用包介绍

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

使用‘消除’技术绕过LLM的安全机制,不用训练就可以创建自己的nsfw模型

开源的大模型在理解和遵循指令方面都表现十分出色。但是这些模型都有审查的机制&#xff0c;在获得被认为是有害的输入的时候会拒绝执行指令&#xff0c;例如会返回“As an AI assistant, I cannot help you.”。这个安全功能对于防止误用至关重要&#xff0c;但它限制了模型的…

化学品危险性分类鉴定报告 危化品危险性分类

一、化学品危险性分类报告&#xff1a; 按照国务院令 第591号 《危险化学品安全管理条例》、原十部委公告 2015年 第5号 《危险化学品目录&#xff08;2015版&#xff09;》、原安监总局令 第60号《化学品物理危险性鉴定与分类管理办法》和原安监总局令 第53号《危险化学品登记…

IBM Spectrum LSF Process Manager 在共享分布式计算环境中运行和管理业务关键工作流程

亮点 ● 快速创建复杂的分布式工作流 ● 开发可重复的最佳实践 ● 自信地运行关键工作流程 ● 提高流程可靠性 IBM Spectrum LSF Process Manager 使您能够设计和自动化计算或分析流程&#xff0c; 捕获和保护可重复的最佳实践。 使用直观的图形界面&#xff0c;您可以轻松记录…

【漏洞复现】飞企互联-FE企业运营管理平台 treeXml.jsp SQL注入漏洞

0x01 产品简介 飞企互联-FE企业运营管理平台是一个基于云计算、智能化、大数据、物联网、移动互联网等技术支撑的云工作台。这个平台可以连接人、链接端、联通内外&#xff0c;支持企业B2B、C2B与020等核心需求&#xff0c;为不同行业客户的互联网转型提供支持。其特色在于提供…

【十大排序算法】基数排序

数字犹如无数繁星&#xff0c;基数排序如晨曦的指引&#xff0c;将混沌序列织就成和谐的序曲。 文章目录 一、基数排序二、发展历史三、处理流程四、算法实现五、算法特性六、小结推荐阅读 一、基数排序 基数排序是一种非比较性的排序算法&#xff0c;它根据元素的位数来对元…

极限网关助力好未来 Elasticsearch 容器化升级

极限网关在好未来的最佳实践案例&#xff0c;轻松扛住日增百 TB 数据的流量&#xff0c;助力 ES 从物理机到云原生架构的改造&#xff0c;实现了流控、请求分析、安全管理、无缝迁移等场景。一次完美的客户体验~ 背景 物理机架构时代 2022 年&#xff0c;好未来整个日志 Elas…

教学辅助系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;教师管理&#xff0c;作业管理&#xff0c;学生管理&#xff0c;管理员管理&#xff0c;作业提交管理&#xff0c;教学视频管理 教室账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0…

React+TS前台项目实战(九)-- 全局常用组件弹窗Dialog封装

文章目录 前言Dialog公共弹窗组件1. 功能分析2. 代码详细注释3. 使用方式4. 效果展示 总结 前言 今天这篇主要讲全局公共弹窗Dialog组件封装&#xff0c;将用到上篇封装的模态框Modal组件。有时在前台项目中&#xff0c;偶尔要用到一两个常用的组件&#xff0c;如 弹窗&#x…

HTTP 概述

HTTP 概述 HTTP 是一种用于获取资源&#xff08;如 HTML 文档&#xff09;的协议。 它是 Web 上任何数据交换的基础&#xff0c;它是一种客户端-服务器协议&#xff0c;这意味着请求由接收方&#xff08;通常是 Web 浏览器&#xff09;发起。 一个完整的文档是从获取的不同子文…