hadoop介绍:




      说白了,hadoop就是一个生态圈,它是HDFS 、MapReduce 、Hive和ZooKeeper等组成,一系列的运行就像一条生态链

     1)Pig:一个基于Hadoop的大规模数据分析平台,为海量数据的并行计算,提供了一个简单的操作和编程接口
     2)Hive:就是一个工具,有完整的SQL查询的功能,可以将sql语句转换为MapReduce任务进行运行 ,当然也要基于hadoop
     3)ZooKeeper:高效的,可拓展的协调系统,存储和协调关键共享状态 
     4)HBase:一个开源的,基于列存储模型的分布式数据库 
     5)HDFS:一个分布式文件系统,有着高容错性的特点,适合那些超大数据集的应用程序;    
6)MapReduce:一种编程模型,用于大规模数据集(大于1TB)的并行运算




     1.我们了解一下,hdfs     简单的说,它就跟网盘一样,可以用来存储、读取、下载文件
    a.概述

      是一个高度容错性的分布式文件系统

   源自于Google的GFS论文

      HDFS是GFS的克隆版

    b.优缺点

      i.优点:

        构建在廉价的机器上(集群造价低,任意)

        使用大数据处理

        高容错(速度快,冗余备份数据)

      ii.缺点:

        不适合低延迟数据访问

        不适合小文件存储






2.上面提到了大数据处理,对于我们从没有接触过这个的来说,什么才叫做大数据?        一般人思想:数据很庞大很复杂,大到靠人是无法统计计算的,就叫大数据



        程序员思想:a)分析事物,肯定要从它的特性上去找,大数据并非单单体现在大,                           
它还有着3个特性:高速(velocity)、多样(variety)、价值(value),                   
              b)大数据有需要解决的瓶颈(容量,读写,计算)                  

              c)大数据应用场景(推荐、预测、人工智能)

  大数据就是用来收集、整理、处理大容量数据集的
3.hdfs架构




NameNode节点主要负责管理文件系统的命名空间,集群配置信息,存储块的复制,完全可以看作是一个管理者,同一时间仅能有一个!

DataNode节点保存文件中的数据,是文件存储的基本单元,可以有多个
     
a.设计思想

      将每一个文件拆分成一个block(拆多份是为了高容错)

      每个block有多个脚本存储在不同的节点上

      保存元数据映射关系

      负载均衡

      分布式并行计算(读取数据)

4.知道namenode跟datanode是干嘛用的,可以来看看---文件的写入和读取

     文件写入:
         1. Client向NameNode发送文件写入的请求
         2. NameNode根据文件大小和文件块配置情况,返回给Client它所管理部分DataNode的信息。
        3.Client将文件划分为多个文件块,根据DataNode的地址信息,按顺序写入到每一个DataNode块中。




     文件读取:
         1. Client向NameNode发起文件读取的请求
         2. NameNode返回文件存储的DataNode的信息。
         3. Client读取文件信息。5.
    Hadoop的核心是MapReduce,而MapReduce的核心又在于map和reduce函数。它们是交给用户实现的,这两个函数定义了任务本身。

a)map函数:接受一个键值对(key-value
pair),产生一组中间键值对。Map/Reduce框架会将map函数产生的中间键值对里键相同的值传递给一个reduce函数。

b)reduce函数:在接受一个键,以及相关的一组值后,就将这组值进行合并产生一组规模更小的值(通常只有一个或零个值)

 


 
所以MapReduce的基本原理就是:将大的数据分析拿到手,拆分成小块一个个地分析,最后再将提取出来的数据汇总分析,就能得到想要的内容;至于怎么分块分析,怎么做Reduce操作,那就很复杂,感兴趣的可以去了解了解
   hadoop已经实现了数据分析,我们只需要编写简单的需求命令,就可以拿到想要的数据。
   hadoop典型应用有搜索、日志处理、推荐系统、数据分析、视频图像分析、数据保存等。