三 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,转化率等)
Hadoop框架总结
最新推荐文章于 2021-06-22 15:36:04 发布