Hadoop到底是干什么用的?为什么要用他?
Hadoop主要的应用场景和应用领域是什么,主要解决的核心问题又是什么,在编写代码方面他是一种api规范吗?为什么我们要用他呢?
使用Hadoop,我们可以对大数据进行分布式存储和分布式计算,从而实现大数据分析。
要搞清楚Hadoop的作用首先需要明确大数据的概念及其作用:
大数据
随着移动互联网的发展,网络已经成为了生活中必不可少的基础设置。在互联网中, 每天都会产生海量的数据。这些数据除了可以用表格记录的结构化数据外, 还包括大量的图像,视频,音频,各种传感器的记录, GPS的跟踪数据等等。传统的数据库技术对处理这些海量数据的能力有限,我们需要除了传统数据库技术之外的技术来处理这些海量的数据。
有人可能会问:为什么需要存储并处理这些数据(图像,视频,音频,各种传感器的记录, GPS的跟踪数据等等)?出于什么目的?
答案是,我们需要这些数据来帮助我们了解企业运营的状况,了解客户的需求,从而做出更加明智的商业决策。这些决策的范围从猜测消费者的偏好到提前预防欺诈活动等等,商业活动中的各个领域都可以从数据中找到有用的信息。
大数据系统的特点
一般认为,大数据主要具有以下四个方面的典型特征:规模性(Volume)、多样性(Varity)、高速性(Velocity)和价值性(Value),即所谓的“4V”。
1.规模性。大数据的特征首先就体现为“数量大”,存储单位从过去的GB到TB,直至PB、EB。随着信息技术的高速发展,数据开始爆发性增长。社交网络(头条、抖音、微博、推特、脸书)、移动网络、各种智能终端等,都成为数据的来源。淘宝数亿的会员每天产生数据约50TB;脸书的用户每天产生的日志数据超过500TB。迫切需要智能的算法、强大的数据处理平台和新的数据处理技术,来统计、分析、预测和实时处理如此大规模的数据。
2.多样性。广泛的数据来源,决定了大数据形式的多样性。大数据大体可分为三类:一是结构化数据,如财务系统数据、信息管理系统数据、医疗系统数据等,其特点是数据间因果关系强;二是非结构化的数据,如视频、图片、音频等,其特点是数据间没有因果关系;三是半结构化数据,如HTML文档、邮件、网页等,其特点是数据间的因果关系弱。
3.高速性。与以往的档案、广播、报纸等传统数据载体不同,大数据的交换和传播是通过互联网、云计算等方式实现的,远比传统媒介的信息交换和传播速度快捷。大数据与海量数据的重要区别,除了大数据的数据规模更大以外,大数据对处理数据的响应速度有更严格的要求。实时分析而非批量分析,数据输入、处理与丢弃立刻见效,几乎无延迟。数据的增长速度和处理速度是大数据高速性的重要体现。
4.价值性。这也是大数据的核心特征。现实世界所产生的数据中,有价值的数据所占比例很小。相比于传统的小数据,大数据最大的价值在于通过从大量不相关的各种类型的数据中,挖掘出对未来趋势与模式预测分析有价值的数据,并通过机器学习方法、人工智能方法或数据挖掘方法深度分析,发现新规律和新知识,并运用于农业、金融、医疗等各个领域,从而最终达到改善社会治理、提高生产效率、推进科学研究的效果。
Hadoop技术的来源, Google
大数据的存储与计算问题首先引起了谷歌的关注,因为他们的搜索引擎数据随着互联网行业的发展而爆发性的增长。
谷歌巧妙地利用并行处理理论解决了这一难题。
他们设计了一种称为 MapReduce 的算法。该算法将任务分成小块,并将这些块分配给通过网络连接的多台计算机分别计算,并将所有计算机的计算结果组合起来形成最终的计算结果。
通过MapReduce 的算法,我们把海量数据的计算拆解成若干个子任务, 每个任务分配到一台计算机上, 使得单台计算机的计算量大幅度的减小。从而降低了数据交换的成本和整体计算时长。
Hadoop简介
使用Hadoop, 我们可以解决处理大数据的技术难题, 对海量数据进行存储, 并对其进行计算提取出我们想要的信息来。Hadoop的原理主要来源于谷歌发表的论文——于2003年发表的Google File System 和 2004年发表的MapReduce
什么是Hadoop?
Hadoop 是一个开源编程框架,可在分布式计算环境中处理大型数据集,通过Hadoop我们可以轻松的实现海量数据的分布式存储和分布式计算。它可以轻松的部署在数以千计的普通计算机上,而且Hadoop集群的规模也可以方便的扩展。
Hadoop架构
Hadoop主要由三大组件构成:
HDFS: 负责分布式存储
MapReduce: 负责分布式计算
YARN:负责分布式资源调度
Hadoop Distributed File System (Hadoop HDFS):
- HDFS是分布式存储框架,使用HDFS我们可以将海量(PB、EB级别)的数据(结构化,非结构化,半结构化)存储起来
- HDFS是GFS(Google File System)的开源实现
- HDFS有着高容错性(fault-tolerant)的特点,可以部署在普通的硬件上
在大数据生态中,好多其它组件都可以基于HDFS展开工作,方便我们将不同来源的数据存储到HDFS上:
HBase:HBase 是一个基于HDFS的非关系型数据库,当我们需要对大数据进行随机,实时读写访问时,HBase提供了很好的支持。
Sqoop:sqoop 是一种用于在 Hadoop 和 传统关系型数据库之间传输数据的工具。 它可以将Oracle和MySQL等关系数据库中的数据导入HDFS,并将数据从HDFS导出到关系数据库。
Flume:是一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。通过Flume我们可以从不同系统中收集日志文件传输到HDFS中进行存储。
Hadoop MapReduce:
- 分布式计算框架,使用MapReduce,可以对存储在HDFS上的数据进行计算, 分析,从而获得数据洞察
- 源于Google的MapReduce论文,是GoogleMapReduce的开源实现
- MapReduce特点:扩展性&容错性&海量数据离线处理
在大数据生态中, 好多开源组件是基于MapReduce工作的:
Apache Pig,Apache开源项目,Pig为大型数据集的处理提供了更高层次的抽象,它可以将Pig脚本自动翻译成MapReduce代码, 避免直接写复杂的MapReduce代码
Apache Hive, hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。Hive的优点是学习成本低,可以通过类似SQL语句实现快速MapReduce统计,使MapReduce变得更加简单,而不必开发专门的MapReduce应用程序。hive十分适合对数据仓库进行统计分析。
Oozie 是一个开源的工作流和协作服务引擎,基于 Apache Hadoop 的数据处理任务。Oozie 是可扩展的、可伸缩的面向数据的服务,运行在 Hadoop 平台上。
还没有评论,来说两句吧...