Hadoop框架总结

三 Hadoop
    3.1 Hadoop概述
        1 Hadoop的概念及发展历史
             是一个开源的, 可靠的(reliable), 可扩展的(scalable)的分布式计算框架
            可扩展的
                可从单个服务器扩展到数千台服务器
                    三~五台服务器
                        中小型公司
                    更多的服务器    
                        大型公司
                    服务器支持的内存大小
                        32G到128G
            Hadoop能做什么?
                搭建大型数据仓库
                PB级数据的存储 处理 分析 统计等业务
            大数据技术发展阶段介绍
                搜索引擎时代
                数据仓库时代
                数据挖掘时代
                        关联分析 (啤酒尿不湿)
                        用户画像/物品画像
                机器学习时代 广义大数据
                        大数据提高了数据存储能力, 为机器学习提供燃料
                        推荐系统需要海量数据训练模型,常用单机框架(pandas,numpy,sklearn等)无法处理海量数据
            hadoop版本:
                1.x
                2.x
        2 Hadoop的核心组件
            hdfs:
                Hadoop Distributed File System (分布式文件系统)
                    特点:扩展性&容错性&海量数量存储
                    存储
                    将文件切分为指定大小的block(有利于负载均衡,提高并行度),存储多个副本(提高容错性)
            yarn:
                    特点:扩展性&容错性&多框架资源统一调度
                    资源调度系统
                        调度    交警
            map-reduce
                    特点:扩展性&容错性&海量数据离线计算
                    计算
        3 Hadoop优势
            高可靠
                    数据存储: 数据块存多个副本
                    数据计算: 某个节点崩溃, 会自动重新调度计算
            高扩展
                    存储/计算资源不够时,可以横向的线性扩展服务器
                    一个集群中可以包含数以千计的节点
                    集群可以使用廉价机器,成本低
            生态系统成熟
                系统成熟,社区不成熟  ;   国外成熟,国内不成熟
                
                
    3.2分布式文件系统 HDFS
        1 HDFS的启动
            启动HDFS
                通过"jps"指令,查看系统已经启动了哪些java的继承
                    ps   进程
                    jps   java的进程
                    软链接------ 快捷方式
                进入bigdata/hadoop目录
                    bin   执行目录,执行Hadoop指令
                    sbin   存放启动hadoop的核心组件的脚本
                    /root/bigdata/hadoop/sbin目录下:  ./start-dfs.sh    用于启动hdfs
                        可以看到 namenode和 datanode启动的日志信息
                        启动后,通过jps指令,如果看到了三个小弟,说明成功
                vi   ~/.bash_profile        配置环境变量
                browse   浏览
        2 HDFS shell操作
            调用文件系统(FS)Shell命令应使用 bin/hadoop fs 的形式
            ls
                hadoop fs -ls 
            text
                hadoop fs -text 
                    将源文件输出为文本格式
            mv
                hadoop fs -mv URI [URI …] 
                    将文件从源路径移动到目标路径。
                    成功返回0,失败返回-1。
            put
                hadoop fs -put ... 
                    从本地文件系统上传单个或多个源路径到目标文件系统
                    成功返回0,失败返回-1。
            rm
                hadoop fs -rm -r  URI [URI …]
                    删除指定的文件。只删除非空目录和文件。
                    成功返回0,失败返回-1。
            练习
                
        3 HDFS设计思路
            HDFS的设计目标
                1,分布式文件系统
                2,廉价机器正常运行,高度容错
                3,高吞吐量,非常适合大规模数据集上的应用
                4,易扩展
        4 HDFS架构
            NameNode:NN,Master--管理员
                负责客户端请求的响应
                负责元数据的管理
                    元数据:描述数据的数据 : 表名 , 字段名等
                监控DataNode健康状况
            DataNode:DN
                负责block的增删改查
                定期向NN发送心跳,汇报本身及其所有的block信息,健康状况
            同一时间下,只有一个NN
            HA:High Availability,高可用。表示两台NN,主备关系
            Federation:联邦
            HA+Federation:适用于上千台服务器
                阿里,京东等公司
            (扩展了解) SecondaryNameNode:(SNN)  定期进行edits(记账文件)和meta(源数据文件)文件数据的合并---------跟NN没有关系,只是负责合并数据
                元数据存储问题:
                    当元数据越来越多,会造成查询和更新的速度缓慢
            HDFS优缺点
                优点
                        数据冗余 硬件容错
                        适合存储大文件
                        处理流式数据
                        可构建在廉价机器上
                缺点
                        低延迟的数据访问
                    不适合存储小文件:因为文件再小都对应一份元数据
                        元数据大小为128MB
                        解决:Hadoop Archive,可以将小文件进行打包成xxx.har,对外只有一份元数据
        5 HDFS环境搭建(了解)
            如果从事大数据方面的工作,环境搭建是基本功,对于推荐来说只做了解,由运维人员去实施环境的搭建
            下载jdk 和 hadoop 
                tar -zxvf 压缩包名字 -C ~/bigdata/
            配置环境变量
                
            进入到解压后的hadoop目录 修改配置文件
                
            core-site.xml (核心配置文件)指定hdfs的访问方式,默认9000端口
                *.xml   配置文件
            hdfs-site.xml 指定namenode 和 datanode 的数据存储位置(实际存储位置,系统会自动将实际位置进行映射)
            mapred-site.xml 配置mapreduce
            yarn-site.xml 配置yarn
            hdfs namenode格式化 来到hadoop的bin目录
                ./hadoop namenode -format (这个命令只运行一次)
                    格式化并没有删掉全部的数据,会保留部分配置方面的信息,如果重复格式化会导致这部分配置信息紊乱,造成配置报错
            启动hdfs 进入到 sbin
                ./start-dfs.sh
            启动yarn 在sbin中
        总结
            HDFS的启动
                    $HADOOP_HOME/sbin/start-dfs.sh
                    退出安全模式(safemode) hdfs dfsadmin -safemode leave
                    通过50070端口查看hdfs的运行状态
            HDFS的shell命令
                    和linux指令基本一致 只是需要加上hadoop fs -
                    文件基本操作(上传,删除,下载)
            HDFS的设计思路
                    文件拆分(文件的并行处理,存储的负载均衡)
                    数据冗余(容错)
            HDFS的架构
                    NameNode
                    DataNode
                SNN  负责合并文件
            HDFS的环境搭建(了解)
                    需要JDK
                    修改配置文件(core-site.xml , hdfs-site.xml , mapred-site.xml , yarn-site.xml
                    namenode格式化
                    启动hdfs
    3.3 资源管理系统YARN
        1 YARN的概念和产生背景
            什么是YARN
                Yet Another Resource Negotiator, 另一种资源协调者
            在hadoop1.x没有yarn,在2.x出现
在早期,map-reduce既要计算,又要协调资源,造成map-reduce单点压力很大,在2.x,yarn出现减轻了map-reduce的负担,并且由原来的单一解决map-reduce自己的资源管理  到统一大数据生态资源管理 , 可以让多个不同框架共享资源,提高资源利用率
        2 YARN的架构和执行流程
            1,ResourceManager:RM,资源管理器 ​ , 整个集群同一时间提供服务的RM只有一个,负责集群资源的统一管理和调度
            2,NodeManager:NN , 节点管理器 , 整个集群中有多个,负责自身节点资源管理和使用,定时向RM汇报本节点的资源使用情况
            3,ApplicationMaster:AM ​ ,每个应用程序对应一个,负责应用程序的管理
            4,Container:容器: 封装了CPU、Memory等资源的一个容器, , 运行环境的抽象
            5,Client:客户端 , 提交作业 查询作业的运行进度,杀死作业
            执行流程
                
                
        3 YARN的启动
            /root/bigdata/hadoop/sbin目录下:  ./start-yarn.sh    用于启动yarn
                可以看到 ResourceManager ​ 和  NodeManager启动的日志信息
                启动后,通过jps指令,如果看到ResourceManager 和  ​ NodeManager,说明成功
            jps查看进程 ​ ResourceManager ​ NodeManager
            图形化界面 http://192,168.19.137:8088
            停止YARN相关的进程 ​ sbin/stop-yarn.sh
        总结
            Yarn是资源管理系统,可以让多个不同框架共享资源,提高资源利用率
            Yarn的架构和执行流程
                    ResourceManager
                    NodeManager
                    ApplicationMaster
            Yarn的启动
    3.4 分布式计算框架MapReduce
        1 MapReduce概念 和 MapReduce编程模型
            什么是MapReduce
                一种编程模型,用于大规模数据集(大于1TB)的并行运算
                概念"Map(映射)"和"Reduce(归约)"
                优点: 海量数据离线计算   易开发
                缺点: 实时流式计算
            MapReduce编程分Map和Reduce阶段
                Map:分
                Reduce:合
            MapReduce编程执行步骤
                准备MapReduce的输入数据
                准备Mapper数据
                Shuffle   洗牌
                Reduce处理  合并处理
                结果输出
            编程模型
                用户只需实现两个函数接口:
                    Map(in_key,in_value)
--->(out_key,intermediate_value) list
                    Reduce(out_key,intermediate_value) list
--->out_value list
                Word Count 词频统计案例
                    
        2 应用MRJob编写MapReduce代码
            mrjob 简介
                MapReduce  job
                使用python开发在Hadoop上运行的程序, mrjob是最简单的方式
                mrjob程序可以在本地运行也可在Hadoop集群上运行
            mrjob 安装
                pip install mrjob
            mrjob实现WordCount
                
                    
            运行WordCount代码
                python mr_word_count.py my_file.txt
            运行MRJOB的不同方式
                1、内嵌(-r inline)方式
                    python word_count.py -r inline input.txt > output.txt
                    python word_count.py input.txt > output.txt
                2、Hadoop(-r hadoop)方式
                    用于hadoop环境
                    python word_count.py -r hadoop hdfs:///test.txt -o  hdfs:///output
        3 mrjob 实现 topN统计(实验)
            
                
        4 MapReduce原理详解
            单机程序计算流程
                
                输入数据--->读取数据--->处理数据--->写入数据--->输出数据
            Hadoop计算流程
                input data:输入数据
                InputFormat:对数据切分,格式化
                    map-reduce执行步骤中的每一步都会输出(k,v)
                map:将切分好的数据做map处理(数据分类,输出(k,v)键值对数据)
                shuffle&sort:洗牌,相同数据放在一起,并排序
                    shuffle:随机洗牌,实际是将相同key的数据放在一起
                    sort:将key按照字典序排序
                reduce:将map输出的数据进行hash计算,对每个map数据进行统计
                OutputFormat:格式化输出数据
            详细计算流程(更微观的视角)
                
                    buffer----缓存 ;  memory----内存
        5 MapReduce架构
            MapReduce 1.X 架构
                既当爹又当妈
                JobTracker:作业跟踪器 , 负责接收客户作业提交,负责任务到作业节点上运行,检查作业的状态
                TaskTracker:任务跟踪器 , 由JobTracker指派任务,定期向JobTracker汇报状态,在每一个工作节点上永远只会有一个TaskTracker
                
            MapReduce2.X 架构
                    ResourceManager:资源的管理者,负责下发任务到NodeManager所在的节点运行,检查节点的状态
                    NodeManager:由ResourceManager指派任务,定期向ResourceManager汇报状态
                
        总结
            MapReduce  计算框架  编程框架
            MRJob的使用
                    写一个类继承MRJob
                    重写mapper (拆分)和 reducer(合并)方法
                    如果有多个mapper reducer 步骤,通过重写steps方法传入MRStep对象来排序
            MapReduce原理
                MapReduce计算过程没有完全利用内存,计算结果经常写磁盘
            MapReduce架构
                    1.x 没有Yarn, 由 JobTracker---工作跟踪器 ,  TaskTracker ---任务跟踪器  进行任务调度
                    2.X 任务调度由YARN管理 , 不仅管理MapReduce自身资源, 而且统一大数据生态资源管理 , 可让多个不同框架共享资源,提高资源利用率
        pycharm 连接
            
                
                    
    3.5 hadoop概念扩展
        1 Hadoop生态系统
            
                Hive:数据仓库
                R:数据分析
                Mahout:机器学习库
                pig:脚本语言,跟Hive类似
                Oozie:工作流引擎,管理作业执行顺序
                Zookeeper:管理大数据框架,主节点挂掉选择从节点作为主节点
                Flume:日志收集框架
                Sqoop:导入数据 , 数据交换框架,例如:关系型数据库与HDFS之间的数据交换
                Hbase : 海量数据中的查询,相当于分布式文件系统中的数据库
                Spark: 分布式的计算框架基于内存
                    目标:做小而全的框架
                        spark core
                        spark sql
                        做离线计算
                        spark streaming 准实时计算 不算是一个标准的流式计算
                        spark ML spark MLlib
                        机器学习,科学计算
                Kafka: 消息队列
                Storm: 做实时计算
                Flink: 做实时计算
            狭义的Hadoop VS 广义的Hadoop
                广义的Hadoop:指的是Hadoop生态系统,大数据框架,包括大数据处理的方方面面
                狭义的Hadoop : hadoop本身
        2 HDFS 读写流程& 高可用
            HDFS写流程
                    客户端向NameNode发出写文件请求。
                    NameNode检查是否已存在文件、检查权限。若通过,NameNode返回DataNode列表。
                    客户端按128MB大小来切分文件。
                    block 块也可设定为其他大小
                    客户端将NameNode返回的DataNode列表和Data数据一同发送给最近的第一个DataNode节点,此后客户端和NameNode分配的多个DataNode构成pipeline管道,客户端只向第一个DataNode写数据,数据的复制由DataNode通过pipeline管道传给第二个、第三个…DataNode。
                    
                    每个DataNode写完一个块后,会返回确认信息。
                    所有数据写完,发送完成信号给NameNode。
            HDFS读流程
                
            HDFS如何实现高可用(HA)
                数据存储故障容错
                        磁盘介质在存储过程中受环境或老化影响,数据可能错乱
                        对于存储在 DataNode 上的数据块,计算并存储校验和(CheckSum)
                        读取数据的时候, 重新计算读取出来的数据校验和, 校验不正确抛出异常, 从其它DataNode上读取备份数据
                磁盘故障容错
                        DataNode 监测到本机的某块磁盘损坏
                        将该块磁盘上存储的所有 BlockID 报告给 NameNode
                        NameNode 检查这些数据块在哪些DataNode上有备份,
                        通知相应DataNode, 将数据复制到其他服务器上
                DataNode故障容错
                        通过心跳和NameNode保持通讯
                        超时未发送心跳, NameNode会认为这个DataNode已经宕机
                        NameNode查找这个DataNode上有哪些数据块, 以及这些数据在其它DataNode服务器上的存储情况
                        从其它DataNode服务器上复制数据
                        利用ZKFC在Zookeeper创建文件,先创建的ZKFC对应的NN,就是主NN,剩下是从NN
                NameNode故障容错
                        主从热备 secondary namenode
                        zookeeper配合 master节点选举
                        Zookeeper选举NN:
        3 Hadoop发行版的选择
            Apache Hadoop
                开源社区版,可能会用兼容性问题
                    Apache Hadoop:每个框架都没有问题,但是多个框架间的协调统一可能出现jar包冲突问题。
            CDH: Cloudera Distributed Hadoop
                工作中一定使用的的CDH版本的!!
                    
            HDP: Hortonworks Data Platform
                国外用的多,国内基本不用
        4 大数据应用—数据分析及数据分析案例
            通过数据分析指标监控企业运营状态, 及时调整运营和产品策略,是大数据技术的关键价值之一
            大数据平台(互联网企业)运行的绝大多数大数据计算都是关于数据分析的
                    统计指标
                    关联分析
                    汇总报告
            运营数据是公司管理的基础
                    了解公司目前发展的状况
                    数据驱动运营: 调节指标对公司进行管理
            运营数据的获取需要大数据平台的支持
                    埋点采集数据
                    数据库,日志 三方采集数据
                    对数据清洗 转换 存储
                    利用SQL进行数据统计 汇总 分析
                    得到需要的运营数据报告
            运营常用数据指标
                新增用户数 UG user growth 
                        产品增长性的关键指标
                        新增访问网站(新下载APP)的用户数
                用户留存率
                        用户留存率 = 留存用户数 / 当期新增用户数
                        3日留存 5日留存 7日留存
                活跃用户数
                        打开产品的用户
                        日活
                        月活
                        提升活跃是网站运营的重要目标
                PV Page View
                        打开产品就算活跃
                        百度里点击一次广告就算完成一次引流,每个ip地址的第一次点击
                        打开以后是否频繁操作就用PV衡量, 每次点击, 页面跳转都记一次PV
                GMV
                    成交总金额(Gross Merchandise Volume) 电商网站统计营业额, 反应网站营收能力的重要指标
                转化率
                    转化率 = 有购买行为的用户数 / 总访问用户数
            数据分析案例
                背景: 某电商网站, 垂直领域领头羊, 各项指标相对稳定
                运营人员开始尝试寻找原因
                        是否有负面报道被扩散
                        是否竞争对手在做活动
                        是否某类商品缺货
                        价格异常
                    运营---地下工作
                没有找到原因, 将问题交给数据分析团队
                数据分析师分析可能性
                    新增用户出现问题
                    查看日活数据, 发现日活没有明显下降
                        基本判断, 用户在访问网站的过程中,转化出了问题
                转化过程:
                        打开APP
                        搜索关键词 浏览搜索结果列表
                        点击商品详情
                        有购买意向开始咨询
                        放入购物车
                        支付
                有明显降幅的是咨询详情转化率
                    对咨询信息分类统计后发现,新用户的咨询量几乎为 0
                    于是将问题提交给技术部门调查,工程师查看 8 月 15 日当天发布记录,发现有消息队列SDK更新
        总结
            Hadoop生态
                常用组件(spark,hive,hbase,zookeeper,flume,kafka,sqoop)
            HDFS 读写流程& 高可用
                    客户端负责文件切分(每个数据块128MB)
                    NameNode负责元数据管理,客户端向NameNode请求元数据
                    DataNode内部进行数据复制(默认3副本)
                    高可用(数据故障,磁盘故障,DataNode故障,NameNode故障)
            Hadoop发行版的选择
                    社区版可能有兼容性问题
                    实际工作中一定是CDH版本!!
            大数据应用-数据分析的常用指标:(新增用户数,用户留存率,日活,月活,pv,gmv,转化率等)

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值