Hadoop基础入门

1、hadoop的产生?

         是指传统的数据处理应用软件不足以处理(存储和计算)他们的大而复杂的数据

2、单位的衡量:bit 、byte、KB、MB、GB、TB、PB、EB、ZB、YB、BB、NB、DB

        据国际数据公司(IDC)统计,全球数据总量预计 2020 年达到 44ZB,中国数据量将达到 8060EB,
占全球数据总量的 18%

3、大数据特点:容量大、种类多、速度快、价值高

总结:
     1、数据量大,处理难度大,但是蕴含价值也大
     2、数据种类多样,更加个性化,针对不同数据源进行多样化的方式处理,结果更精确
     3、要求对数据进行及时处理,追求更极致更完善的用户体验
     4、数据成为新的资源,掌握数据就掌握了巨大的财富
大数据崛起的根本原因:
    1、数据生成的速度呈指数式爆炸增长
    2、数据的存储成本指数下降
    3、流动数据增加,云端数据增加
    4、企业可用数据资源增大

4、hadoop是什么?

          是 Apache 旗下的一套开源软件平台。利用服务器集群,根据用户的自定义业务逻辑,对海量数据进行分
布式处理。核心组件有:
               A .Common (基础 功能 组件)(工具包,RPC  框架)JNDI  和 RPC
               B .HDFS (Hadoop Distributed File System  分布式文件系统)
               C .YARN (Yet Another Resources Negotiator  运算资源调度系统)
               D .MapReduce (Map 和 和 Reduce  分布式运算编程框架)

重点组件:
              HDFS:Hadoop 的分布式文件存储系统
              MapReduce:Hadoop 的分布式程序运算框架,也可以叫做一种编程模型
              Hive:基于 Hadoop 的类 SQL 数据仓库工具
              HBase:基于 Hadoop 的列式分布式 NoSQL 数据库
              ZooKeeper:分布式协调服务组件
              Mahout:基于 MapReduce/Flink/Spark 等分布式运算框架的机器学习算法库
              Oozie/Azkaban:工作流调度引擎
              Sqoop:数据迁入迁出工具
              Flume:日志采集工具

5、各个组件之间的作用

            hadoop的主要的计算引擎是MapReduce,MapReduce的实现需要用代码进行编写,对开发人员的代码编写能力要求比较高,所有出现了HIve,hive是对MapReduce 的简化,简化成一种类似于MySQL的查询语句(MySQL 的计算引擎是executor)。使用简单的语句就可以完成大量的代码。HDFS是hadoop的文件存储系统,其中的文件大多为文档类型的,而hive的存储是结构化数据,可以由二维表的格式描述。

              但是HDFS中的数据,只允许读取,追加,删除而不允许修改,HIve中的数据又都是结构化数据,而现实中有很多的数据使用二维表的格式会浪费很多存储空间(数据中有很多NULL值),也就是半结构化数据,于是就有了HBase,HBase兼容两者的缺陷,其中的数据可以修改,其存储的格式是列簇和行键。

           在实际的应用中,会将采集到的原始数据先存储在HDFS中,原始数据经过稍微处理后还会再存储一份到HDFS中。原始数据预处理完成会存储到HBase中,再将hive整合到HBase上,实时的进行查询。

           flume-------->HDFS(两份)--------->Hbase---------->Hbase整合hive

6、MapReduce的执行过程

          1)maptask(每一个brock会产生一个maptask)会采集map()产生的K-V对值,放到环形缓冲缓冲区中

          2)环形缓冲区的默认内存是100M,阈值是0.8,是一个字节数组,其中有一个赤道,将环形缓冲区分为两个部分,上半部分存放原始数据,下半部分存放元数据。原始数据就是K-V数据,每一个数据的字节数是不定的。元数据是由K的起始位置、V的起始位置、V的长度和分区的信息四部分组成,每一部分都是16个字节,每一个元数据就是16*4字节。默认情况下每一个brock是128M,环形缓冲区能写的最大的值是80M,每写入一个原始数据就会有一个相对应的元数据,理论上会写入的原始数据可能只有40M,当写入达到最大的值时就会产生溢出文件(将环形缓冲区的数据写入到磁盘中),在写入磁盘之前会先根据分区进行排序(对元数据用快速排序),再根据K排序,一个brock的大小是128M,数据写入40M左右就会溢出,理论一个brock块会产生三个溢出文件,分区的个数需要自己指定

缓冲区的大小可以通过参数调整,参数:mapreduce.task.io.sort.mb 默认 100M
缓冲区的溢写比也可以通过参数调整,参数:mapreduce.map.sort.spill.percent 默认 0.8

         3)一个brock溢出的三个小文件会合并成一个大文件,也会先根据分区进行排序,再根据K排序(使用归并排序)

         4)每一个brock都会产生一个大文件,reducetask会根据自己的分区号,主动的抓取所有大文件的相应分区数据,同一个分区来自不同的文件,也会进行合并排序

         5)reducetask每个分区产生一个输出文件,这个就是最终的文件

           一个分区------->一个reduceTask(默认一个)----------->一个输出文件

          自定义分区返回值:return N-------------------->   对应文件是part-r-0000N             (N=0,1,2.......)

                  若有N个连续的返回值,则必须定义reducetask的个数是N,若小于N就会有数据丢失           

                  若有N个不连续的返回值,则必须定义reducetask的个数是N个数中最大值

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值