1.大数据概述
近些年来,大数据这个词频繁出现在我们的生活中。那么大数据到底是什么呢,让我们一起来看一下。
通俗来说。大数据是一个概念也是一门技术,是在以Hadoop为代表的大数据平台框架上进行各种数据分析的技术。大数据包括了以Hadoop和Spark为代表的基础大数据框架。还包括了数据挖掘、数据分析、实时数据处理、离线数据处理、利用机器学习算法进行预测分析等技术。
好了,大体了解了大数据的概念之后,我们首先就进入Hadoop的世界一探究竟吧。
2.Hadoop概述
我们可以通过Hadoop官网上来了解一下Hadoop。
The Apache™ Hadoop® project develops open-source software for reliable, scalable, distributed computing.
//Hadoop是一个开源的、高可靠的、可以扩展的分布式计算的解决方案。
那么Hadoop里面都有什么呢,都包含了哪些模块呢?
The project includes these modules:
- Hadoop Common: The common utilities that support the other Hadoop modules. //提供了一系列的工具类,对Hadoop其它框架的支持。
- Hadoop Distributed File System (HDFS™): A distributed file system that provides high-throughput access to application data. //Hadoop的分布式的文件系统,简称HDFS,对数据的访问而言,它提供了高的存储量。
- Hadoop YARN: A framework for job scheduling and cluster resource management. //Yarn是用来进行作业的调度、集群资源的管理。
- Hadoop MapReduce: A YARN-based system for parallel processing of large data sets. //运行在Yarn之上,用来计算大数据集的框架。
可见,Hadoop里面主要有三个主要模块,HDFS负责文件存储,Yarn负责任务调度、资源管理,MapReduce负责并行处理数据。
那么,Hadoop能干什么呢?
我们可以用来搭建大型数据仓库,PB级数据的存储、处理、分析、统计等业务。比如:日志分析、搜索引擎、数据挖掘、商业报表的产生等等。
3.HDFS概述
HDFS是可以扩展的,是容错的,是有海量数据存储功能的。
在HDFS中上传文件,它会将文件切分成指定大小的数据块(默认是128M)并以多副本的方式存储在多个机器上。对于数据切分、多副本、容错等操作对用户是透明,不需要我们用户手动去操作,这些都是由HDFS底层实现完成的。
4.YARN概述
YARN是负责整个集群资源的管理和调度的。
YARN是可扩展的、是容错的、支持多框架资源统一调度。我们可以在YARN上跑MapReduce作业或者是Spark作业等等。
5.MapReduce概述
MapReduce是可扩展的、是容错的、可以进行海量数据离线处理。
6.Hadoop优势
高可靠性:
数据块以多副本的方式存在HDFS中,如果节点发生异常的话,也不会影响整个文件数据块的丢失。
对于数据计算,如果发生了异常,Hadoop可以重新调度作业进行计算。
高扩展性:
存储、计算资源不够的时候,我们可以横向的线性增加机器,提升存储计算资源。
一个集群中可以包含成千上万个节点。
其他:
可以存储在廉价的机器上,成本比较低。
Hadoop具有成熟的生态圈。
7.Hadoop生态系统
可见,MapReduce可以从HDFS中获取数据文件,然后在YARN上执行计算作业。由于MapReduce对我们来说门槛是比较高的,所以还有在YARN之上我们还可以运行一些别的框架,进行数据计算等任务。我们来简单介绍一下。
Hive:Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。
R Connectors:R语言,可以进行一些数据的统计分析。
Mahout:机器学习的库。
Pig:脚本性语言,通过写脚本的方式,就可以转换成MapReduce提交到集群上运行,如果底层是MapReduce的话,那么就可以进行数据的离线处理。
Oozie:工作流调度引擎。
Zookeeper:分布式协调服务。可以用Zookeeper把各种框架管理起来。
Flume:日志收集框架,可以从网站本身的服务器中获取数据,并把数据转移到另一个地方(可以是HDFS、KAFKA中等等)。
Sqoop:关系型数据库和Hadoop的数据传输。可以把数据库中的数据抽取到HDFS中来。也可以把统计分析的结果导出到关系型数据库中。数据交换的一个工具。
HBase:列式存储的一个数据库,可以理解为HBase就是Hadoop中的一个数据库,我们可以将海量数据存入HBase中,借助HBase的一些特性,我们可以实现在秒级别查询上亿的数据量。