大数据&&Hadoop&&入门教程

进击大数据系列(一):Hadoop 基本概念与生态介绍
大数据系列之Hadoop(一):Hadoop概述及环境准备

概述

Hadoop由分布式文件系统(HDFS)、分布式资源调度系统(YARN)、分布式计算系统(MapReduce)组成。
Hadoop 是一个由 Apache 基金会所开发的分布式系统基础架构,主要解决海量数据的储存和海量数据的分析计算问题。广义上说,Hadoop 是一个更广泛的概念,Hadoop 生态圈。

Hadoop Distributed File System (HDFS™)

A distributed file system that provides high-throughput access to application data.
分布式文件存储系统&&HDFS

Hadoop YARN

A framework for job scheduling and cluster resource management.
YARN(Yet Another Resource Negotiator) 是Hadoop的集群资源管理和任务调度框架,负责管理和调度集群中的资源(如CPU、内存等),以支持多种计算框架的运行。YARN允许多种计算框架运行在Hadoop集群上,如Spark、Flink等。
大数据&&Yarn&&入门教程

Hadoop MapReduce

A YARN-based system for parallel processing of large data sets.
MapReduce 是一个分布式计算框架,用于轻松编写分布式应用程序,这些应用程序以可靠、容错的方式并行处理大型硬件集群上的大量数据。MapReduce将复杂的、运行于大规模集群上的并行计算过程高度地抽象到了两个函数:Map和Reduce。Map函数处理输入数据并产生中间键值对,Reduce函数将具有相同键的中间值合并,产生最终结果。

特点

Hadoop是一个能够让用户轻松搭建和使用的分布式计算平台,能够让用户轻松地在Hadoop上开发和运行处理海量数据的应用程序。Hadoop的主要特点如下。

  1. 高可靠性。Hadoop的数据存储有多个备份,集群部署在不同机器上,可以防止一个节点宕机造成集群损坏。当数据处理请求失败时,Hadoop将自动重新部署计算任务。
  2. 高扩展性。Hadoop是在可用的计算机集群间分配数据并完成计算任务的。为集群添加新的节点并不复杂,因此可以很容易地对集群进行节点的扩展。
  3. 高效性。Hadoop可以在节点之间动态地移动数据,在数据所在节点进行并行处理,并保证各个节点的动态平衡,因此处理速度非常快。
  4. 高容错性。Hadoop的分布式文件系统HDFS在存储文件时将在多台机器或多个节点上存储文件的备份副本,当读取该文件出错或某一台机器宕机时,系统会调用其他节点上的备份文件,保证程序顺利运行。
  5. 低成本。Hadoop是开源的,即不需要支付任何费用即可下载并安装使用,节省了购买软件的成本。
  6. 可构建在廉价机器上。Hadoop不要求机器的配置达到极高的标准,大部分普通商用服务器即可满足要求,通过提供多个副本和容错机制提高集群的可靠性。
  7. Hadoop基本框架是基于Java语言编写的。Hadoop是一个基于Java语言开发的框架,因此运行在Linux系统上是非常理想的。Hadoop上的应用程序也可以使用其他语言编写,如C++和Python。

适用场景:

  • 数据分析:Hadoop可以处理大规模的数据,进行数据挖掘和数据分析,例如,通过MapReduce进行用户行为分析,通过Hive进行数据仓库建设。
  • 日志处理:Flume可以收集和聚合大量的日志数据,Hadoop则可以对这些日志数据进行处理和分析。
  • 数据仓库:Hive和HBase可以构建数据仓库,进行数据的存储和查询。
  • 机器学习:Hadoop可以处理大规模的数据,进行机器学习模型的训练和预测,例如,通过Mahout进行推荐系统、聚类分析等。
  • 实时数据处理:虽然Hadoop的MapReduce更适合批处理,但结合其他工具,如Storm,也可以进行实时数据处理。

002

相关概念

Spark

Spark 是通用内存并行计算框架,借鉴了MapReduce之上发展而来的,继承了其分布式并行计算的优点并改进了MapReduce明显的缺陷。使用场景如下:

  • 复杂的批量处理(Batch Data Processing),偏重点在于处理海量数据的能力,至于处理速度可忍受,通常的时间可能是在数十分钟到数小时;
  • 基于历史数据的交互式查询(Interactive Query),通常的时间在数十秒到数十分钟之间
  • 基于实时数据流的数据处理(Streaming Data Processing),通常在数百毫秒到数秒之间

Storm

Storm 用于“连续计算”,对数据流做连续查询,在计算时就将结果以流的形式输出给用户。如今已被Flink替代。

Flink

Apache Flink是一个面向数据流处理和批量数据处理的可分布式的开源计算框架,它基于同一个Flink流式执行模型(streaming execution model),能够支持流处理和批处理两种应用类型。由于流处理和批处理所提供的SLA(服务等级协议)是完全不相同, 流处理一般需要支持低延迟、Exactly-once保证,而批处理需要支持高吞吐、高效处理,所以在实现的时候通常是分别给出两套实现方法,或者通过一个独立的开源框架来实现其中每一种处理方案。

Flume

一个可用的、可靠的、分布式的海量日志采集、聚合和传输系统。

Hive

是为提供简单的数据操作而设计的分布式数据仓库,它提供了简单的类似SQL语法的HiveQL语言进行数据查询。
在这里插入图片描述
Hive 架构原理
在这里插入图片描述

  • 用户接口(Client):CLI(hive shell)、JDBC / ODBC(java 访问 hive)、WEBUI(浏览器访问 hive)
  • 元数据(Metastore):元数据包括表名、表所属的数据库(默认是default)、表的拥有者、列 / 分区字段、表的类型(是否是外部表)、表的数据所在目录等;默认存储在自带的 derby 数据库中,推荐使用 MySQL 存储 Metastore
  • Hadoop:使用 HDFS 进行存储,使用 MapReduce 进行计算
  • 驱动器(Driver):
    • 解析器(SQL Parser) :将 SQL 字符串转换成抽象语法树 AST,这一步一般都用第三方工具库完成,比如 antlr;对 AST 进行语法分析,比如表是否存在、字段是否存在、SQL 语义是否有误
    • 编译器(Physical Plan):将 AST 编译生成逻辑执行计划
    • 优化器(Query Optimizer):对逻辑执行计划进行优化
    • 执行器(Execution):把逻辑执行计划转换成可以运行的物理计划。对于 Hive 来说,就是 MR/Spark。

运行机制
在这里插入图片描述
Hive 通过给用户提供的一系列交互接口,接收到用户的指令(SQL),使用自己的 Driver,结合元数据(MetaStore),将这些指令翻译成 MapReduce,提交到 Hadoop 中执行,最后,将执行返回的结果输出到用户交互接口。

Zookeeper

分布式协调系统,Google Chubby的Java开源实现,是高可用的和可靠的分布式协同(coordination)系统,提供分布式锁之类的基本服务,用于构建分布式应用。

Hbase

基于Hadoop的分布式数据库,Google BigTable的开源实现 是一个有序、稀疏、多维度的映射表,有良好的伸缩性和高可用性,用来将数据存储到各个计算节点上。

数据模型

逻辑上,HBase 的数据模型同关系型数据库很类似,数据存储在一张表中,有行有列。但从底层物理存储结构(K-V)来看,HBase 更像是一个 multi-dimensional-map(多维 map)。
逻辑结构
在这里插入图片描述
物理存储结构

在这里插入图片描述
名词解释

  • Name Space:命名空间,类似于关系型数据库的 database 概念,每个命名空间下有多个表。HBase 有两个自带的命名空间,分别是 hbase 和 default,hbase 中存放的是 HBase 内置的表,default 表是用户默认使用的命名空间
  • Region:类似于关系型数据库的表概念。不同的是,HBase 定义代表时只需要声明列族即可,不需要声明具体的列。这意味着,往 HBase 写入数据时,字段可以动态、按需指定。因此,和关系型数据库相比,HBase 能够轻松应对字段变更的场景
  • Row:HBase 表中的每行数据都由一个 RowKey 和多个 Column 组成,数据是按照 RowKey 的字典顺序存储的,并且查询数据时只能根据 RowKey 进行检索,所有 RowKey 的设计十分重要
  • Column:HBase 中的每个列都由 Column Family 列族 和 Column Qualifier 列限定符 进行限定,例如info:name,info:age。建表时,只需指明列族,而列限定符无需预先定义
  • Time Stamp:用于标识数据的不同版本,每条数据写入时,如果不指定时间戳,系统会自动为其加上该字段,其值为写入 HBase 的时间。
  • Cell:由 {rowkey,column Family:column Qualifier,time Stamp} 唯一确定的单元。cell中的数据是没有类型的,全部是字节码形式存储。
基本架构

在这里插入图片描述
Zookeeper的作用:HBase 通过 Zookeeper 来做 master 的高可用、RegionServer 的监控、元数据的入口以及集群配置的维护等工作。

写数据流程
在这里插入图片描述
读数据流程
在这里插入图片描述

HBase VS Hive

Hive

  • 数据仓库:Hive 的本质其实就是相当于将 HDFS 中已经存储的文件在 Mysql 中做了一个双射关系,以方便使用 HQL 去管理查询。
  • 用于数据分析、清晰:Hive 适用于离线的数据分析和清洗,延迟较高。
  • 基于 HDFS、MapReduce:Hive 存储的数据依旧在 DataNode 上,编写 HQL 语句终将是转换为 MapReduce 代码执行。

HBase

  • 数据库:是一种面向列族存储的非关系型数据库。
  • 用于存储结构化和非结构化的数据:适用于单表非关系型数据的存储,不适合做关联查询,类似于JOIN等操作。
  • 基于 HDFS:数据持久化存储的体现形式是 HFile,存放在 DataNode 中,被 RegionServer 以 region 的形式进行管理。
  • 延迟较低,接入在线业务使用:面对大量的企业数据,HBase 可以直线单表大量数据的存储,同时提供了高效的数据访问速度。

Cloudbase

基于Hadoop的数据仓库,支持标准的SQL语法进行数据查询。

Pig

大数据流处理系统,建立于Hadoop之上为并行计算环境提供了一套数据工作流语言和执行框架。

Mahout

基于HadoopMapReduce的大规模数据挖掘与机器学习算法库。

Oozie

MapReduce工作流管理系统。

Sqoop

数据转移系统,是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库中的数据导入Hadoop的HDFS中,也可以将HDFS 的数据导入关系型数据库中。

Scribe

Facebook开源的日志收集聚合框架系统。
在这里插入图片描述

优缺比较

Spark是一种快速、通用、可扩展的大数据分析引擎,它基于内存计算,提高了在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性。

SparkHadoop
计算基于内存计算,速度快基于磁盘计算,速度相对较慢
场景实时数据处理、复杂计算任务、机器学习、图处理等离线批处理作业、大规模数据存储
语言支持Scala、Java、Python等多种语言主要使用Java进行编程
生态系统包括Spark Core、Spark SQL、Spark Streaming、MLlib、GraphX等多个组件包括HDFS、MapReduce、HBase等多个组件
数据容错性通过RDD(弹性分布式数据集)的“血统”进行重建,保证数据的高容错性通过数据副本和自动任务重分配来保证数据的容错性
数据持久化支持将数据存储在内存中或磁盘上数据主要存储在HDFS上
扩展性支持水平扩展,可以部署在大量廉价硬件上形成集群同样支持水平扩展,但通常需要更多的配置和管理

MapReduce作为Hadoop的核心编程模型,将处理后的中间结果输出并存储到磁盘上,依赖HDFS文件系统存储每一个输出的结果;而Spark运用内存缓存输出的中间结果,减少了磁盘读写次数。
Spark以其快速的数据处理能力和丰富的生态系统在实时数据处理和复杂计算任务中占据优势,而Hadoop则以其高可靠性和可扩展性在离线批处理作业和大规模数据存储方面表现出色。

应用架构

HDFS、YARN、MapReduce 三者关系
在这里插入图片描述
在这里插入图片描述

工作原理、流程

部署应用

环境信息

安装xxx

待补充:基础的安装、配置/性能、启动

搭建集群

通用集群A

集群架构

环境信息

安装xxx

待补充:可用性、扩展性、性能、负载均衡

hadoop命令
# 用于查看指定路径下的文件和目录
hadoop fs -ls
# 用于在HDFS上创建目录
hadoop fs -mkdir
# 用于将本地文件或目录上传到HDFS
hadoop fs -put
# 用于删除HDFS上的文件或目录
hadoop fs -rm
# 用于在HDFS上移动文件或目录
hadoop fs -mv
# 用于在HDFS上复制文件或目录
hadoop fs -cp
# 用于查看HDFS上文件的内容
hadoop fs -cat

备份恢复

待补充:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值