大数据
互联网信息技术的兴起也迎来了数据的爆发式增长,这就需要一套完整的技术来处理日益粘稠的数据。
大数据的特点
数据量大:互联网产生的数据以每年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 文件中的数据。提供HiveQL,一种sql类型的结构化查询语言。通过该语言快速实现MapReduce处理。 Hive可以快速将HiveQL转换为MapReduce任务执行。
Flume
Flume是一个用于收集数据的海量数据收集框架。 Flume提供对数据的简单处理,并将数据传输到各种数据接收器。
Sqoop
Sqoop(SQL to Hadoop)主要用于Hadoop和关系数据库之间交换数据。您可以轻松地将数据从MySQL、Oracle等导出到Hadoop,或者从HDFS、HBase导入到关系数据库。