1.大数据概述

       近些年来,大数据这个词频繁出现在我们的生活中。那么大数据到底是什么呢,让我们一起来看一下。

     通俗来说。大数据是一个概念也是一门技术,是在以Hadoop为代表的大数据平台框架上进行各种数据分析的技术。大数据包括了以HadoopSpark为代表的基础大数据框架。还包括了数据挖掘、数据分析、实时数据处理离线数据处理、利用机器学习算法进行预测分析等技术。

        好了,大体了解了大数据的概念之后,我们首先就进入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生态系统

hadoop大数据的安全挑战 大数据 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的一些特性,我们可以实现在秒级别查询上亿的数据量。