Hadoop 概念扩展

Posted ZSYL

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hadoop 概念扩展相关的知识,希望对你有一定的参考价值。

课程目标:

  • 知道hadoop生态组成
  • 了解hdfs读写流程
  • 说出Hadoop发行版本的选择

Hadoop生态系统

狭义的Hadoop VS 广义的Hadoop

  • 广义的Hadoop:指的是Hadoop生态系统,Hadoop生态系统是一个很庞大的概念,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: 分布式的流式计算框架 python操作storm

Flink: 分布式的流式计算框架

Hadoop生态系统的特点

  • 开源、社区活跃

  • 囊括了大数据处理的方方面面

  • 成熟的生态圈

HDFS 读写流程& 高可用

  • HDFS读写流程




  • 客户端向NameNode发出写文件请求。

  • 检查是否已存在文件、检查权限。若通过检查,直接先将操作写入EditLog,并返回输出流对象。
    (注:WAL,write ahead log,先写Log,再写内存,因为EditLog记录的是最新的HDFS客户端执行所有的写操作。如果后续真实写操作失败了,由于在真实写操作之前,操作就被写入EditLog中了,故EditLog中仍会有记录,我们不用担心后续client读不到相应的数据块,因为在第5步中DataNode收到块后会有一返回确认信息,若没写成功,发送端没收到确认信息,会一直重试,直到成功)

  • client端按128MB的块切分文件。

  • client将NameNode返回的分配的可写的DataNode列表和Data数据一同发送给最近的第一个DataNode节点,此后client端和NameNode分配的多个DataNode构成pipeline管道,client端向输出流对象中写数据。client每向第一个DataNode写入一个packet,这个packet便会直接在pipeline里传给第二个、第三个…DataNode。
    (注:并不是写好一个块或一整个文件后才向后分发)

  • 每个DataNode写完一个块后,会返回确认信息。
    (注:并不是每写完一个packet后就返回确认信息,个人觉得因为packet中的每个chunk都携带校验信息,没必要每写一个就汇报一下,这样效率太慢。正确的做法是写完一个block块后,对校验信息进行汇总分析,就能得出是否有块写错的情况发生)

  • 写完数据,关闭输输出流。

  • 发送完成信号给NameNode。

    (注:发送完成信号的时机取决于集群是强一致性还是最终一致性,强一致性则需要所有DataNode写完后才向NameNode汇报。最终一致性则其中任意一个DataNode写完后就能单独向NameNode汇报,HDFS一般情况下都是强调强一致性)

  • HDFS如何实现高可用(HA)

    • 数据存储故障容错
      • 磁盘介质在存储过程中受环境或者老化影响,数据可能错乱
      • 对于存储在 DataNode 上的数据块,计算并存储校验和(CheckSum)
      • 读取数据的时候, 重新计算读取出来的数据校验和, 校验不正确抛出异常, 从其它DataNode上读取备份数据
    • 磁盘故障容错
      • DataNode 监测到本机的某块磁盘损坏
      • 将该块磁盘上存储的所有 BlockID 报告给 NameNode
      • NameNode 检查这些数据块在哪些DataNode上有备份,
      • 通知相应DataNode, 将数据复制到其他服务器上
    • DataNode故障容错
      • 通过心跳和NameNode保持通讯
      • 超时未发送心跳, NameNode会认为这个DataNode已经宕机
      • NameNode查找这个DataNode上有哪些数据块, 以及这些数据在其它DataNode服务器上的存储情况
      • 从其它DataNode服务器上复制数据
    • NameNode故障容错
      • 主从热备 secondary namenode
      • zookeeper配合 master节点选举

Hadoop发行版的选择

  • Apache Hadoop

    • 开源社区版
    • 最新的Hadoop版本都是从Apache Hadoop发布的
    • Hadoop Hive Flume 版本不兼容的问题 jar包 spark scala Java->.class->.jar ->JVM
  • CDH: Cloudera Distributed Hadoop

    • Cloudera 在社区版的基础上做了一些修改

    • http://archive.cloudera.com/cdh5/cdh/5/

  • hadoop-2.6.0-cdh-5.7.0 和 Flume*****-cdh5.7.0 cdh版本一致 的各个组件配合是有不会有兼容性问题

  • CDH版本的这些组件 没有全部开源

  • HDP: Hortonworks Data Platform

大数据产品与互联网产品结合

  • 分布式系统执行任务瓶颈: 延迟高 MapReduce 几分钟 Spark几秒钟
  • 互联网产品要求
    • 毫秒级响应(1秒以内完成)
    • 需要通过大数据实现 统计分析 数据挖掘 关联推荐 用户画像
  • 大数据平台
    • 整合网站应用和大数据系统之间的差异, 将应用产生的数据导入到大数据系统, 经过处理计算后再导出给应用程序使用
  • 互联网大数据平台架构:

  • 数据采集

    • App/Web 产生的数据&日志同步到大数据系统
    • 数据库同步:Sqoop 日志同步:Flume 打点: Kafka
    • 不同数据源产生的数据质量可能差别很大
      • 数据库 也许可以直接用
      • 日志 爬虫 大量的清洗,转化处理
  • 数据处理

    • 大数据存储与计算的核心
    • 数据同步后导入HDFS
    • MapReduce Hive Spark 读取数据进行计算 结果再保存到HDFS
    • MapReduce Hive Spark 离线计算, HDFS 离线存储
      • 离线计算通常针对(某一类别)全体数据, 比如 历史上所有订单
      • 离线计算特点: 数据规模大, 运行时间长
    • 流式计算
      • 淘宝双11 每秒产生订单数 监控宣传
      • Storm(毫秒) SparkStreaming(秒)
  • 数据输出与展示

    • HDFS需要把数据导出交给应用程序, 让用户实时展示 ECharts
      • 淘宝卖家量子魔方
    • 给运营和决策层提供各种统计报告, 数据需要写入数据库
      • 很多运营管理人员, 上班后就会登陆后台数据系统
  • 任务调度系统

    • 将上面三个部分整合起来

大数据应用–数据分析

  • 通过数据分析指标监控企业运营状态, 及时调整运营和产品策略,是大数据技术的关键价值之一

  • 大数据平台(互联网企业)运行的绝大多数大数据计算都是关于数据分析的

    • 统计指标
    • 关联分析,
    • 汇总报告,
  • 运营数据是公司管理的基础

    • 了解公司目前发展的状况
    • 数据驱动运营: 调节指标对公司进行管理
  • 运营数据的获取需要大数据平台的支持

    • 埋点采集数据
    • 数据库,日志 三方采集数据
    • 对数据清洗 转换 存储
    • 利用SQL进行数据统计 汇总 分析
    • 得到需要的运营数据报告
  • 运营常用数据指标

    • 新增用户数 UG user growth 用户增长

      • 产品增长性的关键指标
      • 新增访问网站(新下载APP)的用户数
    • 用户留存率

      • 用户留存率 = 留存用户数 / 当期新增用户数
      • 3日留存 5日留存 7日留存
    • 活跃用户数

      • 打开使用产品的用户
      • 日活
      • 月活
      • 提升活跃是网站运营的重要目标
    • PV Page View

      • 打开产品就算活跃
      • 打开以后是否频繁操作就用PV衡量, 每次点击, 页面跳转都记一次PV
    • GMV

      • 成交总金额(Gross Merchandise Volume) 电商网站统计营业额, 反应网站应收能力的重要指标
      • GMV相关的指标: 订单量 客单价
    • 转化率

      转化率 = 有购买行为的用户数 / 总访问用户数
      

数据分析案例

  • 背景: 某电商网站, 垂直领域领头羊, 各项指标相对稳定

  • 运营人员发现从 8 月 15 日开始,网站的订单量连续四天明显下跌

  • 8月18 号早晨发现 8月17 号的订单量没有恢复正常,运营人员开始尝试寻找原因

    • 是否有负面报道被扩散
    • 是否竞争对手在做活动
    • 是否某类商品缺货
    • 价格异常
  • 没有找到原因, 将问题交给数据分析团队

  • 数据分析师分析可能性

    • 新增用户出现问题
    • 查看日活数据, 发现日活没有明显下降
      • 基本判断, 用户在访问网站的过程中,转化出了问题

  • 转化过程:

    • 打开APP
    • 搜索关键词 浏览搜索结果列表
    • 点击商品访问详情
    • 有购买意向开始咨询
    • 放入购物车
    • 支付

  • 订单活跃转化率 = 日订单量 / 打开用户数

  • 搜索打开转化率 = 搜索用户数 / 打开用户数

  • 有明显降幅的是咨询详情转化率

  • 对咨询信息分类统计后发现,新用户的咨询量几乎为 0
  • 于是将问题提交给技术部门调查,工程师查看 8 月 15 日当天发布记录,发现有消息队列SDK更新

Hadoop企业应用案例之消费大数据

亚马逊提前发货系统

Hadoop企业案例之商业零售大数据

智能推荐


加油!

感谢!

努力!

以上是关于Hadoop 概念扩展的主要内容,如果未能解决你的问题,请参考以下文章

Hadoop中一些重要概念简要总结

hadoop相关概念知识点整理

大数据生态课堂纪要

getSupportFragmentManager() 在活动扩展片段中未定义

hadoop 的组建概述

python 模块的概念介绍