大数据
大数据,不仅仅具备大的特征,只有外行人才会天真的以为大数据,就是数据,量大!量大只是大数据其中的一个特征,除了这个特征之外,它还和另外三个特征合起来组成了大数据必不可少的四个特征:
Volume 大量的
海量的数据
Variety 多种多样的
数据的类型多种多样,比如数据来源多样,企业内部的日志,互联网和物联网等,数据的类型多样,有结构化数据,有非结构化数据,如视频,文档,音频,有的数据关联性不大,有的数据的关联性是非常强,比如一个游客在旅游的过程中,上传的图片和游客和位置和行程是有非常大的关联性。(你也一定有这样的经历:当你做火车的时候,总是收到一些短信,不管是垃圾的还是不是垃圾的,这是根据数据的实时分析)。
Velocity 速度快
在大数据诞生之初,很多的情况下,都是基于日志来做批处理分析的,也就是刚开始的时候使用Hive来进行处理,随着业务的增长和需求,批处理也无法满足需求,后来就诞生了流处理系统,比如著名的Spark,这些框架的处理速度更快,实时性更快,透明度也更高。
Value 数据价值
这是一个沙里淘金的过程。从海量的数据里挖掘有用的珍贵的信息,难度是不小的。而且随着数据量的增大,变的越来越难的。可以引入一个概念,价值密度越来越低
大数据要解决的问题
发现数据价值。即提高价值密度。
大数据要涉及的技术
数据采集。试想一下,你的日志,分散在各个地方,如果你要进行大数据处理的话,第一步,你要做的事情就是要将各个地方的数据收集到我们的数据平台上来。我们才能做后面的数据分析和挖掘。
数据存储。数据存储时我们要解决的第二个问题,原来我们的数据量非常小的时候,我们存储在几个机器上就OK了,可是现在我们的存储量越来越大,我们需要要怎么样的方式去解决大量数据的存储问题呢?这个也是我们要考虑的问题
数据处理、分析,挖掘,我们已经将数据采集过来,并且进行了存储,接下来我们要做的事情就是,数据的处理,分析和挖掘,我们应该采取什么样子的技术来解决我们特定领域的问题呢?这里就涉及到处理框架技术选择问题。
可视化,我们将数据进行相关的处理之后,我们最好的方式就是通过可视化的方式将它展现出来,否则你的数据都是在后台的存储系统中,你没有办法给销售,或者领导我们数据挖掘的效果,挖掘的成果到底是什么样子的。
综上:这里所涉及到的技术,在Hadoop中都是有对应的一个或者多个解决方案,把这些框架或技术综合起来,就可以达到大数据处理平台分析处理的能力了。
大数据在技术架构上带来的挑战
对现有数据库管理技术的挑战,现阶段而言,已经无法使用结构化的存储和查询来处理大量数据。
经典数据库并没有考虑到数据的多类别。
实时性技术的挑战。数据所产生的价值会随着时间的流逝而大大降低。所以当数据产生的时候,我们应该尽可能快的对我们产生的数据进行处理。最典型的就是电商的推荐系统。
网络架构,数据中心,运维的挑战。每天的数据都是爆炸式增长的,如何对这些数据进行高效的收集,存储和计算呢?这些都是现如今的数据中心要面临的挑战。对于快速的增长的数据,所需要的机器也越来愈多,运维是个大挑战
其他:数据隐私,
大数据技术解决的问题
MapReduce:解决计算效率的问题
GFS:解决大数据的存储问题
BigTable:解决读写速度的问题
这个三个技术可以称作是革命性的技术。现如今大数据处理生态圈中的框架,都是基于谷歌的技术的。
然后由于谷歌只是发表了论文,并没有开放源代码。我们是没有办法使用的,但是很快,一个模仿Google大数据技术的开源实现:Hadoop。这对业界来说是一个福音:
为什么是这个名字?是hadoop的作者的孩子给一个棕黄色的大象样子的填充玩具的命名。
Hadoop是什么?
官方是这样解释的:
The Apache™ Hadoop® project develops open-source software for reliable, scalable, distributed(大量的数据一定要通过分布式的方式并行执行,如果采用单机的方式,一定是存储不行,计算也不行) computing.
The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models. It is designed to scale up from single servers to thousands of machines, each offering local computation and storage. Rather than rely on hardware to deliver high-availability, the library itself is designed to detect and handle failures at the application layer, so delivering a highly-available service on top of a cluster of computers, each of which may be prone to failures.
Welcome to Apache™ Hadoop®!
What Is Apache Hadoop?
The Apache™ Hadoop® project develops open-source software for reliable, scalable, distributed computing.
The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models. It is designed to scale up from single servers to thousands of machines, each offering local computation and storage. Rather than rely on hardware to deliver high-availability, the library itself is designed to detect and handle failures at the application layer, so delivering a highly-available service on top of a cluster of computers, each of which may be prone to failures.
The project includes these modules:
(Hadoop包括了三个部分)
Hadoop Common: The common utilities that support the other Hadoop modules.
Hadoop Distributed File System (HDFS™): A distributed file system that provides high-throughput access to application data.
Hadoop YARN: A framework for job scheduling and cluster resource management.
Hadoop MapReduce: A YARN-based system for parallel processing of large data sets.
上一段英文可以看出,Hadoop包括了三个大的部分:
HDFS(存储)
YARN(管理)
MapReduce(并行计算)
综上,我们可以知道,Hadoop是开源的,是基于分布式存储和分布式计算平台,接下来简单的介绍一下Hadoop:
Hadoop可以干什么?
搭建大型的数据仓库,PB级数据的存储,处理,分析,统计等业务。
Hadoop核心组件之分布式文件系统HDFS。
HDFS的特点:
扩展性,容错性,海量数据存储。如果原来的一百台机器存储不了了,那么可以添加一批机器进来(可扩展)。以HDFS文件系统上存储的数据,是以多副本的方式,存储在各个节点之上的。如果一个节点挂掉了,没关系,我们还有其他副本(容错性)。HDFS的存储能力相对于单机是大的多的。
在HDFS中,每一次上传一个文件,它会将文件切分成指定大小的数据块(默认是128M),并且以多副本的方存储在多个机器上。
数据切分,多副本,容错等操作对用户是透明的。我们并不需要关注数据块,因为我们操作的对象还是文件,具体的怎么切分,如何副本是有Hadoop底层已经帮助我们屏蔽掉了,所以我们使用起来和单机的文件系统操作没有多大区别,比如文件的增删改查。
**Hadoop核心组件之自愿调度系统YRAN**Yet Another Resource Negotiator。(另一种资源的协调)
负责整个集群资源的管理和调度。比如你有一个作业要提交上来执行,那么这个作业需要占用多少个CPU,多少内存,这些都有yarn来分配,YRAN的特点:扩展性,容错性,**多框架资源统一调度。**yran上可以跑非常多的作业,各种不同的作业,由下图,可以看出YRAN运行在HDFS之上,是其他框架的基础。
Hadoop核心组件之MapReduce
分布式计算框架,HDFS是Google MapReduce的克隆版
MapReduce特点:扩展性&容错性&海量数据离线处理
Map先进行一个映射,Reduce,映射完成之后,进行一个合并。
比如统计单词的词频:
Hadoop优势
高可靠性:数据存储,数据块多副;数据计算,重新调度作业计算,如果发生了异常,自动进行调度并进行计算
高扩展性:存储、计算资源不够时,可以横向的线性扩展机器;一个集群中可以包含数千计的节点
其他:存储在廉价的机器上,降低成本;有成熟的生态圈。
狭义Hadoop
是一个适合大数据分布式存储(HDFS),分布式计算(MapReduce)和资源调度(YARN)的平台。指的是一个框架
广义的Hadoop
Hadoop生态系统是一个很庞大的概念,Hadoop是其中最重要,最基础的部分;生态系统中的每一个子系统之解决某一个领域特定的问题(甚至可能很窄),不搞统一的一个全能系统,而是小而精的多个小系统。
最底层是HDFS,文件存储系统,职责就是存储数据,数据存完之后,我们相应的要进行分析和计算,这个时候使用MapReduce,YRAN是直接跑在MapReduce之上的 ,由于MapReduce的门槛是比较高的,直接在MapReduce上开发难度大,且很不方便,所以就诞生了其他的一些框架,这些框架运行在YRAN之上,能够降低开发的门槛。
Hive:(SQL Query)Hive这个框架是由facebook开源的,最初是用于解决海量的结构化的日志的数据统计问题的,它定义了一种类似于一种类似于SQL的语言,如果我们需要对我们已经统计的数据进行统计分析,我们只是需要SQL语句,借助于Hive的执行引擎,就能将我们写的SQL语句转换成MapReduce然后提交到我们的集群上进行运算。PS:Hive适用于离线分析。
Pig:脚本语言,将所写的脚本转为MapReduce提交到集群中去运行,用于离线的分析
ZooKeeper:框架的管理者
Flume:日志收集的框架
HBASE:理解为Hadoop的数据库,这个数据库是非常大的,能够存储很多很多信息,可以在秒级别查询上亿的数据,能够实时的查询到一些数据
Hadoop常用发行版本和选型:
原生态的Apache Hadoop(在阿帕奇社区)
CDH:Cloudera Distributed Hadoop(包含了Hadoop里的)所有框架(60-70%)
Hortnworks Data Platfrom
Apache Hadoop中的框架,只是解决了单个问题,如果将多个框架结合起来使用的话,会引起很多架包冲突的问题,生产环境下不建议使用原生的。
CDH,安装是提供了CM码,直接下一步,下一步,很容易通过浏览器将Hadoop集群搭建起来,对于不熟悉Linux的人来说非常的方便,配置和升级都非常的方便,而且和Spark的合作很好,架包冲突几乎是没有的。缺点是安装集群的框架CM是不开源的。