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

news2024/12/23 18:36:02

文章目录

    • 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.6
        hostname: namenode
        command: ["hdfs", "namenode"]
        ports:
          - 9870:9870
        env_file:
          - ./config
        environment:
            ENSURE_NAMENODE_DIR: "/tmp/hadoop-root/dfs/name"
     datanode:
        image: apache/hadoop:3.3.6
        command: ["hdfs", "datanode"]
        env_file:
          - ./config      
     resourcemanager:
        image: apache/hadoop:3.3.6
        hostname: resourcemanager
        command: ["yarn", "resourcemanager"]
        ports:
           - 8088:8088
        env_file:
          - ./config
        volumes:
          - ./test.sh:/opt/test.sh
     nodemanager:
        image: apache/hadoop:3.3.6
        command: ["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.coloradmin.cn/o/1821786.html

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

相关文章

量化交易入门——盘口

今天接着上一期讲解开盘定势的种类&#xff0c;在讲之前&#xff0c;科普一下“盘口五档”的成交知识。 每个炒股软件上&#xff0c;都会有某只个股的成交信息&#xff0c;在其中会出现一个五档的行情列表&#xff0c;里面列出了买家和卖家各五个价格及其对应的数量。这五档价…

【单片机毕业设计选题24003】-基于STM32和阿里云的家庭安全监测系统

系统功能: 此设计采用STM32单片机采集环境温湿度,烟雾浓度和一氧化碳浓度显示在OLED上&#xff0c;并将这些信息上报至阿里云平台。 1. 上电连接手机热点后自动连接阿里云&#xff0c;可通过阿里云平台收到系统上报的温湿度&#xff0c;烟雾 浓度&#xff0c;一氧化碳数据以…

数字经济红利惠及全民,从掏钱消费到赚钱消费的转变,你准备好了吗?

伴随科技飞速发展&#xff0c;我们迎来了一个全新的经济时代——数字经济。数字经济以其独特的魅力&#xff0c;正为我们每个人带来前所未有的红利。 那么&#xff0c;面对数字经济的红利&#xff0c;我们是否已经做好了准备&#xff1f;我们又该如何把握这个时代赋予我们的机…

期末测试2(1)---PTA

一开始写错了&#xff0c; 因为这个再定义一个和原函数一样类型的进行存储&#xff0c; 然后将第一个设置为最大的&#xff0c;依次用循环比较后面的&#xff0c; 最后输出 但是这个适用于找最大的、字符串这样最后只输出一个最大项比较好 对于结构体不好将比较的这个数所…

学了这篇面试经,轻松收割网络安全的offer

网络安全面试库 吉祥学安全知识星球&#x1f517;除了包含技术干货&#xff1a;Java代码审计、web安全、应急响应等&#xff0c;还包含了安全中常见的售前护网案例、售前方案、ppt等&#xff0c;同时也有面向学生的网络安全面试、护网面试等。 0x1 应届生面试指南 网络安全面…

【课程总结】Day8(上):深度学习基本流程

前言 在上一篇课程《【课程总结】Day7&#xff1a;深度学习概述》中&#xff0c;我们了解到&#xff1a; 模型训练过程→本质上是固定w和b参数的过程&#xff1b;让模型更好→本质上就是让模型的损失值loss变小&#xff1b;让loss变小→本质上就是求loss函数的最小值&#xf…

SQL Server中的FOR XML PATH以及Split

前提 数据库是在2016年以下的版本&#xff0c;以上的版本&#xff0c;现在有最新的函数可以支持者两个了 Split 在c#中Split可以将以指定字符分割的字符串转换为字符串数组&#xff0c;这里主要是用于&#xff0c;主表存储了多个从表的id&#xff0c;存储的时候用的字符串&a…

企业级Flask项目移植记录【待补完】

背景 Flask项目A从老电脑C1移植到新电脑C2上 更新日志 1-240614上线第一版经验&#xff0c;博主关于这个项目包的问题还没有解决&#xff0c;正在解决中&#xff0c;但是整体思路大家在移植的时候可以借鉴。 思路 1-首先生产环境的python解释器等相关的东西最好严格保持一…

海康充电桩报文校验TCP校验和

1 TCP校验文档校验文档要求: 校验码描述 校验码计算范围包含包头标识、消息头和消息体,校验算法采用 TCP 和校验,具体规则如下。 将待校验的所有数据分为 16 位的字(大端序),如果总长度为奇数个字节,则在最后增添一个 位都为 0 的字节; 将所有 16 位的字进行累加,累加…

SemanticKITTI 拼接语义点云帧

文章目录 KITTISemanticKITTISemantic Segmentation and Panoptic SegmentationSemantic Scene Completion 数据转换语义标签和点云拼接 KITTI The odometry benchmark consists of 22 stereo sequences, saved in loss less png format: We provide 11 sequences (00-10) wit…

【等保资料】等级保护定级指南及网络安全解读(ppt原件)

新版网络安全等级保护定级指南网络安全等级保护工作的作用对象&#xff0c;主要包括基础信息网络、工业控制系统、云计算平台、物联网、使用移动互联技术的网络和大数据等。 软件全套精华资料包清单部分文件列表&#xff1a; 工作安排任务书&#xff0c;可行性分析报告&#xf…

TVS管选择

在RS485和CAN电路设计中&#xff0c;经常要考虑“静电和浪涌保护”&#xff0c;怎么选择TVS管&#xff0c;很少有人讲解。 1、先了解TVS管 TVS管有单向管和双向管&#xff0c;通常后缀为CA的是双向TVS管&#xff0c;只有字母A的是单向TVS管。见下图&#xff1a; 2、TVS选择依…

一文理清sshc包的使用场景和掌握两种连接方式及异常场景

一文理清sshc、ssh包的使用场景和两种连接方式 SSH协议SSH&#xff08;Secure Shell&#xff09;协议支持通过多种编程语言实现客户端和服务端的功能&#xff0c;包括Go、Python、Java、C#等。 GO语言 sshc包的使用建立连接1.DialWithKey2.DialWithPasswd 运行命令异常场景思维…

【并发编程系列一】并发编年史:线程的双刃剑——从优势到风险的全面解析

文章目录 并发简史&#x1f5a5;️初期探索&#xff08;20世纪50-60年代&#xff09;并发理论基础&#xff08;1965年以后&#xff09;并行计算的兴起&#xff08;1970年代至1980年代&#xff09;现代并发技术&#xff08;1990年代至今&#xff09; 线程的优势&#x1f60d;发挥…

CleanMyMac X和腾讯柠檬清理谁更优秀?最新6.18活动CleanMyMac 优惠码

经常有新关注的粉丝问&#xff0c;同样做为垃圾清理软件&#xff0c;付费CleanMyMac和免费的柠檬清理哪个更好用&#xff1f;其实&#xff0c;两款软件都是属于非常成熟的软件&#xff0c;一个有着悠久的开发迭代历史&#xff0c;另一个更是背靠鹅厂金主爸爸&#xff0c;很难说…

SAP 角色授权账户 重复的问题 解决方案

直接从agr_usrs 里面删除新的 *&---------------------------------------------------------------------* *& Report ZRPT_BC_ROLEASSIGN_RM_DUP *&---------------------------------------------------------------------* *&角色授权去重 *&--------…

【Android】文本服务器获取内容

链接web服务器&#xff0c;打开apaquee 收到数据 public void getNewsIndexData() throws Exception{String sUrl"http://10.107.24.12:8080/newsIndex.json";URL urlnew URL(sUrl);HttpURLConnection urlConn(HttpURLConnection) url.openConnection();InputStrea…

Linux Kernel 编程-你不知道的printk(2)

内核版本&#xff1a;6.1 书接上回&#xff1a;Linux Kernel 编程-你不知道的printk(1)&#xff1a;https://mp.weixin.qq.com/s/TIuxhG3b-KBYXzrDYy__Aw 上回我们介绍了&#xff1a; printk()的简单使用pintk 的实现&#xff1a;ring buffer使用 systemd 命令 journalctl 查…

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

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

经典的网站系统架构(入门级)

从开发到部署&#xff0c;从用户访问到底层数据库&#xff0c;介绍搭建网站系统的经典架构的10个核心部分。 &#xff08;图转自bytebytego&#xff0c;翻译整理by dogstar&#xff09; 1、使用Git管理和协同源代码&#xff0c;通过CI/CD或Git的Webhook方式自动同步更新部署到服…