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
- 淘宝卖家量子魔方
- 给运营和决策层提供各种统计报告, 数据需要写入数据库
- 很多运营管理人员, 上班后就会登陆后台数据系统
- 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 概念扩展的主要内容,如果未能解决你的问题,请参考以下文章