数据应用(一)
本周是跟随李智慧老师学习架构师训练营的第 12 周,现将本周的主要内容总结如下:
本周开始进入了大数据相关的学习,从 2004 年 google 发表的三篇论文(GFS、MapReduce、BigTable)开始大数据进入了一个快速发展的时期,Spark、Hive、Yarn、Hbase、Flink、Storm 等产品也应运而生。大数据在越来越多的领域得到了应用,例如:医学影像智能识别、自动驾驶。舆情监控分析等。
HDFS 分布式文件存储系统
HDFS 是 Hadoop 的第一个产品,分布式文件系统是分布式计算的基础。HDFS 有两个关键组件:DataNode 和 NameNode。DataNode 负责数据文件的读写,HDFS 将一个数据文件分成多个 block,每个 DataNode 存储一部分 block,这样一个数据文件就存储在整个 HDFS 集群上了。客户端读取数据文件时,并行访问这些 block,提高访问速度。NameNode 负责 HDFS 的元数据管理,也就是文件路径、block 的 ID 以及存储位置等信息。为了保证数据的高可用,HDFS 会将一个 block 复制多份(默认 3)。
不是所有场景都适合用 HDFS 存储,例如:低延迟的数据访问、大量小文件、多用户随机写入修改文件。
DataNode 启动后向 NameNode 注册,通过后,周期性(1 小时)向 NameNode 报告 block 信息。NameNode 定期(3 秒)接收 DataNode 的心跳,超过 10 分钟没有接到某个 DataNode 的心跳信息,则认为此 DataNode 不可用。
MapReduce
MapReduce 既是一个编程模型又是一个计算框架。MapReduce 由 map(数据)reduce(计算)两部分组成,具有自动实现分布式计算、容错、状态监控、模型抽象简洁易用等特性。map 的输入是一对 kv 值,输出也是一对 kv 值,然后将相同 key 值合并形成 kv 集合作为 reduce 的输入,reduce 的输出是零个或多个 kv 值。
Yarn:Yet Another Resource Negotiator
MapReduce 的缺点是资源调度与执行过程耦合在一起。Yarn 包含两部分,
1.资源管理器(Resource Manager):负责整个集群的资源调度,通常独立部署。
2.节点管理器(Node Manager):负责具体服务器上的任务管理,集群中的每一天服务器上都会部署。
资源管理器包含两部分:
1.调度器:资源分配算法。内置 Fair Scheduler Capacity Scheduler,也可自定义
2.应用程序管理器:负责应用程序的提交、监控
作业一:
(至少完成一个)
在你所在的公司(行业、领域),正在用大数据处理哪些业务?可以用大数据实现哪些价值?
分析如下 HiveQL,生成的 MapReduce 执行程序,map 函数输入是什么?输出是什么,reduce 函数输入是什么?输出是什么?
page_view 表和 user 表结构与数据示例如下
1.大数据在金融行业的应用:风控管理,通过用户画像分析进行精准营销,分析用户社交属性,欺诈管理,产品服务优化,舆情分析等
2.
map 输入:表数据
map 输出:key 是 userid,
page_view 表:
["111":{"tableid":1,"pageid":1}]
["111":{"tableid":1,"pageid":2}]
["222":{"tableid":1,"pageid":1}]
user 表:
["111":{"tableid":2,"age":25}]
["222":{"tableid":2,"age":32}]
shuffle sort 之后,作为 reduce 的输入:
["111":{"tableid":1,"pageid":1}]
["111":{"tableid":1,"pageid":2}]
["111":{"tableid":2,"age":25}]
["222":{"tableid":1,"pageid":1}]
["222":{"tableid":2,"age":32}]
reduce 输出,pv_users:
{userid:111,pageid:1,age:25}
{userid:111,pageid:2,age:25}
{userid:222,pageid:1,age:32}
评论