大数据的概念由来已久。其实,早在1980年,阿尔文·托夫勒在《第三次浪潮》这本书中已经预言了信息时代的到来会带来数据的大爆发,但是当时的技术还不成熟,所以等到几十年后大数据才登上历史舞台。因为技术需要持续的积累才能由量变到质变。大数据到底是什么?研究机构 Gartner 给出了定义,大数据是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。
谈到大数据,不得不提到 Hadoop。Hadoop 起源于 Google 公布的与 GFS(谷歌文件系统)、MapReduce(面向大型集群的简化数据处理)、BigTable(结构化数据的分布式存储系统)有关的三篇论文,正是这三篇论文奠定了大数据发展的基石,Hadoop 的诞生极大地促进了大数据技术的快速发展。
虽然大数据与 Hadoop 关系密切,但 Hadoop 并不等同于大数据,大数据也不是指 Hadoop,大数据代表的是一种理念、一种解决问题的思维、一系列技术的集合,Hadoop 只是其中一种具体的处理数据的技术框架,目前比较流行的 Spark、Flink 等实时计算框架也属于大数据技术。
为了满足企业对于数据的各种需求,需要基于大数据技术构建大数据平台。大数据平台是指以处理海量数据存储、计算及不间断流数据实时计算等场景为主的一套基础设施。典型的大数据平台包括Hadoop、Spark、Flink 以及 Flume/Kafka 等集群。
数据仓库:
是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。
它通常将来自多个数据源的数据进行整合、存储和管理,以便于数据分析和挖掘。
数据仓库通过数据建模、数据清洗、数据加载等过程构建,并提供高效的数据查询和分析功能。
Hadoop是什么:
Hadoop 是一个开源的分布式计算框架,主要由以下几个重要组件构成:
1. HDFS(Hadoop 分布式文件系统):提供高可靠、高吞吐量的数据存储。
2. MapReduce:一种分布式计算模型,用于处理大规模数据。
3. YARN(Yet Another Resource Negotiator)**:资源管理框架,负责管理和分配计算资源。
Hadoop 被广泛应用于大数据处理、数据存储和分析等领域。
HDFS介绍:
HDFS(Hadoop 分布式文件系统)是 Hadoop 体系中的重要组成部分,分布式存储,解决海量数据的存储。
它具有以下主要特点:
1. 高容错性:通过数据冗余来保证数据的可靠性。
2.高吞吐量:能够处理大规模数据的读写。
3.大规模数据存储:可以存储海量数据。
原理图:
1、客户端将文件拆分成固定大小128M的块,并通知namenode
2、namenode找到可用的datanode返回给客户端
3、客户端根据返回的datanode,对块进行写入
4、通过流水线管道流水线复制
5、更新元数据,告诉namenode已经完成了创建新的数据块,保证namenode中的元数据都是最新的状态
MapReduce:
MapReduce 是 Hadoop 中的另一个核心组件,实现了分布计算,实际上是一种编程模型,由JAVA实现,它主要有以下特点:
1.分布式计算:将计算任务分解为多个子任务在多个节点上并行执行。
2. Map 阶段:对输入数据进行映射处理。
3. Reduce 阶段:对 Map 阶段的结果进行汇总和归约。
4.易于编程:提供了相对简单的编程模型。
原理图:
Yarn:
负责整个集群资源的管理和调度,是Hadoop的一个通用的资源管理系统,(另一种资源协调者)是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处,它主要有以下作用:
1.资源管理:统一管理集群中的计算资源。
2.任务调度:合理分配和调度任务。
3.多应用支持:允许不同类型的应用在集群中运行。
原理图:
HDFS Shell操作:
启动hadoop:
进入虚拟机终端输入指令:start-all.sh
查看HDFS文件系统,HDFS的http控制台对外端口:9870
以下是一些常见的 HDFS Shell 操作:
查看当前目录下的文件和文件夹**:`hdfs dfs -ls`
创建文件夹:hdfs dfs -mkdir <文件夹路径>
上传文件到 HDFS:hdfs dfs -put <本地文件路径> <HDFS 目标路径>
下载文件从 HDFS:hdfs dfs -get <HDFS 文件路径> <本地目标路径>
删除文件或文件夹:hdfs dfs -rm <文件或文件夹路径>
查看文件内容:hdfs dfs -cat <文件路径>
Hive:
1.Hive是基于Hadoop数据仓库的工具。可以将结构化的数据文件映射为一张表,并提供完整的sql查询功能,本质上还是一个文件
2.Hive底层是将sql语句转换为MapReduce任务进行运行
3. Hive本质上是一种大数据离线分析工具
4.Hive学习成本相当低,不用开发复杂的mapreduce应用,十分适合数据仓库的统计分析
5.Hive可以用来进行 数据提取、转化、加载,这是一种可以存储查询和分析存储在hadoop上的数据。
Hive的底层其实仍然是Hadoop的分布式文件系统HDFS和MapReduce,Hive会把sql命令转为底层的MapReduce代码在hadoop上只执行MapReduce程序。
Hive 具有以下一些特点:
- 数据存储:可以将数据存储在 HDFS 上。
- SQL 语法:支持类似 SQL 的查询语句,方便数据处理和分析。
- 扩展性:可以通过扩展集群来处理更大规模的数据。
Hive的HQL(Hive Query Language):
1.HQL-Hive通过类SQL的语法,来进行分布式的计算
2.HQL用起来和SQL非常的类似,Hive在执行的过程中会将HQL转换为MapReduce去执行,所以Hive其实是基于Hadoop的一种分布式计算框架,底层仍然是MapReduce。
Hive启动:
命令行指令:
nohup hive --service metastore &
nohup hive --service hiveserver2 &
以下是一些常见的 HQL 语句示例:
1.创建表:CREATE TABLE table_name (column1 data_type, column2 data_type,...);
2.插入数据:INSERT INTO table_name VALUES (value1, value2,...);
3.查询数据:SELECT column1, column2,... FROM table_name;
4.删除表:DROP TABLE table_name;