Hadoop3教程(一):Hadoop的定义、组成及全生态概览
文章目录
- (1)定义
- 1.1 发展历史
- 1.2 三大发行版本
- 1.3 Hadoop的优势
- 1.4 Hadoop的组成
- (13)HDFS概述
- (14)Yarn架构
- (15)MapReduce概述
- (16) HDFS、YARN、MapReduce三者关系
- (17)大数据技术生态体系
- 参考文献
(1)定义
Hadoop是一个由Apache基金会开发的一个分布式系统基础架构。
分布式,指多台机器共同来完成一项任务。
用途:解决海量数据的存储和分析计算问题
广义上来讲,Hadoop通常是指一个更广泛的概念:Hadoop生态圈。包含了很多基于Hadoop架构衍生发展出来的其他的东西,如HBASE等
1.1 发展历史
创始人Doug Cutting,他最初的目的是为了实现与Google类似的全文搜索功能,于是他在Lucene框架的基础上进行优化升级,查询引擎和索引引擎。
2001年底,Lucene框架称为Apache基金会的一个子项目。
对于海量数据的场景,Lucene同样遇到了跟Google一样的困难:海量数据存储难、海量的检索速度慢。
Doug 模仿Google,提出了一个微型版Nutch来解决这个问题。他基于谷歌提出的三篇论文,分别提出了HDFS、MR、HBase,因为可以认为Google是Hadoop的思想之源。
2006.03,MR和Nutch Distributed File System(NDFS)分别被纳入到了Hadoop项目中,Hadoop正式诞生。
Hadoop这个名字和logo来源于Doug儿子的玩具大象。
1.2 三大发行版本
Hadoop有三大发型版本:Apache、Cloudera、Hortonworks。
Apache版本,最原始且最基础的版本,非常适用于入门学习,开源,2006年正式提出。
Cloudera版本,在原始版本基础上集成了大量的大数据框架,2008年推出,对应商用产品CDH。
Hortonworks版本,也封装了自己的一套,2011年推出,对应产品HDP。
目前,Hortonworks已经被Cloudera公司收购,推出新的品牌CDP。
后两个版本都是商业收费的。
Cloudera,08年成立,是最早将Hadoop商用的公司,为合作伙伴提供商业解决方案。09年,Hadoop的创始人cutting也加入了该公司。
Hortonworks,2011年成立,主体是雅虎
1.3 Hadoop的优势
- 高可靠性。每份数据都会分布式维护多个副本,即使某台存储服务器出问题,也不会导致数据的丢失。
- 高扩展性。可以动态扩展计算节点以支持更庞大的计算需求,而不需要影响现有任务。
- 高效性。在MR的指导思想下,Hadoop是并行工作的。以加快任务处理速度。
- 高容错性。能够自动的将失败的任务重新分配。比如说某个子任务崩了,这时候会自动将这一计算任务迁移到其他节点重新计算,不影响整体计算。
1.4 Hadoop的组成
Hadoop1.x的组成:
- common(辅助工具)
- HDFS(数据存储)
- MapReduce(计算 + 资源调度):还负责调度计算内存资源等功能。
MR耦合性较大。
Hadoop2.x的组成:
- common(辅助工具)
- HDFS(数据存储)
- Yarn(资源调度)
- MapReduce(计算)
可以看到,资源调度和计算已经分离了。
Hadoop3.x跟2.x相比,在组成上没有区别。
(13)HDFS概述
Hadoop Distributed File System,简称HDFS,是一个分布式文件系统。
负责海量数据的存储。
NameNode:存储文件的元数据,如文件名、文件目录结构、文件属性、每个文件的块列表以及每个块所在的DataNode,简称叫做nn;
DataNode:是具体存储数据的位置,也负责块数据的校验和。
2NN:辅助NameNode的工作。每隔一段时间对NameNode元数据备份。
(14)Yarn架构
Yet Another Resource Negotiator,简称YARN,是一种资源协调者,是Hadoop的资源管理器。
YARN的两个核心组成组件:
- Resource Manager:整个集群的资源的管理者,管理着一个及以上数量的NodeManager;
- NodeManager:单节点资源的管理者,可能是管理着单台服务器的资源。
NodeManager中,单个任务会被放在一个container中来执行,待执行完成后,就直接释放掉整个container。
客户端提交job到ResourceManager,由ResourceManager负责协调指挥NodeManager们的工作。
客户端可以有多个;集群上可以运行多个ApplicationMaster;每个NodeManager可以有多个Container。
一个contrainer容器分配的内存,是1G~8G,最少一个CPU。
(15)MapReduce概述
负责计算。
将计算过程分成两部分:
- Map:将大任务分割成一个个小任务,以作并行处理;
- Reduce:将一个个小任务的运行结果合并作为大任务的运行结果,即对Map的结果进行汇总。
举例说明:
假设我有一万篇笔记,我想找到其中一篇,
如果我自己找的话,需要一个人看完这1w篇笔记;
但是我可以找100个人帮我一起找,把这1w篇笔记分成100组,给那100个人,然后每个人看100篇文档。(这就是Map的过程)
最后每个人再把查的结果反馈给我,我做下汇总,就可以知道我想要找的那篇在哪儿了。这个过程就是Reduce。
(16) HDFS、YARN、MapReduce三者关系
觉得需要注意的一点是,client提交任务到YARN的ResourceManager之后,ResourceManager会在任一节点启动一个Container,运行一个App Mstr,这个App Mstr比较重要。
接下来的流程,按我的理解是这样的:
首先App Mstr会计算当前任务运行所需的资源等,并向ResourceManager发出资源申请,告诉它,我需要xx个节点来运行我的任务;
其次当ResourceManager按照App Mstr的要求,为它分配了xx个节点之后,App Mstr会在这些节点上分别启动MapTask进行计算。
最后会在某个节点上启动一个ReduceTask,来汇总各个MapTask的结果。
再最后,ReduceTask的执行结果,可能会写入HDFS的DataNode,做持久化保存。
(17)大数据技术生态体系
上图举例了一个经典的大数据技术生态体系,从图上来看,
数据来源层,分这么三大类:
- 结构化数据,如数据库,有行+有列;
- 半结构化数据,如文件日志,有行+分隔符间隔的列;
- 非结构化数据,如视频和ppt等。
数据传输层,即分别使用什么方式,来采集不同来源的数据:
- 结构化数据 -> Sqoop数据传递;
- 半结构化数据 -> Flume日志收集;
- 非结构化数据 -> Kafka消息队列(处理结构化和半结构化其实都可以)
数据存储层,
- Sqoop数据传递 + Flume日志收集 -> HDFS文件存储;
- Flume日志收集 -> HBase非关系型数据库
- Kafka消息队列,自带文件存储。
资源管理层:
- YARN
数据计算层:
- MapReduce离线计算 -> hive数据查询;
- Spark Core 内存计算 -> Spark Mlib数据挖掘(基于代码) + Spark SQL数据查询
- 实时计算 -> Storm实时计算(基本认为是过气了) + Spark Streaming实时计算 + Flink;
任务调度层:
- Oozie任务调度
- Azkaban任务调度
贯穿各层的,负责数据平台配置和调度的:
- zookeeper
业务模型层:
- 业务模型、数据可视化、业务应用
图中涉及到的技术名词进行解释:
- sqoop:sqoop是一款开源工具,主要用于hadoop、hive与传统的数据库(如MySQL)间进行数据传递。可以将关系型数据库中的数据导进Hadoop的HDFS里,也可以将HDFS中的数据通过sqoop导入关系型数据库里;
- Flume:分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;
- Kafka:分布式分布订阅消息系统;
- Spark:当前最流行的开源大数据内存计算框架。可以基于Hadoop上存储的数据进行计算;
- Flink:当前最流行的开源大数据内存计算框架。主要用于实时计算场景;
- Oozie:是一个管理Hadoop作业的工作流程调度管理系统;
- Hbase:分布式的、面向列的开源数据库。不同于一般的关系型数据库,Hbase是一个适合于非结构化数据存储的数据库;
- Hive:基于Hadoop体系的一个数据仓库工具,
- 可以将结构化的数据文件映射为一张数据库表,如此更加直观的展现HDFS上存储的数据;
- 提供了简单的SQL查询功能,不需要再直接编写MapReduce任务了,直接使用SQL查询即可,hive会自动将SQL查询转换成对应的MR任务在后台执行,从而大大降低了学习成本,不需要再手写MR代码了,只要学会SQL就可以。十分的适合数据仓库的统计分析。
- ZooKeeper:是一个针对大型分布式系统的可靠的协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。
教程讲到这里还给了一个推荐系统的框架图,以简单的实例来讲解,大数据这些框架是如何结合在一起来解决实际问题的。
参考文献
- 【尚硅谷大数据Hadoop教程,hadoop3.x搭建到集群调优,百万播放】
相关文章:
Hadoop3教程(一):Hadoop的定义、组成及全生态概览
文章目录 (1)定义1.1 发展历史1.2 三大发行版本1.3 Hadoop的优势1.4 Hadoop的组成 (13)HDFS概述(14)Yarn架构(15)MapReduce概述(16) HDFS、YARN、MapReduce三…...
成为数据分析师要具备什么能力——功法篇(上)
这篇文章适合做了一段时间数据分析工作,开始思考怎么继续提升自己的分析师、运营或者是实习了一段时间的同学,这时的你也许会想几个问题: 为什么我做出来的分析总觉得没有别人的那么高级? 老板为什么总说我的分析“太浅了”&#…...
【MySQL】Java的JDBC编程
目录 ♫什么是JDBC ♫JDBC常用接口和类 ♪Connection接口 ♪Statement对象 ♪ResultSet对象 ♫JDBC的使用 ♪添加“驱动包” ♪创建数据源,描述数据库服务器在哪 ♪和数据库服务器建立连接 ♪构建SQL语句 ♪执行SQL语句 ♪释放资源 ♫什么是JDBC 我们前面操…...
windows OpenCV(包含cuda)最简安装教程
windows OpenCV(包含cuda)最简安装教程 1. 在Windows下安装vcpkg vcpkg是一个开源的C包管理器,它能帮助我们轻松地安装和管理C库和工具。要在Windows上安装vcpkg,可以按照以下步骤进行: 克隆vcpkg仓库: 首…...
Vue3 + Nodejs 实战 ,文件上传项目--实现文件批量上传(显示实时上传进度)
目录 技术栈 1.后端接口实现 2.前端实现 2.1 实现静态结构 2.2 整合上传文件的数据 2.3 实现一键上传文件 2.4 取消上传 博客主页:専心_前端,javascript,mysql-CSDN博客 系列专栏:vue3nodejs 实战--文件上传 前端代码仓库:jiangjunjie…...
狂砸40亿美元,亚马逊向OpenAI竞争对手Anthropic投资
9 月 25 日下午,亚马逊在公司官网发布,向大模型公司 Anthropic 投资 40 亿美元, Anthropic以拥有对标 ChatGPT 的谈天机器人 Claude 而出名。 这项新的战略合作将结合双方在更安全的生成式AI领域的技术和专业知识,加速Anthropic未…...
目标检测YOLO实战应用案例100讲-基于YOLOv5_tiny算法的路面裂缝智能检测
目录 前言 国内外研究现状 公路路面裂缝检测方法现状 基于深度学习检测算法现状...
P5682 [CSP-J2019 江西] 次大值% 运算 set 去重的一道好题
#include <bits/stdc.h> using namespace std; int n, x, len, a[100010], ans; set<int> s; set<int>::iterator asd; int main() {/*a[n-1] 是最大的a[n-2] 可能是次大的a[n]%a[n-1]<a[n-1] 不可能是最大的,可能是次大的a[n-1]%a[n-2]<…...
vue3后台管理框架之API接口统一管理
在开发项目的时候,接口可能很多需要统一管理。在src目录下去创建api文件夹去统一管理项目的接口; 参数请参考mock中的模拟接口 //统一管理咱们项目用户相关的接口import request from @/utils/requestimport type { loginForm, loginResponseData, userInfoReponseData } fro…...
线性表的插入、删除和查询操作
线性表的插入、删除和查询操作 1、定义线性表 定义一个线性结构,有列表默认长度设置为50,列表数量 #include <stdio.h> #define MaxSize 50typedef int Element; typedef struct{Element data[MaxSize];int length; }SqList;2、顺序表插入 插入…...
基于深度学习网络的疲劳驾驶检测算法matlab仿真
目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1疲劳检测理论概述 4.2 本课题说明 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 In_layer_Size [227 227 3]; img_size [224,…...
【文件系统】Linux文件系统的基本存储机制
Linux文件系统是Linux操作系统的重要组成部分,它负责管理计算机存储设备上的文件和目录。Linux文件系统采用类Unix的设计,具有强大的性能和可扩展性,支持多种文件系统类型,如ext4、XFS、Btrfs等。在项目存储架构的设计中ÿ…...
Outlook导入导出功能灰色,怎么解决
下载安装 Outlook 软件后,登陆账号,然后选择“文件” - “导出”,结果发现“导出”按钮是灰色的,根本无法导出。根据官方说法:由于配置没有完成或者office产品没有正确激活。outlook导出键为灰色原因由于配置没有完成或…...
Chrome 同站策略(SameSite)问题
问题产生 问题复现: A项目页面使用 iframe 引用了B项目 B项目登录页面输入账号密码后点击登录 无法跳转 尝试解决: 在B项目修改了跳转方式 但无论是 this.$router.push 还是 window.herf 都无法实现跳转在iframe中使用 sandbox 沙箱属性 同样无法实现跳…...
docker搭建nginx+php-fpm
docker run --name nginx -p 8898:80 -d nginx:1.20.2-alpine# 将容器nginx.conf文件复制到宿主机 docker cp nginx:/etc/nginx/nginx.conf /usr/local/nginx/conf/nginx.conf# 将容器conf.d文件夹下内容复制到宿主机 docker cp nginx:/etc/nginx/conf.d /usr/local/nginx/conf…...
数据结构与算法---单调栈结构
数据结构与算法---单调栈结构 1 滑动窗口问题 1 滑动窗口问题 1 滑动窗口问题 由一个代表题目,引出一种结构 【题目】 有一个整型数组 arr 和一个大小为 w 的窗口从数组的最左边滑到最右边,窗口每次向右边滑一个位置。 例如,数组为[4,3,…...
Python爬虫:某书平台的Authorization参数js逆向
⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ 🐴作者:秋无之地 🐴简介:CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作,主要擅长领域有:爬虫、后端、大数据开发、数据分析等。 🐴欢迎小伙伴们点赞👍🏻、收藏⭐️、…...
Android MediaCodec 框架 基于codec2
系列文章的目的是什么? 粗略: 解码需要哪些基础的服务?标准解码的调用流程?各个流程的作用是什么?解码框架的层次?各个层次的作用? 细化: 解码参数的配置?解码输入数…...
【RocketMQ 系列三】RocketMQ集群搭建(2m-2s-sync)
您好,我是码农飞哥(wei158556),感谢您阅读本文,欢迎一键三连哦。 💪🏻 1. Python基础专栏,基础知识一网打尽,9.9元买不了吃亏,买不了上当。 Python从入门到精…...
Go TLS服务端绑定证书的几种方式
随着互联网的发展,网站提供的服务类型和规模不断扩大,同时也对Web服务的安全性提出了更高的要求。TLS(Transport Layer Security)[1]已然成为Web服务最重要的安全基础设施之一。默认情况下,一个TLS服务器通常只绑定一个证书[2],但…...
【算法与数据结构】--高级算法和数据结构--排序和搜索
一、常见排序算法 以下是一些常见的排序算法,包括冒泡排序、选择排序、插入排序、快速排序和归并排序。每种排序算法的讲解以及附带C#和Java示例: 1.1 冒泡排序 (Bubble Sort) 讲解: 冒泡排序是一种简单的比较排序算法。它多次遍历待排序的…...
【Java】jvm 元空间、常量池(了解)
JDK1.8 以前的 HotSpot JVM 有方法区,也叫永久代(permanent generation)方法区用于存放已被虚拟机加载的类信息,常量、静态遍历,即编译器编译后的代码JDK1.7 开始了方法区的部分移除:符号引用(S…...
Spring Boot自动加载
问:自动装配如何实现的? 答:简单来说就是自动去把第三方组件的Bean装载到IOC容器中,不需要开发人员再去写Bean相关的配置,在springboot应用里面只需要在启动类上去加上SpringBootApplication注解,就可以去实…...
MPNN 模型:GNN 传递规则的实现
首先,假如我们定义一个极简的传递规则 A是邻接矩阵,X是特征矩阵, 其物理意义就是 通过矩阵乘法操作,批量把图中的相邻节点汇聚到当前节点。 但是由于A的对角线都是 0.因此自身的节点特征会被过滤掉。 图神经网络的核心是 吸周围…...
Flink kafka 数据汇不指定分区器导致的问题
背景 在flink中,我们经常使用kafka作为flink的数据汇,也就是目标数据的存储地,然而当我们使用FlinkKafkaProducer作为数据汇连接器时,我们需要注意一些注意事项,本文就来记录一下 使用kafka数据汇连接器 首先我们看…...
【软考】14.1 面向对象基本概念/分析设计测试
《面向对象开发》 对象 现实生活中实际存在的一个实体;构成系统的一个基本单位由对象名、属性和方法组成 类 实体的形式化描述;对象是类的实例,类是对象的模板可分为:实体类:现实世界中真实的实体接口类(边…...
MFC-对话框
目录 1、模态和非模态对话框: (1)、对话框的创建 (2)、更改默认的对话框名称 (3)、创建模态对话框 1)、创建按钮跳转的界面 2)、在跳转的窗口添加类 3࿰…...
Essential Steps in Natural Language Processing (NLP)
💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢…...
Flink中KeyBy、分区、分组的正确理解
1.Flink中的KeyBy 在Flink中,KeyBy作为我们常用的一个聚合类型算子,它可以按照相同的Key对数据进行重新分区,分区之后分配到对应的子任务当中去。 源码解析 keyBy 得到的结果将不再是 DataStream,而是会将 DataStream 转换为 Key…...
QT6集成CEF3--01 准备工作
QT6集成CEF3--01 准备工作 一、所有使用到的工具软件清单:二、准备工作三、cefclient示例程序四、特别注意 一、所有使用到的工具软件清单: CEF 二进制发行包 cef_binary_117.2.5gda4c36achromium-117.0.5938.152_windows64.tar.bz2 CMake 编译工具 cmake-3.22.6-windows-x86_…...
亿唐网不做网站做品牌考试题/河南今日头条新闻
2021牛客暑期多校训练营3 Kuriyama Mirai and Exclusive Or 题目链接 题意 给定一个长度为n的数组a。 有q次操作,每次操作有两种类型: 给定一个区间[al,ar][a_l,a_r][al,ar],对区间内的数ai⊕x,i∈[l,r]a_i\oplus x,i\in […...
外贸网站建设哪家公司比较好/淘宝摄影培训推荐
鼠标滚动上下翻页效果是一种常见的网页交互设计,它使得用户可以通过鼠标滚轮的滚动来实现页面的上下翻页操作。这种效果通常应用于多图片、或长页面分页浏览的情况,使得用户可以方便地快速浏览内容,提高用户的交互体验。 今天作者就教大家如…...
手机制作网站/淘宝直通车推广怎么收费
一、在使用Oracle的to_date函数来做日期转换时,很多Java程序员也许会和我一样,直觉的采用“yyyy-MM-dd HH:mm:ss”的格式作为格式进行转换,但是在Oracle中会引起错误:“ORA 01810 格式代码出现两次”。如:select to_da…...
怎样做视频电影网站/怎么查询最新网站
在前面几篇文章网站测试自动化系统—基于Selenium和VSTT、数据驱动测试、在测试代码中硬编码测试数据里,大概介绍了编写测试代码的过程。然而光把代码写完了是不够的,自动化测试不仅仅是将原本手工执行的测试用例通过编码的方式自动化。一个完整的自动化…...
网站建设素材网/十大职业资格培训机构
我听到的一些发声 你们赚的钱已经可以了: 我一个发小是做土木工程的,上海大学博士,参与很多著名建筑的工程,但是从薪资上看,还不如一些稍微像样的公司的6年多的高级开发。为什么?这就是行业的红利…...
做网站用什么web服务器/平台推广渠道
1、上下文切换 上下文定义 cpu发生进程或者线程切换时,所依赖的数据集合,比如一个函数有外部变量,函数运行时,必须获取外部变量,这些变量值的集合就是上下文。 引发问题 对于CPU密集型任务,多线程处理会…...