hadoop简介

  •            ① hadoop 官方网站:   hadoop.apache.org
  •               

一、大数据框架简介 

    - Common:封装了大量的API,为后面的模块服务

    - HDFS:分布式文件系统,存储海量数据  ------- namenode管理存储资源平台

    - MapReduce:分布式 并行计算框架,编程模型

    - YARN:一个集群分布式计算资源管理系统,允许任何分布式程序(不仅仅是MapReduce)基于Hadoop
            集群的数据而运行   ------- resourcemanager管理计算资源平台

        -》HBase:非关系型数据库 ; mySql 关系型数据库
        -》Hive:类SQL语句,数据仓库,用于  离线分析

        1、Hadoop的四大模块:

1、hadoop的概念:分布式计算存储框架
2、hadoop解决了哪些问题:
    海量数据的分布式存储
    海量数据的并行分布计算    
3、Hadoop四大模块
	-》Common:封装了大量的API,为后面3个模块提供代码支持
	-》HDFS:分布式文件系统,解决了海量数据的存储问题
		- 主从架构
		- 主节点是namenode,负责管理文件的名称空间,整个架构里只有1台 ------- namenode管理存储资源平台
		- 从节点是datanode,负责存储文件块数据,定时向namenode发送自身所存储的文件块信息,副本修复
		- block(HDFS的块),作用可以提高检索速度,默认大小:hadoop1.x 64M,hadoop2.x 128M
		- chunk(文件分块),默认大小要和block的大小一样,避免跨网络读取数据
		- 网络拓扑,机架感知
		- 副本放置策略
			-- 默认副本数是3个,用户可以自己配置
			-- 第1个副本:如果文件在远程的客户端上,那么找资源相对空闲节点上传;如果在集群的某一个节点上,那么
			   就直接上传到这个节点
			-- 第2个副本:相对第1个副本而言,选择跨机架上的任意一个节点放置
			-- 第3个副本:相对第2个副本而言,选择同机架上的任意一个节点放置
			-- 假如副本数超过了3个,那么从第4个开始没有任何的放置策略,完全随机
	-》MapReduce:分布式计算编程模型,解决了海量数据的计算问题
		- 完整的MR分为5个阶段:input -> map -> shuffle -> reduce -> output
		- map阶段,也叫映射阶段,过滤数据,针对业务做逻辑处理
		- shuffle阶段,也叫混洗阶段,主要功能:分区 -> 排序 -> merge -> 分组
		- reduce阶段,也叫规约(归并)阶段,主要是把map阶段计算出来的中间结果进行合并
	-》Yarn:分布式计算资源调度平台,功能就是做计算资源的分配和调度
		- 主从架构
		- 主节点是resourcemanager,负责管理整个集群的计算资源的分配和调度,只有1台    ----
                      --- resourcemanager管理计算资源平台
		- 从节点是nodemanager,负责管理自己所在节点的计算资源,心跳机制,定时向resourcemanager报告自身节点
		  计算资源情况    

 

       2、 协作框架:

        -》Zookeeper:分布式协调服务

        -》Sqoop:导入和导出数据到 数据库(mysql等)

        -》Flume:日志抓取

        -》Oozie:调度框架

       3、实时分析:

                  -》Spark

       4、离线分析的过程:

      1、数据来源
              -》服务器产生日志数据,用户行为产生的数据,爬虫爬来的数据
      2、存储海量数据
              -》hadoop可以解决数据存储问题
      3、数据清洗
              -》ETL,hive来做数据清洗
      4、数据分析
              -》hive,数据仓库软件,sql
      5、产生最终结果文件
             -》把数据导出到关系型数据库中(mysql)
             -》使用sqoop工具
      6、数据展示
            -》使用插件即可

二、HDFS 分布式存储系统:

   1、HDFS基本知识:

 1、Hadoop:
    -》开源的软件
    -》解决了海量数据的存储和计算的问题
    -》是高可靠的,可伸缩的,分布式计算框架
    -》存储是用HDFS解决的
    -》计算是用mapreduce解决的
    -》hadoop1.x和hadoop2.x,yarn计算平台
    -》主流版本在hadoop2.5-2.8,我们使用的是2.7.3
  2、HDFS的设计:主从架构
    -》namenode:负责管理文件名称空间,整个集群里namenode只有1台
    -》datanode:负责存储文件切片(文件块),定时向namenode发送报告(心跳机制,3s一次),报告自身存储了哪些文件切片。
    -》HDFS的块(block),块的设计是为了提供检索文件的速度,不会造成空间的浪费
        - 默认大小:hadoop1.x是64MB,hadoop2.x是128MB
        - 当前磁盘的平均寻址时间10ms,读写速率100MB/s,寻址时间占读写时间的1%
          ================================= 思考问题 ======================================
          当我储存一个129MB的文件的时候,存了几块!?
			存储了2块!
			第一块128M,第二块1M
		计算数据:
			HDFS上的文件进行mapreduce计算,默认情况下一个map当中会有128M(和块大小一样)的数据输入
			所以这里就涉及到我的一个129M的文件会启动几个Map任务来操作
			答案是:1个
			mapreduce有这样的机制,最后一个文件的输入如果小于128*1.1(其实就是可以多10%)
			那么只会启动一个Map来执行这个job,避免了第一个Map跑了128M的数据,第二个Map只跑了1M的数据的尴尬
			这种情况只会在最后一块出现
			再举个例子,比如522M的文件,分成几个Map来处理呢?
				第一个map-》128M
				第二个map-》128M
				第三个map-》128M
				第四个map-》138M  ——》138小于128*1.1,所以这里就不会再开启一个map来处理最后剩余的那10M的数据,直接在最后一个map当中把所有138M的数据输入!!
       ==============================================================================
    -》文件块(chunk),大小要和block大小保持一致
        - 一个文件块会跨节点存储,机制:一个文件块由一个程序去计算,跨节点去读取数据,导致性能低下
    -》网络拓扑概念
        - 衡量跨节点读写数据的速度
  •       网络拓扑(带宽距离)概念图解:


    

    -》副本放置策略
        -》默认副本数是3个
        -》在完全分布式下,不需要设置超过3个副本数
        -》第1副本:如果数据在远程的客户端上,选择相对空闲的节点去上传;如果数据在集群的某一个节点上了,那么选择这个节点
        -》第2副本:相对于第一块副本而言,选择跨机架上的任意一个节点
        -》第3副本:相对于第二块副本而言,选择同机架上的任意一个节点
    -》机架感知
        -》hadoop默认是没有开启机架感知的,如果没有开启,那么副本放置是没有策略的,随机放置

===========================================================================

3、安装虚拟机
4、网络配置
5、安装JDK
6、搭建hadoop的伪分布式环境

                  https://blog.csdn.net/qq_16555103/article/details/87926120    ---------   hadoop伪分布式搭建: 

   2、namenode管理元数据的机制:

  •         主节点:namenode
  •                       作用:管理元数据、文件属性、名称、位置、权限、数据块  ....
  •                       机制:元数据是存储在namenode内存中,元数据在本地也有备份,fsimage镜像文件,
  •                                  namenode在启动的时候会去读取加载fsimage镜像文件,edits称作编辑日志文件
  •                                 ,用于记录用户对于HDFS所有的行为操作,namenode在启动的时候还会去读取
  •                                   加载edits编辑日志文件,edits越来越大,考虑将fsim-age和edits合并,seconda-
  •                                   rynamenode进行合并,功能合并文件,减少下一次namenode启动时间,namenode
  •                                   在重新启动之后会读取新的合并的文件,生成新的fsimage镜像文件和edits编辑日志文
  •                                  件,原来的初始化的两个文件就没有用了    
配置: 修改hdfs-site.xml,指定机器以及外部交互端口号
        <property>
            <name>dfs.namenode.secondary.http-address</name>
            <value>主机名:50090</value>
        </property>
启动:
        sbin/hadoop-daemon.sh start secondarynamenode
        
  •                     从节点:datanode
  •                                   物理磁盘存储数据的,会和nodemanager部署在一起,通过slaves配置文件来指定
  •                                   注意:HDFS数据块,存储在linux的 /opt/modules/hadoop-2.5.0/data/tmp/dfs/data/
  •                               current/BP-275988769-192.168.163.104-1504420277120/current/finalized/路径下

               namenode管理元数据图解:

3、HDFS上传数据机制:

1:客户端发送请求,create方法请求namenode,告诉namenode上传的文件的文件名,文件大小,文件的拥有者。
2:namendoe根据以上信息算出来文件需要切成多少块block,block要存放在哪个DataNode节点上,并将这些信息返回客户端。
3:客户端调用write方法,将一个block写在DataNode节点上,每一个block默认都有三个副本,并不是由客户端分别往3个DataNode
   上写3份,是由上传了block的DataNode产生新的线程,去写入到其他DataNode节点。优势------快
4:写完后会返回给客户端一个信息,客户端再把信息返回给namenode.

4、HDFS读取文件:

1:客户端发送请求,open方法发送请求到namenode,获得block位置信息
2:namenode返回所有的block的位置信息
3:客户端拿到信息之后,read方法并行的读取block信息,每一个block只需要从一个副本读取就可以
4:datanode返回客户端

      5、HDFS 缺陷:

三、YARN计算资源管理平台

  •           common:封装了大量API,为模块提供支持
  •           hdfs:分布式存储平台
  •           yarn:分布式计算平台
  •           mapreduce:分布式计算编程框架
1、yarn也是主从架构,和HDFS类似
2、resourcemanager:负责管理整个集群的计算资源,分配资源和调度资源,和namenode(存储资源)
     一样具有单独的一个节点
3、nodemanager:负责管理自己所在的节点的计算资源,不能分配和调度资源的,定时向resourcemanager进行汇报,报告自己管理
     的节点所剩的计算资源情况,和datanode在一个节点上
4、mapreduce 程序的输出目录不能提前存在:
   -》yarn集群可能同时运行着多个mapreduce程序,假如输出目录可以提前存在,会导致几个mapreduce程序的输出目录
     可能是同一个,那么导致没有一个程序的计算结果是对的
  •       mapreduce 执行:

四、MapReduce:

         命令格式:bin/yarn jar jar包路径 方法名 input路径 output路径    ------ output路径不能提前存在

      0、计算单词个数的MapReduce程序:

  实例:
bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /wordcount/input /wordcount/output

   1、MapReduce 的核心过程:

    2、MapReduce 内部 shuffle 阶段流程:

    3、 MapReduce 运行在YARN集群上的流程:

---------------------------------------------------------------------------------------------------------

数据公司:

政府或机构提供的公开数据
    世界银行
    https://data.worldbank.org.cn/ 

    国家数据
    http://data.stats.gov.cn/ 

    UNdata
    http://data.un.org/Default.aspx 

    NASDAQ股票市场
    https://www.nasdaq.com/g00/zh?i10c.encReferrer=&i10c.ua=1&i10c.dv=14 

企业产生的用户数据
    百度指数
    https://index.baidu.com/#/ 

    腾讯指数
    https://tbi.tencent.com/ 

    阿里指数
    https://shu.taobao.com/ 

数据平台购买
    数据堂
    http://www.datatang.com/ 

    贵阳大数据
    http://trade.gbdex.com/trade.web/ 

数据咨询服务公司
    mckinsey|麦肯锡
    https://www.mckinsey.com.cn/ 

    艾瑞咨询
    http://www.iresearch.com.cn/ 

    埃森哲
    https://www.accenture.com/cn-zh/new-applied-now 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值