大数据
互联网信息技术的兴起,也迎来来了数据的爆发式增长,需要一套完整的技术来处理日益增粘的数据。
大数据的特点
数据量大:互联网产生的数据以每年50%的速度增长。
数据类型多:数据的种类丰富,结构化数据和非结构化数据(1:9)。前者主要指关系型数据库的护具,后者主要包括邮件,多媒体,连接,短信,日志等。
处理数据快:大数据时代,都依赖于快速生成数据并实时分析结果。
价值密度低:大数据的价值密度远远低于关系型数据,很多有价值的数据都是分散在海量的数据中。
大数据处理技术
大数据处理流程:数据采集——存储管理——处理分析——结果呈现
大数据技术及软件也有很多,不同技术有不同的应用场景。
批处理计算用于对大规模数据处理,代表性的批处理框架有MapReduce
和Spark
。
流计算用于对不同数据源,连续不断的数据流进行实时分析处理并呈现结果,代表性流计算框架Twitter Storm
,Yahoo S4
等。
图计算是针对图结构的数据开发,用于图的遍历,最短路径等计算,代表性框架有Pergel
,GraphX
等。
查询分析计算是用于大规模的存储管理和查询分析。代表性框架有Hive
,Cassandra
。
Hadoop简介
Hadoop 是一个开源的分布式计算和存储框架,由 Apache 基金会开发和维护。是大数据处理技术的一种。
Hadoop 为庞大的计算机集群提供可靠的、可伸缩的应用层计算和存储支持,它允许使用简单的编程模型跨计算机群集分布式处理大型数据集,并且支持在单台计算机到几千台计算机之间进行扩展。
Hadoop 使用 Java 开发,所以可以在多种不同硬件平台的计算机上部署和使用。其核心部件包括分布式文件系统 (Hadoop DFS,HDFS) 和批处理框架( MapReduce)。
Hadoop 的作用非常简单,就是在多计算机集群环境中营造一个统一而稳定的存储和计算环境,并能为其他分布式应用服务提供平台支持。
Hadoop 在某种程度上将多台计算机组织成了一台计算机(集群),那么 HDFS 就相当于这台计算机的硬盘,而 MapReduce 就是这台计算机的 CPU 控制器。
Hadoop生态:
HDFS
Hadoop Distributed File System,分布式文件系统。提供了在大规模集群的分布式文件的存储功能。
HDFS采用了主从结构(Master,Slave)。一个HDFS集群包括一个名称节点和若干数据节点。名称节点为中心服务器,负责管理文件系统的命名空间和对客户端文件的访问;一个节点运行一个数据节点,负责文件的读写请求。
文件是被分块存储的,存储在不同节点上。访问文件时,名称节点获取文件名,查找在数据节点的位置,由名数据节点直接返回数据,并发进行,提高了速度。
MapReduce
Mapreduce批处理框架,将HDFS存储的数据批处理。它将集群上的并行计算过程抽象为Map和Reduce,来完成海量数据的计算。
HDFS上的数据会被切分成许多Map并行处理,Map处理的结果作为Reduce的任务输出。
MapReduce设计理念是计算向数据靠拢,因为移动数据需要大量的网络开销,尤其实在大数据环境下。MapReduce框架会将Map就近在HDFS所在的节点上运行,而将结果返回。
YARN
YARN是负责资源调度的框架,在及一个集群上部署YARN可以实现集群资源的同一管理服务,提高利用率。YARN既可以管理离线批处理框架MapRedue,还可以管理内存计算框架Spark,流计算框架Storm等。
HBase
HBase是一个高性能,面向列的分布式数据库,用来存储非结构化数据和半结构化松散数据。它具有分布式框架的可扩展性,通过水平扩展增加数据库容量。
HBase利用MapReduce处理HBase的海量数据,利用HDFS作为底层存储,利用集群提供海量的存储能力
Hive
Hive是一个数据仓库,用于对存储在Hadoop文件中的数据进行处理,查询和分析。提供了类型sql的结构化查询语言HiveQL。通过该语言快速实现MapReduce的处理。Hive可以将HiveQL快速转成MapReduce任务运行。
Flume
Flume是一个海量数据采集框架,用于收集数据,Flume提供对数据的简单处理并将数据传输到各种数据接收方。
Sqoop
Sqoop(SQL to Hadoop)主要用来在Hadoop和关系型数据库之间交换数据。可以很方便的从MySQL,Oracle等导出数据到Hadoop,或从HDFS,HBase中导入到关系型数据库。