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.rhkb.cn/news/351708.html

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

相关文章

质疑标普,理解标普,加入标普

上周我在文章里提到过&#xff0c;标普信息科技LOF(161128)出现套利机会。每天申购卖出&#xff0c;到现在一个账户56*6336润。 得益于美股七巨头轮流领涨&#xff0c;161128依旧坚挺&#xff0c;每天溢价都是10%&#xff0c;成交量1个多亿&#xff0c;场内新增份额才400万份&…

2024年黑龙江省特岗招聘公告出了!!!

2024年黑龙江省农村义务教育阶段学校特设岗位教师招聘822人公告 (1、网上报名 时间&#xff1a;6月17日9&#xff1a;00—6月22日17&#xff1a;00。 网址&#xff1a; https&#xff1a;//sfyz.hljea.org.cn&#xff1a;7006/tgjs 2、网上资格审查 资格审查时间&#xff1a;6月…

马克·雷伯特访谈:机器人的未来及波士顿动力的创新之路

引言 机器人技术作为现代科技的前沿领域&#xff0c;始终吸引着大量的关注与研究。波士顿动力公司作为这一领域的领军者&#xff0c;其创始人兼前CEO马克雷伯特&#xff08;Marc Raibert&#xff09;近日在主持人莱克斯弗里德曼&#xff08;Lex Fridman&#xff09;的播客节目…

[Mdfs] lc3067. 在带权树网络中统计可连接服务器对数目(邻接表+图操作基础+技巧+好题)

文章目录 1. 题目来源2. 题目解析 1. 题目来源 链接&#xff1a;3067. 在带权树网络中统计可连接服务器对数目 2. 题目解析 挺有意思的一道题目&#xff0c;重点是要能够读懂题目&#xff0c;然后结合几个图相关的处理技巧即可拿下。 图存储&#xff1a;邻接表即可。无向无…

HP惠普暗影精灵10 OMEN Gaming Laptop 16-wf1xxx原厂Win11系统镜像下载

惠普hp暗影精灵10笔记本电脑16-wf1000TX原装出厂Windows11&#xff0c;恢复开箱状态oem预装系统安装包&#xff0c;带恢复重置还原 适用型号:16-wf1xxx 16-wf1000TX,16-wf1023TX,16-wf1024TX,16-wf1025TX, 16-wf1026TX,16-wf1027TX,16-wf1028TX,16-wf1029TX, 16-wf1030TX,16-…

Electron无感打印 静默打印(vue3 + ts + vite)

&#xff08;electron vue3 项目搭建部分 自行查找其他资源 本文只讲解Electronvue3 如何实现静默打印&#xff09; 第一步获取打印机资源 渲染端代码&#xff08;vue里面&#xff09; // 因使用了vite所以在浏览器中打开 require会报错 只能在electron中 const { ipcRender…

FreeRTOS:4.内存管理

FreeRTOS内存管理 目录 FreeRTOS内存管理1. 为什么不直接使用C库函数的malloc和free函数2. FreeRTOS的五种内存管理方式3. heap4源码分析3.1 堆内存池3.2 内存块的链表数据结构3.3 堆的初始化3.4 堆的内存分配3.5 堆的内存释放 4. 总结 1. 为什么不直接使用C库函数的malloc和fr…

Cisco Packet Tracer实验(四)

生成树协议&#xff08;Spanning Tree Protocol&#xff09; 交换机在目的地址未知或接收到广播帧时是要进行广播的。如果交换机之间存在回路/环路&#xff0c;那么就会产生广播循环风暴&#xff0c;从而严重影响网络性能。 而交换机中运行的STP协议能避免交换机之间发生广播…

【云原生| K8S系列】Kubernetes Daemonset,全面指南

Kubernetes中的DaemonSet是什么? Kubernetes是一个分布式系统&#xff0c;Kubernetes平台管理员应该有一些功能可以在所有节点上运行特定于平台的应用程序。例如&#xff0c;在所有Kubernetes节点上运行日志代理。 这就是Daemonset发挥作用的地方。 Daemonset是一个原生的K…

【Mybatis-Plus】根据自定义注解实现自动加解密

背景 我们把数据存到数据库的时候&#xff0c;有些敏感字段是需要加密的&#xff0c;从数据库查出来再进行解密。如果存在多张表或者多个地方需要对部分字段进行加解密操作&#xff0c;每个地方都手写一次加解密的动作&#xff0c;显然不是最好的选择。如果我们使用的是Mybati…

每一个男人都曾有一个机器人的梦想

每一个男人都曾有一个机器人的梦想 我也有 每一个男人都曾有一个机器人的梦想。对于我来说&#xff0c;这个梦想始于童年时代&#xff0c;那时变形金刚风靡一时&#xff0c;几乎所有80后的孩子都为之疯狂。我是80后中的一员&#xff0c;那时候的科技还远没有如今这般发达&#…

【初阶数据结构】深入解析单链表:探索底层逻辑(无头单向非循环链表)

&#x1f525;引言 本篇将深入解析单链表:探索底层逻辑&#xff0c;理解底层是如何实现并了解该接口实现的优缺点&#xff0c;以便于我们在编写程序灵活地使用该数据结构。 &#x1f308;个人主页&#xff1a;是店小二呀 &#x1f308;C语言笔记专栏&#xff1a;C语言笔记 &…

dp练习题

先来一个简单dp练习 class Solution { public:int rob(vector<int>& nums) {int n nums.size();vector<int> a(n 1);int ans nums[0]; a[0] nums[0];if (n 1) return ans;a[1] max(nums[0], nums[1]);ans max(ans, a[1]);if (n 2) return ans;for (i…

[DDR4] DDR 简史

依公知及经验整理&#xff0c;原创保护&#xff0c;禁止转载。 专栏 《深入理解DDR4》 存和硬盘&#xff0c;这对电脑的左膀右臂&#xff0c;共同扛起了存储的重任。内存以其超凡的存取速度闻名&#xff0c;但一旦断电&#xff0c;内存中的数据也会消失。它就像我们的工作桌面&…

【工作】计算机行业相关的十六类工作简介

本文简单介绍了计算机行业相关的工作类别&#xff0c;共16种&#xff0c;包括常见招聘要求与平均工资。平均工资信息来源&#xff1a;米国企业点评职场社区glassdoor&#xff08;https://www.glassdoor.com/index.htm&#xff09; &#xff08;一&#xff09;软件工程师 软件…

Element-UI - 解决el-table中图片悬浮被遮挡问题

在开发中&#xff0c;发现element-ui在el-table中添加图片悬浮显示时&#xff0c;会被单元格遮挡的问题。通过查询得到的解决办法&#xff0c;大多是修改.el-table类中相关样式属性&#xff0c;但经过验证发现会影响到其他正常功能的使用。对于此问题解决其实也并不难&#xff…

《人生海海》读后感

麦家是写谍战的高手&#xff0c;《暗算》《风声》等等作品被搬上荧屏后&#xff0c;掀起了一阵一阵的收视狂潮。麦家声名远扬我自然是知道的&#xff0c;然而我对谍战似乎总是提不起兴趣&#xff0c;因此从来没有拜读过他的作品。这几天无聊时在网上找找看看&#xff0c;发现了…

数据结构笔记-2、线性表

2.1、线性表的定义和基本操作 如有侵权请联系删除。 2.1.1、线性表的定义&#xff1a; ​ 线性表是具有相同数据类型的 n (n>0) 个数据元素的有限序列&#xff0c;其中 n 为表长&#xff0c;当 n 0 时线性表是一个空表。若用 L 命名线性表&#xff0c;则其一般表示为&am…

爬虫初学篇

初次学习爬虫&#xff0c;知识笔记小想 目录&#x1f31f; 一、&#x1f349;基础知识二、&#x1f349;http协议&#xff1a;三、&#x1f349;解析网页(1) xpath的用法&#xff1a;(2) bs4解析器的解释&#xff1a;(3) python字符编码的错误&#xff1a;(4) 正则表达式&#…

第零篇——数学到底应该怎么学?

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么&#xff1f; 四、总结五、升华 一、背景介绍 宏观讲解数学定位&#xff0c;数学学习方式方法&#xff0c;再次详细学习…