hadoop离线01--大数据导论、Apache Zookeeper

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: hadoop离线01--大数据导论、Apache Zookeeper

本文重点

理解大数据基本概念
掌握数据分析基本步骤、分布式集群概念
理解zookeeper功能与作用
掌握zookeeper架构原理
学会搭建zookeeper集群
掌握shell客户端操作zk
理解zookeeper典型应用

内容大纲

#大数据导论
  数据与数据分析  
  数据分析作用(商业)
    离线分析
    实时分析
    ML机器学习
  数据分析的基本步骤 (重要)
    大数据时代
      海量数据处理场景 (重要)
        如何存储?   分布式存储
        如何处理?   分布式计算
      大数据5V特征
        大数据应用
    分布式、集群
#Apache Zookeeper (重要)
  Zookeeper概念介绍  分布式协调服务软件
  Zookeeper是分布式小文件存储系统
  Zookeeper特性:全局数据一致性
  Zookeeper角色 主从架构
  Zookeeper集群的搭建
  Zookeeper的数据模型
  Zookeeper的操作
    shell command
  Zookeeper watcher监听机制
    Zookeeper典型应用场景

一、大数据导论

1.1、数据与数据分析
  • 数据如何来的
数据(data)是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加工的原始素材。
#通过对客观事件进行计量和记录就会产生数据  数据量化

数据分析

所谓的数据就是通过工具或者方法把隐藏在数据背后的规律和价值提取处理的过程。

数据分析的作用(在商业中)

数据分析的结果给企业的决策提供支撑  支持决策。
数据仓库的出现也是集成的数据分析平台 分析的结果支撑决策。
1.2、数据分析作用

各行各业可能都需要开展数据分析,我们重点关注商业领域。也就是说企业为什么需要数据分析。

a、原因分析–对应历史数据

b、现状分析–对应当下数据

c、预测分析–结合数据预测未来

离线分析(批处理 batch processing)

分析已有的数据 历史数据,面向过去分析。
在时间维度明显成批次性变化。一周一分析(T+7),一天一分析(T+1)
  • 实时分析(Real Time Processing 流处理Streaming)
分析实时产生的数据 当下的数据 面向当下分析
所谓的实时从数据产生到分析到应用 时间间隔   秒级(spark streaming)  毫秒级(storm flink)
  • 机器学习(Machine Learning,ML
基于历史数据和当下产生的实时数据预测未来发生的事情。
侧重于数学算法的运用。  分类 聚类 关联  预测。
1.3、数据分析的基本步骤(数据分析开发步骤)

数据分析的步骤和流程不仅对我们开展分析提供支撑,同时也对我们去沟通阐述数据分析项目的流程有非常大的支撑。面试时:介绍一下你最近做的项目?如何介绍?介绍什么?

  • 明确分析的目的和思路
目的:分析方向  分析的主题  要解决什么问题 
思路:如何去开展数据分析 关键分析具有体系。
体系化也就是逻辑化,简单来说就是先分析什么,后分析什么,使得各个分析点之间具有逻辑联系
需要营销、管理类理论进行支撑  叫做数据分析方法论。 偏向于战略层面 从宏观角度指导。

数据收集

企业常见数据源:
#1、业务数据(RDBMS 关系型数据库 比如:Mysql oracle 事务支持)
#2、日志数据、日志文件(服务器日志、应用日志、用户行为日志)
#3、爬虫数据
#4、其他事数据

数据预处理

结构化数据、半结构化数据、非结构化数据
大数据青睐什么?结构化数据。
#所谓的结构化数据指的是具有schema约束信息的数据。 通俗理解易于程序处理解读的数据。
半结构化数据(json xml)
#经过预处理把数据变成干净规则统一整洁的结构化数据。

数据分析

利用技术和软件 基于指标开展分析。

数据应用

分析的结果去哪里?
数据展现、数据可视化(Data Visualization)
即席查询
数据挖掘
数据接口对外
1.4、大数据时代

思考:数据为什么会爆炸?

  • 数据大爆炸和面临的挑战
  • 挑战1:海量数据如何存储?
  • 挑战2:海量数据如何高效计算?
  • 大数据5V特点
  • 大数据应用场景
1.5、分布式、集群
  • 共同点:多台机器 不是单机的
  • 不同点:
  • 集群:每台机器上的服务是一样的。
  • 分别苏:每台集群上的服务、组件是不一样的。

提醒:口语上,经常会混淆二者概念。都是汲取两者的共同点

搭建一个分布式hadoop集群。  多台机器部署不是单机部署
  • 数据大爆炸和面临的挑战解决方案
  • 如何存储海量数据?存储得下。------>分布式存储
  • 如何计算海量数据?高效计算。------->分布式计算
  • 大数据、云计算
#大数据侧重于海量数据的分析。
#云计算侧重于硬件资源的虚拟机技术。云cloud. 阿里云服务器。vmware。
公有云:把云资源当做产品卖。
私有云:自己公司内部搭建云服务器。
混合云:结合上面两点。

二、Apache Zookeeper

2.1、zookeeper概念

提示:学习任何一款软件框架,我们都需要首先搞清楚几个问题:

这个软件是什么?(定位问题)

这个软件能用来干什么?

这个软件怎么用?

这个软件有什么特性和优缺点?

  • 是一个分布式的协调服务软件(distributed coordination)。
分布式:多台机器的环境。
协调服务:在分布式环境下,如何控制大家有序的去做某件事。
  顺序
  一致
  共同
  共享

zookeeper的本质:分布式的小文件存储系统

  • 存储系统:存储数据、存储文件 目录树结构
  • 小文件:上面存储的数据有大小限制
  • 分布式:可以部署在多台机器上运行,对比单机来理解。
  • 问题:zk这个存储系统和我们常见的存储系统不一样。基于这些不一样产生了很多应用。
  • zookeeper是一个标准的主从架构集群。
主角色
从角色
主从各司其职 共同配合 对外提供服务。
2.2、zookeeper最重要的特性:全局数据一致性

事务(transaction):通俗理解 多个操作组成一个事务,要么一起成功,要么一起失败,不会存在中间的状态。如果中间失败了要进行回滚操作。

2.3、zookeeper集群角色

zk是标准的主从架构,只不过为了扩大集群的读写能力,同时又不增加选举复杂度,又提供了观察者角色。

主角色 leader

事务性请求的唯一调度和处理者

从角色 follower

处理非事务性操作  转发事务性操作给leader
参与zk内部选举机制

观察者角色 Observer

处理非事务性操作  转发事务性操作给leader
不参与zk内部选举机制
通俗话:是一群被剥夺政治权利终身的follower。
2.4、Zookeeper集群的搭建
  • zk集群在搭建部署的时候,通常选择==2n+1==奇数台。底层 Paxos 算法支持(过半成功)。
  • zk部署之前,保证服务器基础环境正常、JDK成功安装
  • 服务器基础环境
IP
主机名
hosts映射
防火墙关闭
时间同步
ssh免密登录

JDK环境

jdk1.8
配置好环境变量

zk具体安装部署(选择node1安装 scp给其他节点)

  • 安装包
zookeeper-3.4.6.tar.gz

上传解压重命名

cd /export/server
tar zxvf zookeeper-3.4.6.tar.gz
mv zookeeper-3.4.6/ zookeeper

修改配置文件

  • zoo.cfg
#zk默认加载的配置文件是zoo.cfg 因此需要针对模板进行修改。保证名字正确。
cd zookeeper/conf
mv zoo_sample.cfg zoo.cfg
vi zoo.cfg
#修改
dataDir=/export/data/zkdata
#文件最后添加 2888心跳端口 3888选举端口
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888

myid

#在每台机器的dataDir指定的目录下创建一个文件 名字叫做myid
#myid里面的数字就是该台机器上server编号。server.N  N的数字就是编号
[root@node1 conf]# mkdir -p /export/data/zkdata
[root@node1 conf]# echo 1 >/export/data/zkdata/myid

把安装包同步到其他节点上

cd /export/server
scp -r zookeeper/ node2:$PWD
scp -r zookeeper/ node3:$PWD

创建其他机器上myid和datadir目录

[root@node2 ~]# mkdir -p /export/data/zkdata
[root@node2 ~]# echo 2 > /export/data/zkdata/myid 
[root@node3 ~]# mkdir -p /export/data/zkdata
[root@node3 ~]# echo 3 > /export/data/zkdata/myid 

zk集群的启动

  • 每台机器上单独启动服务
#在哪个目录执行启动命令 默认启动日志就生成当前路径下 叫做zookeeper.out
/export/server/zookeeper/bin/zkServer.sh  start|stop|status
#3台机器启动完毕之后 可以使用status查看角色是否正常。
#还可以使用jps命令查看zk进程是否启动。
[root@node3 ~]# jps
2034 Jps
1980 QuorumPeerMain  #看我,我就是zk的java进程

扩展:编写shell脚本 一键脚本启动。

  • 本质:在node1机器上执行shell脚本,由shell程序通过ssh免密登录到各个机器上帮助执行命令。
  • 一键关闭脚本
[root@node1 ~]# vim stopZk.sh
#!/bin/bash
hosts=(node1 node2 node3)
for host in ${hosts[*]}
do
 ssh $host "/export/server/zookeeper/bin/zkServer.sh stop"
done

一键启动脚本

[root@node1 ~]# vim startZk.sh
#!/bin/bash
hosts=(node1 node2 node3)
for host in ${hosts[*]}
do
 ssh $host "source /etc/profile;/export/server/zookeeper/bin/zkServer.sh start"
done
  • 注意:关闭java进程时候 根据进程号 直接杀死即可就可以关闭。启动java进程的时候 需要JDK。
  • shell程序ssh登录的时候不会自动加载/etc/profile 需要shell程序中自己加载。

2.5、Zookeeper的数据模型

zk的操作

  • 第一种客户端:自带shell客户端
/export/server/zookeeper/bin/zkCli.sh -server ip
#如果不加-server 参数 默认去连接本机的zk服务 localhost:2181
#如果指定-server 参数 就去连接指定机器上的zk服务
#退出客户端端 ctrl+c

基本操作

  • 创建
  • 查看
[zk: localhost:2181(CONNECTED) 5] ls /itcast    #查看指定路径下有哪些节点
[a0000000000, b0000000002, a0000000001]
[zk: localhost:2181(CONNECTED) 6] get /itcast   #获取znode的数据和stat属性信息          
112233
cZxid = 0x300000003                      #创建事务ID
ctime = Mon Jan 30 20:52:49 CST 2023     #创建的时间
mZxid = 0x300000003                      #上次修改时事务ID
mtime = Mon Jan 30 20:52:49 CST 2023     #上次修改的时间
pZxid = 0x300000009
cversion = 3
dataVersion = 0           #数据版本号  只要有变化 就自动+1
aclVersion = 0
ephemeralOwner = 0x0      #如果为0 表示永久节点 如果是sessionID数字 表示临时节点
dataLength = 6            #数据长度
numChildren = 3           #子节点个数

更新节点

set path data

删除节点

[zk: node2(CONNECTED) 7] delete /itcast               
Node not empty: /itcast
[zk: node2(CONNECTED) 8] rmr /itcast  #递归删除

quota限制 软性限制

  • 限制某个节点下面可以创建几个子节点 数据大小。
超过限制,zk不会强制禁止操作 而是在日志中给出warn警告提示。
[zk: node2(CONNECTED) 13] listquota /itcast   #查看限制
absolute path is /zookeeper/quota/itcast/zookeeper_limits
quota for /itcast does not exist.
2.6、Zookeeper监听机制Watch
  • 监听机制
  • 监听实现需要几步?
#1、设置监听 
#2、执行监听
#3、事件发生,触发监听 通知给设置监听的   回调callback

zk中的监听是什么?

  • 谁监听谁?
客户端监听zk服务

监听什么事?

监听zk上目录树znode的变化情况。 znode增加了 删除了 增加子节点了 不见了

zk中监听实现步骤

#1、设置监听 然后zk服务执行监听
ls path [watch]
  没有watch 没有监听 就是查看目录下子节点个数
  有watch  有监听  设置监听子节点是否有变化
get path [watch]
  监听节点数据是否变化
e.g: get /itcast  watch 
#2、触发监听 
set /itcast 456  #修改了被监听的节点数据 触发监听
#3、回调通知客户端
WATCHER::
WatchedEvent state:SyncConnected type:NodeDataChanged path:/itcast

zk的监听特性

  • 先注册 再触发
  • 一次性的监听
  • 异步通知
  • 通知是使用event事件来封装的
state:SyncConnected type:NodeDataChanged path:/itcast
type:发生了什么
path:哪里发生的
  • zk中监听类型
  • 连接状态事件监听 系统自动触发 用户如果不关心可以忽略不计
  • 上述所讲的是用户自定义监听 主要监听zk目录树的变化 这类监听必须先注册 再监听。
  • 总结:zk的很多功能都是基于这个特殊文件系统而来的。
  • 特殊1:znode有临时的特性。
  • 特殊2:znode有序列化的特性。顺序
  • 特殊3:zk有监听机制 可以满足客户端去监听zk的变化。
  • 特殊4:在非序列化节点下,路径是唯一的。不能重名。
2.7、zk典型应用
  • 数据发布与订阅
  • 提供集群选举
  • 分布式锁服务
  • 排他锁
排他锁(Exclusive Locks),又被称为写锁或独占锁,如果事务T1对数据对象O1加上排他锁,那么整个加锁期间,只允许事务T1对O1进行读取和更新操作,其他任何事务都不能进行读或写。

共享锁

共享锁(Shared Locks),又称读锁。如果事务T1对数据对象O1加上了共享锁,那么当前事务只能对O1进行读取操作,其他事务也只能对这个数据对象加共享锁,直到该数据对象上的所有共享锁都释放。


相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
2月前
|
消息中间件 分布式计算 Hadoop
Apache Flink 实践问题之Flume与Hadoop之间的物理墙问题如何解决
Apache Flink 实践问题之Flume与Hadoop之间的物理墙问题如何解决
38 3
|
15天前
|
存储 分布式计算 分布式数据库
深入理解Apache HBase:构建大数据时代的基石
在大数据时代,数据的存储和管理成为了企业面临的一大挑战。随着数据量的急剧增长和数据结构的多样化,传统的关系型数据库(如RDBMS)逐渐显现出局限性。
75 12
|
1月前
|
存储 大数据 数据挖掘
【数据新纪元】Apache Doris:重塑实时分析性能,解锁大数据处理新速度,引爆数据价值潜能!
【9月更文挑战第5天】Apache Doris以其卓越的性能、灵活的架构和高效的数据处理能力,正在重塑实时分析的性能极限,解锁大数据处理的新速度,引爆数据价值的无限潜能。在未来的发展中,我们有理由相信Apache Doris将继续引领数据处理的潮流,为企业提供更快速、更准确、更智能的数据洞察和决策支持。让我们携手并进,共同探索数据新纪元的无限可能!
82 11
|
2月前
|
分布式计算 大数据 Apache
跨越界限:当.NET遇上Apache Spark,大数据世界的新篇章如何谱写?
【8月更文挑战第28天】随着信息时代的发展,大数据已成为推动企业决策、科研与技术创新的关键力量。Apache Spark凭借其卓越的分布式计算能力和多功能数据处理特性,在大数据领域占据重要地位。然而,对于.NET开发者而言,如何在Spark生态中发挥自身优势成为一个新课题。为此,微软与Apache Spark社区共同推出了.NET for Apache Spark,使开发者能用C#、F#等语言编写Spark应用,不仅保留了Spark的强大功能,还融合了.NET的强类型系统、丰富库支持及良好跨平台能力,极大地降低了学习门槛并拓展了.NET的应用范围。
55 3
|
2月前
|
数据采集 分布式计算 Kubernetes
Apache Flink 实践问题之ZooKeeper 网络瞬断时如何解决
Apache Flink 实践问题之ZooKeeper 网络瞬断时如何解决
45 4
|
2月前
|
分布式计算 大数据 数据处理
Apache Spark的应用与优势:解锁大数据处理的无限潜能
【8月更文挑战第23天】Apache Spark以其卓越的性能、易用性、通用性、弹性与可扩展性以及丰富的生态系统,在大数据处理领域展现出了强大的竞争力和广泛的应用前景。随着大数据技术的不断发展和普及,Spark必将成为企业实现数字化转型和业务创新的重要工具。未来,我们有理由相信,Spark将继续引领大数据处理技术的发展潮流,为企业创造更大的价值。
|
2月前
|
消息中间件 大数据 Kafka
"Apache Flink:重塑大数据实时处理新纪元,卓越性能与灵活性的实时数据流处理王者"
【8月更文挑战第10天】Apache Flink以卓越性能和高度灵活性在大数据实时处理领域崭露头角。它打破批处理与流处理的传统界限,采用统一模型处理有界和无界数据流,提升了开发效率和系统灵活性。Flink支持毫秒级低延迟处理,通过时间窗口、状态管理和自动并行化等关键技术确保高性能与可靠性。示例代码展示了如何使用Flink从Kafka读取实时数据并进行处理,简明扼要地呈现了Flink的强大能力。随着技术进步,Flink将在更多场景中提供高效可靠的解决方案,持续引领大数据实时处理的发展趋势。
77 7
|
2月前
|
Java Spring API
Spring框架与GraphQL的史诗级碰撞:颠覆传统,重塑API开发的未来传奇!
【8月更文挑战第31天】《Spring框架与GraphQL:构建现代API》介绍了如何结合Spring框架与GraphQL构建高效、灵活的API。首先通过引入`spring-boot-starter-data-graphql`等依赖支持GraphQL,然后定义查询和类型,利用`@GraphQLQuery`等注解实现具体功能。Spring的依赖注入和事务管理进一步增强了GraphQL服务的能力。示例展示了从查询到突变的具体实现,证明了Spring与GraphQL结合的强大潜力,适合现代API设计与开发。
60 0
|
2月前
|
分布式计算 监控 Hadoop
详解 Apache ZooKeeper 和 Apache Oozie
【8月更文挑战第31天】
31 0
|
2月前
|
分布式计算 Hadoop 大数据
大数据处理框架在零售业的应用:Apache Hadoop与Apache Spark
【8月更文挑战第20天】Apache Hadoop和Apache Spark为处理海量零售户数据提供了强大的支持
43 0

推荐镜像

更多
下一篇
无影云桌面