hadoop、hive、spark、flink、flume基本概念

hadoop、hive、spark分别是什么

Hadoop是一个由Apache基金会所开发的分布式系统基础架构,主要就是解决数据存储和数据分析计算的问题(通过HDFS和MapReduce实现)。

Hive是基于Hadoop的数据仓库工具,可以存储,查询,分析数据,方便决策人员和数据分析人员统计分析历史数据。

Spark是一个基于内存计算的开源的集群计算系统,目的是让数据分析更加快速


Hadoop

首先是Hadoop。Hadoop可以说是大数据处理的基石,其他框架大多数都是以Hadoop为基础,从各个方面的不同角度进行优化和改进而演变而来的,由此也形成了一个强大而完善的Hadoop生态圈,从而支撑着现在日益庞大的数据处理量。

Hadoop是一个分布式计算框架。简单来说Hadoop可以分为两部分:分布式存储(HDFS)和分布式计算(Mapreduce)。

HDFS本质上也是一个文件系统,可以看作由多个普通的文件系统组成的一个联机版的文件系统。它将一个大文件划分为小的文件库存储在各个各个机器上(DataNode),将这些小文件的元数据信息交给一个统一的管理者(NameNode)来管理。和普通文件系统不同的是HDFS所划分的文件块更大(128M),并且通过冗余的方式来保证可靠性。
MapReduce是一种编程模型,它将分布式并行计算抽象成为Map(映射)和Reduce(归约),这样就简化了分布式程序的难度。为何能简化程序的编写难度呢,本质上就是这个框架完成了大部分事情,使得我们只需要关注业务处理逻辑,而不关系整个分布式程序之间是怎么通信和协作的。

以我们最熟悉的word count来说,假设要统计10本书里某个词语出现的次数,做法有以下几种:

(1)将这10本书的内容依次遍历,统计出词语的出现次数

(2)用多线程的方式来并发遍历,统计出词语出现的次数

(3)将10本书分别存储到不同机器,分别统计词语出现的次数,最后再求和汇总

显然,速度最快的是第3种方式(大数据量的情况下)。而编写程序难度最高的也是第3种,要考虑怎么分开存储,如何分发程序,以及如何汇总,等等。如果用Maoreduce的话我们就不需要考虑这些问题了,因为MR已经帮我们做了(JobTracker和TaskTracker),而我们只关注如何统计一本书里某个词语的次数就好了。

以上只是简单的一个举例,实际上Mapreduce是依赖于Yarn来进行调度的。

所以简单来说Hadoop是一个分布式的存储和计算框架。

Hive

提到数仓那就一定会有Hive。Hive就是基于Hadoop的一个数据仓库工具。简单来说就是它可以用SQL(准确的说是HQL)来查询和处理文件,因为它可以把文件映射为一张表。说到这里我个人觉得,大数据的处理语言不是Java也不是Python,而是SQL,或者说是类SQL的语言,因为SQl这个语言本来就是为数据查询而生的,不论是语法还是其他方面,都很适合做数据查询和分析,可以做到几行SQL一个报表,而其他语言似乎是没有这么简单的,其次在数据抓取(爬虫)方面,个人觉得SQL也是最好的选择,只是目前还没有类似的工具,或者已经有了而我还不了解。

一开始一直有几个问题迷惑不解:Hive的数据从哪里来,什么样数据应该存到Hive?又被送往哪里去处理?存到Hive有什么优势?

现在就逐个总结下自己的看法:

(1) Hive的数据从哪里来,什么样的数据适合存到Hive?

其实不用纠结这个问题,数据来源有很多很多,比如业务数据经过初步处理(数据清洗、结构化)后存入Hive,为以后的报表分析、实时计算做好数据准备。也就是说,具有业务意义的,需要长期保存供后续处理和使用的都可以存入Hive中。这也体现出Hive作为数据仓库的一样,既为仓库,也就是储备,以备不时之需。

(2)Hive的数据被送到哪里去?

一般来说从Hive中取到数据后,经过处理会落入到关系数据库或者其他类型的数据库中作为实时查询;或者作为Spark的数据输入,来做进一步的批量计算或者实时计算,最后输出到数据库或者其他地方。

(3)存到Hive有什么优势?

Hive既然作为数据仓库,即说明它可以存大量的文件,实时也确实这样,因为它是基于Hadoop的嘛,Hadoop本身就是适合存大数据的分布式文件系统嘛。Hive支持HQL的类似SQL的方式查询和分析数据,也是因为它是基于Hadoop的,将HQL转化为MR来执行,所以从编写程序的角度来说,HQL肯定是比直接写MR程序要容易的多的,实际上在开发时大多数也是用的HQL,而很少直接去写MR.

Spark

Spark是一个基于内存计算的并行迭代计算框架,看着很高大上的样子(确实也很高大上),其本质就是将原有的在磁盘输入输出的操作全部放在了内存中进行,内存的速度和磁盘IO肯定不是一个数量级的,因此Spark减少了内存和磁盘间的IO次数,从而大大提高了计算速度.其次,为什么说Spark是一个迭代计算框架呢?因为它的计算对象都是针对同一个数据集(Dataset)来说的,可以对一个数据集反复操作,这也正发挥了内存速度上的优势.

Spark同时支持批处理和流处理(Spark Streaming,个人感觉不如Storm),也支持SQL(Spark SQL),也支持图计算,还支持机器学习,真是个全家统啊.所以现在大多数的开发也都首选Spark.

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Hadoop是一个开源的分布式计算框架,可用于处理大数据集并提供高可靠性,高可用性和高性能。要进行详细的安装部署,需要运行以下步骤: 1. 安装Java:Hadoop基于Java编写,因此需要安装适当的Java版本。 2. 安装Hadoop:以二进制文件的形式下载Hadoop,并将其解压缩到目标位置。编辑Hadoop配置文件,并设置必要的参数,例如本地文件系统和Hadoop所依赖的其他组件。 3. 部署HDFS:使用bin/hdfs script启动HDFS守护进程并格式化NameNode。配置HDFS,并在数据节点上创建数据目录。 4. 部署YARN:使用bin/yarn script启动YARN守护进程,并在ResourceManager节点上运行MR程序的ApplicationMaster服务。重新配置YARN,并设置资源管理器和节点管理器。 5. 安装Spark:以二进制文件的形式下载Spark,并将其解压缩到目标位置。编辑Spark配置文件,并设置必要的参数,例如运行模式,内存设置和调试选项。 6. 安装Hive:以二进制文件的形式下载Hive,并按照说明进行安装。配置Hive,并设置Metastore和HiveServer2。 7. 安装HBase:以二进制文件的形式下载HBase,并按照说明进行安装。配置HBase,并设置区域服务器和HBase主服务器。 8. 安装Oozie:以二进制文件的形式下载Oozie,并按照说明进行安装。编辑Oozie配置文件,并设置必要的参数,例如数据库连接,属性和内存设置。 9. 安装Kafka:以二进制文件的形式下载Kafka,并按照说明进行安装。配置Kafka,并设置必要的参数,例如Zookeeper连接,日志存储位置和日志大小限制。 10. 安装Flume:以二进制文件的形式下载Flume,并按照说明进行安装。配置Flume,并设置必要的参数,例如Flume代理,事件类型和目标。 11. 安装Flink:以二进制文件的形式下载Flink,并按照说明进行安装。配置Flink,并设置必要的参数,例如集群模式,任务管理器,计算管道和作业提交方式。 12. 安装ES:以二进制文件的形式下载Elasticsearch,并按照说明进行安装。配置Elasticsearch,并设置必要的参数,例如节点类型,索引设置和查询配置。 13. 安装Redash:以二进制文件的形式下载Redash,并按照说明进行安装。配置Redash并设置必要的参数,例如数据库连接,权限和查询模式。 以上提到的大数据技术是开源的,所以可以在官网上找到相关二进制文件和详细的安装部署指南。也可以使用一些自动化的部署工具,如Puppet和Ansible来简化整个过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值