云计算·分布式计算实践

背景

云计算课程实践——基于华为云的Flink实践

知识点

概述

  1. 分布式计算:多个通过网络互联的计算机都具有一定的计算能力,他们相互之间传递数据,实现信息共享,协作共同完成一个处理任务。
  2. 优势:稀有资源实现共享; 在多台计算机上平衡计算负载; 将程序放在最适合它的计算机上运行
  3. 分布式系统:是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。
    1. 系统拥有多种通用的物理和逻辑资源,可以动态的分配任务,分散的物理和逻辑资源通过计算机网络实现信息交换。
  4. 分布式计算的一般步骤:
    1. 设计分布式计算模型,实现分布式系统
    2. 通过分布式系统实现分布式任务分配
    3. 依照分布式系统编写并执行分布式程序

理论基础

  1. CAP理论:一个分布式系统最多能够同时满足一致性(consistency)、可用性(Availability)、分区容错性(Partition tolerance)中的两项
    1. 一致性:一次操作之后,所有节点同一时间的数据完全一致。
    2. 可用性:服务一直可用且在正常的响应时间内。
    3. 分区容错性:分布式系统遇到某节点或网络分区故障时,仍然能够正常运行并对外提供服务。
  2. 对于大多数大型互联网服务而言,节点故障、网络故障是常态,均采取保证AP和最终一致性的策略
  3. BASE理论:追求最终一致性
    1. Basically Available:基本可用-系统出现故障时,允许损失部分可用性,保证核心可用
    2. Soft State:软状态,允许系统存在中间状态,但中间状态不会影响系统的整体可用性
    3. Eventual Consistency:最终一致性-所有数据副本经过一定时间后,能最终达到一致的状态
  4. 一致性算法/共识算法:需要在每一条指令上执行一个“一致性算法”以保证每个节点看到的指令一致。
    1. 一台机器中多个进程/线程达成数据一致
    2. 分布式文件系统或者分布式数据库中多客户端并发读写数据
    3. 分布式存储中多个副本响应读写请求的一致性。
  5. 一致性算法Paxos
  6. 普通哈希算法

分布式系统特性

  1. 容错性
  2. 高可拓展性
  3. 开放性
  4. 并发处理能力
  5. 透明性

分布式系统类型

  1. 结构化存储:MySQL
  2. 非结构化存储:HDFS,GFS
  3. 半结构化存储:NoSQL,Key-Value Store,对象存储
  4. 基于内存存储:利用Redis等作缓存
  5. NewSQL

分布式计算系统类型

  1. 基于消息的系统:MPI
  2. DataFlow系统:
    1. Hadoop
    2. Spark

分布式资源管理系统

  1. Yarn:Hadoop 2.0版本,解决了原来Hadoop扩展性较差的问题
  2. Apache Mesos
  3. Spark Standalone:Spark自带的简单的资源管理系统,负责跟踪集群状态并调度计算任务
  4. Kubernets:Google开发的一个强大的容器编排框架,用户通过Kubernets管理容器,不需要和底层交互

案例1

问题

现有A、B、C三台机器和f1、f2、f3三个文件,如何进行分布式存储(对外显示它们存于同一硬盘空间,对外显示依旧为一个完整文件);实现分布式存储以后如何进行分布式计算(统计f1里每个单词出现的次数);如何实现分布式系统的可靠性(机器宕机了如何保证数据不丢失)

实现

  1. 分布式存储:
    • 将多台机器硬盘以某种方式连接到一起
    • 采用客户-服务器模式构建分布式存储集群 让A管理B,C
    • DFS:
      • 对内:随意添加“客户”,硬盘无限扩大
      • 对外:整个集群就像是一台机器、一片云,硬盘显示为统一存储空间,文件接口统一
  2. 分布式计算:
    • 取新机器D作为服务器,采用客户-服务器模式构建由机器B、C和D组成的分布式计算集群
    • A明确知道每一份数据都存储在多个地方;D会要求存有待计算数据的机器都参与计算,并选择先结束的机器计算结果;冗余存储不仅提高了分布式存储的可靠性,也提高了分布式计算的可靠性

 工具

Hadoop

  • Hadoop 1.0
    • Hadoop Common:支持其他两个模块的公用组件
    • Hadoop DFS:分布式文件系统
    • Hadoop MapReduce:分布式计算框架
  • Hadoop 2.0
    • 分布式存储HDFS
    • 分布式操作系统Yarn
    • 通过调用程序库,可使用简单的编程模型处理分布在不同机器上的大规模数据
    • 采用客户-服务器模式
    • 整体架构
  1. 构建大型分布式集群,提供海量存储和计算服务
  2. 存储半结构化业务数据
分布式存储HDFS
  • 内部特性:冗余备份、副本存放、副本选择、心跳检测 数据完整性检测、元数据磁盘失效 简单一致性模型、流式数据访问、客户端缓存 流水线复制、架构特征、超大规模数据集
  • 对外功能:
    • Namenode高可靠性:配置多个NameNode,一个失效时立即替换
    • HDFS快照:当数据损坏时,支持回滚到正确的时间节点
    • 元数据管理与恢复工具:通过命令hdfs oiv和hdfs oev管理修复fsimage和edits
    • HDFS安全性:用户和文件级别安全认证、机器和服务级别安全认证
    • HDFS配额功能:管理目录或文件配额大小 HDFS C语言接口:使用C语言操HDFS的接口
    • HDFS Short-Circuit功能:客户端可以绕开Datanode直接读取本机数据,加快map操作 WebHdfs:通过Web方式操作HDFS(插、删、改、查)
 分布式操作系统Yarn

管理计算机资源、提供用户和程序访问系统资源的API

  • 包含实体:
    • Client:客户端,负责向集群提交作业。
    • ResourceManager:集群主进程,仲裁中心,负责集群资源管理和任务调度。
    • Scheduler:资源仲裁模块。
    • ApplicationManager:选定,启动和监管ApplicationMaster。
    • NodeManager:集群从进程,管理监视Containers,执行具体任务
    • Container:本机资源集合体,如某Container为4个CPU,8GB内存。
    • ApplicationMaster:任务执行和监管中心。
    • 自带两种策略
      • 容量调度算法CapacityScheduler:按照配置好的资源配比为不同层级的用户分配最大可用资源
      • 公平调度算法FairScheduler:任务公平使用集群资源,短任务在合理时间内完成;长任务不至于永远等待
    • 资源管理——Yarn是可编程的,不仅仅支持自带的MapReduce,还可以自定义算子
    • 一套编程协议 Client负责提交任务,ApplicationMaster负责执行任务 Client中与RM通信;ApplicationMaster与RM通信;ApplicationMaster与NM通信 编写符合协议的Client和ApplicationMaster即可
Zookeeper
  1. 提供通用的分布式协调服务,管理物理分布的子进程(如资源、任务分配等
  2. 由多个Server组成的集群;一个Leader,多个Follower
  3. 每个Server都保存了一份数据副本
  4. 全局数据一致;分布式读写 更新请求转发,由Leader实施
  5. 使用约定:
    1. 更新请求顺序执行:来自同一个Client的更新请求按其发送顺序依次执行
    2. 数据更新原子性:一次数据更新要么成功,要么失败。
    3. 全局唯一数据视图:Client无论连接哪个Server,数据视图都是一致的
    4. 实时性:在一定时间范围内,Client能读到最新数据
  6. 统一命名服务、配置管理服务
Hbase

基于Hadoop的开源分布式数据库,以Google BigTable为原型

Pig

构建在Hadoop之上,用来处理大规模数据集的脚本语言平台,将根据业务逻辑写好的数据流脚本翻译成多个HDFS、Map和Reduce的操作。类似于MapReduce的另一个编程入口

Pig Latin-->MapReduce-->cluster

Hive

MapReduce的一个高层抽象,像是一个数据库接口,使用类SQL的HSQL提供查询和操作服务

Flume

分布式高性能、高可靠地数据传输工具

实践--基于华为云的Flink实践

手册链接:链接:https://pan.baidu.com/s/1GqLBSiRy6slHiier0A_UXQ?pwd=i0ym 
提取码:i0ym

遇到的问题:

在worker1、worker2、worker3中执行/usr/local/zookeeper/bin/zkServer.sh start

/usr/local/zookeeper/bin/zkServer.sh status时报错:
 "Error contacting service. It is probably not running."

 分析:在前面的配置环节中修改了配置文件zoo.cfg,修改了数据目录,添加了以下内容

server.1=worker1:2888:3888
server.2=worker2:2888:3888
server.3=worker3:2888:3888
admin.enableServer=true
quorumListenOnAllIPs=true
  1. server.1=worker1:2888:3888:这一行表示 Zookeeper 集群中的第一个服务器,其中 worker1:2888:3888 表示服务器的信息,包括 hostname 或 IP 地址、用于选举(election)的端口(2888)和用于数据传输(data transfer)的端口(3888)。

  2. server.2=worker2:2888:3888 和 server.3=worker3:2888:3888:这两行表示集群中的第二个和第三个服务器,具有类似的格式,分别对应不同的服务器信息。

  3. admin.enableServer=true:这行配置表示启用了 Zookeeper 集群中的管理员服务,该服务用于管理和监控集群的状态和配置。

  4. quorumListenOnAllIPs=true:这行配置表示在 quorum 通信时 Zookeeper 服务将监听所有的 IP 地址,包括本地和外部 IP 地址,以进行集群之间的通信和数据同步。

在网上查找了很多解决错误的方法,参考:Zookeeper启动显示成功,zkServer.sh status报错:Error contacting service. It is probably not running.-CSDN博客

但我的问题还是没解决,不确定服务是否启动可以使用这个命令在前台运行,通过报错信息排查:

zkServer.sh start-foreground

最后我发现我的服务能够成功启动,但是一直无法连接其他worker,最后我在每个worker的安全组里面加上2888端口和3888端口成功解决问题。

  • 28
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
分布式计算云计算和大数据是当今计算领域的热门话题,它们之间存在着密切的关联和相互影响。分布式计算是指将一个计算任务分解成多个子任务,分布在不同的计算节点上同时进行计算,通过协调和通信来完成整个任务。云计算是指通过互联网将计算、存储和其他资源提供给用户,从而实现在任何地点、任何时间的访问和使用。大数据是指以巨大的数据量为基础,利用各种工具和技术进行数据的采集、处理、存储和分析,以从中获得价值和洞见。 在学习分布式计算云计算和大数据方面的知识时,往往需要参考相关课本或PDF资料。这些资料通常包含了理论知识、实际案例和操作指南。通过阅读课本PDF,我们可以了解到分布式计算云计算和大数据的基本概念、原理和应用。我们可以学习到分布式计算中的拓扑结构、任务调度和资源管理等内容;云计算中的服务模型、部署模式和安全性问题;以及大数据中的数据收集、处理、存储和分析等技术。 课本PDF还可以提供一些实际案例,让我们了解在实际应用中分布式计算云计算和大数据是如何发挥作用的。比如,在分布式计算中,我们可以学习到如何将一个大型计算任务划分成多个小任务,进行并行计算,并进行任务调度和结果合并;在云计算中,我们可以了解到如何通过云服务商提供的资源进行弹性扩展、按需付费和灵活部署;在大数据中,我们可以学习到如何利用分布式存储系统和分布式计算框架对大规模数据进行处理和分析。 总之,分布式计算云计算和大数据是现代计算领域非常重要的研究方向和实践应用,通过学习相关课本PDF,我们可以深入了解它们的基本概念、原理和应用,并通过实际案例加深对其运作方式的理解。这对我们在今后的学习和工作中都具有重要的价值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值