大数据与Hadoop

1.大数据概述
1.1.大数据的概念
大数据即字面意思,大量数据。那么这个数据量大到多少才算大数据喃?通常,当数据量达到TB乃至PB级别时,传统的关系型数据库在处理能力、存储效率或查询性能上可能会遇到瓶颈,这时考虑采用大数据技术是合理的。

当然可以通过分库分表等方式来让关系型数据库来强行抗住这个量级,所以数据量大外数据结构是不是够杂(结构化、半结构化、非结构化数据)也是要不要上大数据技术的重要考量点。

当然数据杂也可以通过关系型+非关系型数据库(如MySQL+MongoDB+ES)组合式的存储来分别存储,所以还要看要求对数据的使用上的诉求是什么?实时或近实时的分析处理(例如实时推荐系统、金融风控、物联网监控等),这些对数据的使用方式上需要对大量数据进行计算,而不再是关系型数据库中那种小批量的增删改查,这时候即使是用了组合式的存储来存放数据,要去各种存储上跑计算任务再汇总到一起,明显是很低效的,这时候上大数据技术就是十分合理的。

大数据场景中的数据往往具有4V的特点:

  • 大量化:数据量大。
  • 快速化:增长速度快。
  • 多样化:数据类型多样,结构化、非结构化都有。
  • 价值密度低:价值密度低,商业价值高。

1.2.大数据的应用场景
大数据的应用总结起来就是:决策、预测。

1.零售行业
个性化推荐:基于用户购物历史、浏览记录、社交媒体行为等数据,实现商品个性化推荐,提高转化率和用户满意度。
库存优化:通过分析销售数据、季节性趋势、供应链信息等,精准预测需求,减少库存积压,提升供应链效率。
价格策略:利用市场动态、竞品分析、消费者敏感度数据制定动态定价策略,提高竞争力和利润水平。
客户细分与营销:对客户数据进行聚类分析,识别不同消费群体特征,实施精细化营销策略。
2. 金融行业
风险评估与管理:运用大数据分析进行信用评分、欺诈检测、市场风险预测,提升信贷决策准确性,降低风险敞口。
交易监控与反洗钱:实时监测异常交易行为,运用机器学习算法识别潜在的洗钱活动,确保合规运营。
投资决策支持:结合宏观经济数据、公司财务报告、社交媒体情绪等多元数据源,辅助投资者进行量化投资分析和策略制定。
3. 教育行业
学生学习行为分析:通过分析在线学习平台数据,了解学生学习进度、难点、偏好,提供个性化教学建议和资源推荐。
教育资源优化:依据课程访问量、完成率、互动数据等,评估教学效果,优化课程设计与资源配置。
教育政策制定:利用大数据研究教育公平、教学质量、就业趋势等问题,为教育政策制定提供数据支持。
4. 医疗行业
疾病预测与预防:通过对电子病历、基因组数据、生活方式数据的分析,预测疾病风险,指导早期干预和预防措施。
精准医疗:基于个体基因、生理指标、环境因素等大数据,制定个性化治疗方案,提高疗效和患者生活质量。
医疗资源管理:利用大数据预测医疗需求,优化医院床位、设备、人力资源分配,提升医疗服务效率。
5. 市场营销与客户关系管理
市场趋势分析:通过分析社交媒体、搜索引擎、行业报告等数据,洞察市场动态、消费者偏好变化,指导产品开发和市场定位。
精准广告投放:基于用户画像、行为数据、地理位置等信息,实现广告的定向投放和效果优化。
客户满意度与忠诚度提升:利用客户反馈、社交媒体舆情、购买行为数据,识别影响满意度的关键因素,制定针对性的改进策略。
6. 其他行业与通用场景
智慧城市:集成交通、能源、环境、公共服务等多源数据,实现城市运行状态监测、资源调度优化、应急响应管理等。
工业制造:通过设备数据、生产流程数据的实时分析,实现预测性维护、质量控制、产能优化等智能制造应用。
社交媒体分析:挖掘用户社交网络行为、情感倾向、话题热度等数据,为企业品牌管理、舆情监控、产品推广提供决策支持。

1.3.大数据的关键技术
大数据技术,其实就是一套解决方案,是基于各种现实的业务场景的成功的解决方案的总结。

大数据技术可以看作对传统技术的延申,是由于大数据的量传统技术不是很好应付了才出现了大数据的解决方案。传统的单点扛不住,扩集群,集群也扛不住就可以考虑大数据,或者即使集群扛得住,但是数据类型太杂了需要也可以考虑大数据。所以大数据和传统技术只是AB两套方案罢了。

大数据的整个流程:

数据采集->数据存储与管理->数据处理与分析

1.数据存储

其实就是当数据量很小的时候,存在单台机器上,当单台机器扛不住的时候存在多台机器上。存在多台机器上就需要进行统一的管理,对外给出统一的API让操作者去操作整个集群中的数据,让操作者体感愉悦,感知上觉得面对的就是一台存储容量无限大的单点服务器。

统一的管理、统一的操作API,这两点合在一起,像不像个系统?是的,这就是大数据中的存储系统,分布式文件系统——HDFS。

2.数据的运算

花这么大代价用HDFS存储起来的数据肯定不是拿来看的,而是要用起来的,是要用于计算的。在大数据系统中由于其存储采用了分布式的架构,计算任务不再是单点的,而是分布式的,是要分发到集群中的各个存储节点上去的,由各个结点计算后汇总出最终的结果。很明显这种多节点间的协作计算是需要进行任务调度的,这就是分布式计算引擎需要干的活儿,经典的分布式计算引擎是HDFS中内置的——MapReduce。其主要就是负责计算任务的调度。

除此之外还有一个目前市面上常用的强力的计算引擎——spark。mapreduce是基于磁盘的计算,spark是基于内存的计算,两者之间互有优劣。

1.4.大数据和云计算的关系
云计算即通过网络以服务的方式为用户提供非常廉价的IT资源。用户不用去自建设施,直接找云计算厂商购买服务即可。

云计算所能提供的服务分为三层:

SaaS,基础设施即服务,即将基础设施作为服务出租(计算资源和存储)。主要是面向用户的。

PaaS,平台即服务,在基础设施上包了一层,即将开发平台作为服务出租,用户只负责开发,剩下的部署、监控等一系列功能都交给平台去做。主要是面向开发者的。

IaaS,软件即服务,这个很好理解,就是直接提供运算的软件来用了。比如传统的金蝶财务软件是部署在本地的,放在云上提供服务后就变成了典型的IaaS。

经常听到“数据中心”就是厂商建立的物理服务器集群,专门用来提供云计算服务。

2.Hadoop

2.1.核心架构

随着大数据时代的来临,处理和分析海量数据成为了一项重要的挑战。为了应对这一挑战,Hadoop生态系统应运而生。Hadoop生态系统是一个开源的、可扩展的解决方案,它由三大核心部件组成,分别是Hadoop分布式文件系统(HDFS)、Hadoop分布式计算框架(MapReduce)和Hadoop分布式存储和计算平台(YARN)。这三个部件共同协作,提供了一个高效和可靠的大数据处理平台。本文将对Hadoop生态系统的这三大部件进行详细解析,以帮助读者更好地理解Hadoop生态系统的工作原理和优势。

进入大数据阶段就意味着进入NoSQL阶段,更多的是面向OLAP场景,即数据仓库、BI应用等。
大数据技术的发展并不是偶然的,它的背后是对于成本的考量。集中式数据库或者基于MPP架构的分布数据库往往采用的都是性能稳定但价格较为昂贵的小型机、一体机或者PC服务器等,扩展性相对较差;而大数据计算框架可以基于价格低廉的普通的硬件服务器构建,并且理论上支持无限扩展以支撑应用服务。

在大数据领域中最有名的就是 Hadoop 生态,总体来看,它主要由三部分构成:底层文件存储系统 HDFS(Hadoop Distributed File System,Hadoop 分布式文件系统)、资源调度计算框架 Yarn(Yet Another Resource Negotiator,又一个资源协调者)以及基于 HDFS 与 Yarn的上层应用组件,例如 HBase、Hive 等。一个典型的基于 Hadoop 的应用如下图所示。

01 HDFS
HDFS 被设计成适合运行在通用硬件(Commodity Hardware)上的分布式文件系统。它和现有的分布式文件系统有很多共同点,例如典型的 Master-Slave 架构(这里不准备展开介绍),也有不同点,HDFS 是一个具有高度容错性的系统,适合部署在廉价的机器上。关于HDFS 这里主要想说两点,默认副本数的设置以及机架感知(Rack Awareness)。

HDFS 默认副本数是 3,这是因为 Hadoop 有着高度的容错性,从数据冗余以及分布的角度来看,需要在同一机房不同机柜以及跨数据中心进行数据存储以保证数据最大可用。因此,为了达到上述目的,数据块需要至少存放在同一机房的不同机架(2 份)以及跨数据中心的某一机架(1 份)中,共 3 份数据。

机架感知的目的是在计算中尽量让不同节点之间的通信能够发生在同一个机架之 内,而不是跨机架,进而减少分布式计算中数据在不同的网络之间的传输,减少网络带 宽资源的消耗。例如当集群发生数据读取的时候,客户端按照由近到远的优先次序决定 哪个数据节点向客户端发送数据,因为在分布式框架中,网络 I/O 已经成为主要的性能瓶颈。

只有深刻理解了这两点,才能理解为什么 Hadoop 有着高度的容错性。高度容错性是Hadoop 可以在通用硬件上运行的基础。

02 Yarn
Yarn 是继 Common、HDFS、MapReduce 之 后 Hadoop 的又一个子项目, 它是在MapReduceV2 中提出的。

在 Hadoop1.0 中,JobTracker 由资源管理器(由 TaskScheduler 模块实现)和作业控制 (由 JobTracker 中多个模块共同实现)两部分组成。

在 Hadoop1.0 中,JobTracker 没有将资源管理相关功能与应用程序相关功能拆分开,逐 渐成为集群的瓶颈,进而导致集群出现可扩展性变差、资源利用率下降以及多框架支持不 足等多方面的问题。

在 MapReduceV2 中,Yarn 负责管理 MapReduce 中的资源(内存、CPU 等)并且将其 打包成 Container。这样可以使 MapReduce 专注于它擅长的数据处理任务,而不需要考虑资源调度。这种松耦合的架构方式实现了 Hadoop 整体框架的灵活性。

03 Hive
Hive 是基于Hadoop 的数据仓库基础构架,它利用简单的 SQL 语句(简称 HQL)来查询、分析存储在 HDFS 中的数据,并把 SQL 语句转换成 MapReduce 程序来进行数据的处理。Hive与传统的关系型数据库的主要区别体现在以下几点。

存储的位置, Hive 的数据存储在 HDFS 或者 HBase 中,而后者的数据一般存储在裸设备或者本地的文件系统中,由于 Hive 是基于 HDFS 构建的,那么依赖 HDFS 的容错特性,Hive 中的数据表天然具有冗余的特点。

数据库更新, Hive 是不支持更新的,一般是一次写入多次读写(这部分从 Hive 0.14之后开始支持事务操作,但是约束比较多),但是由于 Hive 是基于 HDFS 作为底层存储的, 而 HDFS 的读写不支持事务特性,因此 Hive 的事务支持必然需要拆分数据文件以及日志文 件才能支持事务的特性。

执行 SQL 的延迟,Hive 的延迟相对较高,因为每次执行都需要将 SQL 语句解析成MapReduce 程序。

数据的规模上,Hive 一般是 TB 级别,而后者规模相对较小。

可扩展性上,Hive 支持 UDF、UDAF、UDTF,后者相对来说可扩展性较差。

04 HBase
HBase(Hadoop Database)是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统。它底层的文件系统使用 HDFS, 使用ZooKeeper 来管理集群的 HMaster 和各RegionServer 之间的通信,监控各RegionServer 的状态,存储各 Region 的入口地址等。

特点
HBase 是 Key-Value 形式的数据库(类比 Java 中的 Map)。既然是数据库那肯定就有 表,HBase 中的表大概有以下几个特点。
1)大:一个表可以有上亿行,上百万列(列多时,插入变慢)。

2)面向列:面向列(族)的存储和权限控制,列(族)独立检索。

3)稀疏:对于空(null)的列,并不占用存储空间,因此,表可以设计得非常稀疏。

4)每个单元格中的数据可以有多个版本,默认情况下版本号自动分配,是单元格插入 时的时间戳。

5)HBase 中的数据都是字节,没有类型定义具体的数据对象(因为系统需要适应不同 类型的数据格式和数据源,不能预先严格定义模式)。

这里需要注意的是,HBase 也是基于 HDFS,所以也具有默认 3 个副本、数据冗余的特 点。此外 HBase 也是利用 WAL 的特点来保证数据读写的一致性。

存储
HBase 采用列式存储方式进行数据的存储。传统的关系型数据库主要是采用行式存储 的方式进行数据的存储,数据读取的特点是按照行的粒度从磁盘上读取数据记录,然后根 据实际需要的字段数据进行处理,如果表的字段数量较多,但是需要处理的字段较少(特 别是聚合场景),由于行式存储的底层原理,仍然需要以行(全字段)的方式进行数据的查 询。在这个过程中,应用程序所产生的磁盘 I/O、内存要求以及网络 I/O 等都会造成一定的 浪费;而列式存储的数据读取方式主要是按照列的粒度进行数据的读取,这种按需读取的 方式减少了应用程序在数据查询时所产生的磁盘 I/O、内存要求以及网络 I/O。
此外,由于相同类型的数据被统一存储,因此在数据压缩的过程中压缩算法的选用以 及效率将会进一步加强,这也进一步降低了分布式计算中对于资源的要求。

列式存储的方式更适合 OLAP 型的应用场景,因为这类场景具有数据量较大以及查询字段较少(往往都是聚合类函数)的特点。例如最近比较火的 ClickHouse 也是使用列式存储的方式进行数据的存储。

05 Spark及Spark Streaming
Spark 由 Twitter 公司开发并开源,解决了海量数据流式分析的问题。Spark 首先将数据 导入 Spark 集群,然后通过基于内存的管理方式对数据进行快速扫描,通过迭代算法实现 全局 I/O 操作的最小化,达到提升整体处理性能的目的。这与 Hadoop 从“计算”找“数据” 的实现思路是类似的,通常适用于一次写入多次查询分析的场景。

Spark Streaming 是基于 Spark 的一个流式计算框架,它针对实时数据进行处理和控制, 并可以将计算之后的结果写入 HDFS。它与当下比较火的实时计算框架 Flink 类似,但是二者在本质上是有区别的,因为 Spark Streaming 是基于微批量(Micro-Batch)的方式进行数据处理,而非一行一行地进行数据处理。

  • 27
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值